diff --git a/.circleci/config.yml b/.circleci/config.yml index 6296efa7..53c9033f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -19,10 +19,10 @@ commands: command: | set -euo pipefail - git log -n1 --format=%H nix shell.nix > /tmp/nix-cache-key + git log -n1 --format=%H nix shell.nix daml.yaml > /tmp/nix-cache-key sudo mkdir /nix sudo chown circleci /nix - >> $BASH_ENV echo 'export USER=circleci' + echo 'export USER=circleci' >> "$BASH_ENV" - restore_cache: keys: - nix-{{ checksum "/tmp/nix-cache-key" }} @@ -84,28 +84,40 @@ commands: --run bash \<<'EOF' set -euo pipefail - PACKAGES=(`ls package/main/daml/*/daml.yaml`) - for package in ${PACKAGES[@]}; do - PACKAGE=`echo ${package} | cut -f4 -d "/"` - VERSION=`yq e '.version' ${package}` - TAG="${PACKAGE}/${VERSION}" - echo "Processing package '${PACKAGE}' with tag '${TAG}'..." + while read PACKAGE_NAME PACKAGE_PATH + do + CONFIG="package/${PACKAGE_PATH}/daml.yaml" + VERSION=`yq e '.version' ${CONFIG}` + TAG="${PACKAGE_NAME}/${VERSION}" + echo "Processing package '${PACKAGE_NAME}' with tag '${TAG}'..." if [[ `git tag -l ${TAG} | wc -l` -eq 0 ]]; then - DAR_PREFIX=`yq e '.name' ${package}` + DAR_PREFIX=`yq e '.name' ${CONFIG}` DAR="${DAR_PREFIX}-${VERSION}.dar" gpg --armor --detach-sign .dars/${DAR} - if [[ `echo $VERSION | grep ".99." | wc -l` -eq 0 ]]; then - gh release create ${TAG} .dars/${DAR}* --target ${CIRCLE_BRANCH} --notes "See release notes (insert link here) for further details." + if [[ `echo $VERSION | grep ".99." | wc -l` -eq 0 ]] ; then + gh release create ${TAG} .dars/${DAR}* \ + --target ${CIRCLE_BRANCH} \ + --title ${TAG} \ + --notes "See [Daml Finance App readme](https://github.com/digital-asset/daml-finance-app#readme) for further details." else - gh release create ${TAG} .dars/${DAR}* --target ${CIRCLE_BRANCH} --prerelease --notes "Development snapshot of package '${PACKAGE}'. Use at your own risk." + gh release create ${TAG} .dars/${DAR}* \ + --prerelease \ + --target ${CIRCLE_BRANCH} \ + --title ${TAG} \ + --notes "Development snapshot of package '${PACKAGE_NAME}'. Use at your own risk." fi - echo -e "Successfully released package '${PACKAGE}' with tag '${TAG}'.\n" + echo -e "Successfully released package '${PACKAGE_NAME}' with tag '${TAG}'.\n" else - echo -e "Tag '${TAG}' already exists for package '${PACKAGE}'; Ignoring.\n" + echo -e "Tag '${TAG}' already exists for package '${PACKAGE_NAME}'; Ignoring.\n" fi - done + done < <(yq e '.local.packages + | to_entries + | map(.value.package) + | .[] + | select(.path == "main*") + | .name + " " + .path' package/packages.yaml) EOF run_release_ui: description: "GitHub Release - currently ignored" @@ -131,9 +143,16 @@ commands: gpg --armor --detach-sign ${TAR} if [[ `echo $VERSION | grep ".99." | wc -l` -eq 0 ]]; then - gh release create ${TAG} ${TAR}* --target ${CIRCLE_BRANCH} --notes "See release notes (insert link here) for further details." + gh release create ${TAG} ${TAR}* \ + --target ${CIRCLE_BRANCH} \ + --title ${TAG} \ + --notes "See [Daml Finance App readme](https://github.com/digital-asset/daml-finance-app#readme) for further details." else - gh release create ${TAG} ${TAR}* --target ${CIRCLE_BRANCH} --prerelease --notes "Development snapshot of the UI. Use at your own risk." + gh release create ${TAG} ${TAR}* \ + --prerelease \ + --target ${CIRCLE_BRANCH} \ + --title ${TAG} \ + --notes "Development snapshot of the UI. Use at your own risk." fi else echo -e "Tag '${TAG}' already exists; Ignoring." @@ -154,6 +173,10 @@ jobs: name: Build source and packages command: make ci-build + - run: + name: Validate packages + command: + make ci-validate - run: name: Execute tests command: @@ -170,6 +193,7 @@ jobs: - setup_nix - import_gpg_key - run_release + - run_release_ui workflows: version: 2 diff --git a/.gitignore b/.gitignore index 83df0593..c275a292 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ /.dev .daml -/log +log .DS_Store .lib @@ -24,3 +24,4 @@ daml.js/ .dars/ lib/* ui/src/parties.json +.cache/ \ No newline at end of file diff --git a/Makefile b/Makefile index 56a987d4..55acf63f 100644 --- a/Makefile +++ b/Makefile @@ -1,38 +1,93 @@ SCRIPTS_DIR := scripts -UI := ui -.PHONY: build -build: install - daml build - daml codegen js - ./$(SCRIPTS_DIR)/build.sh - # cd $(UI) && npm run build +########################## +# Project Source (./src) # +########################## .PHONY: install install: ./$(SCRIPTS_DIR)/get-dependencies.sh daml.yaml - cd $(UI) && npm install -.PHONY: clean -clean: - daml clean - ./$(SCRIPTS_DIR)/remove-dependencies.sh daml.yaml - cd $(SCRIPTS_DIR) && ./clean.sh - rm -rf $(UI)/node_modules - rm -rf $(UI)/daml.js - rm -rf $(UI)/build +.PHONY: build +build: install + daml build .PHONY: test test: build daml test -.PHONY: headers-check -headers-check: - ./$(SCRIPTS_DIR)/dade-copyright-headers.py check +.PHONY: clean +clean: + -rm -rf .lib/ + -rm -rf ui/build + -rm -rf ui/daml.js + daml clean -.PHONY: headers-update -headers-update: - ./$(SCRIPTS_DIR)/dade-copyright-headers.py update +.PHONY: codegen +codegen: + daml codegen js -o ui/daml.js .dars/*.dar + +.PHONY: setup +setup: + -rm -rf ui/daml.js + DAML_PROJECT=package/main/daml/Daml.Finance.App.Setup/ daml build + cp package/main/daml/Daml.Finance.App.Setup/.daml/dist/*.dar .dars/ + daml codegen js -o ui/daml.js .dars/*.dar + +.PHONY: build-ui +build-ui: + cd ui && npm run build + +.PHONY: package +package: build-ui + ./$(SCRIPTS_DIR)/package.sh + +.PHONY: deploy +deploy: + ./$(SCRIPTS_DIR)/deploy.sh + +######################### +# Packages (./packages) # +######################### + +.PHONY: clean-packages +clean-packages: + ./$(SCRIPTS_DIR)/clean-packages.sh + +.PHONY: build-packages +build-packages: + ./$(SCRIPTS_DIR)/build-packages.sh + +# .PHONY: build-java-packages +# build-java-packages: build-packages +# daml codegen java -o .dars/.java .dars/* + +.PHONY: test-packages +test-packages: build-packages + ./$(SCRIPTS_DIR)/test-packages.sh + +.PHONY: validate-packages +validate-packages: build-packages + ./$(SCRIPTS_DIR)/validate-packages.sh + +# .PHONY: update-data-dependencies-packages +# update-data-dependencies-packages: +# packell data-dependencies update -f +# make headers-update + +############################### +# Project Source and Packages # +############################### + +.PHONY: build-all +build-all: build build-packages build-ui + +.PHONY: test-all +test-all: test test-packages + +.PHONY: clean-all +clean-all: clean clean-packages +# pipenv run make doc-clean ################################## # CI # @@ -44,13 +99,37 @@ headers-update: ci-build: @nix-shell \ --pure \ - --run 'make build' + --run 'make build-all' + +# .PHONY: ci-build-java +# ci-build-java: +# @nix-shell \ +# --pure \ +# --run 'daml codegen java -o .dars/.java .dars/*.dar' + +# .PHONY: ci-build-js +# ci-build-js: +# @nix-shell \ +# --pure \ +# --run 'daml codegen js -o ui/daml.js .dars/*.dar' .PHONY: ci-test ci-test: @nix-shell \ --pure \ - --run 'daml test' + --run 'daml test; ./$(SCRIPTS_DIR)/test-packages.sh' + +.PHONY: ci-validate +ci-validate: + @nix-shell \ + --pure \ + --run './$(SCRIPTS_DIR)/validate-packages.sh' + +.PHONY: ci-docs +ci-docs: $(DAML_SDK_ROOT) + @nix-shell \ + --pure \ + --run 'pipenv run make doc-html' .PHONY: ci-headers-check ci-headers-check: @@ -58,5 +137,88 @@ ci-headers-check: --pure \ --run './scripts/dade-copyright-headers.py check' +.PHONY: ci-assembly +ci-assembly: + @nix-shell \ + --pure \ + --run './docs/scripts/build-assembly.sh' + +.PHONY: ci-data-dependencies +ci-data-dependencies: + @nix-shell \ + --pure \ + --run 'export LANG=C.UTF-8; packell data-dependencies validate' + .PHONY: ci-local -ci-local: clean ci-headers-check ci-build ci-test +ci-local: clean-all ci-headers-check ci-build ci-validate ci-test + +######### +# Cache # +######### + +.PHONY: clean-cache +clean-cache: + -rm -rf .cache + +##################### +# Copyright headers # +##################### + +.PHONY: headers-check +headers-check: + ./scripts/dade-copyright-headers.py check + +.PHONY: headers-update +headers-update: + ./scripts/dade-copyright-headers.py update + +############################ +# Documentation Generation # +############################ + +DAML_SRC := $(shell find src/daml -name '*.daml') +SDK_VERSION := $(shell yq e '.sdk-version' daml.yaml) +DAML_ROOT := $(shell if [ -z ${DAML_HOME} ]; then echo ~/.daml; else echo ${DAML_HOME}; fi) + +.PHONY: doc-code-json +doc-code-json: $(DAML_SRC) + daml damlc docs \ + --output=docs/build/daml-finance.json \ + --package-name=daml-finance \ + --format Json \ + $(DAML_SRC) + +.PHONY: doc-code +doc-code: doc-code-json + daml damlc docs \ + --output=docs/build/daml-finance-rst \ + --input-format=json \ + --format=Rst \ + --exclude-instances=HasField,HasImplementation,HasFromInterface,HasToInterface,HasInterfaceView,HasExercise,HasExerciseGuarded,HasFromAnyChoice,HasToAnyChoice \ + --drop-orphan-instances \ + --template=docs/code-documentation-templates/base-rst-template.rst \ + --index-template=docs/code-documentation-templates/base-rst-index-template.rst \ + --base-url=https://docs.daml.com/daml/daml-finance \ + --input-anchor=$(DAML_ROOT)/sdk/$(SDK_VERSION)/damlc/resources/daml-base-anchors.json \ + docs/build/daml-finance.json + +# Build doc theme +.PHONY: doc-theme +doc-theme: + cd docs/sphinx && ./build-doc-theme.sh + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= -c "$(CONFDIR)" -W +SPHINXBUILD ?= sphinx-build +SOURCEDIR = docs/source +BUILDDIR = docs/build +CONFDIR = docs/sphinx + +.PHONY: doc-html +doc-html: doc-theme doc-code + $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: doc-clean +doc-clean: Makefile + $(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/README.md b/README.md index c7768187..2efeed0b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Copyright © 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 -### Dependencies +# Dependencies This repo assumes the use of [direnv] for local development, along with a working [Nix] installation. @@ -11,17 +11,21 @@ working [Nix] installation. [direnv]: https://github.com/direnv/direnv [Nix]: https://nixos.org/download.html -# Running +# Building -If on Linux or MacOS, run the following commands: +To build all packages run: ``` -./scripts/get-dependencies.sh -daml start +make ci-local ``` -If on Windows, run the following: +The built packages are now located in the `.dars` directory. + +# Running + +We currently don't support running the app on Windows natively, but you can use Windows Subsystem for Linux (WSL) if available and follow the instructions below. + +On Linux or MacOS run the following command: ``` -./scripts/get-dependencies.bat -daml start +DAML_PROJECT=package/main/daml/Daml.Finance.App.Setup/ daml start ``` Wait until the sandbox is up and running, indicated by the following output: diff --git a/daml.yaml b/daml.yaml index 9a8ed828..26cf8787 100644 --- a/daml.yaml +++ b/daml.yaml @@ -1,55 +1,44 @@ # Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -sdk-version: 2.5.0-snapshot.20221010.10736.0.2f453a14 +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 name: daml-finance-app -version: 0.1.5 +version: 0.0.2 source: src/daml -init-script: Daml.Finance.Setup.Demo:demo dependencies: - daml-prim - daml-stdlib - daml-script data-dependencies: - - .lib/contingent-claims-core-0.1.0.dar - - .lib/contingent-claims-lifecycle-0.1.0.dar - - .lib/contingent-claims-valuation-0.1.0.dar - - .lib/daml-finance-account-0.1.2.dar - - .lib/daml-finance-claims-0.1.3.dar - - .lib/daml-finance-data-0.1.7.dar - - .lib/daml-finance-holding-0.1.7.dar - - .lib/daml-finance-instrument-bond-0.1.8.dar - - .lib/daml-finance-instrument-equity-0.1.9.dar - - .lib/daml-finance-instrument-generic-0.1.8.dar - - .lib/daml-finance-instrument-swap-0.1.8.dar - - .lib/daml-finance-instrument-token-0.1.7.dar - - .lib/daml-finance-interface-account-0.1.2.dar - - .lib/daml-finance-interface-claims-0.1.7.dar - - .lib/daml-finance-interface-data-0.1.6.dar - - .lib/daml-finance-interface-holding-0.1.7.dar - - .lib/daml-finance-interface-instrument-base-0.1.7.dar - - .lib/daml-finance-interface-instrument-bond-0.1.7.dar - - .lib/daml-finance-interface-instrument-equity-0.1.8.dar - - .lib/daml-finance-interface-instrument-generic-0.1.8.dar - - .lib/daml-finance-interface-instrument-swap-0.1.8.dar - - .lib/daml-finance-interface-instrument-token-0.1.7.dar - - .lib/daml-finance-interface-lifecycle-0.1.8.dar - - .lib/daml-finance-interface-settlement-0.1.8.dar - - .lib/daml-finance-interface-types-0.1.6.dar - - .lib/daml-finance-interface-util-0.1.6.dar - - .lib/daml-finance-lifecycle-0.1.9.dar - - .lib/daml-finance-settlement-0.1.8.dar - - .lib/daml-finance-util-0.1.6.dar -start-navigator: no -sandbox-options: - - -c=canton.conf -script-options: - - --output-file=ui/src/parties.json -json-api-options: - - --config=json-api.conf -codegen: - js: - output-directory: ui/daml.js - npm-scope: daml.js + - .lib/daml-finance/ContingentClaims.Core/1.0.0/contingent-claims-core-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Lifecycle/1.0.0/contingent-claims-lifecycle-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Valuation/0.2.0/contingent-claims-valuation-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Account/1.0.0/daml-finance-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Claims/1.0.0/daml-finance-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Data/1.0.0/daml-finance-data-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Holding/1.0.0/daml-finance-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Bond/0.2.0/daml-finance-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Equity/0.2.0/daml-finance-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Generic/1.0.0/daml-finance-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Swap/0.2.0/daml-finance-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Token/1.0.0/daml-finance-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Data/1.0.0/daml-finance-interface-data-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Base/1.0.0/daml-finance-interface-instrument-base-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Bond/0.2.0/daml-finance-interface-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Generic/1.0.0/daml-finance-interface-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Swap/0.2.0/daml-finance-interface-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Token/1.0.0/daml-finance-interface-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Date/1.0.0/daml-finance-interface-types-date-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Lifecycle/1.0.0/daml-finance-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Settlement/1.0.0/daml-finance-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Util/1.0.0/daml-finance-util-1.0.0.dar build-options: - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Custody/daml.yaml b/package/main/daml/Daml.Finance.App.Custody/daml.yaml new file mode 100644 index 00000000..517891d8 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Custody/daml.yaml @@ -0,0 +1,20 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-custody +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Custody/0.0.1/daml-finance-app-interface-custody-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Custody/daml/Daml/Finance/App/Custody b/package/main/daml/Daml.Finance.App.Custody/daml/Daml/Finance/App/Custody new file mode 120000 index 00000000..ec3e4423 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Custody/daml/Daml/Finance/App/Custody @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Custody \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Data/daml.yaml b/package/main/daml/Daml.Finance.App.Data/daml.yaml new file mode 100644 index 00000000..34b8f5aa --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Data/daml.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-data +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Data/daml/Daml/Finance/App/Data b/package/main/daml/Daml.Finance.App.Data/daml/Daml/Finance/App/Data new file mode 120000 index 00000000..44dfa522 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Data/daml/Daml/Finance/App/Data @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Data \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Decentralized/daml.yaml b/package/main/daml/Daml.Finance.App.Decentralized/daml.yaml new file mode 100644 index 00000000..08b213de --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Decentralized/daml.yaml @@ -0,0 +1,19 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-decentralized +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Decentralized/0.0.1/daml-finance-app-interface-decentralized-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Decentralized/daml/Daml/Finance/App/Decentralized b/package/main/daml/Daml.Finance.App.Decentralized/daml/Daml/Finance/App/Decentralized new file mode 120000 index 00000000..41069b4e --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Decentralized/daml/Daml/Finance/App/Decentralized @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Decentralized \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Distribution/daml.yaml b/package/main/daml/Daml.Finance.App.Distribution/daml.yaml new file mode 100644 index 00000000..e3890747 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Distribution/daml.yaml @@ -0,0 +1,26 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-distribution +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Data/0.0.1/daml-finance-app-data-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Distribution/0.0.1/daml-finance-app-interface-distribution-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Issuance/0.0.1/daml-finance-app-interface-issuance-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Issuance/0.0.1/daml-finance-app-issuance-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Distribution/daml/Daml/Finance/App/Distribution b/package/main/daml/Daml.Finance.App.Distribution/daml/Daml/Finance/App/Distribution new file mode 120000 index 00000000..9f86fa62 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Distribution/daml/Daml/Finance/App/Distribution @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Distribution \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Base/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Base/daml.yaml new file mode 100644 index 00000000..63b11844 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Base/daml.yaml @@ -0,0 +1,12 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-base +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Base/daml/Daml/Finance/App/Interface/Base b/package/main/daml/Daml.Finance.App.Interface.Base/daml/Daml/Finance/App/Interface/Base new file mode 120000 index 00000000..dc65d6f0 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Base/daml/Daml/Finance/App/Interface/Base @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Base \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Common/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Common/daml.yaml new file mode 100644 index 00000000..9af8447c --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Common/daml.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-common +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Common/daml/Daml/Finance/App/Interface/Common b/package/main/daml/Daml.Finance.App.Interface.Common/daml/Daml/Finance/App/Interface/Common new file mode 120000 index 00000000..9b7ded72 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Common/daml/Daml/Finance/App/Interface/Common @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Common \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Custody/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Custody/daml.yaml new file mode 100644 index 00000000..c68031f5 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Custody/daml.yaml @@ -0,0 +1,19 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-custody +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Custody/daml/Daml/Finance/App/Interface/Custody b/package/main/daml/Daml.Finance.App.Interface.Custody/daml/Daml/Finance/App/Interface/Custody new file mode 120000 index 00000000..9047bd79 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Custody/daml/Daml/Finance/App/Interface/Custody @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Custody \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Decentralized/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Decentralized/daml.yaml new file mode 100644 index 00000000..f613acfa --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Decentralized/daml.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-decentralized +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Decentralized/daml/Daml/Finance/App/Interface/Decentralized b/package/main/daml/Daml.Finance.App.Interface.Decentralized/daml/Daml/Finance/App/Interface/Decentralized new file mode 120000 index 00000000..0bcec9ca --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Decentralized/daml/Daml/Finance/App/Interface/Decentralized @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Decentralized \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Distribution/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Distribution/daml.yaml new file mode 100644 index 00000000..db46bda1 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Distribution/daml.yaml @@ -0,0 +1,20 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-distribution +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Distribution/daml/Daml/Finance/App/Interface/Distribution b/package/main/daml/Daml.Finance.App.Interface.Distribution/daml/Daml/Finance/App/Interface/Distribution new file mode 120000 index 00000000..64027e17 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Distribution/daml/Daml/Finance/App/Interface/Distribution @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Distribution \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Issuance/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Issuance/daml.yaml new file mode 100644 index 00000000..d2fce1c7 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Issuance/daml.yaml @@ -0,0 +1,19 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-issuance +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Distribution/0.0.1/daml-finance-app-interface-distribution-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Issuance/daml/Daml/Finance/App/Interface/Issuance b/package/main/daml/Daml.Finance.App.Interface.Issuance/daml/Daml/Finance/App/Interface/Issuance new file mode 120000 index 00000000..936708c2 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Issuance/daml/Daml/Finance/App/Interface/Issuance @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Issuance \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Lending/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Lending/daml.yaml new file mode 100644 index 00000000..33128c2b --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Lending/daml.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-lending +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Lending/daml/Daml/Finance/App/Interface/Lending b/package/main/daml/Daml.Finance.App.Interface.Lending/daml/Daml/Finance/App/Interface/Lending new file mode 120000 index 00000000..6b8b05e8 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Lending/daml/Daml/Finance/App/Interface/Lending @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Lending \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Lifecycle/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Lifecycle/daml.yaml new file mode 100644 index 00000000..688705aa --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Lifecycle/daml.yaml @@ -0,0 +1,20 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-lifecycle +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/ContingentClaims.Core/1.0.0/contingent-claims-core-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Lifecycle/1.0.0/contingent-claims-lifecycle-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Valuation/0.2.0/contingent-claims-valuation-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Lifecycle/daml/Daml/Finance/App/Interface/Lifecycle b/package/main/daml/Daml.Finance.App.Interface.Lifecycle/daml/Daml/Finance/App/Interface/Lifecycle new file mode 120000 index 00000000..306a220c --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Lifecycle/daml/Daml/Finance/App/Interface/Lifecycle @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Lifecycle \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Listing/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Listing/daml.yaml new file mode 100644 index 00000000..0f811f22 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Listing/daml.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-listing +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Listing/daml/Daml/Finance/App/Interface/Listing b/package/main/daml/Daml.Finance.App.Interface.Listing/daml/Daml/Finance/App/Interface/Listing new file mode 120000 index 00000000..932f822d --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Listing/daml/Daml/Finance/App/Interface/Listing @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Listing \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Settlement/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Settlement/daml.yaml new file mode 100644 index 00000000..2ce1f1a5 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Settlement/daml.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-settlement +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Settlement/daml/Daml/Finance/App/Interface/Settlement b/package/main/daml/Daml.Finance.App.Interface.Settlement/daml/Daml/Finance/App/Interface/Settlement new file mode 120000 index 00000000..c0f9a8ef --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Settlement/daml/Daml/Finance/App/Interface/Settlement @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Settlement \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Structuring/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Structuring/daml.yaml new file mode 100644 index 00000000..a7a17812 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Structuring/daml.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-structuring +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Base/1.0.0/daml-finance-interface-instrument-base-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Bond/0.2.0/daml-finance-interface-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Generic/1.0.0/daml-finance-interface-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Swap/0.2.0/daml-finance-interface-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Token/1.0.0/daml-finance-interface-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Date/1.0.0/daml-finance-interface-types-date-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Structuring/daml/Daml/Finance/App/Interface/Structuring b/package/main/daml/Daml.Finance.App.Interface.Structuring/daml/Daml/Finance/App/Interface/Structuring new file mode 120000 index 00000000..2a8f33ed --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Structuring/daml/Daml/Finance/App/Interface/Structuring @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Structuring \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Interface.Trading/daml.yaml b/package/main/daml/Daml.Finance.App.Interface.Trading/daml.yaml new file mode 100644 index 00000000..bea44729 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Trading/daml.yaml @@ -0,0 +1,19 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-interface-trading +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Interface.Trading/daml/Daml/Finance/App/Interface/Trading b/package/main/daml/Daml.Finance.App.Interface.Trading/daml/Daml/Finance/App/Interface/Trading new file mode 120000 index 00000000..9a1cbf9e --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Interface.Trading/daml/Daml/Finance/App/Interface/Trading @@ -0,0 +1 @@ +../../../../../../../../../src/daml/Daml/Finance/App/Interface/Trading \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Issuance/daml.yaml b/package/main/daml/Daml.Finance.App.Issuance/daml.yaml new file mode 100644 index 00000000..043927da --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Issuance/daml.yaml @@ -0,0 +1,22 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-issuance +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Issuance/0.0.1/daml-finance-app-interface-issuance-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Issuance/daml/Daml/Finance/App/Issuance b/package/main/daml/Daml.Finance.App.Issuance/daml/Daml/Finance/App/Issuance new file mode 120000 index 00000000..cd504535 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Issuance/daml/Daml/Finance/App/Issuance @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Issuance \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Lending/daml.yaml b/package/main/daml/Daml.Finance.App.Lending/daml.yaml new file mode 100644 index 00000000..83673e75 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Lending/daml.yaml @@ -0,0 +1,20 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-lending +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Lending/0.0.1/daml-finance-app-interface-lending-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Lending/daml/Daml/Finance/App/Lending b/package/main/daml/Daml.Finance.App.Lending/daml/Daml/Finance/App/Lending new file mode 120000 index 00000000..b79871b2 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Lending/daml/Daml/Finance/App/Lending @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Lending \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Lifecycle/daml.yaml b/package/main/daml/Daml.Finance.App.Lifecycle/daml.yaml new file mode 100644 index 00000000..26721d32 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Lifecycle/daml.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-lifecycle +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/ContingentClaims.Core/1.0.0/contingent-claims-core-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Lifecycle/1.0.0/contingent-claims-lifecycle-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Valuation/0.2.0/contingent-claims-valuation-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Claims/1.0.0/daml-finance-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Base/1.0.0/daml-finance-interface-instrument-base-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Lifecycle/0.0.1/daml-finance-app-interface-lifecycle-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Structuring/0.0.1/daml-finance-app-interface-structuring-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Structuring/0.0.1/daml-finance-app-structuring-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Lifecycle/daml/Daml/Finance/App/Lifecycle b/package/main/daml/Daml.Finance.App.Lifecycle/daml/Daml/Finance/App/Lifecycle new file mode 120000 index 00000000..2856d50c --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Lifecycle/daml/Daml/Finance/App/Lifecycle @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Lifecycle \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Listing/daml.yaml b/package/main/daml/Daml.Finance.App.Listing/daml.yaml new file mode 100644 index 00000000..6e431701 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Listing/daml.yaml @@ -0,0 +1,17 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-listing +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Listing/0.0.1/daml-finance-app-interface-listing-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Listing/daml/Daml/Finance/App/Listing b/package/main/daml/Daml.Finance.App.Listing/daml/Daml/Finance/App/Listing new file mode 120000 index 00000000..40208c67 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Listing/daml/Daml/Finance/App/Listing @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Listing \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Role/daml.yaml b/package/main/daml/Daml.Finance.App.Role/daml.yaml new file mode 100644 index 00000000..c927948e --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Role/daml.yaml @@ -0,0 +1,34 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-role +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Bond/0.2.0/daml-finance-interface-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Generic/1.0.0/daml-finance-interface-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Swap/0.2.0/daml-finance-interface-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Token/1.0.0/daml-finance-interface-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Custody/0.0.1/daml-finance-app-custody-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Distribution/0.0.1/daml-finance-app-distribution-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Listing/0.0.1/daml-finance-app-interface-listing-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Issuance/0.0.1/daml-finance-app-issuance-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Lending/0.0.1/daml-finance-app-lending-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Lifecycle/0.0.1/daml-finance-app-lifecycle-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Listing/0.0.1/daml-finance-app-listing-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Settlement/0.0.1/daml-finance-app-settlement-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Structuring/0.0.1/daml-finance-app-structuring-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Trading/0.0.1/daml-finance-app-trading-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Role/daml/Daml/Finance/App/Role b/package/main/daml/Daml.Finance.App.Role/daml/Daml/Finance/App/Role new file mode 120000 index 00000000..22499cd1 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Role/daml/Daml/Finance/App/Role @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Role \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Settlement/daml.yaml b/package/main/daml/Daml.Finance.App.Settlement/daml.yaml new file mode 100644 index 00000000..4c73d8c1 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Settlement/daml.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-settlement +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Settlement/daml/Daml/Finance/App/Settlement b/package/main/daml/Daml.Finance.App.Settlement/daml/Daml/Finance/App/Settlement new file mode 120000 index 00000000..bda1939f --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Settlement/daml/Daml/Finance/App/Settlement @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Settlement \ No newline at end of file diff --git a/canton.conf b/package/main/daml/Daml.Finance.App.Setup/canton.conf similarity index 100% rename from canton.conf rename to package/main/daml/Daml.Finance.App.Setup/canton.conf diff --git a/package/main/daml/Daml.Finance.App.Setup/daml.yaml b/package/main/daml/Daml.Finance.App.Setup/daml.yaml new file mode 100644 index 00000000..132c8096 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Setup/daml.yaml @@ -0,0 +1,72 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-setup +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib + - daml-script +data-dependencies: + - .lib/daml-finance/ContingentClaims.Core/1.0.0/contingent-claims-core-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Lifecycle/1.0.0/contingent-claims-lifecycle-1.0.0.dar + - .lib/daml-finance/ContingentClaims.Valuation/0.2.0/contingent-claims-valuation-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Account/1.0.0/daml-finance-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Claims/1.0.0/daml-finance-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Data/1.0.0/daml-finance-data-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Holding/1.0.0/daml-finance-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Bond/0.2.0/daml-finance-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Equity/0.2.0/daml-finance-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Generic/1.0.0/daml-finance-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Swap/0.2.0/daml-finance-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Instrument.Token/1.0.0/daml-finance-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Data/1.0.0/daml-finance-interface-data-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Base/1.0.0/daml-finance-interface-instrument-base-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Bond/0.2.0/daml-finance-interface-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Generic/1.0.0/daml-finance-interface-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Swap/0.2.0/daml-finance-interface-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Token/1.0.0/daml-finance-interface-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Date/1.0.0/daml-finance-interface-types-date-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Lifecycle/1.0.0/daml-finance-lifecycle-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Settlement/1.0.0/daml-finance-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Util/1.0.0/daml-finance-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Custody/0.0.1/daml-finance-app-custody-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Data/0.0.1/daml-finance-app-data-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Decentralized/0.0.1/daml-finance-app-decentralized-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Distribution/0.0.1/daml-finance-app-distribution-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Custody/0.0.1/daml-finance-app-interface-custody-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Decentralized/0.0.1/daml-finance-app-interface-decentralized-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Distribution/0.0.1/daml-finance-app-interface-distribution-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Issuance/0.0.1/daml-finance-app-interface-issuance-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Lending/0.0.1/daml-finance-app-interface-lending-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Lifecycle/0.0.1/daml-finance-app-interface-lifecycle-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Listing/0.0.1/daml-finance-app-interface-listing-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Structuring/0.0.1/daml-finance-app-interface-structuring-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Trading/0.0.1/daml-finance-app-interface-trading-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Issuance/0.0.1/daml-finance-app-issuance-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Lending/0.0.1/daml-finance-app-lending-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Lifecycle/0.0.1/daml-finance-app-lifecycle-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Listing/0.0.1/daml-finance-app-listing-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Role/0.0.1/daml-finance-app-role-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Settlement/0.0.1/daml-finance-app-settlement-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Structuring/0.0.1/daml-finance-app-structuring-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Trading/0.0.1/daml-finance-app-trading-0.0.2.dar +start-navigator: no +sandbox-options: + - -c=canton.conf +json-api-options: + - --config=json-api.conf +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Setup/daml/Daml/Finance/App/Setup b/package/main/daml/Daml.Finance.App.Setup/daml/Daml/Finance/App/Setup new file mode 120000 index 00000000..5bdda5a5 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Setup/daml/Daml/Finance/App/Setup @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Setup \ No newline at end of file diff --git a/json-api.conf b/package/main/daml/Daml.Finance.App.Setup/json-api.conf similarity index 100% rename from json-api.conf rename to package/main/daml/Daml.Finance.App.Setup/json-api.conf diff --git a/package/main/daml/Daml.Finance.App.Structuring/daml.yaml b/package/main/daml/Daml.Finance.App.Structuring/daml.yaml new file mode 100644 index 00000000..58921ad1 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Structuring/daml.yaml @@ -0,0 +1,26 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-structuring +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Claims/1.0.0/daml-finance-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Base/1.0.0/daml-finance-interface-instrument-base-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Bond/0.2.0/daml-finance-interface-instrument-bond-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Generic/1.0.0/daml-finance-interface-instrument-generic-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Swap/0.2.0/daml-finance-interface-instrument-swap-0.2.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Instrument.Token/1.0.0/daml-finance-interface-instrument-token-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Date/1.0.0/daml-finance-interface-types-date-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Structuring/0.0.1/daml-finance-app-interface-structuring-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Structuring/daml/Daml/Finance/App/Structuring b/package/main/daml/Daml.Finance.App.Structuring/daml/Daml/Finance/App/Structuring new file mode 120000 index 00000000..9e60e709 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Structuring/daml/Daml/Finance/App/Structuring @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Structuring \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App.Trading/daml.yaml b/package/main/daml/Daml.Finance.App.Trading/daml.yaml new file mode 100644 index 00000000..7c9cc346 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Trading/daml.yaml @@ -0,0 +1,22 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +sdk-version: 2.6.0-snapshot.20221218.11169.0.9d007b31 +name: daml-finance-app-trading +version: 0.0.2 +source: daml +dependencies: + - daml-prim + - daml-stdlib +data-dependencies: + - .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar + - .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Base/0.0.1/daml-finance-app-interface-base-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Common/0.0.1/daml-finance-app-interface-common-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Settlement/0.0.1/daml-finance-app-interface-settlement-0.0.2.dar + - .lib/daml-finance-app/Daml.Finance.App.Interface.Trading/0.0.1/daml-finance-app-interface-trading-0.0.2.dar +build-options: + - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App.Trading/daml/Daml/Finance/App/Trading b/package/main/daml/Daml.Finance.App.Trading/daml/Daml/Finance/App/Trading new file mode 120000 index 00000000..a48694c8 --- /dev/null +++ b/package/main/daml/Daml.Finance.App.Trading/daml/Daml/Finance/App/Trading @@ -0,0 +1 @@ +../../../../../../../../src/daml/Daml/Finance/App/Trading \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.App/daml.yaml b/package/main/daml/Daml.Finance.App/daml.yaml deleted file mode 100644 index 5c6b3665..00000000 --- a/package/main/daml/Daml.Finance.App/daml.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -sdk-version: 2.5.0-snapshot.20221010.10736.0.2f453a14 -name: daml-finance-app -version: 0.0.1 -source: daml -dependencies: - - daml-prim - - daml-stdlib -data-dependencies: - - ../../../../.lib/contingent-claims-core-0.1.0.dar - - ../../../../.lib/contingent-claims-lifecycle-0.1.0.dar - - ../../../../.lib/contingent-claims-valuation-0.1.0.dar - - ../../../../.lib/daml-finance-claims-0.1.3.dar - - ../../../../.lib/daml-finance-interface-account-0.1.2.dar - - ../../../../.lib/daml-finance-interface-claims-0.1.7.dar - - ../../../../.lib/daml-finance-interface-data-0.1.6.dar - - ../../../../.lib/daml-finance-interface-holding-0.1.7.dar - - ../../../../.lib/daml-finance-interface-instrument-base-0.1.7.dar - - ../../../../.lib/daml-finance-interface-instrument-bond-0.1.7.dar - - ../../../../.lib/daml-finance-interface-instrument-equity-0.1.8.dar - - ../../../../.lib/daml-finance-interface-instrument-generic-0.1.8.dar - - ../../../../.lib/daml-finance-interface-instrument-swap-0.1.8.dar - - ../../../../.lib/daml-finance-interface-instrument-token-0.1.7.dar - - ../../../../.lib/daml-finance-interface-lifecycle-0.1.8.dar - - ../../../../.lib/daml-finance-interface-settlement-0.1.8.dar - - ../../../../.lib/daml-finance-interface-types-0.1.6.dar - - ../../../../.lib/daml-finance-interface-util-0.1.6.dar -build-options: - - --target=1.15 diff --git a/package/main/daml/Daml.Finance.App/daml/Daml/Finance/App b/package/main/daml/Daml.Finance.App/daml/Daml/Finance/App deleted file mode 120000 index 0b31a387..00000000 --- a/package/main/daml/Daml.Finance.App/daml/Daml/Finance/App +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../src/daml/Daml/Finance/App \ No newline at end of file diff --git a/package/main/daml/Daml.Finance.Setup/daml.yaml b/package/main/daml/Daml.Finance.Setup/daml.yaml deleted file mode 100644 index b17efa67..00000000 --- a/package/main/daml/Daml.Finance.Setup/daml.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -sdk-version: 2.5.0-snapshot.20221010.10736.0.2f453a14 -name: daml-finance-app-setup -version: 0.0.1 -source: daml -init-script: Daml.Finance.Setup.Demo:demo -dependencies: - - daml-prim - - daml-stdlib - - daml-script -data-dependencies: - - ../../../../.lib/contingent-claims-core-0.1.0.dar - - ../../../../.lib/daml-finance-account-0.1.2.dar - - ../../../../.lib/daml-finance-claims-0.1.3.dar - - ../../../../.lib/daml-finance-data-0.1.7.dar - - ../../../../.lib/daml-finance-holding-0.1.7.dar - - ../../../../.lib/daml-finance-instrument-bond-0.1.8.dar - - ../../../../.lib/daml-finance-instrument-equity-0.1.9.dar - - ../../../../.lib/daml-finance-instrument-generic-0.1.8.dar - - ../../../../.lib/daml-finance-instrument-swap-0.1.8.dar - - ../../../../.lib/daml-finance-instrument-token-0.1.7.dar - - ../../../../.lib/daml-finance-interface-account-0.1.2.dar - - ../../../../.lib/daml-finance-interface-claims-0.1.7.dar - - ../../../../.lib/daml-finance-interface-data-0.1.6.dar - - ../../../../.lib/daml-finance-interface-holding-0.1.7.dar - - ../../../../.lib/daml-finance-interface-instrument-base-0.1.7.dar - - ../../../../.lib/daml-finance-interface-instrument-bond-0.1.7.dar - - ../../../../.lib/daml-finance-interface-instrument-equity-0.1.8.dar - - ../../../../.lib/daml-finance-interface-instrument-generic-0.1.8.dar - - ../../../../.lib/daml-finance-interface-instrument-token-0.1.7.dar - - ../../../../.lib/daml-finance-interface-lifecycle-0.1.8.dar - - ../../../../.lib/daml-finance-interface-settlement-0.1.8.dar - - ../../../../.lib/daml-finance-interface-types-0.1.6.dar - - ../../../../.lib/daml-finance-interface-util-0.1.6.dar - - ../../../../.lib/daml-finance-lifecycle-0.1.9.dar - - ../../../../.lib/daml-finance-settlement-0.1.8.dar - - ../../../../.lib/daml-finance-util-0.1.6.dar - - ../Daml.Finance.App/.daml/dist/daml-finance-app-0.0.1.dar -start-navigator: no -sandbox-options: - - -c=canton.conf -script-options: - - --output-file=../../../../ui/src/parties.json -codegen: - js: - output-directory: ../../../../ui/daml.js - npm-scope: daml.js -build-options: - - --target=1.15 diff --git a/package/main/daml/Daml.Finance.Setup/daml/Daml/Finance/Setup b/package/main/daml/Daml.Finance.Setup/daml/Daml/Finance/Setup deleted file mode 120000 index 3e3f86c3..00000000 --- a/package/main/daml/Daml.Finance.Setup/daml/Daml/Finance/Setup +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../src/daml/Daml/Finance/Setup \ No newline at end of file diff --git a/package/packages.yaml b/package/packages.yaml new file mode 100644 index 00000000..49bc9f60 --- /dev/null +++ b/package/packages.yaml @@ -0,0 +1,168 @@ +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +package-install-dir: .lib +remote: + packages: + - package: + name: ContingentClaims.Core + repo: + host: github.com + organisation: digital-asset + name: contingent-claims-core + base-module: ContingentClaims.Core + tag: ContingentClaims.Core/1.0.0 + dar-name: contingent-claims-core-1.0.0.dar + - package: + name: ContingentClaims.Lifecycle + repo: + host: github.com + organisation: digital-asset + name: contingent-claims-lifecycle + base-module: ContingentClaims.Lifecycle + tag: ContingentClaims.Lifecycle/1.0.0 + dar-name: contingent-claims-lifecycle-1.0.0.dar + - package: + name: ContingentClaims.Valuation + repo: + host: github.com + organisation: digital-asset + name: contingent-claims-valuation + base-module: ContingentClaims.Valuation + tag: ContingentClaims.Valuation/1.0.0 + dar-name: contingent-claims-valuation-1.0.0.dar +local: + repo: + host: github.com + organisation: digital-asset + name: daml-finance-app + # Note - packages are listed in build order. + packages: + # App + ## Interfaces + - package: + name: Daml.Finance.App.Interface.Base + path: main/daml/Daml.Finance.App.Interface.Base + base-module: Daml.Finance.App.Interface.Base + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Common + path: main/daml/Daml.Finance.App.Interface.Common + base-module: Daml.Finance.App.Interface.Common + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Settlement + path: main/daml/Daml.Finance.App.Interface.Settlement + base-module: Daml.Finance.App.Interface.Settlement + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Custody + path: main/daml/Daml.Finance.App.Interface.Custody + base-module: Daml.Finance.App.Interface.Custody + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Decentralized + path: main/daml/Daml.Finance.App.Interface.Decentralized + base-module: Daml.Finance.App.Interface.Decentralized + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Distribution + path: main/daml/Daml.Finance.App.Interface.Distribution + base-module: Daml.Finance.App.Interface.Distribution + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Issuance + path: main/daml/Daml.Finance.App.Interface.Issuance + base-module: Daml.Finance.App.Interface.Issuance + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Lending + path: main/daml/Daml.Finance.App.Interface.Lending + base-module: Daml.Finance.App.Interface.Lending + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Lifecycle + path: main/daml/Daml.Finance.App.Interface.Lifecycle + base-module: Daml.Finance.App.Interface.Lifecycle + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Listing + path: main/daml/Daml.Finance.App.Interface.Listing + base-module: Daml.Finance.App.Interface.Listing + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Structuring + path: main/daml/Daml.Finance.App.Interface.Structuring + base-module: Daml.Finance.App.Interface.Structuring + increment-version: patch + - package: + name: Daml.Finance.App.Interface.Trading + path: main/daml/Daml.Finance.App.Interface.Trading + base-module: Daml.Finance.App.Interface.Trading + increment-version: patch + ## Implementations + - package: + name: Daml.Finance.App.Custody + path: main/daml/Daml.Finance.App.Custody + base-module: Daml.Finance.App.Custody + increment-version: patch + - package: + name: Daml.Finance.App.Data + path: main/daml/Daml.Finance.App.Data + base-module: Daml.Finance.App.Data + increment-version: patch + - package: + name: Daml.Finance.App.Decentralized + path: main/daml/Daml.Finance.App.Decentralized + base-module: Daml.Finance.App.Decentralized + increment-version: patch + - package: + name: Daml.Finance.App.Issuance + path: main/daml/Daml.Finance.App.Issuance + base-module: Daml.Finance.App.Issuance + increment-version: patch + - package: + name: Daml.Finance.App.Distribution + path: main/daml/Daml.Finance.App.Distribution + base-module: Daml.Finance.App.Distribution + increment-version: patch + - package: + name: Daml.Finance.App.Lending + path: main/daml/Daml.Finance.App.Lending + base-module: Daml.Finance.App.Lending + increment-version: patch + - package: + name: Daml.Finance.App.Structuring + path: main/daml/Daml.Finance.App.Structuring + base-module: Daml.Finance.App.Structuring + increment-version: patch + - package: + name: Daml.Finance.App.Lifecycle + path: main/daml/Daml.Finance.App.Lifecycle + base-module: Daml.Finance.App.Lifecycle + increment-version: patch + - package: + name: Daml.Finance.App.Listing + path: main/daml/Daml.Finance.App.Listing + base-module: Daml.Finance.App.Listing + increment-version: patch + - package: + name: Daml.Finance.App.Settlement + path: main/daml/Daml.Finance.App.Settlement + base-module: Daml.Finance.App.Settlement + increment-version: patch + - package: + name: Daml.Finance.App.Trading + path: main/daml/Daml.Finance.App.Trading + base-module: Daml.Finance.App.Trading + increment-version: patch + - package: + name: Daml.Finance.App.Role + path: main/daml/Daml.Finance.App.Role + base-module: Daml.Finance.App.Role + increment-version: patch + - package: + name: Daml.Finance.App.Setup + path: main/daml/Daml.Finance.App.Setup + base-module: Daml.Finance.App.Setup + increment-version: patch diff --git a/scripts/build-package.sh b/scripts/build-package.sh new file mode 100755 index 00000000..6ca78fc7 --- /dev/null +++ b/scripts/build-package.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +project=$1 +script_dir=$(cd "$(dirname $0)"; pwd -P) +project_name=$(yq e '.name' ${project}/daml.yaml) + +green='\033[0;32m' +boldGreen='\033[1;92m' +cyan='\033[0;36m' +boldWhite='\033[1;97m' +colour_off='\033[0m' + +project_string="Building package - ${project_name}" +bar="" +for str in $(seq 1 `echo ${project_string} | wc -c`); do bar+="-"; done + +echo -e "\n${boldGreen}${bar}${colour_off}" +echo -e "${boldGreen}${project_string}${colour_off}" +echo -e "${boldGreen}${bar}${colour_off}\n" + +echo -e "${boldWhite}Extracting dependencies for library ${project_name}...${colour_off}\n" +${script_dir}/get-dependencies.sh ${project}/daml.yaml + +echo -e "${boldWhite}Compiling ${project_name}...${colour_off}" +DAML_PROJECT=${project} daml build + +echo -e "\n${cyan}Successfully built package ${project_name}.${colour_off}" diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh new file mode 100755 index 00000000..98d09ddd --- /dev/null +++ b/scripts/build-packages.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +# Use absolute paths to allow this script to be called from any location +script_dir=$(cd "$(dirname $0)"; pwd -P) +root_dir=$(cd ${script_dir}; cd ..; pwd -P) + +# Remove any existing .lib/ directories from packages +if ls package/*/daml/*/.lib/ 1> /dev/null 2>&1; then + rm -r ${root_dir}/package/*/daml/*/.lib/ +fi + +# Read the list of packages in order from the package config file and build each package +packages_yaml=${root_dir}/package/packages.yaml +package_paths=($(yq e '.local.packages | to_entries | map(.value.package.path) | .[]' ${packages_yaml})) +for package_path in "${package_paths[@]}"; do + ${script_dir}/build-package.sh ${root_dir}/package/${package_path} +done + +# Copy package dars into a dedicated folder +if [[ -d ${root_dir}/.dars ]]; then + rm -r ${root_dir}/.dars +fi +mkdir ${root_dir}/.dars +cp ${root_dir}/package/main/daml/*/.daml/dist/* ${root_dir}/.dars/ + +# Copy dependencies into the same folder (to ) dedicated folder +cp ${root_dir}/.lib/daml-finance/*/*/*.dar ${root_dir}/.dars/ + +boldCyan='\033[1;96m' +colour_off='\033[0m' +echo -e "\n${boldCyan}All packages successfully built!${colour_off}" diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index 94c9296a..00000000 --- a/scripts/build.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -# Use absolute paths to allow this script to be called from any location -script_dir=$(cd "$(dirname $0)"; pwd -P) -root_dir=$(cd ${script_dir}; cd ..; pwd -P) - -# Build -DAML_PROJECT=${root_dir}/package/main/daml/Daml.Finance.App daml build -DAML_PROJECT=${root_dir}/package/main/daml/Daml.Finance.Setup daml build - -if [[ -d ${root_dir}/.dars ]]; then - rm -r ${root_dir}/.dars -fi - -# Copy all package dars into a dedicated folder -mkdir ${root_dir}/.dars -cp ${root_dir}/package/main/daml/*/.daml/dist/* ${root_dir}/.dars/ diff --git a/scripts/clean-packages.sh b/scripts/clean-packages.sh new file mode 100755 index 00000000..1f9d956f --- /dev/null +++ b/scripts/clean-packages.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +root_dir=$(cd "$(dirname $0)"; cd ..; pwd -P) + +# Remove .lib directories in packages +echo "Removing .lib/ directories in all packages" +rm -r ${root_dir}/package/*/daml/*/.lib/ 1> /dev/null 2>&1 + +echo "Removing .dars/ directory" +rm -r ${root_dir}/.dars 1> /dev/null 2>&1 + +# Clean each package defined in the package config file. +packages_yaml=${root_dir}/package/packages.yaml +package_paths=($(yq e '.local.packages | to_entries | map(.value.package.path) | .[]' ${packages_yaml})) +for package_path in "${package_paths[@]}"; do + daml clean --project-root ${root_dir}/package/${package_path} +done diff --git a/scripts/clean.sh b/scripts/clean.sh deleted file mode 100755 index 7103ecad..00000000 --- a/scripts/clean.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -# Use absolute paths to allow this script to be called from any location -script_dir=$(cd "$(dirname $0)"; pwd -P) -root_dir=$(cd ${script_dir}; cd ..; pwd -P) - -# Clean -daml clean --project-root ${root_dir}/package/main/daml/Daml.Finance.App -daml clean --project-root ${root_dir}/package/main/daml/Daml.Finance.Setup - -# Remove generated party file -if [[ -a ${root_dir}/ui/src/parties.json ]]; then - rm ${root_dir}/ui/src/parties.json -fi diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 00000000..14c318d3 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +# ---- Deploy to Daml Hub ---- +root_dir=$(cd "$(dirname $0)"; cd ..; pwd -P) +ui_dir=$root_dir/ui + +red='\033[0;31m' +colour_off='\033[0m' + +echo "Generating token: " +token=$(curl -s -XPOST -H "Authorization: Basic c2NyZWQtMzczMzRmZDktODA5YS00NWFiLTljYjQtMDAwZTlhZTk4NzFmOkJMZ1JOaURZTmJ2aDlTNzNzcEtZ" 'https://login.hub.daml.com/auth/site-credentials/login') +damlhub token $token | jq -r '.success' + +project_name=default +ledger_name=ledger$(echo $RANDOM | md5sum | head -c 4; echo) + +# Create project +echo -n "Creating project: " +project_id=$(damlhub project ensure $project_name 2>&1 | tail -n +3 | jq -r '.id') +echo $project_id + +# Create ledger +echo -n "Creating ledger: " +ledger_id=$(damlhub ledger add $project_id $ledger_name 2>&1 | tail -n +3 | jq -r '.id') +echo $ledger_id + +# Wait for ledger +while true; do + status=$(damlhub ledger health $ledger_id 2>&1 | tail -n +3 | jq -r '.status') + if [ "$status" == "200" ]; then break; else echo -n "."; fi + sleep 5 +done +echo "." + +# Upload files +cd $ui_dir +ui_name=$(npm pkg get name | sed 's/"//g') +ui_version=$(npm pkg get version | sed 's/"//g') +ui_file=.dars/$ui_name-$ui_version.zip +cd .. +dar_name=$(cat package/main/daml/Daml.Finance.App.Setup/daml.yaml | grep name | cut -d " " -f 2) +dar_version=$(cat package/main/daml/Daml.Finance.App.Setup/daml.yaml | grep ^version | cut -d " " -f 2) +dar_file=.dars/$dar_name-$dar_version.dar + +echo -n "Uploading DAR: " +hash_dar=$(damlhub artifact put $dar_file 2>&1 | tail -n +3 | jq -r '.artifact_hash') +echo $hash_dar + +echo -n "Uploading UI: " +hash_ui=$(damlhub artifact put $ui_file 2>&1 | tail -n +3 | jq -r '.artifact_hash') +echo $hash_ui + +# Deploy artifacts +echo "Installing DAR: " +damlhub workspace deploy $hash_dar $ledger_id 2>&1 | tail -n +3 | jq -r '.createdAt' +echo "Installing UI: " +damlhub workspace deploy $hash_ui $ledger_id 2>&1 | tail -n +3 | jq -r '.createdAt' + +echo "Deploying DAR" +damlhub ledger dar $ledger_id $hash_dar 2>&1 | tail -n +4 +echo "Deploying UI" +damlhub ledger ui $ledger_id $hash_ui 2>&1 | tail -n +4 + +echo "Deployment completed at: https://$ledger_id.daml.app" + +# ledger_id=a38wn9e27grvjaj9 +# hash_ui=$(damlhub artifact put .dars/daml-finance-app-ui-0.0.2.zip 2>&1 | tail -n +3 | jq -r '.artifact_hash') +# hash_dar=$(damlhub artifact put .dars/daml-finance-app-setup-0.0.2.dar 2>&1 | tail -n +3 | jq -r '.artifact_hash') +# damlhub workspace deploy $hash_dar $ledger_id 2>&1 | tail -n +3 +# damlhub workspace deploy $hash_ui $ledger_id 2>&1 | tail -n +3 +# damlhub ledger dar $ledger_id $hash_dar +# damlhub ledger ui $ledger_id $hash_ui diff --git a/scripts/get-dependencies.bat b/scripts/get-dependencies.bat index d184021f..0a5e530e 100644 --- a/scripts/get-dependencies.bat +++ b/scripts/get-dependencies.bat @@ -6,35 +6,36 @@ :: Create .lib directory if it doesn't exist if not exist ".\.lib\" mkdir .\.lib -call :get_dependency contingent-claims-core ContingentClaims.Core 0.1.0 -call :get_dependency contingent-claims-lifecycle ContingentClaims.Lifecycle 0.1.0 -call :get_dependency contingent-claims-valuation ContingentClaims.Valuation 0.1.0 -call :get_dependency daml-finance-account Daml.Finance.Account 0.1.2 -call :get_dependency daml-finance-claims Daml.Finance.Claims 0.1.3 -call :get_dependency daml-finance-data Daml.Finance.Data 0.1.7 -call :get_dependency daml-finance-holding Daml.Finance.Holding 0.1.7 -call :get_dependency daml-finance-instrument-bond Daml.Finance.Instrument.Bond 0.1.8 -call :get_dependency daml-finance-instrument-equity Daml.Finance.Instrument.Equity 0.1.9 -call :get_dependency daml-finance-instrument-generic Daml.Finance.Instrument.Generic 0.1.8 -call :get_dependency daml-finance-instrument-swap Daml.Finance.Instrument.Swap 0.1.8 -call :get_dependency daml-finance-instrument-token Daml.Finance.Instrument.Token 0.1.7 -call :get_dependency daml-finance-interface-account Daml.Finance.Interface.Account 0.1.2 -call :get_dependency daml-finance-interface-claims Daml.Finance.Interface.Claims 0.1.7 -call :get_dependency daml-finance-interface-data Daml.Finance.Interface.Data 0.1.6 -call :get_dependency daml-finance-interface-holding Daml.Finance.Interface.Holding 0.1.7 -call :get_dependency daml-finance-interface-instrument-base Daml.Finance.Interface.Instrument.Base 0.1.7 -call :get_dependency daml-finance-interface-instrument-bond Daml.Finance.Interface.Instrument.Bond 0.1.7 -call :get_dependency daml-finance-interface-instrument-equity Daml.Finance.Interface.Instrument.Equity 0.1.8 -call :get_dependency daml-finance-interface-instrument-generic Daml.Finance.Interface.Instrument.Generic 0.1.8 -call :get_dependency daml-finance-interface-instrument-swap Daml.Finance.Interface.Instrument.Swap 0.1.8 -call :get_dependency daml-finance-interface-instrument-token Daml.Finance.Interface.Instrument.Token 0.1.7 -call :get_dependency daml-finance-interface-lifecycle Daml.Finance.Interface.Lifecycle 0.1.8 -call :get_dependency daml-finance-interface-settlement Daml.Finance.Interface.Settlement 0.1.8 -call :get_dependency daml-finance-interface-types Daml.Finance.Interface.Types 0.1.6 -call :get_dependency daml-finance-interface-util Daml.Finance.Interface.Util 0.1.6 -call :get_dependency daml-finance-lifecycle Daml.Finance.Lifecycle 0.1.9 -call :get_dependency daml-finance-settlement Daml.Finance.Settlement 0.1.8 -call :get_dependency daml-finance-util Daml.Finance.Util 0.1.6 +call :get_dependency contingent-claims-core ContingentClaims.Core 1.0.0 +call :get_dependency contingent-claims-lifecycle ContingentClaims.Lifecycle 1.0.0 +call :get_dependency contingent-claims-valuation ContingentClaims.Valuation 0.2.0 +call :get_dependency daml-finance-account Daml.Finance.Account 1.0.0 +call :get_dependency daml-finance-claims Daml.Finance.Claims 1.0.0 +call :get_dependency daml-finance-data Daml.Finance.Data 1.0.0 +call :get_dependency daml-finance-holding Daml.Finance.Holding 1.0.0 +call :get_dependency daml-finance-instrument-bond Daml.Finance.Instrument.Bond 0.2.0 +call :get_dependency daml-finance-instrument-equity Daml.Finance.Instrument.Equity 0.2.0 +call :get_dependency daml-finance-instrument-generic Daml.Finance.Instrument.Generic 1.0.0 +call :get_dependency daml-finance-instrument-swap Daml.Finance.Instrument.Swap 0.2.0 +call :get_dependency daml-finance-instrument-token Daml.Finance.Instrument.Token 1.0.0 +call :get_dependency daml-finance-interface-account Daml.Finance.Interface.Account 1.0.0 +call :get_dependency daml-finance-interface-claims Daml.Finance.Interface.Claims 1.0.0 +call :get_dependency daml-finance-interface-data Daml.Finance.Interface.Data 1.0.0 +call :get_dependency daml-finance-interface-holding Daml.Finance.Interface.Holding 1.0.0 +call :get_dependency daml-finance-interface-instrument-base Daml.Finance.Interface.Instrument.Base 1.0.0 +call :get_dependency daml-finance-interface-instrument-bond Daml.Finance.Interface.Instrument.Bond 0.2.0 +call :get_dependency daml-finance-interface-instrument-equity Daml.Finance.Interface.Instrument.Equity 0.2.0 +call :get_dependency daml-finance-interface-instrument-generic Daml.Finance.Interface.Instrument.Generic 1.0.0 +call :get_dependency daml-finance-interface-instrument-swap Daml.Finance.Interface.Instrument.Swap 0.2.0 +call :get_dependency daml-finance-interface-instrument-token Daml.Finance.Interface.Instrument.Token 1.0.0 +call :get_dependency daml-finance-interface-lifecycle Daml.Finance.Interface.Lifecycle 1.0.0 +call :get_dependency daml-finance-interface-settlement Daml.Finance.Interface.Settlement 1.0.0 +call :get_dependency daml-finance-interface-types Daml.Finance.Interface.Types.Common 1.0.0 +call :get_dependency daml-finance-interface-types Daml.Finance.Interface.Types.Date 1.0.0 +call :get_dependency daml-finance-interface-util Daml.Finance.Interface.Util 1.0.0 +call :get_dependency daml-finance-lifecycle Daml.Finance.Lifecycle 1.0.0 +call :get_dependency daml-finance-settlement Daml.Finance.Settlement 1.0.0 +call :get_dependency daml-finance-util Daml.Finance.Util 1.0.0 exit /b 0 :get_dependency diff --git a/scripts/get-dependencies.sh b/scripts/get-dependencies.sh index 6116c03d..2b375345 100755 --- a/scripts/get-dependencies.sh +++ b/scripts/get-dependencies.sh @@ -2,48 +2,87 @@ # Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -set -eu +set -euo pipefail -# Create .lib directory if it doesn't exist -if [[ ! -d .lib ]]; then - mkdir .lib -fi +daml_yaml_file=$1 +project_name=$(yq e '.name' ${daml_yaml_file}) + +# Use absolute paths to allow this script to be called from any location +root_dir=$(cd "$(dirname $0)"; cd ..; pwd -P) +cache_dir="${root_dir}/.cache" +dars_dir="${root_dir}/.dars" +package_root_dir="${root_dir}/package/*/daml" +project_root_dir=$(cd "$(dirname "${daml_yaml_file}")"; pwd -P) +project_lib_dir="${project_root_dir}/.lib" + +red='\033[0;31m' +colour_off='\033[0m' + +dependencies=($(yq e '.data-dependencies[]' ${daml_yaml_file})) +if [[ -z ${dependencies:-} ]]; then + echo "Project ${project_name} has no dependencies. Ignoring..." +else + for dependency_path in "${dependencies[@]}"; do + + echo "Processing dependency ${dependency_path}" + + isValidPath=`awk '{ match($0, /^.lib\/[a-zA-Z\-]*\/([a-zA-Z\.]*\/v?[0-9\.]*|v?[0-9\.]*)\/[a-zA-Z0-9\.\-]*\.dar$/); print RLENGTH }' <<< ${dependency_path}` + if [[ ${isValidPath} -eq -1 ]]; then + echo -e "${red}ERROR: Dependency ${dependency_path} does not match the expected format. + + Dependency syntax : + .lib/// + syntax : + | / -get_dependency () { - local package_name=$1 - local module_name=$2 - local version=$3 - local url="https://github.com/digital-asset/daml-finance/releases/download/${module_name}/${version}/${package_name}-${version}.dar" - echo "Getting dependency ${package_name} v${version}" - if [[ ! -a ".lib/${package_name}-${version}.dar" ]]; then curl -Lf# $url -o .lib/$package_name-$version.dar; fi -} - -get_dependency contingent-claims-core ContingentClaims.Core 0.1.0 -get_dependency contingent-claims-lifecycle ContingentClaims.Lifecycle 0.1.0 -get_dependency contingent-claims-valuation ContingentClaims.Valuation 0.1.0 -get_dependency daml-finance-account Daml.Finance.Account 0.1.2 -get_dependency daml-finance-claims Daml.Finance.Claims 0.1.3 -get_dependency daml-finance-data Daml.Finance.Data 0.1.7 -get_dependency daml-finance-holding Daml.Finance.Holding 0.1.7 -get_dependency daml-finance-instrument-bond Daml.Finance.Instrument.Bond 0.1.8 -get_dependency daml-finance-instrument-equity Daml.Finance.Instrument.Equity 0.1.9 -get_dependency daml-finance-instrument-generic Daml.Finance.Instrument.Generic 0.1.8 -get_dependency daml-finance-instrument-swap Daml.Finance.Instrument.Swap 0.1.8 -get_dependency daml-finance-instrument-token Daml.Finance.Instrument.Token 0.1.7 -get_dependency daml-finance-interface-account Daml.Finance.Interface.Account 0.1.2 -get_dependency daml-finance-interface-claims Daml.Finance.Interface.Claims 0.1.7 -get_dependency daml-finance-interface-data Daml.Finance.Interface.Data 0.1.6 -get_dependency daml-finance-interface-holding Daml.Finance.Interface.Holding 0.1.7 -get_dependency daml-finance-interface-instrument-base Daml.Finance.Interface.Instrument.Base 0.1.7 -get_dependency daml-finance-interface-instrument-bond Daml.Finance.Interface.Instrument.Bond 0.1.7 -get_dependency daml-finance-interface-instrument-equity Daml.Finance.Interface.Instrument.Equity 0.1.8 -get_dependency daml-finance-interface-instrument-generic Daml.Finance.Interface.Instrument.Generic 0.1.8 -get_dependency daml-finance-interface-instrument-swap Daml.Finance.Interface.Instrument.Swap 0.1.8 -get_dependency daml-finance-interface-instrument-token Daml.Finance.Interface.Instrument.Token 0.1.7 -get_dependency daml-finance-interface-lifecycle Daml.Finance.Interface.Lifecycle 0.1.8 -get_dependency daml-finance-interface-settlement Daml.Finance.Interface.Settlement 0.1.8 -get_dependency daml-finance-interface-types Daml.Finance.Interface.Types 0.1.6 -get_dependency daml-finance-interface-util Daml.Finance.Interface.Util 0.1.6 -get_dependency daml-finance-lifecycle Daml.Finance.Lifecycle 0.1.9 -get_dependency daml-finance-settlement Daml.Finance.Settlement 0.1.8 -get_dependency daml-finance-util Daml.Finance.Util 0.1.6 + Regex format : ^\.lib\/[a-zA-Z\-]*\/([a-zA-Z\.]*\/v?[0-9\.]*|v?[0-9\.]*)\/[a-zA-Z0-9\.\-]*\.dar$ ${colour_off}" + exit 1 + fi + + if [[ -a ${project_root_dir}/${dependency_path} ]]; then + echo -e "Dependency ${dependency_path} already setup. Skipping.\n" + else + # Extract the dependency details from dependency path + read repo_name file_name tag <<<$(awk '{ + n = split($0,array,"/"); + repo = array[2]; + file = array[n]; + for (i = 3; i < n; i++) { + tag = sprintf("%s%s", tag, array[i]); + if (i != n - 1) + tag = sprintf("%s/", tag); + } + } + END { print repo, file, tag }' <<< ${dependency_path}) + + # Check if the dependency exists in the following order : + # 1 - cache + # 2 - GitHub + # 3 - local build + cache_dependency_path=${cache_dir}/${repo_name}/${tag} + + if [[ -a ${cache_dependency_path}/${file_name} ]]; then + echo "Using cached dependency at ${cache_dependency_path}/${file_name}" + mkdir -p ${project_lib_dir}/${repo_name}/${tag} && cp ${cache_dependency_path}/${file_name} ${project_root_dir}/${dependency_path} + elif [[ `curl -L -o /dev/null --silent -I -w '%{http_code}' https://github.com/digital-asset/${repo_name}/releases/download/${tag}/${file_name}` == "200" ]]; then + echo "Downloading ${file_name} from Github repository at https://github.com/digital-asset/${repo_name}/releases/download/${tag}/${file_name}..." + curl -Lf# https://github.com/digital-asset/${repo_name}/releases/download/${tag}/${file_name} --create-dirs -o ${project_root_dir}/${dependency_path} + + echo -e "\nAdding ${file_name} to the cache..." + mkdir -p ${cache_dependency_path} && cp ${project_root_dir}/${dependency_path} ${cache_dependency_path}/${file_name} + else + echo "Attempting to get dependency ${file_name} locally..." + package_name=$(echo ${tag} | cut -f1 -d/) + if ( ls ${package_root_dir}/${package_name}/.daml/dist/${file_name} 1> /dev/null 2>&1 ); then + mkdir -p ${project_lib_dir}/${repo_name}/${tag} && cp ${package_root_dir}/${package_name}/.daml/dist/${file_name} ${project_root_dir}/${dependency_path} + else + echo -e "${red}ERROR: Unable to locally locate dependency ${file_name}. Ensure this dependency has been successfully built.${colour_off}" + exit 1 + fi + fi + + echo -e "Dependency ${file_name} installed successfully and saved to ${project_root_dir}/${dependency_path}.\n" + fi + + done +fi diff --git a/scripts/get-package-ids.sh b/scripts/get-package-ids.sh index 3e5df8a8..7b638a8d 100755 --- a/scripts/get-package-ids.sh +++ b/scripts/get-package-ids.sh @@ -3,49 +3,52 @@ # SPDX-License-Identifier: Apache-2.0 echo "" -DAR=($(daml damlc inspect .lib/contingent-claims-core-0.1.0.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/ContingentClaims.Core/1.0.0/contingent-claims-core-1.0.0.dar | head -1)) echo \"@daml.js/contingent-claims-core\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-account-0.1.2.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Account/1.0.0/daml-finance-interface-account-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-account\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-claims-0.1.7.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Claims/1.0.0/daml-finance-interface-claims-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-claims\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-data-0.1.6.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance-interface-data-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-data\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-holding-0.1.7.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Holding/1.0.0/daml-finance-interface-holding-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-holding\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-instrument-base-0.1.7.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Instrument.Base/1.0.0/daml-finance-interface-instrument-base-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-instrument-base\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-instrument-bond-0.1.7.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Instrument.Bond/0.2.0/daml-finance-interface-instrument-bond-0.2.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-instrument-bond\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-instrument-equity-0.1.8.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Instrument.Equity/0.2.0/daml-finance-interface-instrument-equity-0.2.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-instrument-equity\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-instrument-generic-0.1.8.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Instrument.Generic/1.0.0/daml-finance-interface-instrument-generic-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-instrument-generic\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-instrument-swap-0.1.8.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Instrument.Swap/0.2.0/daml-finance-interface-instrument-swap-0.2.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-instrument-swap\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-instrument-token-0.1.7.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Instrument.Token/1.0.0/daml-finance-interface-instrument-token-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-instrument-token\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-lifecycle-0.1.8.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Lifecycle/1.0.0/daml-finance-interface-lifecycle-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-lifecycle\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-settlement-0.1.8.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Settlement/1.0.0/daml-finance-interface-settlement-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-settlement\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-types-0.1.6.dar | head -1)) -echo \"@daml.js/daml-finance-interface-types\": \"file:daml.js/${DAR[1]}\", +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Types.Common/1.0.0/daml-finance-interface-types-common-1.0.0.dar | head -1)) +echo \"@daml.js/daml-finance-interface-types-common\": \"file:daml.js/${DAR[1]}\", -DAR=($(daml damlc inspect .lib/daml-finance-interface-util-0.1.6.dar | head -1)) +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Types.Date/1.0.0/daml-finance-interface-types-date-1.0.0.dar | head -1)) +echo \"@daml.js/daml-finance-interface-types-date\": \"file:daml.js/${DAR[1]}\", + +DAR=($(daml damlc inspect .lib/daml-finance/Daml.Finance.Interface.Util/1.0.0/daml-finance-interface-util-1.0.0.dar | head -1)) echo \"@daml.js/daml-finance-interface-util\": \"file:daml.js/${DAR[1]}\", echo "" diff --git a/scripts/package.sh b/scripts/package.sh new file mode 100755 index 00000000..15c36ee1 --- /dev/null +++ b/scripts/package.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +# ---- Package UI ---- +root_dir=$(cd "$(dirname $0)"; cd ..; pwd -P) +ui_dir=$root_dir/ui + +red='\033[0;31m' +colour_off='\033[0m' + +cd $ui_dir +name=$(npm pkg get name | sed 's/"//g') +version=$(npm pkg get version | sed 's/"//g') +zipName=$name-$version.zip + +zip -r $zipName build +cp $zipName ../.dars diff --git a/scripts/remove-dependencies.sh b/scripts/remove-dependencies.sh deleted file mode 100755 index b12042b2..00000000 --- a/scripts/remove-dependencies.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -set -eu - -daml_yaml_file=$1 -root_dir="$(dirname "${daml_yaml_file}")" - -dependencies=($(yq e '.data-dependencies[]' ${daml_yaml_file})) -for dependency_path in "${dependencies[@]}"; do - - echo "Processing dependency ${dependency_path}" - - if [[ -a ${root_dir}/${dependency_path} ]]; then - rm -f ${root_dir}/${dependency_path} - echo "Dependency ${dependency_path} removed." - else - echo "Dependency ${dependency_path} is not installed. Ignoring..." - fi - -done diff --git a/scripts/test-packages.sh b/scripts/test-packages.sh new file mode 100755 index 00000000..0be684ba --- /dev/null +++ b/scripts/test-packages.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +# Use absolute paths to allow this script to be called from any location +root_dir=$(cd "$(dirname $0)"; cd ..; pwd -P) + +echo "Running package tests..." + +# Run tests for all test packages (in package/test/*) defined in the packages config file +packages_yaml=${root_dir}/package/packages.yaml +test_package_paths=($(yq e '.local.packages | to_entries | map(.value.package.path) | .[] | select(. == "test/daml*")' ${packages_yaml})) +for test_package_path in "${test_package_paths[@]}"; do + daml test --project-root ${root_dir}/package/${test_package_path} +done + +echo "" +echo "All tests ran successfully!" diff --git a/scripts/validate-package.sh b/scripts/validate-package.sh new file mode 100755 index 00000000..e7d17719 --- /dev/null +++ b/scripts/validate-package.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +package_root_dir=$1 +script_dir=$(cd "$(dirname $0)"; pwd -P) +root_dir=$(cd ${script_dir}; cd ..; pwd -P) + +package_name=$(yq e '.name' ${package_root_dir}/daml.yaml) +package_version=$(yq e '.version' ${package_root_dir}/daml.yaml) + +package_dar="${package_name}-${package_version}.dar" +package_dar_path="${package_root_dir}/.daml/dist/${package_dar}" +package_dar_tag="`awk '{ n=split($0,array,"/"); print array[n] }' <<< ${package_root_dir}`/${package_version}" + +cache_package_dir="${root_dir}/.cache/daml-finance/${package_dar_tag}" +cache_package_dar="${cache_package_dir}/${package_dar}" + +green='\033[0;32m' +red='\033[0;31m' +colour_off='\033[0m' + +echo -e "\nValidating package ${green}${package_name}${colour_off}..." + +# Check if the package has been build +if [[ ! -a ${package_dar_path} ]]; then + echo -e "${red}ERROR: Cannot locate dar for package ${package_name}. Ensure this package has been build successfully${colour_off}" + exit 1 +fi + +# Check if the version of this package has already been released on GitHub +if [[ -a ${cache_package_dar} ]]; then + echo "Using cached dependency at ${cache_package_dar}" +elif [[ `curl -L -o /dev/null --silent -I -w '%{http_code}' https://github.com/digital-asset/daml-finance/releases/download/${package_dar_tag}/${package_dar}` == "200" ]]; then + echo "Downloading ${package_dar} from Github repository at https://github.com/digital-asset/daml-finance/releases/download/${package_dar_tag}/${package_dar}..." + curl -Lf# https://github.com/digital-asset/daml-finance/releases/download/${package_dar_tag}/${package_dar} --create-dirs -o ${cache_package_dar} + echo -e "\nDar ${package_dar} added to the cache..." +else + echo "Package ${package_name} at version ${package_version} has not been released." + exit 0 +fi + +# Extract the package id of the local +released_dar_package_id=`daml damlc inspect-dar ${cache_package_dar} --json | jq -r .main_package_id` +local_dar_package_id=`daml damlc inspect-dar ${package_dar_path} --json | jq -r .main_package_id` + +if [[ ${released_dar_package_id} == ${local_dar_package_id} ]]; then + echo "The package ${package_name} is valid! Local build matches released dar." +else + echo -e "${red}ERROR: The package ${package_name} is not valid. The local build does not match the released build.${colour_off}" + echo -e "${red}ERROR: If this package's source code or a dependency version has been modified, update the version of the package in the daml.yaml file!${colour_off}" + echo -e "${red}ERROR: Released package id - ${released_dar_package_id}.${colour_off}" + echo -e "${red}ERROR: Local package id - ${local_dar_package_id}.${colour_off}" + exit 1 +fi diff --git a/scripts/validate-packages.sh b/scripts/validate-packages.sh new file mode 100755 index 00000000..02db0366 --- /dev/null +++ b/scripts/validate-packages.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +# Use absolute paths to allow this script to be called from any location +script_dir=$(cd "$(dirname $0)"; pwd -P) +root_dir=$(cd ${script_dir}; cd ..; pwd -P) + +# Run validation for released packages (in package/main/*) defined in the packages config file +packages_yaml=${root_dir}/package/packages.yaml +main_package_paths=($(yq e '.local.packages | to_entries | map(.value.package.path) | .[] | select(. == "main/daml*")' ${packages_yaml})) +for main_package_path in "${main_package_paths[@]}"; do + ${script_dir}/validate-package.sh ${root_dir}/package/${main_package_path} +done + +echo -e "\nAll packages are valid!" diff --git a/src/daml/Daml/Finance/App/Custody/Auto.daml b/src/daml/Daml/Finance/App/Custody/Auto.daml new file mode 100644 index 00000000..b1fec972 --- /dev/null +++ b/src/daml/Daml/Finance/App/Custody/Auto.daml @@ -0,0 +1,106 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Custody.Auto where + +import Daml.Finance.App.Custody.Service qualified as Service (T) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Custody.Auto qualified as Auto (HasImplementation, I, View(..), RequestAndCloseAccount(..), RequestAndDeposit(..), RequestAndOpenAccount(..), RequestAndWithdraw(..)) +import Daml.Finance.App.Interface.Custody.Service qualified as Service (CloseAccount(..), Deposit(..), I, OpenAccount(..), RequestCloseAccount(..), RequestDeposit(..), RequestOpenAccount(..), RequestWithdraw(..), Withdraw(..)) +import Daml.Finance.Interface.Account.Factory qualified as Account (F) +import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) + +type T = Service + +instance Auto.HasImplementation Service + +template Service + with + operator : Party + provider : Party + customer : Party + accountFactoryCid : ContractId Account.F + holdingFactoryCid : ContractId Holding.F + where + signatory operator, provider, customer + + key (operator, provider, customer) : (Party, Party, Party) + maintainer key._1 + + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Auto.I for Service where + view = Auto.View + + asBase = toInterface @Base.I this + + requestAndOpenAccount Auto.RequestAndOpenAccount{id; description; controllers; observers} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + openAccountRequestCid <- exercise serviceCid Service.RequestOpenAccount with id; description; controllers; observers + exercise serviceCid Service.OpenAccount with openAccountRequestCid + + requestAndCloseAccount Auto.RequestAndCloseAccount{account} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + closeAccountRequestCid <- exercise serviceCid Service.RequestCloseAccount with account + exercise serviceCid Service.CloseAccount with closeAccountRequestCid + + requestAndDeposit Auto.RequestAndDeposit{account; quantity} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + depositRequestCid <- exercise serviceCid Service.RequestDeposit with quantity; account + exercise serviceCid Service.Deposit with depositRequestCid + + requestAndWithdraw Auto.RequestAndWithdraw{holdingCid} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + withdrawRequestCid <- exercise serviceCid Service.RequestWithdraw with holdingCid + exercise serviceCid Service.Withdraw with withdrawRequestCid + +template Offer + with + operator : Party + provider : Party + customer : Party + accountFactoryCid : ContractId Account.F + holdingFactoryCid : ContractId Holding.F + where + signatory operator, provider + observer customer + + choice Accept : ContractId Service + controller customer + do + create Service with operator; provider; customer; accountFactoryCid; holdingFactoryCid + + choice Decline : () + controller customer + do pure () + + choice Withdraw : () + controller provider + do pure () + +template Request + with + customer : Party + provider : Party + where + signatory customer + observer provider + + choice Cancel : () + controller customer + do pure () + + choice Reject : () + controller provider + do pure () + + choice Approve : ContractId Service + with + operator : Party + accountFactoryCid : ContractId Account.F + holdingFactoryCid : ContractId Holding.F + controller operator, provider + do + create Service with operator; provider; customer; accountFactoryCid; holdingFactoryCid diff --git a/src/daml/Daml/Finance/App/Custody/Auto/Service.daml b/src/daml/Daml/Finance/App/Custody/Auto/Service.daml deleted file mode 100644 index fa900337..00000000 --- a/src/daml/Daml/Finance/App/Custody/Auto/Service.daml +++ /dev/null @@ -1,111 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Custody.Auto.Service where - -import Daml.Finance.Interface.Account.Account qualified as Account (Controllers, K) -import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) -import Daml.Finance.Interface.Types.Common (Id, PartiesMap) -import Daml.Finance.App.Custody.Service qualified as S - -template Service - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider, customer - - key (operator, provider, customer) : (Party, Party, Party) - maintainer key._1 - - nonconsuming choice RequestAndOpenAccount : Account.K - with - id : Id - description : Text - controllers : Account.Controllers - observers : PartiesMap - controller customer - do - openAccountRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestOpenAccount with id; description; controllers; observers - exerciseByKey @S.Service (operator, provider, customer) S.OpenAccount with openAccountRequestCid - - nonconsuming choice RequestAndCloseAccount : () - with - account : Account.K - controller customer - do - closeAccountRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCloseAccount with account - exerciseByKey @S.Service (operator, provider, customer) S.CloseAccount with closeAccountRequestCid - - nonconsuming choice RequestAndDeposit : ContractId Holding.I - with - quantity : Instrument.Q - account : Account.K - controller customer - do - depositRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestDeposit with quantity; account - exerciseByKey @S.Service (operator, provider, customer) S.Deposit with depositRequestCid - - nonconsuming choice RequestAndWithdraw : () - with - instrument : Instrument.K - holdingCid : ContractId Holding.I - controller customer - do - withdrawalRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestWithdrawal with instrument; holdingCid - exerciseByKey @S.Service (operator, provider, customer) S.Withdrawal with withdrawalRequestCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - -template Offer - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider - observer customer - - choice Accept : ContractId Service - controller customer - do - create Service with operator; provider; customer - - choice Decline : () - controller customer - do pure () - - choice Withdraw : () - controller provider - do pure () - -template Request - with - customer : Party - provider : Party - where - signatory customer - observer provider - - choice Cancel : () - controller customer - do pure () - - choice Reject : () - controller provider - do pure () - - choice Approve : ContractId Service - with - operator : Party - controller operator, provider - do - create Service with operator; provider; customer \ No newline at end of file diff --git a/src/daml/Daml/Finance/App/Custody/Model.daml b/src/daml/Daml/Finance/App/Custody/Model.daml index 11d75566..3ea601c1 100644 --- a/src/daml/Daml/Finance/App/Custody/Model.daml +++ b/src/daml/Daml/Finance/App/Custody/Model.daml @@ -3,10 +3,17 @@ module Daml.Finance.App.Custody.Model where -import Daml.Finance.Interface.Account.Account qualified as Account (Controllers, K) +import DA.Set (fromList) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Custody.OpenAccountRequest qualified as OpenAccountRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Custody.CloseAccountRequest qualified as CloseAccountRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Custody.DepositRequest qualified as DepositRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Custody.WithdrawRequest qualified as WithdrawRequest (HasImplementation, I, View(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (Controllers) import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (Id, PartiesMap) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, PartiesMap) + +instance OpenAccountRequest.HasImplementation OpenAccountRequest template OpenAccountRequest with @@ -20,26 +27,72 @@ template OpenAccountRequest where signatory operator, provider, customer + interface instance Removable.I for OpenAccountRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance OpenAccountRequest.I for OpenAccountRequest where + view = OpenAccountRequest.View with + operator + provider + customer + id + description + controllers + observers + + asRemovable = toInterface @Removable.I this + +instance CloseAccountRequest.HasImplementation CloseAccountRequest + template CloseAccountRequest with operator : Party provider : Party customer : Party - account : Account.K + account : AccountKey where signatory operator, provider, customer + interface instance Removable.I for CloseAccountRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CloseAccountRequest.I for CloseAccountRequest where + view = CloseAccountRequest.View with + operator + provider + customer + account + + asRemovable = toInterface @Removable.I this + +instance DepositRequest.HasImplementation DepositRequest + template DepositRequest with operator : Party provider : Party customer : Party - quantity : Instrument.Q - account : Account.K + quantity : InstrumentQuantity + account : AccountKey where signatory operator, provider, customer -template WithdrawalRequest + interface instance Removable.I for DepositRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance DepositRequest.I for DepositRequest where + view = DepositRequest.View with + operator + provider + customer + quantity + account + + asRemovable = toInterface @Removable.I this + +instance WithdrawRequest.HasImplementation WithdrawRequest + +template WithdrawRequest with operator : Party provider : Party @@ -47,3 +100,15 @@ template WithdrawalRequest holdingCid : ContractId Holding.I where signatory operator, provider, customer + + interface instance Removable.I for WithdrawRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance WithdrawRequest.I for WithdrawRequest where + view = WithdrawRequest.View with + operator + provider + customer + holdingCid + + asRemovable = toInterface @Removable.I this diff --git a/src/daml/Daml/Finance/App/Custody/Service.daml b/src/daml/Daml/Finance/App/Custody/Service.daml index 91e28c80..cda0c519 100644 --- a/src/daml/Daml/Finance/App/Custody/Service.daml +++ b/src/daml/Daml/Finance/App/Custody/Service.daml @@ -3,118 +3,94 @@ module Daml.Finance.App.Custody.Service where -import Daml.Finance.Interface.Account.Account qualified as Account (Controllers, Credit(..), Debit(..), K, R) +import DA.Assert ((===)) +import Daml.Finance.App.Custody.Model qualified as Model +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Custody.CloseAccountRequest qualified as CloseAccountRequest (View(..)) +import Daml.Finance.App.Interface.Custody.DepositRequest qualified as DepositRequest (View(..)) +import Daml.Finance.App.Interface.Custody.OpenAccountRequest qualified as OpenAccountRequest (View(..)) +import Daml.Finance.App.Interface.Custody.Service qualified as Service +import Daml.Finance.App.Interface.Custody.WithdrawRequest qualified as WithdrawRequest (View(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), Debit(..), I, exerciseInterfaceByKey) import Daml.Finance.Interface.Account.Factory qualified as Account (F, Create(..), Remove(..)) -import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) -import Daml.Finance.Interface.Holding.Base qualified as Holding (I) import Daml.Finance.Interface.Account.Util (getAccount) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) +import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) import Daml.Finance.Interface.Lifecycle.Rule.Claim qualified as Lifecycle (Claim) -import Daml.Finance.Interface.Types.Common (AccountKey(..), Id, PartiesMap) -import Daml.Finance.App.Custody.Model qualified as Custody -import Daml.Finance.App.Util (fetchAndArchive) +import Daml.Finance.Interface.Types.Common.Types (AccountKey(..)) + +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party - claimRuleCid : ContractId Lifecycle.Claim accountFactoryCid : ContractId Account.F holdingFactoryCid : ContractId Holding.F + claimRuleCid : ContractId Lifecycle.Claim where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestOpenAccount : ContractId Custody.OpenAccountRequest - with - id : Id - description : Text - controllers : Account.Controllers - observers : PartiesMap - controller customer - do - create Custody.OpenAccountRequest with .. + interface instance Base.I for Service where + view = Base.View with operator; provider; customer - nonconsuming choice RequestCloseAccount : ContractId Custody.CloseAccountRequest - with - account : Account.K - controller customer - do - create Custody.CloseAccountRequest with .. + terminate = pure () - nonconsuming choice RequestDeposit : ContractId Custody.DepositRequest - with - quantity : Instrument.Q - account : Account.K - controller customer - do - create Custody.DepositRequest with .. + interface instance Service.I for Service where + view = Service.View with accountFactoryCid; holdingFactoryCid; claimRuleCid - nonconsuming choice RequestWithdrawal : ContractId Custody.WithdrawalRequest - with - instrument : Instrument.K - holdingCid : ContractId Holding.I - controller customer - do - create Custody.WithdrawalRequest with .. + asBase = toInterface @Base.I this - nonconsuming choice OpenAccount : Account.K - with - openAccountRequestCid : ContractId Custody.OpenAccountRequest - controller provider - do - Custody.OpenAccountRequest{id; description; controllers; observers} <- fetchAndArchive openAccountRequestCid + requestOpenAccount Service.RequestOpenAccount{id; description; controllers; observers} = do + toInterfaceContractId <$> create Model.OpenAccountRequest with operator; provider; customer; id; description; controllers; observers + + requestCloseAccount Service.RequestCloseAccount{account} = do + toInterfaceContractId <$> create Model.CloseAccountRequest with operator; provider; customer; account + + requestDeposit Service.RequestDeposit{quantity; account} = do + toInterfaceContractId <$> create Model.DepositRequest with operator; provider; customer; quantity; account + + requestWithdraw Service.RequestWithdraw{holdingCid} = do + toInterfaceContractId <$> create Model.WithdrawRequest with operator; provider; customer; holdingCid + + openAccount Service.OpenAccount{openAccountRequestCid} = do + OpenAccountRequest.View{id; description; controllers; observers} <- view <$> fetchAndRemove openAccountRequestCid let account = AccountKey with custodian = provider; owner = customer; id - exercise accountFactoryCid Account.Create with account; description; controllers; holdingFactoryCid; observers - pure account + accountCid <- exercise accountFactoryCid Account.Create with account; description; controllers; holdingFactoryCid; observers + pure (accountCid, account) - nonconsuming choice CloseAccount : () - with - closeAccountRequestCid : ContractId Custody.CloseAccountRequest - controller provider - do - Custody.CloseAccountRequest{account} <- fetchAndArchive closeAccountRequestCid + closeAccount Service.CloseAccount{closeAccountRequestCid} = do + CloseAccountRequest.View{account} <- view <$> fetchAndRemove closeAccountRequestCid exercise accountFactoryCid Account.Remove with account - nonconsuming choice Deposit : ContractId Holding.I - with - depositRequestCid : ContractId Custody.DepositRequest - controller provider - do - Custody.DepositRequest{quantity; account} <- fetchAndArchive depositRequestCid - (_, ref) <- fetchByKey @Account.R account - exercise ref.cid Account.Credit with quantity + deposit Service.Deposit{depositRequestCid} = do + DepositRequest.View{quantity; account} <- view <$> fetchAndRemove depositRequestCid + account.custodian === provider + account.owner === customer + Account.exerciseInterfaceByKey @Account.I account provider Account.Credit with quantity - nonconsuming choice Withdrawal : () - with - withdrawalRequestCid : ContractId Custody.WithdrawalRequest - controller provider - do - Custody.WithdrawalRequest{holdingCid} <- fetchAndArchive withdrawalRequestCid + withdraw Service.Withdraw{withdrawRequestCid} = do + WithdrawRequest.View{holdingCid} <- view <$> fetchAndRemove withdrawRequestCid holding <- fetch holdingCid let account = getAccount holding - (_, ref) <- fetchByKey @Account.R account - exercise ref.cid Account.Debit with holdingCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + account.custodian === provider + account.owner === customer + Account.exerciseInterfaceByKey @Account.I account provider Account.Debit with holdingCid template Offer with operator : Party provider : Party customer : Party - claimRuleCid : ContractId Lifecycle.Claim accountFactoryCid : ContractId Account.F holdingFactoryCid : ContractId Holding.F + claimRuleCid : ContractId Lifecycle.Claim where signatory operator, provider observer customer @@ -122,7 +98,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with operator; provider; customer; claimRuleCid; accountFactoryCid; holdingFactoryCid + create Service with operator; provider; customer; accountFactoryCid; holdingFactoryCid; claimRuleCid choice Decline : () controller customer @@ -151,9 +127,9 @@ template Request choice Approve : ContractId Service with operator : Party - claimRuleCid : ContractId Lifecycle.Claim accountFactoryCid : ContractId Account.F holdingFactoryCid : ContractId Holding.F + claimRuleCid : ContractId Lifecycle.Claim controller operator, provider do - create Service with operator; provider; customer; claimRuleCid; accountFactoryCid; holdingFactoryCid + create Service with operator; provider; customer; accountFactoryCid; holdingFactoryCid; claimRuleCid diff --git a/src/daml/Daml/Finance/App/Data/AccountDirectory.daml b/src/daml/Daml/Finance/App/Data/AccountDirectory.daml index dfdbee93..919acd6b 100644 --- a/src/daml/Daml/Finance/App/Data/AccountDirectory.daml +++ b/src/daml/Daml/Finance/App/Data/AccountDirectory.daml @@ -4,7 +4,7 @@ module Daml.Finance.App.Data.AccountDirectory where import DA.Map (Map) -import Daml.Finance.Interface.Types.Common (AccountKey, Id, Parties) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, Parties) type T = AccountDirectory @@ -26,4 +26,3 @@ template AccountDirectory controller actor do pure this - \ No newline at end of file diff --git a/src/daml/Daml/Finance/App/Decentralized/Exchange/FlashSwapPipe.daml b/src/daml/Daml/Finance/App/Decentralized/Exchange/FlashSwapPipe.daml new file mode 100644 index 00000000..45dbc31d --- /dev/null +++ b/src/daml/Daml/Finance/App/Decentralized/Exchange/FlashSwapPipe.daml @@ -0,0 +1,21 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Decentralized.Exchange.FlashSwapPipe where + +import Daml.Finance.App.Interface.Decentralized.Exchange.FlashSwapAction qualified as FlashSwapAction (I, View(..)) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) + +type T = FlashSwapPipe + +-- Example of a FlashSwapAction template (used for a normal DEX Swap) +template FlashSwapPipe with + provider : Party + outCid : ContractId Holding.I + where + signatory provider + + interface instance FlashSwapAction.I for FlashSwapPipe where + view = FlashSwapAction.View {} + executeAction holdingCid = pure (outCid, [holdingCid]) + diff --git a/src/daml/Daml/Finance/App/Decentralized/Exchange/Service.daml b/src/daml/Daml/Finance/App/Decentralized/Exchange/Service.daml index 15d540d8..1feea286 100644 --- a/src/daml/Daml/Finance/App/Decentralized/Exchange/Service.daml +++ b/src/daml/Daml/Finance/App/Decentralized/Exchange/Service.daml @@ -3,17 +3,20 @@ module Daml.Finance.App.Decentralized.Exchange.Service where -import Daml.Finance.App.Decentralized.Exchange.Interface (ExecuteAction(..), FlashSwapAction, FlashSwapPipe(..)) -import Daml.Finance.App.Decentralized.Exchange.Model (Pool, switchIf) +import DA.Numeric (div) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Decentralized.Exchange.FlashSwapPipe (FlashSwapPipe(..)) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Decentralized.Exchange.Service qualified as Service (Deposit(..), FlashSwap(..), HasImplementation, I, Swap(..), View(..), Withdraw(..)) +import Daml.Finance.App.Interface.Decentralized.Exchange.FlashSwapAction qualified as FlashSwapAction (ExecuteAction(..), I) +import Daml.Finance.App.Interface.Decentralized.Exchange.Types (Pool) import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), Debit(..), I, exerciseInterfaceByKey) import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I, Merge(..), Split(..), SplitResult(..)) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (Merge(..), Split(..), SplitResult(..)) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I, Transfer(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q, qty) -import Daml.Finance.Interface.Types.Common (AccountKey, Id) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) +import Daml.Finance.Interface.Util.Common (qty) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..), RemoveObservers(..)) -import DA.Numeric -import DA.Set (fromList, singleton) {- FlashSwap Decentralized Exchange (DEX) @@ -59,18 +62,22 @@ import DA.Set (fromList, singleton) -} +type T = Service + +instance Service.HasImplementation Service + template Service with consortium : Party - public : Party id : Id description : Text - shares : Instrument.Q -- share + shares : InstrumentQuantity -- share p1 : Pool -- pool1 p2 : Pool -- pool2 + observers : Parties where signatory consortium - observer public + observer observers key (consortium, id) : (Party, Id) maintainer key._1 @@ -78,6 +85,8 @@ template Service ensure p1.quantity.amount > 0.0 && p2.quantity.amount > 0.0 && shares.amount > 0.0 let + switchIf cond (x, y) = if cond then (y, x) else (x, y) + -- AMM rule constantProductFormula delta_x x y: (Decimal, Decimal, Decimal) = let @@ -91,32 +100,32 @@ template Service -- flash swap flashSwapBy (actor : Party) (actorAccount : AccountKey) - (xAsset : Instrument.Q) + (xAsset : InstrumentQuantity) (xLP : Pool) (yLP : Pool) - (flashSwapActionCid : ContractId FlashSwapAction) = + (flashSwapActionCid : ContractId FlashSwapAction.I) = do -- AMM let (x_new, y_new, y_delta) = constantProductFormula xAsset.amount xLP.quantity.amount yLP.quantity.amount -- transfer Y to user Fungible.SplitResult{splitCids = [yFungibleCid], rest = Some yFungibleCid_new} <- exercise yLP.fungibleCid Fungible.Split with amounts = [ -y_delta ] -- forced pattern match disallows draining - Some yFungibleCid <- exercise (toInterfaceContractId @Disclosure.I yFungibleCid) Disclosure.RemoveObservers with disclosers = singleton consortium; observersToRemove = (show id, singleton public) + Some yFungibleCid <- exercise (toInterfaceContractId @Disclosure.I yFungibleCid) Disclosure.RemoveObservers with disclosers = singleton consortium; observersToRemove = (show id, observers) yHoldingCid <- toInterfaceContractId @Holding.I <$> exercise (coerceContractId yFungibleCid : ContractId Transferable.I) Transferable.Transfer with actors = fromList [consortium, actor]; newOwnerAccount = actorAccount yHolding <- view <$> fetch yHoldingCid -- execute flashSwapAction and get X - (xFungibleCid, sideEffectCids) <- exercise flashSwapActionCid ExecuteAction with + (xFungibleCid, sideEffectCids) <- exercise flashSwapActionCid FlashSwapAction.ExecuteAction with actors = singleton actor - consumedQuantity = Instrument.qty yHolding.amount yHolding.instrument + consumedQuantity = qty yHolding.amount yHolding.instrument producedQuantity = xAsset holdingCid = yHoldingCid -- transfer X to dex xFungibleCid_new <- do xFungibleCid <- exercise (coerceContractId xFungibleCid : ContractId Transferable.I) Transferable.Transfer with actors = fromList [consortium, actor]; newOwnerAccount = xLP.account - xFungibleCid <- coerceContractId <$> exercise (toInterfaceContractId @Disclosure.I xFungibleCid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (show id, singleton public) + xFungibleCid <- coerceContractId <$> exercise (toInterfaceContractId @Disclosure.I xFungibleCid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (show id, observers) exercise xLP.fungibleCid Fungible.Merge with fungibleCids = [xFungibleCid] -- update pools @@ -128,14 +137,17 @@ template Service fungibleCid = yFungibleCid_new return (xLP_new, yLP_new, sideEffectCids) - postconsuming choice Deposit : (ContractId Service, ContractId Holding.I) - with - actor : Party - fungible1Cid: ContractId Fungible.I - fungible2Cid: ContractId Fungible.I - shareAccount : AccountKey - controller actor - do + interface instance Base.I for Service where + view = Base.View with operator = consortium; provider = consortium; customer = consortium + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with consortium; id; description; shares; p1; p2; observers + + asBase = toInterface @Base.I this + + deposit self Service.Deposit{actor; fungible1Cid; fungible2Cid; shareAccount} = do t1 <- view <$> fetch (toInterfaceContractId @Holding.I fungible1Cid) t2 <- view <$> fetch (toInterfaceContractId @Holding.I fungible2Cid) assertMsg "custodians must match" $ t1.account.custodian == p1.account.custodian && t2.account.custodian == p2.account.custodian @@ -165,20 +177,14 @@ template Service shareCid <- Account.exerciseInterfaceByKey @Account.I shareAccount actor Account.Credit with quantity = (shares with amount = newShareAmount - shares.amount) -- recreate Dex - dexCid <- create this with + archive $ fromInterfaceContractId @Service self + dexCid <- toInterfaceContractId <$> create this with shares = shares with amount = newShareAmount p1 = p1 with quantity.amount = p1.quantity.amount + t1.amount; fungibleCid = lp1_cid p2 = p2 with quantity.amount = p2.quantity.amount + quantity2_needed; fungibleCid = lp2_cid return (dexCid, shareCid) - postconsuming choice Withdraw : (ContractId Service, ContractId Fungible.I, ContractId Fungible.I) - with - actor : Party - shareCid : ContractId Fungible.I - p1Account : AccountKey - p2Account : AccountKey - controller actor - do + withdraw self Service.Withdraw{actor; shareCid; p1Account; p2Account} = do share <- view <$> fetch (toInterfaceContractId @Holding.I shareCid) assertMsg "liquidity share matches" (share.instrument == shares.unit && share.account.custodian == consortium) @@ -198,20 +204,14 @@ template Service -- split2Cid <- exercise fungible2Cid SetObservers with newObservers = S.empty -- TODO: check if necessary p2HoldingCid <- coerceContractId <$> exercise (toInterfaceContractId @Transferable.I fungible2Cid) Transferable.Transfer with actors = singleton consortium; newOwnerAccount = p2Account -- recreate dex (not allowing to drain) - dexCid <- create this with + archive $ fromInterfaceContractId @Service self + dexCid <- toInterfaceContractId <$> create this with shares = shares with amount = newShareAmount p1 = p1 with quantity.amount = p1.quantity.amount - p1Amount; fungibleCid = lp1_cid p2 = p2 with quantity.amount = p2.quantity.amount - p2Amount; fungibleCid = lp2_cid return (dexCid, p1HoldingCid, p2HoldingCid) - nonconsuming choice FlashSwap : (ContractId Service, [ContractId Holding.I]) - with - actor : Party - xAsset : Instrument.Q - yAccount : AccountKey - actionCid : ContractId FlashSwapAction - controller actor - do + flashSwap self Service.FlashSwap{actor; xAsset; yAccount; actionCid} = do assertMsg "asset matches" $ xAsset.unit == p1.quantity.unit || xAsset.unit == p2.quantity.unit -- switch to X and Y @@ -222,24 +222,18 @@ template Service let (new_lp1, new_lp2) = switchIf (xAsset.unit == p2.quantity.unit) (xLP_new, yLP_new) -- recreate dex archive self - dexCid <- create this with p1 = new_lp1; p2 = new_lp2 + dexCid <- toInterfaceContractId <$> create this with p1 = new_lp1; p2 = new_lp2 return (dexCid, sideEffectCids) - nonconsuming choice Swap : (ContractId Service, [ContractId Holding.I]) - with - actor : Party - xFungibleCid : ContractId Fungible.I - yAccount : AccountKey - controller actor - do + swap self Service.Swap{actor; xFungibleCid; yAccount} = do -- making use of a FlashSwapPipe, which is a FlashSwapAction which -- simply takes Y as input and returns (X,[Some(Y)]), where X is (this) -- xTokenCid and Y a yTokenCid from one of the DEX liquidity pools. pipeCid <- create FlashSwapPipe with provider = actor; outCid = toInterfaceContractId xFungibleCid xHolding <- view <$> fetch (toInterfaceContractId @Holding.I xFungibleCid) - exercise self FlashSwap with + exercise self Service.FlashSwap with actor - xAsset = Instrument.qty xHolding.amount xHolding.instrument + xAsset = qty xHolding.amount xHolding.instrument yAccount actionCid = toInterfaceContractId pipeCid diff --git a/src/daml/Daml/Finance/App/Distribution/Auction/Auto.daml b/src/daml/Daml/Finance/App/Distribution/Auction/Auto.daml new file mode 100644 index 00000000..a0560cee --- /dev/null +++ b/src/daml/Daml/Finance/App/Distribution/Auction/Auto.daml @@ -0,0 +1,84 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Distribution.Auction.Auto where + +import Daml.Finance.App.Distribution.Auction.Service qualified as Service (T) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Auto qualified as Auto (I, HasImplementation, RequestAndCreateAuction(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Service qualified as Service (CreateAuction(..), I, RequestCreateAuction(..)) + +type T = Service + +instance Auto.HasImplementation Service + +template Service + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider, customer + + key (operator, provider, customer) : (Party, Party, Party) + maintainer key._1 + + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Auto.I for Service where + view = Auto.View + + asBase = toInterface @Base.I this + + requestAndCreateAuction Auto.RequestAndCreateAuction{auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createAuctionRequestCid <- exercise serviceCid Service.RequestCreateAuction with auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers + exercise serviceCid Service.CreateAuction with createAuctionRequestCid + +template Offer + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider + observer customer + + choice Accept : ContractId Service + controller customer + do + create Service with .. + + choice Decline : () + controller customer + do + return () + + choice Withdraw : () + controller provider + do pure () + +template Request + with + provider : Party + customer : Party + where + signatory customer + observer provider + + choice Cancel : () + controller customer + do pure () + + choice Reject : () + controller provider + do pure () + + choice Approve : ContractId Service + with + operator : Party + controller operator, provider + do + create Service with .. diff --git a/src/daml/Daml/Finance/App/Distribution/Auction/Auto/Service.daml b/src/daml/Daml/Finance/App/Distribution/Auction/Auto/Service.daml deleted file mode 100644 index 4a2c119b..00000000 --- a/src/daml/Daml/Finance/App/Distribution/Auction/Auto/Service.daml +++ /dev/null @@ -1,92 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Distribution.Auction.Auto.Service where - -import Daml.Finance.Interface.Account.Account qualified as Account (K) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) -import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Types.Common (Parties) -import Daml.Finance.App.Distribution.Auction.Model (Auction) -import Daml.Finance.App.Distribution.Auction.Service qualified as S (CreateAuction(..), RequestCreateAuction(..), Service) - -type S = Service - -template Service - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider, customer - - key (operator, provider, customer) : (Party, Party, Party) - maintainer key._1 - - nonconsuming choice RequestAndCreateAuction : ContractId Auction - with - id : Text - quantity : Instrument.Q - currency : Instrument.K - floor : Decimal - collateralCid : ContractId Fungible.I - receivableAccount : Account.K - observers : Parties - controller customer - do - createAuctionRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateAuction with id; quantity; currency; floor; collateralCid; receivableAccount; observers - exerciseByKey @S.Service (operator, provider, customer) S.CreateAuction with createAuctionRequestCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - -template Offer - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider - observer customer - - choice Accept : ContractId Service - controller customer - do - create Service with .. - - choice Decline : () - controller customer - do - return () - - choice Withdraw : () - controller provider - do pure () - -template Request - with - provider : Party - customer : Party - where - signatory customer - observer provider - - choice Cancel : () - controller customer - do pure () - - choice Reject : () - controller provider - do pure () - - choice Approve : ContractId Service - with - operator : Party - controller operator, provider - do - create Service with .. diff --git a/src/daml/Daml/Finance/App/Distribution/Auction/Model.daml b/src/daml/Daml/Finance/App/Distribution/Auction/Model.daml index 7703fc3c..66a14b5f 100644 --- a/src/daml/Daml/Finance/App/Distribution/Auction/Model.daml +++ b/src/daml/Daml/Finance/App/Distribution/Auction/Model.daml @@ -3,35 +3,28 @@ module Daml.Finance.App.Distribution.Auction.Model where -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I, Status, View(..)) +import Daml.Finance.App.Interface.Distribution.Auction.CreateAuctionRequest qualified as CreateAuctionRequest (I, View(..)) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) -import Daml.Finance.Interface.Types.Common (Parties) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) type T = Auction -data Status - = Open - | PartiallyAllocated with - finalPrice : Decimal - remaining : Decimal - | FullyAllocated with - finalPrice : Decimal - | NoValidBids - deriving (Eq, Show) - template Auction with operator : Party provider : Party customer : Party - id : Text - quantity : Instrument.Q - currency : Instrument.K + id : Id + description : Text + quantity : InstrumentQuantity + currency : InstrumentKey floor : Decimal collateralCid : ContractId Fungible.I - receivableAccount : Account.K - status : Status + receivableAccount : AccountKey + status : Auction.Status observers : Parties where signatory operator, provider, customer @@ -39,27 +32,36 @@ template Auction ensure quantity.amount > 0.0 - key (operator, provider, id) : (Party, Party, Text) + key (operator, provider, id) : (Party, Party, Id) maintainer key._1 - nonconsuming choice Fetch : Auction - with - actor : Party - controller actor - do - pure this + interface instance Removable.I for Auction where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance Auction.I for Auction where + view = Auction.View with operator; provider; customer; id; description; quantity; currency; floor; collateralCid; receivableAccount; status; observers + asRemovable = toInterface @Removable.I this template CreateAuctionRequest with operator : Party provider : Party customer : Party - id : Text - quantity : Instrument.Q - currency : Instrument.K + auctionId : Id + description : Text + quantity : InstrumentQuantity + currency : InstrumentKey floor : Decimal collateralCid : ContractId Fungible.I - receivableAccount : Account.K + receivableAccount : AccountKey observers : Parties where signatory operator, provider, customer + + interface instance Removable.I for CreateAuctionRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateAuctionRequest.I for CreateAuctionRequest where + view = CreateAuctionRequest.View with operator; provider; customer; auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers + asRemovable = toInterface @Removable.I this + diff --git a/src/daml/Daml/Finance/App/Distribution/Auction/Service.daml b/src/daml/Daml/Finance/App/Distribution/Auction/Service.daml index 9add57f7..67d5473c 100644 --- a/src/daml/Daml/Finance/App/Distribution/Auction/Service.daml +++ b/src/daml/Daml/Finance/App/Distribution/Auction/Service.daml @@ -11,94 +11,76 @@ import DA.Foldable (forA_) import DA.List (sortOn, mapAccumL) import DA.Optional (whenSome) import DA.Set (fromList, singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K, R, exerciseInterfaceByKey) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) -import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) -import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.App.Distribution.Auction.Model qualified as Model (Auction(..), CreateAuctionRequest(..)) +import Daml.Finance.App.Distribution.Auction.Utils (dutchAuction, splitList, generateSettlementInstruction) +import Daml.Finance.App.Distribution.Bidding.Service qualified as BiddingService (T) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (Status(..)) +import Daml.Finance.App.Interface.Distribution.Auction.CreateAuctionRequest qualified as CreateAuctionRequest (View(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Service qualified as Service (CreateAuction(..), HasImplementation, I, ProcessAuction(..), RequestCreateAuction(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (Allocation(..), SettleAllocation(..), Status(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as BiddingService (I, RejectBid(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.Interface.Account.Account qualified as Account (R, exerciseInterfaceByKey) import Daml.Finance.Interface.Account.Util (getAccount) -import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I, RemoveObservers(..)) -import Daml.Finance.Interface.Types.Common (Parties) -import Daml.Finance.Interface.Settlement.Factory qualified as Factory (I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) import Daml.Finance.Interface.Settlement.Batch qualified as Batch (Settle(..)) -import Daml.Finance.App.Distribution.Auction.Model (Auction(..), CreateAuctionRequest(..), Status(..)) -import Daml.Finance.App.Distribution.Auction.Utils (dutchAuction, splitList, generateSettlementInstruction) -import Daml.Finance.App.Distribution.Bidding.Model qualified as Bidding (Allocation(..), Bid, SettleAllocation(..), Status(..)) -import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (RejectBid(..), S) -import Daml.Finance.App.Util (fetchAndArchive) +import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I, RemoveObservers(..)) -type S = Service +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestCreateAuction : ContractId CreateAuctionRequest - with - id : Text - quantity : Instrument.Q - currency : Instrument.K - floor : Decimal - collateralCid : ContractId Fungible.I - receivableAccount : Account.K - observers : Parties - controller customer - do + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with settlementServiceCid + + asBase = toInterface @Base.I this + + requestCreateAuction Service.RequestCreateAuction{auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers} = do -- Disclose holding collateral <- fetch collateralCid - collateralCid <- coerceContractId <$> exercise (coerceContractId collateralCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (id, fromList [provider]) + collateralCid <- coerceContractId <$> exercise (coerceContractId collateralCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show auctionId, fromList [provider]) -- Disclose delivering securities account (_, delRef) <- fetchByKey @Account.R $ getAccount collateral - exercise (coerceContractId delRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (id, fromList [provider]) + exercise (coerceContractId delRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show auctionId, fromList [provider]) -- Disclose receiving cash account (_, recRef) <- fetchByKey @Account.R receivableAccount - exercise (coerceContractId recRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (id, singleton provider) - - create CreateAuctionRequest with operator; provider; customer; id; quantity; currency; floor; collateralCid; receivableAccount; observers - - nonconsuming choice CancelAuctionRequest : () - with - createAuctionRequestCid : ContractId CreateAuctionRequest - controller customer - do - archive createAuctionRequestCid + exercise (coerceContractId recRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show auctionId, singleton provider) - nonconsuming choice CreateAuction : ContractId Auction - with - createAuctionRequestCid : ContractId CreateAuctionRequest - controller provider - do - CreateAuctionRequest{id; quantity; currency; floor; collateralCid; receivableAccount; observers} <- fetchAndArchive createAuctionRequestCid - collateralCid <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [ provider ]; context = id; lockType = Holding.Semaphore - create Auction with operator; provider; customer; id; quantity; currency; floor; collateralCid; receivableAccount; status = Open; observers + toInterfaceContractId <$> create Model.CreateAuctionRequest with operator; provider; customer; auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers - nonconsuming choice RejectAuction : () - with - createAuctionRequestCid : ContractId CreateAuctionRequest - controller provider - do - archive createAuctionRequestCid + createAuction Service.CreateAuction{createAuctionRequestCid} = do + CreateAuctionRequest.View{auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers} <- view <$> fetchAndRemove createAuctionRequestCid + collateralCid <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [ provider ]; context = show auctionId; lockType = Holding.Semaphore + toInterfaceContractId <$> create Model.Auction with operator; provider; customer; id = auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; status = Auction.Open; observers - nonconsuming choice ProcessAuction : ContractId Auction - with - settlementFactoryCid : ContractId Factory.I - auctionCid : ContractId Auction - bidCids : [ContractId Bidding.Bid] - controller provider - do - auction <- fetch auctionCid + processAuction Service.ProcessAuction{auctionCid; bidCids} = do + let auctionTCid = fromInterfaceContractId @Model.Auction auctionCid + auction <- fetch auctionTCid collateral <- fetch auction.collateralCid - bids <- zip bidCids <$> forA bidCids fetch - collaterals <- mapA (fetch . (.collateralCid) . snd) bids - assertMsg "Auction already successfully processed" (auction.status `elem` [Open, NoValidBids]) + bids <- zip bidCids <$> forA bidCids (fmap view . fetch) + collaterals <- mapA (\(_, bidView) -> fetch bidView.collateralCid) bids + assertMsg "Auction already successfully processed" (auction.status `elem` [Auction.Open, Auction.NoValidBids]) -- Split bids on those above / below the floor price -> Sort valid bids descendingly -> Execute Auction -> Split auction result on allocated / unallocated (ie, zero allocation) let @@ -111,51 +93,50 @@ template Service (allocatedBids, unallocatedBids) = partitionEithers $ splitList (\allocation -> allocation.amount == 0.0) allocations -- Return assets of all invalid and unallocated bids. Also update their bid status accordingly - forA_ invalidBids (\(bidCid, bid) -> exerciseByKey @Bidding.S (bid.operator, bid.provider, bid.customer) Bidding.RejectBid with bidCid; newStatus = Bidding.Invalid) - forA_ unallocatedBids (\Bidding.Allocation{bidCid, bid} -> exerciseByKey @Bidding.S (bid.operator, bid.provider, bid.customer) Bidding.RejectBid with bidCid; newStatus = Bidding.NoAllocation) + forA_ invalidBids (\(bidCid, bid) -> do + (serviceCid, _) <- fetchByKey @BiddingService.T (bid.operator, bid.provider, bid.customer) + exercise (toInterfaceContractId @BiddingService.I serviceCid) BiddingService.RejectBid with bidCid; newStatus = Bid.Invalid) + forA_ unallocatedBids (\Bid.Allocation{bidCid, bid} -> do + (serviceCid, _) <- fetchByKey @BiddingService.T (bid.operator, bid.provider, bid.customer) + exercise (toInterfaceContractId @BiddingService.I serviceCid) BiddingService.RejectBid with bidCid; newStatus = Bid.NoAllocation) -- Unlock auction collateral - auctionCollateralClid <- coerceContractId <$> exercise (toInterfaceContractId auction.collateralCid : ContractId Holding.I) Holding.Release with context = auction.id + auctionCollateralClid <- coerceContractId <$> exercise (toInterfaceContractId auction.collateralCid : ContractId Holding.I) Holding.Release with context = show auction.id -- Generate Settlement instructions for allocated bids - let settleAllocations = (\allocation -> Bidding.SettleAllocation with allocation; price = finalPrice; issuer = customer) <$> allocatedBids - (remainingDepositCidOpt, batchCids) <- foldlA (generateSettlementInstruction settlementFactoryCid provider auction.receivableAccount) (Some auctionCollateralClid, []) settleAllocations + let + settleAllocations = (\allocation -> Bid.SettleAllocation with allocation; price = finalPrice; issuer = customer) <$> allocatedBids + folder = generateSettlementInstruction settlementServiceCid provider auction.receivableAccount + (remainingDepositCidOpt, batchCids) <- foldlA folder (Some auctionCollateralClid, []) settleAllocations -- Settle transfers forA_ batchCids (`exercise` Batch.Settle with actors = singleton provider) -- Undisclose unallocated deposit whenSome remainingDepositCidOpt \depositCid -> do - exercise (coerceContractId depositCid : ContractId Disclosure.I) Disclosure.RemoveObservers with disclosers = singleton customer; observersToRemove = (auction.id, singleton provider) + exercise (coerceContractId depositCid : ContractId Disclosure.I) Disclosure.RemoveObservers with disclosers = singleton customer; observersToRemove = (show auction.id, singleton provider) pure () -- Undisclose accounts - Account.exerciseInterfaceByKey @Disclosure.I auction.receivableAccount provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (auction.id, singleton provider) - Account.exerciseInterfaceByKey @Disclosure.I collateralAccount provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (auction.id, singleton provider) - forA_ receivableAccounts (\a -> Account.exerciseInterfaceByKey @Disclosure.I a provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (auction.id, singleton provider)) - forA_ collateralAccounts (\a -> Account.exerciseInterfaceByKey @Disclosure.I a provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (auction.id, singleton provider)) + Account.exerciseInterfaceByKey @Disclosure.I auction.receivableAccount provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (show auction.id, singleton provider) + Account.exerciseInterfaceByKey @Disclosure.I collateralAccount provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (show auction.id, singleton provider) + forA_ receivableAccounts (\a -> Account.exerciseInterfaceByKey @Disclosure.I a provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (show auction.id, singleton provider)) + forA_ collateralAccounts (\a -> Account.exerciseInterfaceByKey @Disclosure.I a provider Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (show auction.id, singleton provider)) -- Update Auction contract with the outcome of the auction processing let newStatus = if - | remaining == auction.quantity.amount -> NoValidBids - | remaining > 0.0 -> PartiallyAllocated with finalPrice; remaining - | otherwise -> FullyAllocated with finalPrice + | remaining == auction.quantity.amount -> Auction.NoValidBids + | remaining > 0.0 -> Auction.PartiallyAllocated with finalPrice; remaining + | otherwise -> Auction.FullyAllocated with finalPrice archive auctionCid - create auction with status = newStatus - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + toInterfaceContractId <$> create auction with status = newStatus template Offer with operator : Party provider : Party customer : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider observer customer @@ -163,7 +144,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid choice Decline : () controller customer @@ -193,6 +174,7 @@ template Request choice Approve : ContractId Service with operator : Party + settlementServiceCid : ContractId SettlementService.I controller operator, provider do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid diff --git a/src/daml/Daml/Finance/App/Distribution/Auction/Utils.daml b/src/daml/Daml/Finance/App/Distribution/Auction/Utils.daml index c27e6451..ced6b6d4 100644 --- a/src/daml/Daml/Finance/App/Distribution/Auction/Utils.daml +++ b/src/daml/Daml/Finance/App/Distribution/Auction/Utils.daml @@ -3,18 +3,18 @@ module Daml.Finance.App.Distribution.Auction.Utils where -import DA.Set (singleton) -import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding -import Daml.Finance.App.Distribution.Bidding.Model qualified as Bidding (AllocateInstruction(..), Allocation(..), ApproveInstruction(..), Bid(..), SettleAllocation(..)) -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Distribution.Bidding.Service qualified as Service (T) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as Service (I, ProcessAllocation(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (AllocateInstruction(..), Allocation(..), ApproveInstruction(..), I, SettleAllocation(..), View) +import Daml.Finance.App.Interface.Settlement.Service qualified as Settlement (DiscoverAndInstruct(..), Service) import Daml.Finance.Interface.Holding.Fungible (Fungible, Split(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) import Daml.Finance.Interface.Holding.Util (getAmount, getInstrument) -import Daml.Finance.Interface.Settlement.Factory (Factory, Instruct(..)) import Daml.Finance.Interface.Settlement.Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Batch (Batch) import Daml.Finance.Interface.Settlement.Types (Allocation(Pledge), Approval(TakeDelivery), Step(..)) -import Daml.Finance.Interface.Types.Common (Id(..)) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id(..)) +import Daml.Finance.Interface.Util.Common (qty) -- | Takes a list and splits it based off a predicate. splitList : (a -> Bool) -> [a] -> [Either a a] @@ -34,31 +34,32 @@ splitList p xs = foldr (\x acc -> if p x then Right x :: acc else Left x :: acc) -- | A map/accumulator function for processing a submitted bid. -- Accepts the remaining quantity and price as an accululator along the current Bid as input -- Output is the updated accululator (if applicable) along with the Bid mapped to an Allocation (depending on the accumulator and bid information) -dutchAuction : (Decimal, Decimal) -> (ContractId Bidding.Bid, Bidding.Bid) -> ((Decimal, Decimal), Bidding.Allocation) -dutchAuction acc@(0.0, _) (bidCid, bid) = (acc, Bidding.Allocation with amount = 0.0; bidCid; bid) +dutchAuction : (Decimal, Decimal) -> (ContractId Bid.I, Bid.View) -> ((Decimal, Decimal), Bid.Allocation) +dutchAuction acc@(0.0, _) (bidCid, bid) = (acc, Bid.Allocation with amount = 0.0; bidCid; bid) dutchAuction (remaining, _) (bidCid, bid) = let amount = bid.details.quantity.amount bidPrice = bid.details.price.amount in if remaining >= amount - then ((remaining - amount, bidPrice), Bidding.Allocation with amount; bidCid; bid) - else ((0.0, bidPrice), Bidding.Allocation with amount = remaining; bidCid; bid) + then ((remaining - amount, bidPrice), Bid.Allocation with amount; bidCid; bid) + else ((0.0, bidPrice), Bid.Allocation with amount = remaining; bidCid; bid) -- | An accumulator function which processes generates the settlement instruction for both an issuer and a bidder based of the output of the dutch auction -generateSettlementInstruction : ContractId Factory -> Party -> Account.K -> (Optional (ContractId Fungible), [ContractId Batch]) -> Bidding.SettleAllocation -> Update (Optional (ContractId Fungible), [ContractId Batch]) +generateSettlementInstruction : ContractId Settlement.Service -> Party -> AccountKey -> (Optional (ContractId Fungible), [ContractId Batch]) -> Bid.SettleAllocation -> Update (Optional (ContractId Fungible), [ContractId Batch]) generateSettlementInstruction _ _ _ (None, _) _ = error "Auction:generateSettlementInstruction - Issuers AssetDeposit has no remaining units to allocate" -generateSettlementInstruction settlementFactoryCid settler issuerAccount (Some issuerDepositCid, batchCids) Bidding.SettleAllocation{allocation, price, issuer} = do +generateSettlementInstruction settlementServiceCid settler issuerAccount (Some issuerDepositCid, batchCids) Bid.SettleAllocation{allocation, price, issuer} = do let allocatedAmount = allocation.amount allocatedNotional = allocation.amount * price -- | Process bid side - bid <- fetch allocation.bidCid - (bidCid, bidDepositCid) <- exerciseByKey @Bidding.Service (bid.operator, bid.provider, bid.customer) Bidding.ProcessAllocation with bidCid = allocation.bidCid; amount = allocatedAmount; price + bid <- view <$> fetch allocation.bidCid + (serviceCid, _) <- fetchByKey @Service.T (bid.operator, bid.provider, bid.customer) + (bidCid, bidDepositCid) <- exercise (toInterfaceContractId @Service.I serviceCid) Service.ProcessAllocation with bidCid = allocation.bidCid; amount = allocatedAmount; price let buyer = bid.customer - payment = Step with sender = bid.customer; receiver = issuer; quantity = (Instrument.qty allocatedNotional bid.details.price.unit) + payment = Step with sender = bid.customer; receiver = issuer; quantity = (qty allocatedNotional bid.details.price.unit) -- | Process issuer side -- 1/ Extract their deposit @@ -72,13 +73,20 @@ generateSettlementInstruction settlementFactoryCid settler issuerAccount (Some i [allocatedDepositCid] = splitResult.splitCids allocatedDeposit <- fetch allocatedDepositCid let - delivery = Step with sender = issuer; receiver = buyer; quantity = (Instrument.qty (getAmount allocatedDeposit) (getInstrument allocatedDeposit)) - id = bid.auctionId <> "-" <> partyToText buyer + delivery = Step with sender = issuer; receiver = buyer; quantity = (qty (getAmount allocatedDeposit) (getInstrument allocatedDeposit)) + id = show bid.auctionId <> "-" <> partyToText buyer - (batchCid, [deliveryCid, paymentCid]) <- exercise settlementFactoryCid Instruct with instructors = singleton settler; settlers = singleton settler; id = Id id; description = "Settlement of auction " <> id; contextId = Some $ Id id; steps = [delivery, payment] - deliveryCid <- fst <$> exercise deliveryCid Allocate with actors = singleton settler; allocation = Pledge $ toInterfaceContractId allocatedDepositCid - exercise bidCid Bidding.ApproveInstruction with instructionCid = deliveryCid; account = bid.receivableAccount - paymentCid <- exercise bidCid Bidding.AllocateInstruction with instructionCid = paymentCid; transferableCid = toInterfaceContractId bidDepositCid - exercise paymentCid Approve with actors = singleton settler; approval = TakeDelivery issuerAccount + (batchCid, [deliveryCid, paymentCid]) <- exercise settlementServiceCid Settlement.DiscoverAndInstruct with + actor = settler + settlers = singleton settler + id = Id id + description = "Settlement of auction " <> id + contextId = Some $ Id id + settlementTime = None + steps = [delivery, payment] + deliveryCid <- fst <$> exercise deliveryCid Allocate with actors = singleton issuer; allocation = Pledge $ toInterfaceContractId allocatedDepositCid + exercise bidCid Bid.ApproveInstruction with instructionCid = deliveryCid; account = bid.receivableAccount + paymentCid <- exercise bidCid Bid.AllocateInstruction with instructionCid = paymentCid; holdingCid = bidDepositCid + exercise paymentCid Approve with actors = fromList [issuer]; approval = TakeDelivery issuerAccount pure (splitResult.rest, batchCid :: batchCids) diff --git a/src/daml/Daml/Finance/App/Distribution/Bidding/Auto/Service.daml b/src/daml/Daml/Finance/App/Distribution/Bidding/Auto.daml similarity index 51% rename from src/daml/Daml/Finance/App/Distribution/Bidding/Auto/Service.daml rename to src/daml/Daml/Finance/App/Distribution/Bidding/Auto.daml index 19a3e20f..6da63974 100644 --- a/src/daml/Daml/Finance/App/Distribution/Bidding/Auto/Service.daml +++ b/src/daml/Daml/Finance/App/Distribution/Bidding/Auto.daml @@ -1,15 +1,16 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.App.Distribution.Bidding.Auto.Service where +module Daml.Finance.App.Distribution.Bidding.Auto where -import Daml.Finance.Interface.Account.Account qualified as Account (K) -import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.App.Distribution.Auction.Model qualified as Auction (T) -import Daml.Finance.App.Distribution.Bidding.Model (Bid) -import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (CreateBid(..), S, RequestCreateBid(..)) +import Daml.Finance.App.Distribution.Bidding.Service qualified as Service (T) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Auto qualified as Auto (I, HasImplementation, RequestAndCreateBid(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as Service (I, CreateBid(..), RequestCreateBid(..)) -type S = Service +type T = Service + +instance Auto.HasImplementation Service template Service with @@ -22,25 +23,17 @@ template Service key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestAndCreateBid : ContractId Bid - with - auctionCid : ContractId Auction.T - amount : Decimal - price : Decimal - collateralCid : ContractId Fungible.I - receivableAccount : Account.K - controller customer - do - createBidRequestCid <- exerciseByKey @Bidding.S (operator, provider, customer) Bidding.RequestCreateBid with auctionCid; amount; price; collateralCid; receivableAccount - exerciseByKey @Bidding.S (operator, provider, customer) Bidding.CreateBid with createBidRequestCid + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + interface instance Auto.I for Service where + view = Auto.View + asBase = toInterface @Base.I this + requestAndCreateBid Auto.RequestAndCreateBid{auctionCid; amount; price; collateralCid; receivableAccount} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createBidRequestCid <- exercise serviceCid Service.RequestCreateBid with auctionCid; amount; price; collateralCid; receivableAccount + exercise serviceCid Service.CreateBid with createBidRequestCid template Offer with diff --git a/src/daml/Daml/Finance/App/Distribution/Bidding/Model.daml b/src/daml/Daml/Finance/App/Distribution/Bidding/Model.daml index a70a178f..9c8c62c0 100644 --- a/src/daml/Daml/Finance/App/Distribution/Bidding/Model.daml +++ b/src/daml/Daml/Finance/App/Distribution/Bidding/Model.daml @@ -3,34 +3,14 @@ module Daml.Finance.App.Distribution.Bidding.Model where -import DA.Set (singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (AllocateInstruction(..), ApproveInstruction(..), Details, I, Status, UpdateStatus(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.CreateBidRequest qualified as CreateBidRequest (I, View(..)) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) -import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..), I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Types qualified as T (Allocation(Pledge), Approval(TakeDelivery)) - -data Details = Details with - quantity : Instrument.Q - price : Instrument.Q - time : Time - deriving (Eq, Show) - -instance Ord Details where - compare x y = (x.price.amount, x.quantity.amount, Down x.time) `compare` (y.price.amount, y.quantity.amount, Down y.time) - -data Allocation = Allocation with - bidCid : ContractId Bid - bid : Bid - amount : Decimal - deriving (Eq, Show) - -data SettleAllocation = SettleAllocation with - allocation : Allocation - price : Decimal - issuer : Party - deriving (Eq, Show) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) template CreateBidRequest with @@ -38,24 +18,20 @@ template CreateBidRequest provider : Party customer : Party issuer : Party - auctionId : Text - quantity : Instrument.Q - price : Instrument.Q + auctionId : Id + quantity : InstrumentQuantity + price : InstrumentQuantity collateralCid : ContractId Fungible.I - receivableAccount : Account.K + receivableAccount : AccountKey where signatory operator, provider, customer -data Status - = Pending - | FullAllocation with - price : Decimal - | PartialAllocation with - price : Decimal - amount : Decimal - | NoAllocation - | Invalid - deriving (Eq, Show) + interface instance Removable.I for CreateBidRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateBidRequest.I for CreateBidRequest where + view = CreateBidRequest.View with operator; provider; customer; issuer; auctionId; quantity; price; collateralCid; receivableAccount + asRemovable = toInterface @Removable.I this template Bid with @@ -63,35 +39,27 @@ template Bid provider : Party customer : Party issuer : Party - details : Details - auctionId : Text + details : Bid.Details + auctionId : Id collateralCid : ContractId Fungible.I - receivableAccount : Account.K - status : Status + receivableAccount : AccountKey + status : Bid.Status where signatory operator, provider, customer observer issuer ensure details.quantity.amount > 0.0 - choice UpdateStatus : ContractId Bid - with - newStatus : Status - controller provider - do - create this with status = newStatus - - nonconsuming choice ApproveInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - account : Account.K - controller provider - do - exercise instructionCid Instruction.Approve with actors = singleton provider; approval = T.TakeDelivery account + interface instance Removable.I for Bid where + view = Removable.View with removers = fromList [operator, provider, customer] - nonconsuming choice AllocateInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - transferableCid : ContractId Transferable.I - controller provider - do - fst <$> exercise instructionCid Instruction.Allocate with actors = singleton provider; allocation = T.Pledge $ toInterfaceContractId transferableCid + interface instance Bid.I for Bid where + view = Bid.View with operator; provider; customer; issuer; details; auctionId; collateralCid; receivableAccount; status + asRemovable = toInterface @Removable.I this + updateStatus Bid.UpdateStatus{newStatus} = do + toInterfaceContractId <$> create this with status = newStatus + approveInstruction Bid.ApproveInstruction{instructionCid; account} = do + -- TODO: Assert instruction is for the right auction + exercise instructionCid Instruction.Approve with actors = singleton customer; approval = T.TakeDelivery account + allocateInstruction Bid.AllocateInstruction{instructionCid; holdingCid} = do + -- TODO: Assert instruction is for the right auction + fst <$> exercise instructionCid Instruction.Allocate with actors = singleton customer; allocation = T.Pledge $ toInterfaceContractId holdingCid diff --git a/src/daml/Daml/Finance/App/Distribution/Bidding/Service.daml b/src/daml/Daml/Finance/App/Distribution/Bidding/Service.daml index e0d4b094..eba53d12 100644 --- a/src/daml/Daml/Finance/App/Distribution/Bidding/Service.daml +++ b/src/daml/Daml/Finance/App/Distribution/Bidding/Service.daml @@ -7,18 +7,24 @@ import DA.Assert ((===)) import DA.List (head) import DA.Optional (fromSome) import DA.Set (singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K, R) +import Daml.Finance.App.Distribution.Bidding.Model (Bid(..), CreateBidRequest(..)) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (GetView(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (Details(..), Status(..), UpdateStatus(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.CreateBidRequest qualified as CreateBidRequest (View(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as Service (HasImplementation, I, CreateBid(..), ProcessAllocation(..), RejectBid(..), RequestCreateBid(..), View(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (R) import Daml.Finance.Interface.Account.Util (getAccount) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I, Split(..), SplitResult(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) -import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) import Daml.Finance.Interface.Holding.Util (getAmount, getInstrument) +import Daml.Finance.Interface.Util.Common (qty) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I, RemoveObservers(..)) -import Daml.Finance.App.Distribution.Auction.Model qualified as Auction (Fetch(..), T) -import Daml.Finance.App.Distribution.Bidding.Model (Bid(..), CreateBidRequest(..), Details(..), Status(..), UpdateStatus(..)) -type S = Service +type T = Service + +instance Service.HasImplementation Service template Service with @@ -31,16 +37,18 @@ template Service key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestCreateBid : ContractId CreateBidRequest - with - auctionCid : ContractId Auction.T - amount : Decimal - price : Decimal - collateralCid : ContractId Fungible.I - receivableAccount : Account.K - controller customer - do - auction <- exercise auctionCid Auction.Fetch with actor = customer + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View + + asBase = toInterface @Base.I this + + requestCreateBid Service.RequestCreateBid{auctionCid; amount; price; collateralCid; receivableAccount} = do + auction <- exercise auctionCid Auction.GetView with actor = customer collateral <- fetch collateralCid getInstrument collateral === auction.currency getAmount collateral === price * amount @@ -48,43 +56,32 @@ template Service -- Disclose holding investorHolding <- fetch collateralCid - investorHoldingCid : ContractId Fungible.I <- coerceContractId <$> exercise (coerceContractId collateralCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (auction.id, singleton provider) + investorHoldingCid : ContractId Fungible.I <- coerceContractId <$> exercise (coerceContractId collateralCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show auction.id, singleton provider) -- Disclose delivering securities account let investorSendingAccount = getAccount investorHolding (_, delRef) <- fetchByKey @Account.R investorSendingAccount - exercise (coerceContractId delRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (auction.id, singleton provider) + exercise (coerceContractId delRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show auction.id, singleton provider) -- Disclose receiving cash account (_, recRef) <- fetchByKey @Account.R receivableAccount - exercise (coerceContractId recRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (auction.id, singleton provider) + exercise (coerceContractId recRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show auction.id, singleton provider) -- Lock holding - collateralCid <- coerceContractId <$> exercise (coerceContractId investorHoldingCid : ContractId Holding.I) Holding.Acquire with newLockers = singleton provider; context = auction.id; lockType = Holding.Semaphore + collateralCid <- coerceContractId <$> exercise (coerceContractId investorHoldingCid : ContractId Holding.I) Holding.Acquire with newLockers = singleton provider; context = show auction.id; lockType = Holding.Semaphore let - quantity = Instrument.qty amount auction.quantity.unit - priceQty = Instrument.qty price auction.currency - create CreateBidRequest with operator; provider; customer; issuer = auction.customer; auctionId = auction.id; quantity; price = priceQty; collateralCid; receivableAccount - - nonconsuming choice CreateBid : ContractId Bid - with - createBidRequestCid : ContractId CreateBidRequest - controller provider - do - CreateBidRequest{issuer; auctionId; collateralCid; receivableAccount; price; quantity} <- fetch createBidRequestCid + quantity = qty amount auction.quantity.unit + priceQty = qty price auction.currency + toInterfaceContractId <$> create CreateBidRequest with operator; provider; customer; issuer = auction.customer; auctionId = auction.id; quantity; price = priceQty; collateralCid; receivableAccount + createBid Service.CreateBid{createBidRequestCid} = do + CreateBidRequest.View{issuer; auctionId; collateralCid; receivableAccount; price; quantity} <- view <$> fetchAndRemove createBidRequestCid time <- getTime - create Bid with operator; provider; customer; issuer; details = (Details with price; quantity; time); auctionId; collateralCid; receivableAccount; status = Pending + toInterfaceContractId <$> create Bid with operator; provider; customer; issuer; details = (Bid.Details with price; quantity; time); auctionId; collateralCid; receivableAccount; status = Bid.Pending - nonconsuming choice ProcessAllocation : (ContractId Bid, ContractId Fungible.I) - with - bidCid : ContractId Bid - amount : Decimal - price : Decimal - controller provider - do + processAllocation Service.ProcessAllocation{bidCid; amount; price} = do -- Fetch Bid -> Extract their deposit -> Split and return unused allocation (if necessary) to the investor -> Update Bid Status - bid <- fetch bidCid - bidCollateralCid : ContractId Disclosure.I <- coerceContractId <$> exercise (coerceContractId bid.collateralCid : ContractId Holding.I) Holding.Release with context = bid.auctionId - bidCollateralCid <- coerceContractId . fromSome <$> exercise bidCollateralCid Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (bid.auctionId, singleton provider) + bid <- view <$> fetch bidCid + bidCollateralCid : ContractId Disclosure.I <- coerceContractId <$> exercise (toInterfaceContractId @Holding.I bid.collateralCid) Holding.Release with context = show bid.auctionId + bidCollateralCid <- coerceContractId . fromSome <$> exercise bidCollateralCid Disclosure.RemoveObservers with disclosers = singleton provider; observersToRemove = (show bid.auctionId, singleton provider) bidCollateral <- fetch bidCollateralCid bidCollateralCid <- if getAmount bidCollateral > amount * price @@ -92,32 +89,20 @@ template Service Fungible.SplitResult{splitCids, rest} <- exercise bidCollateralCid Fungible.Split with amounts = [amount * price] pure $ head splitCids else do pure bidCollateralCid - let newStatus = if bid.details.quantity.amount == amount - then FullAllocation with price - else PartialAllocation with price; amount - - newBidCid <- exercise bidCid UpdateStatus with newStatus + let + newStatus = + if bid.details.quantity.amount == amount + then Bid.FullAllocation with price + else Bid.PartialAllocation with price; amount + newBidCid <- exercise bidCid Bid.UpdateStatus with newStatus pure (newBidCid, bidCollateralCid) - nonconsuming choice RejectBid : (ContractId Bid, ContractId Transferable.I) - with - bidCid : ContractId Bid - newStatus : Status - controller provider - do - bid <- fetch bidCid - returnedCollateralCid <- exercise (coerceContractId bid.collateralCid : ContractId Holding.I) Holding.Release with context = bid.auctionId - newBidCid <- exercise bidCid UpdateStatus with newStatus + rejectBid Service.RejectBid{bidCid; newStatus} = do + bid <- view <$> fetch bidCid + returnedCollateralCid <- exercise (toInterfaceContractId @Holding.I bid.collateralCid) Holding.Release with context = show bid.auctionId + newBidCid <- exercise bidCid Bid.UpdateStatus with newStatus pure (newBidCid, coerceContractId returnedCollateralCid) - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - template Offer with operator : Party diff --git a/src/daml/Daml/Finance/App/Distribution/Fund/Model.daml b/src/daml/Daml/Finance/App/Distribution/Fund/Model.daml index 3d383f32..68a66ff0 100644 --- a/src/daml/Daml/Finance/App/Distribution/Fund/Model.daml +++ b/src/daml/Daml/Finance/App/Distribution/Fund/Model.daml @@ -3,19 +3,21 @@ module Daml.Finance.App.Distribution.Fund.Model where -import DA.Set (singleton) -import Daml.Finance.App.Distribution.Investment.Model (InvestmentRequest) -import Daml.Finance.App.Issuance.Model qualified as Issuance (T) -import Daml.Finance.App.Issuance.Service qualified as Issuance (CreateIssuance(..), RequestCreateIssuance(..), Service) -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (ApproveInstruction(..), HasImplementation, I, IssueUnits(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Fund.PooledInvestmentRequest qualified as PooledInvestmentRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (I) +import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), I, exerciseInterfaceByKey) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) -import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Approve(..), I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Approve(..)) import Daml.Finance.Interface.Settlement.Types (Approval(TakeDelivery)) -import Daml.Finance.Interface.Types.Common (Id, Parties) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) type T = Fund +instance Fund.HasImplementation Fund + template Fund with operator : Party @@ -23,10 +25,10 @@ template Fund manager : Party id : Id description : Text - instrument : Instrument.K - currency : Instrument.K - custodianCashAccount : Account.K - managerFundAccount : Account.K + instrument : InstrumentKey + currency : InstrumentKey + custodianCashAccount : AccountKey + managerFundAccount : AccountKey totalUnits : Decimal observers : Parties where @@ -36,31 +38,24 @@ template Fund key (operator, custodian, id) : (Party, Party, Id) maintainer key._1 - nonconsuming choice GetFund : Fund - with - actor : Party - controller actor - do - pure this - - choice IssueUnits : (ContractId Issuance.T, ContractId Transferable.I, ContractId Fund) - with - requestId : Id - quantity : Instrument.Q - controller manager - do - createIssuanceRequestCid <- exerciseByKey @Issuance.Service (operator, custodian, manager) Issuance.RequestCreateIssuance with id = requestId; description = "Issuance for request " <> show requestId; quantity; account = managerFundAccount - (iss, holdingCid) <- exerciseByKey @Issuance.Service (operator, custodian, manager) Issuance.CreateIssuance with createIssuanceRequestCid - newCid <- create this with totalUnits = totalUnits + quantity.amount - pure (iss, coerceContractId holdingCid, newCid) - - nonconsuming choice ApproveInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - controller manager - do - exercise instructionCid Instruction.Approve with actors = singleton manager; approval = TakeDelivery custodianCashAccount + interface instance Removable.I for Fund where + view = Removable.View with removers = fromList [operator, custodian, manager] + + interface instance Fund.I for Fund where + view = Fund.View with operator; custodian; manager; id; description; instrument; currency; custodianCashAccount; managerFundAccount; totalUnits; observers + + asRemovable = toInterface @Removable.I this + + issueUnits Fund.IssueUnits{requestId; quantity} = do + holdingCid <- Account.exerciseInterfaceByKey @Account.I managerFundAccount manager Account.Credit with quantity + newCid <- toInterfaceContractId <$> create this with totalUnits = totalUnits + quantity.amount + pure (coerceContractId holdingCid, newCid) + approveInstruction Fund.ApproveInstruction{instructionCid} = do + -- TODO: Assert instruction is the correct one + exercise instructionCid Instruction.Approve with actors = singleton custodian; approval = TakeDelivery custodianCashAccount + +instance PooledInvestmentRequest.HasImplementation PooledInvestmentRequest template PooledInvestmentRequest with @@ -70,13 +65,18 @@ template PooledInvestmentRequest requestId : Id asOfDate : Date fundId : Id - quantity : Instrument.Q + quantity : InstrumentQuantity cashCid : ContractId Transferable.I - investmentRequestCids : [ContractId InvestmentRequest] - customerFundAccount : Account.K + investmentRequestCids : [ContractId InvestmentRequest.I] + customerFundAccount : AccountKey where signatory operator, provider, customer - choice Remove : () - controller provider - do pure () + interface instance Removable.I for PooledInvestmentRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance PooledInvestmentRequest.I for PooledInvestmentRequest where + view = PooledInvestmentRequest.View with operator; provider; customer; requestId; asOfDate; fundId; quantity; cashCid; investmentRequestCids; customerFundAccount + + asRemovable = toInterface @Removable.I this + diff --git a/src/daml/Daml/Finance/App/Distribution/Fund/Service.daml b/src/daml/Daml/Finance/App/Distribution/Fund/Service.daml index 80ad5e15..2e6afe8c 100644 --- a/src/daml/Daml/Finance/App/Distribution/Fund/Service.daml +++ b/src/daml/Daml/Finance/App/Distribution/Fund/Service.daml @@ -10,43 +10,50 @@ import DA.Optional (fromSome) import DA.Set (singleton) import DA.Time (time) import Daml.Finance.App.Data.AccountDirectory (AccountDirectory) -import Daml.Finance.App.Distribution.Fund.Model qualified as Fund (ApproveInstruction(..), GetFund(..), IssueUnits(..), PooledInvestmentRequest(..), Remove(..), T) -import Daml.Finance.App.Distribution.Investment.Model (AllocateInstruction(..), ApproveInstruction(..), Delete(..), InvestmentRequest(..)) -import Daml.Finance.Interface.Data.NumericObservable qualified as NumericObservable (I, Observe(..)) -import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.App.Distribution.Fund.Model qualified as Model (PooledInvestmentRequest(..)) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Remove(..)) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (ApproveInstruction(..), GetView(..), IssueUnits(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Service qualified as Service (FulfillPooledInvestmentRequest(..), HasImplementation, I, PoolInvestmentRequests(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (AllocateInstruction(..), ApproveInstruction(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (DiscoverAndInstruct(..), I) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) +import Daml.Finance.Interface.Lifecycle.Observable.NumericObservable qualified as NumericObservable (Observe(..)) import Daml.Finance.Interface.Settlement.Batch qualified as Batch (Settle(..)) -import Daml.Finance.Interface.Settlement.Factory qualified as Settlement (Factory, Instruct(..)) import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Types (Allocation(..), Approval(..), Step(..)) -import Daml.Finance.Interface.Types.Common (Id) +import Daml.Finance.Interface.Util.Common (qty) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I) -type S = Service +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice PoolInvestmentRequests : ContractId Fund.PooledInvestmentRequest - with - requestId : Id - asOfDate : Date - fundCid : ContractId Fund.T - cashCid : ContractId Transferable.I - investmentRequestCids : [ContractId InvestmentRequest] - controller customer - do - fund <- exercise fundCid Fund.GetFund with actor = customer - irs <- mapA fetch investmentRequestCids + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with settlementServiceCid + + asBase = toInterface @Base.I this + + poolInvestmentRequests Service.PoolInvestmentRequests{requestId; asOfDate; fundCid; cashCid; investmentRequestCids} = do + fund <- exercise fundCid Fund.GetView with actor = customer + irs <- mapA (fmap view . fetch) investmentRequestCids (_, dir) <- fetchByKey @AccountDirectory customer -- Disclose cash to provider @@ -59,81 +66,77 @@ template Service [fundId] = dedup $ map (.fundId) irs [asOfDate] = dedup $ map (.asOfDate) irs total = sum $ map (.quantity.amount) irs - quantity = Instrument.qty total currency + quantity = qty total currency customerFundAccount = fromSome $ M.lookup fund.instrument.id dir.accounts - create Fund.PooledInvestmentRequest with operator; provider; customer; requestId; asOfDate; fundId; quantity; cashCid; investmentRequestCids; customerFundAccount + toInterfaceContractId <$> create Model.PooledInvestmentRequest with operator; provider; customer; requestId; asOfDate; fundId; quantity; cashCid; investmentRequestCids; customerFundAccount - nonconsuming choice FulfillPooledInvestmentRequest : [ContractId Holding.I] - with - pooledInvestmentRequestCid : ContractId Fund.PooledInvestmentRequest - fundCid : ContractId Fund.T - navObservableCid : ContractId NumericObservable.I - settlementFactoryCid : ContractId Settlement.Factory - controller provider - do - pir <- fetch pooledInvestmentRequestCid - fund <- fetch fundCid + fulfillPooledInvestmentRequest Service.FulfillPooledInvestmentRequest{pooledInvestmentRequestCid; fundCid; navObservableCid} = do + pir <- view <$> fetch pooledInvestmentRequestCid + fund <- view <$> fetch fundCid -- Calculate nr of units to issue nav <- exercise navObservableCid NumericObservable.Observe with actors = singleton customer; t = time pir.asOfDate 0 0 0 let unitValue = nav / fund.totalUnits nrUnits = pir.quantity.amount / unitValue - fundQty = Instrument.qty nrUnits fund.instrument + fundQty = qty nrUnits fund.instrument -- Issue units - (_, fundUnitsCid, fundCid) <- exercise fundCid Fund.IssueUnits with requestId = pir.requestId; quantity = fundQty + (fundUnitsCid, fundCid) <- exercise fundCid Fund.IssueUnits with requestId = pir.requestId; quantity = fundQty -- Instruct settlement - irs <- mapA fetch pir.investmentRequestCids + irs <- mapA (fmap view . fetch) pir.investmentRequestCids let createInvestorCashStep ir = Step with sender = ir.customer; receiver = ir.provider; quantity = ir.quantity - createInvestorFundStep ir = Step with sender = ir.provider; receiver = ir.customer; quantity = Instrument.qty (ir.quantity.amount / unitValue) fund.instrument + createInvestorFundStep ir = Step with sender = ir.provider; receiver = ir.customer; quantity = qty (ir.quantity.amount / unitValue) fund.instrument custodianCashStep = Step with sender = pir.customer; receiver = fund.custodian; quantity = pir.quantity managerFundStep = Step with sender = provider; receiver = pir.customer; quantity = fundQty steps = custodianCashStep :: managerFundStep :: map createInvestorCashStep irs <> map createInvestorFundStep irs - (batchCid, custodianCashInstructionCid :: managerFundInstructionCid :: investorInstructionCids) <- - exercise settlementFactoryCid Settlement.Instruct with instructors = singleton provider; settlers = singleton provider; id = pir.requestId; description = "Settlement for " <> show pir.requestId; contextId = Some pir.requestId; steps + (batchCid, custodianCashInstructionCid :: managerFundInstructionCid :: investorInstructionCids) <- exercise settlementServiceCid SettlementService.DiscoverAndInstruct with + actor = provider + settlers = singleton provider + id = pir.requestId + description = "Settlement for " <> show pir.requestId + contextId = Some pir.requestId + settlementTime = None + steps + let reqInst = zip (pir.investmentRequestCids <> pir.investmentRequestCids) investorInstructionCids (reqInstCash, reqInstFund) = splitAt (length irs) reqInst -- Allocate and approve custodian cash instruction - (custodianCashInstructionCid, _) <- exercise custodianCashInstructionCid Instruction.Allocate with actors = singleton provider; allocation = Pledge $ toInterfaceContractId pir.cashCid + (custodianCashInstructionCid, _) <- exercise custodianCashInstructionCid Instruction.Allocate with actors = singleton custodianCashStep.sender; allocation = Pledge $ toInterfaceContractId pir.cashCid exercise fundCid Fund.ApproveInstruction with instructionCid = custodianCashInstructionCid -- Allocate and approve manager fund instruction - (managerFundInstructionCid, _) <- exercise managerFundInstructionCid Instruction.Allocate with actors = singleton provider; allocation = Pledge $ coerceContractId fundUnitsCid - exercise managerFundInstructionCid Instruction.Approve with actors = singleton provider; approval = TakeDelivery pir.customerFundAccount + (managerFundInstructionCid, _) <- exercise managerFundInstructionCid Instruction.Allocate with actors = singleton managerFundStep.sender; allocation = Pledge $ coerceContractId fundUnitsCid + exercise managerFundInstructionCid Instruction.Approve with actors = singleton managerFundStep.receiver; approval = TakeDelivery pir.customerFundAccount -- Allocate and approve investor instructions let processCash (irCid, iCid) = do - iCid <- exercise irCid AllocateInstruction with instructionCid = iCid - exercise iCid Instruction.Approve with actors = singleton provider; approval = DebitSender + iCid <- exercise irCid InvestmentRequest.AllocateInstruction with instructionCid = iCid + i <- fetch iCid + debug $ view i + debug customer + exercise iCid Instruction.Approve with actors = singleton customer; approval = DebitSender processFund (irCid, iCid) = do - (iCid, _) <- exercise iCid Instruction.Allocate with actors = singleton provider; allocation = CreditReceiver - exercise irCid ApproveInstruction with instructionCid = iCid + (iCid, _) <- exercise iCid Instruction.Allocate with actors = singleton customer; allocation = CreditReceiver + exercise irCid InvestmentRequest.ApproveInstruction with instructionCid = iCid mapA_ processCash reqInstCash mapA_ processFund reqInstFund - mapA_ (\cid -> exercise cid Delete) pir.investmentRequestCids - exercise pooledInvestmentRequestCid Fund.Remove + mapA_ (\cid -> exercise (toInterfaceContractId @Removable.I cid) Removable.Remove) pir.investmentRequestCids + exercise (toInterfaceContractId @Removable.I pooledInvestmentRequestCid) Removable.Remove exercise batchCid Batch.Settle with actors = singleton provider - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - template Offer with operator : Party provider : Party customer : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider observer customer @@ -141,7 +144,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid choice Decline : () controller customer @@ -171,6 +174,7 @@ template Request choice Approve : ContractId Service with operator : Party + settlementServiceCid : ContractId SettlementService.I controller operator, provider do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid diff --git a/src/daml/Daml/Finance/App/Distribution/Investment/Model.daml b/src/daml/Daml/Finance/App/Distribution/Investment/Model.daml index ebe1e904..6f555618 100644 --- a/src/daml/Daml/Finance/App/Distribution/Investment/Model.daml +++ b/src/daml/Daml/Finance/App/Distribution/Investment/Model.daml @@ -3,13 +3,15 @@ module Daml.Finance.App.Distribution.Investment.Model where -import DA.Set (singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (AllocateInstruction(..), ApproveInstruction(..), HasImplementation, I, View(..)) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..), I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Types (Allocation(Pledge), Approval(TakeDelivery)) -import Daml.Finance.Interface.Types.Common (Id) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +instance InvestmentRequest.HasImplementation InvestmentRequest template InvestmentRequest with @@ -20,27 +22,23 @@ template InvestmentRequest requestId : Id asOfDate : Date fundId : Id - quantity : Instrument.Q + quantity : InstrumentQuantity cashCid : ContractId Transferable.I - customerFundAccount : Account.K + customerFundAccount : AccountKey where signatory operator, provider, customer observer manager - nonconsuming choice AllocateInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - controller manager - do - fst <$> exercise instructionCid Instruction.Allocate with actors = singleton manager; allocation = Pledge $ toInterfaceContractId cashCid - - nonconsuming choice ApproveInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - controller manager - do - exercise instructionCid Instruction.Approve with actors = singleton manager; approval = TakeDelivery customerFundAccount - - choice Delete : () - controller manager - do pure () + interface instance Removable.I for InvestmentRequest where + view = Removable.View with removers = fromList [operator, provider] + + interface instance InvestmentRequest.I for InvestmentRequest where + view = InvestmentRequest.View with operator; provider; customer; manager; requestId; asOfDate; fundId; quantity; cashCid; customerFundAccount + + asRemovable = toInterface @Removable.I this + + allocateInstruction InvestmentRequest.AllocateInstruction{instructionCid} = do + fst <$> exercise instructionCid Instruction.Allocate with actors = singleton customer; allocation = Pledge $ toInterfaceContractId cashCid + + approveInstruction InvestmentRequest.ApproveInstruction{instructionCid} = do + exercise instructionCid Instruction.Approve with actors = singleton customer; approval = TakeDelivery customerFundAccount diff --git a/src/daml/Daml/Finance/App/Distribution/Investment/Service.daml b/src/daml/Daml/Finance/App/Distribution/Investment/Service.daml index e7a9678b..485a047a 100644 --- a/src/daml/Daml/Finance/App/Distribution/Investment/Service.daml +++ b/src/daml/Daml/Finance/App/Distribution/Investment/Service.daml @@ -7,16 +7,18 @@ import DA.Map qualified as M (lookup) import DA.Optional (fromSome) import DA.Set (singleton) import Daml.Finance.App.Data.AccountDirectory (AccountDirectory) -import Daml.Finance.App.Distribution.Fund.Model (GetFund(..), Fund) import Daml.Finance.App.Distribution.Investment.Model (InvestmentRequest(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (GetView(..)) +import Daml.Finance.App.Interface.Distribution.Investment.Service qualified as Service (HasImplementation, I, RequestInvestment(..), View(..)) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) --- import Daml.Finance.Interface.Holding.Lockable qualified as Lockable (Acquire(..), I, LockType(..)) import Daml.Finance.Interface.Holding.Util (getAmount, getInstrument) -import Daml.Finance.Interface.Types.Common (Id) +import Daml.Finance.Interface.Util.Common (qty) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I) -type S = Service +type T = Service + +instance Service.HasImplementation Service template Service with @@ -29,33 +31,27 @@ template Service key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestInvestment : ContractId InvestmentRequest - with - requestId : Id - asOfDate : Date - fundCid : ContractId Fund - cashCid : ContractId Transferable.I - controller customer - do + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + interface instance Service.I for Service where + view = Service.View + + asBase = toInterface @Base.I this + + requestInvestment Service.RequestInvestment{requestId; asOfDate; fundCid; cashCid} = do -- Disclose holding - fund <- exercise fundCid GetFund with actor = customer + fund <- exercise fundCid Fund.GetView with actor = customer cashCid : ContractId Transferable.I <- coerceContractId <$> exercise (coerceContractId cashCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show requestId, singleton fund.manager) cash <- fetch cashCid (_, dir) <- fetchByKey @AccountDirectory customer let - quantity = Instrument.qty (getAmount cash) (getInstrument cash) + quantity = qty (getAmount cash) (getInstrument cash) customerFundAccount = fromSome $ M.lookup fund.instrument.id dir.accounts - create InvestmentRequest with operator; provider; customer; manager = fund.manager; requestId; asOfDate; quantity; fundId = fund.id; cashCid = toInterfaceContractId cashCid; customerFundAccount - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + toInterfaceContractId <$> create InvestmentRequest with operator; provider; customer; manager = fund.manager; requestId; asOfDate; quantity; fundId = fund.id; cashCid = toInterfaceContractId cashCid; customerFundAccount template Offer with diff --git a/src/daml/Daml/Finance/App/Distribution/Subscription/Model.daml b/src/daml/Daml/Finance/App/Distribution/Subscription/Model.daml index 62ec5d99..b15b52e0 100644 --- a/src/daml/Daml/Finance/App/Distribution/Subscription/Model.daml +++ b/src/daml/Daml/Finance/App/Distribution/Subscription/Model.daml @@ -4,72 +4,59 @@ module Daml.Finance.App.Distribution.Subscription.Model where import DA.Set (fromList, singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K, R) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Offering qualified as Offering (HasImplementation, I, Subscribe(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Subscription qualified as Subscription (AllocateInstruction(..), ApproveInstruction(..), HasImplementation, I, UnlockHolding(..), View(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Types (BackToBack, Status) +import Daml.Finance.Interface.Account.Account qualified as Account (disclose) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) -import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) import Daml.Finance.Interface.Account.Util (getAccount) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I) -import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..), I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Types (Allocation(Pledge), Approval(TakeDelivery)) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) -data Status - = Open - | Closed - deriving (Eq, Show) - -data BackToBack = BackToBack - with - party : Party - offeringId : Text - issuerReceivableAccount : Account.K - issuerDeliverableCid : ContractId Fungible.I - b2bReceivableAccount : Account.K - b2bDeliverableCid : ContractId Fungible.I - deriving (Eq, Show) +instance Offering.HasImplementation Offering template Offering with operator : Party provider : Party issuer : Party - public : Party - offeringId : Text - asset : Instrument.Q - price : Instrument.Q + id : Id + description : Text + asset : InstrumentQuantity + price : InstrumentQuantity issuerHoldingCid : ContractId Fungible.I - issuerAccount : Account.K + issuerAccount : AccountKey backToBack : Optional BackToBack status : Status + observers : Parties where signatory operator, provider, issuer - observer public + observer observers - key (provider, offeringId) : (Party, Text) + key (operator, provider, id) : (Party, Party, Id) maintainer key._1 - nonconsuming choice Subscribe : ContractId Subscription - with - investor : Party - quantity : Decimal - investorHoldingCid : ContractId Fungible.I - investorAccount : Account.K - controller investor - do - -- Disclose holding - investorHolding <- fetch investorHoldingCid - investorHoldingCid : ContractId Fungible.I <- coerceContractId <$> exercise (coerceContractId investorHoldingCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton investor; observersToAdd = (offeringId, singleton issuer) - -- Disclose delivering securities account - let investorSendingAccount = getAccount investorHolding - (_, delRef) <- fetchByKey @Account.R investorSendingAccount - exercise (coerceContractId delRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton investor; observersToAdd = (offeringId, singleton issuer) - -- Disclose receiving cash account - (_, recRef) <- fetchByKey @Account.R investorAccount - exercise (coerceContractId recRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton investor; observersToAdd = (offeringId, singleton issuer) - -- Lock holding - investorHoldingCid <- coerceContractId <$> exercise (toInterfaceContractId investorHoldingCid : ContractId Holding.I) Holding.Acquire with newLockers = singleton issuer; context = offeringId; lockType = Holding.Semaphore - create Subscription with holdingCid = investorHoldingCid; accountKey = investorAccount; .. + interface instance Removable.I for Offering where + view = Removable.View with removers = fromList [operator, provider, issuer] + + interface instance Offering.I for Offering where + view = Offering.View with operator; provider; issuer; id; description; asset; price; issuerHoldingCid; issuerAccount; backToBack; status; observers + + asRemovable = toInterface @Removable.I this + + subscribe Offering.Subscribe{investor; quantity; investorHoldingCid; investorAccount} = do + investorHolding <- fetch investorHoldingCid + investorHoldingCid : ContractId Fungible.I <- coerceContractId <$> exercise (coerceContractId investorHoldingCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton investor; observersToAdd = (show id, singleton issuer) + Account.disclose (show id, singleton issuer) investor (singleton investor) $ getAccount investorHolding + Account.disclose (show id, singleton issuer) investor (singleton investor) investorAccount + investorHoldingCid <- coerceContractId <$> exercise (toInterfaceContractId investorHoldingCid : ContractId Holding.I) Holding.Acquire with newLockers = singleton issuer; context = show id; lockType = Holding.Semaphore + toInterfaceContractId <$> create Subscription with operator; provider; issuer; investor; offeringId = id; quantity; holdingCid = investorHoldingCid; account = investorAccount + +instance Subscription.HasImplementation Subscription template Subscription with @@ -77,32 +64,26 @@ template Subscription provider : Party issuer : Party investor : Party - offeringId : Text + offeringId : Id quantity : Decimal holdingCid : ContractId Fungible.I - accountKey : Account.K + account : AccountKey where signatory operator, provider, issuer, investor - nonconsuming choice ApproveInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - receiverAccount : Account.K - controller provider - do - exercise instructionCid Instruction.Approve with actors = fromList [provider, investor]; approval = TakeDelivery receiverAccount + interface instance Removable.I for Subscription where + view = Removable.View with removers = fromList [operator, provider, issuer] + + interface instance Subscription.I for Subscription where + view = Subscription.View with operator; provider; issuer; investor; offeringId; quantity; holdingCid; account + + asRemovable = toInterface @Removable.I this - nonconsuming choice AllocateInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - transferableCid : ContractId Transferable.I - controller provider - do + allocateInstruction Subscription.AllocateInstruction{instructionCid; transferableCid} = do fst <$> exercise instructionCid Instruction.Allocate with actors = fromList [provider, investor]; allocation = Pledge $ toInterfaceContractId transferableCid - nonconsuming choice UnlockHolding : ContractId Holding.I - with - lockableCid : ContractId Holding.I - controller provider - do - exercise lockableCid Holding.Release with context = offeringId + approveInstruction Subscription.ApproveInstruction{instructionCid; receiverAccount} = do + exercise instructionCid Instruction.Approve with actors = fromList [provider, investor]; approval = TakeDelivery receiverAccount + + unlockHolding Subscription.UnlockHolding{lockableCid} = do + exercise lockableCid Holding.Release with context = show offeringId diff --git a/src/daml/Daml/Finance/App/Distribution/Subscription/Service.daml b/src/daml/Daml/Finance/App/Distribution/Subscription/Service.daml index 11f3a408..d6f5f56a 100644 --- a/src/daml/Daml/Finance/App/Distribution/Subscription/Service.daml +++ b/src/daml/Daml/Finance/App/Distribution/Subscription/Service.daml @@ -6,84 +6,88 @@ module Daml.Finance.App.Distribution.Subscription.Service where import DA.Action (foldlA) import DA.Optional (whenSome) import DA.Set (fromList, singleton) -import Daml.Finance.App.BackToBack.Service qualified as BackToBack -import Daml.Finance.App.Distribution.Subscription.Model (BackToBack, Offering(..), Status(..), Subscription) +import Daml.Finance.App.Distribution.Subscription.Model qualified as Model (Offering(..)) import Daml.Finance.App.Distribution.Subscription.Util (settleSubscription) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Types (Status(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Service qualified as Service (CreateOffering(..), HasImplementation, I, ProcessOffering(..), View(..)) +import Daml.Finance.App.Interface.Issuance.BackToBack qualified as BackToBack (I, LockOffering(..), SettleOffering(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.App.Issuance.BackToBack qualified as BackToBack (T) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I) -import Daml.Finance.Interface.Account.Account qualified as Account (K, R) +import Daml.Finance.Interface.Account.Account qualified as Account (disclose) import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) import Daml.Finance.Interface.Account.Util (getAccount) -import Daml.Finance.Interface.Settlement.Factory qualified as Factory (I) + +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party - public : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice CreateOffering : ContractId Offering - with - offeringId : Text - asset : Instrument.Q - price : Instrument.Q - customerHoldingCid : ContractId Fungible.I - customerAccount : Account.K - backToBack : Optional BackToBack - controller customer - do - -- Disclose holding + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with settlementServiceCid + + asBase = toInterface @Base.I this + + createOffering Service.CreateOffering{offeringId; description; asset; price; customerHoldingCid; customerAccount; backToBack; observers} = do + -- Disclosure customerHolding <- fetch customerHoldingCid - customerHoldingCid : ContractId Fungible.I <- coerceContractId <$> exercise (coerceContractId customerHoldingCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (offeringId, singleton provider) - -- Disclose delivering securities account - let customerSendingAccount = getAccount customerHolding - (_, delRef) <- fetchByKey @Account.R customerSendingAccount - exercise (coerceContractId delRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (offeringId, singleton provider) - -- Disclose receiving cash account - (_, recRef) <- fetchByKey @Account.R customerAccount - exercise (coerceContractId recRef.cid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (offeringId, singleton provider) + customerHoldingCid : ContractId Fungible.I <- coerceContractId <$> exercise (coerceContractId customerHoldingCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show offeringId, singleton provider) + Account.disclose (show offeringId, singleton provider) customer (singleton customer) $ getAccount customerHolding + Account.disclose (show offeringId, singleton provider) customer (singleton customer) customerAccount + -- Lock holding - customerHoldingCid <- coerceContractId <$> exercise (toInterfaceContractId customerHoldingCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [ provider ]; context = offeringId; lockType = Holding.Semaphore + customerHoldingCid <- coerceContractId <$> exercise (toInterfaceContractId customerHoldingCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [ provider ]; context = show offeringId; lockType = Holding.Semaphore -- Lock back-to-back assets lockedB2b <- case backToBack of - Some b2b -> do Some <$> exerciseByKey @BackToBack.Service (operator, b2b.party, customer) BackToBack.LockOffering with backToBack = b2b + Some b2b -> do + (serviceCid, _) <- fetchByKey @BackToBack.T (operator, b2b.party, customer) + Some <$> exercise (toInterfaceContractId @BackToBack.I serviceCid) BackToBack.LockOffering with backToBack = b2b None -> pure None - create Offering + toInterfaceContractId <$> create Model.Offering with - operator; provider; public; asset; price; offeringId + operator; provider; asset; price + id = offeringId + description issuer = customer issuerHoldingCid = customerHoldingCid issuerAccount = customerAccount backToBack = lockedB2b status = Open + observers - nonconsuming choice ProcessOffering : ContractId Offering - with - settlementFactoryCid : ContractId Factory.I - offeringCid : ContractId Offering - subscriptionCids : [ContractId Subscription] - controller provider - do + processOffering Service.ProcessOffering{offeringCid; subscriptionCids} = do -- Settle subscriptions - offering <- fetch offeringCid - subscriptions <- zip subscriptionCids <$> forA subscriptionCids fetch - (remainingIssuerQuantity, remainingIssuerHoldingCidOpt) <- foldlA (settleSubscription provider settlementFactoryCid offering) (offering.asset.amount, Some offering.issuerHoldingCid) subscriptions + offeringI <- fetch offeringCid + let offering = view offeringI + subscriptions <- zip subscriptionCids <$> forA subscriptionCids (fmap view . fetch) + (remainingIssuerQuantity, remainingIssuerHoldingCidOpt) <- foldlA (settleSubscription provider settlementServiceCid offering) (offering.asset.amount, Some offering.issuerHoldingCid) subscriptions -- Settle back-to-back trade whenSome offering.backToBack \b2b -> do - let - totalQuantity = sum $ map ((.quantity) . snd) subscriptions - exerciseByKey @BackToBack.Service (operator, b2b.party, customer) BackToBack.SettleOffering with settlementFactoryCid; offeringCid; totalQuantity + let totalQuantity = sum $ map ((.quantity) . snd) subscriptions + (serviceCid, _) <- fetchByKey @BackToBack.T (operator, b2b.party, customer) + exercise (toInterfaceContractId @BackToBack.I serviceCid) BackToBack.SettleOffering with offeringCid; totalQuantity pure () -- Archive offer and subscriptions @@ -92,25 +96,18 @@ template Service -- Unlock remaining issuer holding whenSome remainingIssuerHoldingCidOpt \holdingCid -> do - exercise (toInterfaceContractId holdingCid : ContractId Holding.I) Holding.Release with context = offering.offeringId + exercise (toInterfaceContractId holdingCid : ContractId Holding.I) Holding.Release with context = show offering.id pure () - create offering with status = Closed - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + let Some offeringT = fromInterface @Model.Offering offeringI + toInterfaceContractId <$> create offeringT with status = Closed template Offer with operator : Party provider : Party customer : Party - public : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider observer customer @@ -118,7 +115,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid choice Decline : () controller customer @@ -133,7 +130,6 @@ template Request with provider : Party customer : Party - public : Party where signatory customer observer provider @@ -149,6 +145,7 @@ template Request choice Approve : ContractId Service with operator : Party + settlementServiceCid : ContractId SettlementService.I controller operator, provider do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid diff --git a/src/daml/Daml/Finance/App/Distribution/Subscription/Util.daml b/src/daml/Daml/Finance/App/Distribution/Subscription/Util.daml index 9b7797f9..0887f32e 100644 --- a/src/daml/Daml/Finance/App/Distribution/Subscription/Util.daml +++ b/src/daml/Daml/Finance/App/Distribution/Subscription/Util.daml @@ -7,19 +7,19 @@ import DA.Foldable (forA_) import DA.Functor (void) import DA.Optional (optionalToList) import DA.Set (singleton) +import Daml.Finance.App.Interface.Distribution.Subscription.Offering qualified as Offering (View) +import Daml.Finance.App.Interface.Distribution.Subscription.Subscription qualified as Subscription (AllocateInstruction(..), ApproveInstruction(..), I, UnlockHolding(..), View) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (DiscoverAndInstruct(..), I) import Daml.Finance.Interface.Account.Account qualified as Account (R) import Daml.Finance.Interface.Holding.Base qualified as Holding (I, Release(..)) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I, Split(..)) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, RemoveObservers(..)) -import Daml.Finance.Interface.Settlement.Factory (Factory, Instruct(..)) import Daml.Finance.Interface.Settlement.Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Batch (Settle(..)) import Daml.Finance.Interface.Settlement.Types (Allocation(Pledge), Approval(TakeDelivery), Step(..)) -import Daml.Finance.App.Distribution.Subscription.Model (AllocateInstruction(..), ApproveInstruction(..), Offering, Subscription, UnlockHolding(..)) -import Daml.Finance.Interface.Types.Common (Id(..)) -settleSubscription : Party -> ContractId Factory -> Offering -> (Decimal, Optional (ContractId Fungible.I)) -> (ContractId Subscription, Subscription) -> Update (Decimal, Optional (ContractId Fungible.I)) -settleSubscription actor settlementFactoryCid offering (remainingQuantity, issuerHoldingCidOpt) (subscriptionCid, subscription) = do +settleSubscription : Party -> ContractId SettlementService.I -> Offering.View -> (Decimal, Optional (ContractId Fungible.I)) -> (ContractId Subscription.I, Subscription.View) -> Update (Decimal, Optional (ContractId Fungible.I)) +settleSubscription actor settlementServiceCid offering (remainingQuantity, issuerHoldingCidOpt) (subscriptionCid, subscription) = do if remainingQuantity == 0.0 then do pure (remainingQuantity, issuerHoldingCidOpt) else do @@ -30,7 +30,14 @@ settleSubscription actor settlementFactoryCid offering (remainingQuantity, issue payedQuantity = offering.price with amount = allocatedQuantity.amount * offering.price.amount delivery = Step with sender = offering.issuer; receiver = subscription.investor; quantity = allocatedQuantity payment = Step with sender = subscription.investor; receiver = offering.issuer; quantity = payedQuantity - (batchCid, [deliveryCid, paymentCid]) <- exercise settlementFactoryCid Instruct with instructors = singleton offering.provider; settlers = singleton offering.provider; id = Id offering.offeringId; description = offering.offeringId; contextId = None; steps = [delivery, payment] + (batchCid, [deliveryCid, paymentCid]) <- exercise settlementServiceCid SettlementService.DiscoverAndInstruct with + actor = offering.provider + settlers = singleton offering.provider + id = offering.id + description = show offering.id + contextId = None + settlementTime = None + steps = [delivery, payment] -- Settle allocatedHoldingCid :: remainingIssuerHoldingCids <- @@ -44,11 +51,11 @@ settleSubscription actor settlementFactoryCid offering (remainingQuantity, issue -- paymentHolding <- fetch paymentHoldingCid -- paymentAccountCid <- getAccountCid paymentHolding deliveryCid <- fst <$> exercise deliveryCid Allocate with actors = singleton actor; allocation = Pledge $ toInterfaceContractId allocatedHoldingCid - exercise subscriptionCid ApproveInstruction with instructionCid = deliveryCid; receiverAccount = subscription.accountKey - paymentCid <- exercise subscriptionCid AllocateInstruction with instructionCid = paymentCid; transferableCid = toInterfaceContractId paymentHoldingCid + exercise subscriptionCid Subscription.ApproveInstruction with instructionCid = deliveryCid; receiverAccount = subscription.account + paymentCid <- exercise subscriptionCid Subscription.AllocateInstruction with instructionCid = paymentCid; transferableCid = toInterfaceContractId paymentHoldingCid exercise paymentCid Approve with actors = singleton actor; approval = TakeDelivery offering.issuerAccount transferredCids <- exercise batchCid Settle with actors = singleton actor - forA_ transferredCids $ \cid -> exercise subscriptionCid UnlockHolding with lockableCid = toInterfaceContractId cid + forA_ transferredCids $ \cid -> exercise subscriptionCid Subscription.UnlockHolding with lockableCid = toInterfaceContractId cid -- Process remainders let @@ -58,11 +65,11 @@ settleSubscription actor settlementFactoryCid offering (remainingQuantity, issue hCid :: _ -> Some hCid case remainingInvestorHoldingCids of [] -> do pure () - hCid :: _ -> do void $ exercise (coerceContractId hCid : ContractId Holding.I) Holding.Release with context = offering.offeringId + hCid :: _ -> do void $ exercise (coerceContractId hCid : ContractId Holding.I) Holding.Release with context = show offering.id -- Undisclose accounts (doesn't quite work) - (_, accountProxy) <- fetchByKey @Account.R subscription.accountKey - exercise (coerceContractId accountProxy.cid : ContractId Disclosure.I) Disclosure.RemoveObservers with disclosers = singleton actor; observersToRemove = (offering.offeringId, singleton offering.issuer) + (_, accountProxy) <- fetchByKey @Account.R subscription.account + exercise (coerceContractId accountProxy.cid : ContractId Disclosure.I) Disclosure.RemoveObservers with disclosers = singleton actor; observersToRemove = (show offering.id, singleton offering.issuer) -- exercise paymentAccountCid RemoveObserver with observerToRemove = (offering.offeringId, singleton offering.issuer) pure (max 0.0 $ remainingQuantity - subscription.quantity, remainingIssuerHoldingCid) diff --git a/src/daml/Daml/Finance/App/Interface/Base/Offer.daml b/src/daml/Daml/Finance/App/Interface/Base/Offer.daml new file mode 100644 index 00000000..e517ffbd --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Base/Offer.daml @@ -0,0 +1,47 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Base.Offer where + +import Daml.Finance.App.Interface.Base.Service qualified as Service (I) + +type I = Offer + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + deriving (Eq, Show) + +interface Offer where + viewtype V + + accept : Update (ContractId Service.I) + -- ^ Implementation of the `Accept` choice. + reject : Update () + -- ^ Implementation of the `Reject` choice. + withdraw : Update () + -- ^ Implementation of the `Withdraw` choice. + + choice Accept : ContractId Service.I + controller (view this).customer + do + accept this + + choice Reject : () + controller (view this).customer + do + reject this + + choice Withdraw : () + controller (view this).provider + do + withdraw this + +-- | Type constraint for requiring templates to implement `Offer`. +type Implementation t = HasToInterface t Offer +class (Implementation t) => HasImplementation t +instance HasImplementation Offer diff --git a/src/daml/Daml/Finance/App/Interface/Base/Request.daml b/src/daml/Daml/Finance/App/Interface/Base/Request.daml new file mode 100644 index 00000000..0c1df34d --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Base/Request.daml @@ -0,0 +1,47 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Base.Request where + +import Daml.Finance.App.Interface.Base.Service qualified as Service (I) + +type I = Request + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + deriving (Eq, Show) + +interface Request where + viewtype V + + accept : Update (ContractId Service.I) + -- ^ Implementation of the `Accept` choice. + reject : Update () + -- ^ Implementation of the `Reject` choice. + withdraw : Update () + -- ^ Implementation of the `Withdraw` choice. + + choice Accept : ContractId Service.I + controller (view this).operator, (view this).provider + do + accept this + + choice Reject : () + controller (view this).provider + do + reject this + + choice Withdraw : () + controller (view this).customer + do + withdraw this + +-- | Type constraint for requiring templates to implement `Request`. +type Implementation t = HasToInterface t Request +class (Implementation t) => HasImplementation t +instance HasImplementation Request diff --git a/src/daml/Daml/Finance/App/Interface/Base/Service.daml b/src/daml/Daml/Finance/App/Interface/Base/Service.daml new file mode 100644 index 00000000..58525cc8 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Base/Service.daml @@ -0,0 +1,35 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Base.Service where + +type I = Service + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + deriving (Eq, Show) + +interface Service where + viewtype V + + terminate : Update () + -- ^ Implementation of the `terminate` choice. + + choice Terminate : () + with + actor : Party + controller actor + do + let v = view this + assert $ actor == v.operator || actor == v.provider || actor == v.customer + terminate this + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service diff --git a/src/daml/Daml/Finance/App/Interface/Common/Removable.daml b/src/daml/Daml/Finance/App/Interface/Common/Removable.daml new file mode 100644 index 00000000..2a14af45 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Common/Removable.daml @@ -0,0 +1,28 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Common.Removable where + +import Daml.Finance.Interface.Types.Common.Types (Parties) + +type I = Removable + +type V = View + +data View = View + with + removers : Parties + deriving (Eq, Show) + +interface Removable where + viewtype V + + choice Remove : () + controller (view this).removers + do + pure () + +-- | Type constraint for requiring templates to implement `Removable`. +type Implementation t = HasToInterface t Removable +class (Implementation t) => HasImplementation t +instance HasImplementation Removable diff --git a/src/daml/Daml/Finance/App/Interface/Common/Util.daml b/src/daml/Daml/Finance/App/Interface/Common/Util.daml new file mode 100644 index 00000000..99a4cb0c --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Common/Util.daml @@ -0,0 +1,13 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Common.Util where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Remove(..)) + +-- | Fetches a contract, removes it and returns its value. +fetchAndRemove : (HasFetch a, HasToInterface a Removable.I) => ContractId a -> Update a +fetchAndRemove cid = do + c <- fetch cid + exercise (toInterfaceContractId @Removable.I cid) Removable.Remove + return c diff --git a/src/daml/Daml/Finance/App/Interface/Custody/Auto.daml b/src/daml/Daml/Finance/App/Interface/Custody/Auto.daml new file mode 100644 index 00000000..553be966 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Custody/Auto.daml @@ -0,0 +1,73 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Custody.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.Interface.Account.Account qualified as Account (Controllers, I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, PartiesMap) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndOpenAccount : RequestAndOpenAccount -> Update (ContractId Account.I, AccountKey) + -- ^ Implementation of the `RequestOpenAccount` choice. + + requestAndCloseAccount : RequestAndCloseAccount -> Update () + -- ^ Implementation of the `RequestCloseAccount` choice. + + requestAndDeposit : RequestAndDeposit -> Update (ContractId Holding.I) + -- ^ Implementation of the `RequestDeposit` choice. + + requestAndWithdraw : RequestAndWithdraw -> Update () + -- ^ Implementation of the `RequestAndWithdraw` choice. + + nonconsuming choice RequestAndOpenAccount : (ContractId Account.I, AccountKey) + with + id : Id + description : Text + controllers : Account.Controllers + observers : PartiesMap + controller (view $ asBase this).customer + do + requestAndOpenAccount this arg + + nonconsuming choice RequestAndCloseAccount : () + with + account : AccountKey + controller (view $ asBase this).customer + do + requestAndCloseAccount this arg + + nonconsuming choice RequestAndDeposit : (ContractId Holding.I) + with + quantity : InstrumentQuantity + account : AccountKey + controller (view $ asBase this).customer + do + requestAndDeposit this arg + + nonconsuming choice RequestAndWithdraw : () + with + instrument : InstrumentKey + holdingCid : ContractId Holding.I + controller (view $ asBase this).customer + do + requestAndWithdraw this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Custody/CloseAccountRequest.daml b/src/daml/Daml/Finance/App/Interface/Custody/CloseAccountRequest.daml new file mode 100644 index 00000000..6fdda4a6 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Custody/CloseAccountRequest.daml @@ -0,0 +1,32 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Custody.CloseAccountRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (AccountKey) + +type I = CloseAccountRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + account : AccountKey + deriving (Eq, Show) + +interface CloseAccountRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CloseAccountRequest`. +type Implementation t = (HasToInterface t CloseAccountRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CloseAccountRequest +instance HasToInterface CloseAccountRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Custody/DepositRequest.daml b/src/daml/Daml/Finance/App/Interface/Custody/DepositRequest.daml new file mode 100644 index 00000000..53c1d8de --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Custody/DepositRequest.daml @@ -0,0 +1,33 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Custody.DepositRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, InstrumentQuantity) + +type I = DepositRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + quantity : InstrumentQuantity + account : AccountKey + deriving (Eq, Show) + +interface DepositRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `DepositRequest`. +type Implementation t = (HasToInterface t DepositRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation DepositRequest +instance HasToInterface DepositRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Custody/OpenAccountRequest.daml b/src/daml/Daml/Finance/App/Interface/Custody/OpenAccountRequest.daml new file mode 100644 index 00000000..0cf13b32 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Custody/OpenAccountRequest.daml @@ -0,0 +1,36 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Custody.OpenAccountRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Account.Account qualified as Account (Controllers) +import Daml.Finance.Interface.Types.Common.Types (Id, PartiesMap) + +type I = OpenAccountRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + controllers : Account.Controllers + observers : PartiesMap + deriving (Eq, Show) + +interface OpenAccountRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `OpenAccountRequest`. +type Implementation t = (HasToInterface t OpenAccountRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation OpenAccountRequest +instance HasToInterface OpenAccountRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Custody/Service.daml b/src/daml/Daml/Finance/App/Interface/Custody/Service.daml new file mode 100644 index 00000000..9f2741ea --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Custody/Service.daml @@ -0,0 +1,123 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Custody.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Custody.OpenAccountRequest qualified as OpenAccountRequest (I) +import Daml.Finance.App.Interface.Custody.CloseAccountRequest qualified as CloseAccountRequest (I) +import Daml.Finance.App.Interface.Custody.DepositRequest qualified as DepositRequest (I) +import Daml.Finance.App.Interface.Custody.WithdrawRequest qualified as WithdrawRequest (I) +import Daml.Finance.Interface.Account.Account qualified as Account (Controllers, I) +import Daml.Finance.Interface.Account.Factory qualified as Account (F) +import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Lifecycle.Rule.Claim qualified as Lifecycle (Claim) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, PartiesMap) + +type I = Service + +type V = View + +data View = View + with + accountFactoryCid : ContractId Account.F + holdingFactoryCid : ContractId Holding.F + claimRuleCid : ContractId Lifecycle.Claim + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestOpenAccount : RequestOpenAccount -> Update (ContractId OpenAccountRequest.I) + -- ^ Implementation of the `RequestOpenAccount` choice. + + requestCloseAccount : RequestCloseAccount -> Update (ContractId CloseAccountRequest.I) + -- ^ Implementation of the `RequestCloseAccount` choice. + + requestDeposit : RequestDeposit -> Update (ContractId DepositRequest.I) + -- ^ Implementation of the `RequestDeposit` choice. + + requestWithdraw : RequestWithdraw -> Update (ContractId WithdrawRequest.I) + -- ^ Implementation of the `RequestWithdraw` choice. + + openAccount : OpenAccount -> Update (ContractId Account.I, AccountKey) + -- ^ Implementation of the `OpenAccount` choice. + + closeAccount : CloseAccount -> Update () + -- ^ Implementation of the `CloseAccount` choice. + + deposit : Deposit -> Update (ContractId Holding.I) + -- ^ Implementation of the `Deposit` choice. + + withdraw : Withdraw -> Update () + -- ^ Implementation of the `Withdraw` choice. + + nonconsuming choice RequestOpenAccount : ContractId OpenAccountRequest.I + with + id : Id + description : Text + controllers : Account.Controllers + observers : PartiesMap + controller (view $ asBase this).customer + do + requestOpenAccount this arg + + nonconsuming choice RequestCloseAccount : ContractId CloseAccountRequest.I + with + account : AccountKey + controller (view $ asBase this).customer + do + requestCloseAccount this arg + + nonconsuming choice RequestDeposit : ContractId DepositRequest.I + with + quantity : InstrumentQuantity + account : AccountKey + controller (view $ asBase this).customer + do + requestDeposit this arg + + nonconsuming choice RequestWithdraw : ContractId WithdrawRequest.I + with + holdingCid : ContractId Holding.I + controller (view $ asBase this).customer + do + requestWithdraw this arg + + nonconsuming choice OpenAccount : (ContractId Account.I, AccountKey) + with + openAccountRequestCid : ContractId OpenAccountRequest.I + controller (view $ asBase this).provider + do + openAccount this arg + + nonconsuming choice CloseAccount : () + with + closeAccountRequestCid : ContractId CloseAccountRequest.I + controller (view $ asBase this).provider + do + closeAccount this arg + + nonconsuming choice Deposit : ContractId Holding.I + with + depositRequestCid : ContractId DepositRequest.I + controller (view $ asBase this).provider + do + deposit this arg + + nonconsuming choice Withdraw : () + with + withdrawRequestCid : ContractId WithdrawRequest.I + controller (view $ asBase this).provider + do + withdraw this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Custody/WithdrawRequest.daml b/src/daml/Daml/Finance/App/Interface/Custody/WithdrawRequest.daml new file mode 100644 index 00000000..89b03565 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Custody/WithdrawRequest.daml @@ -0,0 +1,32 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Custody.WithdrawRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) + +type I = WithdrawRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + holdingCid : ContractId Holding.I + deriving (Eq, Show) + +interface WithdrawRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t WithdrawRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation WithdrawRequest +instance HasToInterface WithdrawRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Decentralized/Exchange/Interface.daml b/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/FlashSwapAction.daml similarity index 78% rename from src/daml/Daml/Finance/App/Decentralized/Exchange/Interface.daml rename to src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/FlashSwapAction.daml index 36a5ad0b..940a46a7 100644 --- a/src/daml/Daml/Finance/App/Decentralized/Exchange/Interface.daml +++ b/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/FlashSwapAction.daml @@ -1,25 +1,28 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.App.Decentralized.Exchange.Interface where +module Daml.Finance.App.Interface.Decentralized.Exchange.FlashSwapAction where import DA.Assert ((===)) import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -- import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I, Split(..), SplitResult(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (Parties) +import Daml.Finance.Interface.Types.Common.Types (InstrumentQuantity, Parties) + +type I = FlashSwapAction data View = View {} + deriving (Eq, Show) interface FlashSwapAction where viewtype View + executeAction : ContractId Holding.I -> Update (ContractId Holding.I, [ContractId Holding.I]) choice ExecuteAction: (ContractId Holding.I, [ContractId Holding.I]) with actors : Parties - consumedQuantity : Instrument.Q - producedQuantity: Instrument.Q + consumedQuantity : InstrumentQuantity + producedQuantity: InstrumentQuantity holdingCid: ContractId Holding.I controller actors do @@ -45,15 +48,3 @@ interface FlashSwapAction where producedHolding.instrument === producedQuantity.unit producedHolding.amount === producedQuantity.amount return (producedHoldingCid, extraHoldingCids) -- <> optionalToList consumedHoldingRest <> optionalToList producedHoldingRest) - --- Example of a FlashSwapAction template (used for a normal DEX Swap) -template FlashSwapPipe with - provider : Party - outCid : ContractId Holding.I - where - signatory provider - - interface instance FlashSwapAction for FlashSwapPipe where - view = View {} - executeAction holdingCid = pure (outCid, [holdingCid]) - diff --git a/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/Service.daml b/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/Service.daml new file mode 100644 index 00000000..a3dfd2bc --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/Service.daml @@ -0,0 +1,89 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Decentralized.Exchange.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Decentralized.Exchange.FlashSwapAction qualified as FlashSwapAction (I) +import Daml.Finance.App.Interface.Decentralized.Exchange.Types (Pool) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = Service + +type V = View + +data View = View + with + consortium : Party + id : Id + description : Text + shares : InstrumentQuantity -- share + p1 : Pool -- pool1 + p2 : Pool -- pool2 + observers : Parties + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + deposit : ContractId Service -> Deposit -> Update (ContractId Service, ContractId Holding.I) + -- ^ Implementation of the `Deposit` choice. + + withdraw : ContractId Service -> Withdraw -> Update (ContractId Service, ContractId Fungible.I, ContractId Fungible.I) + -- ^ Implementation of the `Withdraw` choice. + + flashSwap : ContractId Service -> FlashSwap -> Update (ContractId Service, [ContractId Holding.I]) + -- ^ Implementation of the `FlashSwap` choice. + + swap : ContractId Service -> Swap -> Update (ContractId Service, [ContractId Holding.I]) + -- ^ Implementation of the `Swap` choice. + + nonconsuming choice Deposit : (ContractId Service, ContractId Holding.I) + with + actor : Party + fungible1Cid: ContractId Fungible.I + fungible2Cid: ContractId Fungible.I + shareAccount : AccountKey + controller actor + do + deposit this self arg + + nonconsuming choice Withdraw : (ContractId Service, ContractId Fungible.I, ContractId Fungible.I) + with + actor : Party + shareCid : ContractId Fungible.I + p1Account : AccountKey + p2Account : AccountKey + controller actor + do + withdraw this self arg + + nonconsuming choice FlashSwap : (ContractId Service, [ContractId Holding.I]) + with + actor : Party + xAsset : InstrumentQuantity + yAccount : AccountKey + actionCid : ContractId FlashSwapAction.I + controller actor + do + flashSwap this self arg + + nonconsuming choice Swap : (ContractId Service, [ContractId Holding.I]) + with + actor : Party + xFungibleCid : ContractId Fungible.I + yAccount : AccountKey + controller actor + do + swap this self arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Decentralized/Exchange/Model.daml b/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/Types.daml similarity index 54% rename from src/daml/Daml/Finance/App/Decentralized/Exchange/Model.daml rename to src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/Types.daml index 85f8efbd..56780a7f 100644 --- a/src/daml/Daml/Finance/App/Decentralized/Exchange/Model.daml +++ b/src/daml/Daml/Finance/App/Interface/Decentralized/Exchange/Types.daml @@ -1,19 +1,14 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.App.Decentralized.Exchange.Model where +module Daml.Finance.App.Interface.Decentralized.Exchange.Types where import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (AccountKey) - -switchIf : Bool -> (b, b) -> (b, b) -switchIf cond (x, y) = if cond then (y, x) else (x, y) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, InstrumentQuantity) data Pool = Pool with - quantity : Instrument.Q + quantity : InstrumentQuantity account : AccountKey -- TODO: Might not need this, but instead derive it from holding fungibleCid : ContractId Fungible.I deriving (Eq, Show) - diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Auction.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Auction.daml new file mode 100644 index 00000000..530b69ee --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Auction.daml @@ -0,0 +1,58 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Auction.Auction where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) + +type I = Auction + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + quantity : InstrumentQuantity + currency : InstrumentKey + floor : Decimal + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + status : Status + observers : Parties + deriving (Eq, Show) + +data Status + = Open + | PartiallyAllocated with + finalPrice : Decimal + remaining : Decimal + | FullyAllocated with + finalPrice : Decimal + | NoValidBids + deriving (Eq, Show) + +interface Auction where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + nonconsuming choice GetView : View + with + actor : Party + controller actor + do + pure $ view this + +-- | Type constraint for requiring templates to implement `Auction`. +type Implementation t = (HasToInterface t Auction, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Auction +instance HasToInterface Auction Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Auto.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Auto.daml new file mode 100644 index 00000000..794bdc64 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Auto.daml @@ -0,0 +1,45 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Auction.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndCreateAuction : RequestAndCreateAuction -> Update (ContractId Auction.I) + -- ^ Implementation of the `RequestAndCreateAuction` choice. + + nonconsuming choice RequestAndCreateAuction : (ContractId Auction.I) + with + auctionId : Id + description : Text + quantity : InstrumentQuantity + currency : InstrumentKey + floor : Decimal + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + observers : Parties + controller (view $ asBase this).customer + do + requestAndCreateAuction this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Auction/CreateAuctionRequest.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/CreateAuctionRequest.daml new file mode 100644 index 00000000..7996ee97 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/CreateAuctionRequest.daml @@ -0,0 +1,40 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Auction.CreateAuctionRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) + +type I = CreateAuctionRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + auctionId : Id + description : Text + quantity : InstrumentQuantity + currency : InstrumentKey + floor : Decimal + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + observers : Parties + deriving (Eq, Show) + +interface CreateAuctionRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateAuctionRequest`. +type Implementation t = (HasToInterface t CreateAuctionRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateAuctionRequest +instance HasToInterface CreateAuctionRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Service.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Service.daml new file mode 100644 index 00000000..255e51b3 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Auction/Service.daml @@ -0,0 +1,71 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Auction.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Auction.CreateAuctionRequest qualified as CreateAuctionRequest (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (I) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) + +type I = Service + +type V = View + +data View = View + with + settlementServiceCid : ContractId SettlementService.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestCreateAuction : RequestCreateAuction -> Update (ContractId CreateAuctionRequest.I) + -- ^ Implementation of the `RequestCreateAuction` choice. + + createAuction : CreateAuction -> Update (ContractId Auction.I) + -- ^ Implementation of the `CreateAuction` choice. + + processAuction : ProcessAuction -> Update (ContractId Auction.I) + -- ^ Implementation of the `ProcessAuction` choice. + + nonconsuming choice RequestCreateAuction : ContractId CreateAuctionRequest.I + with + auctionId : Id + description : Text + quantity : InstrumentQuantity + currency : InstrumentKey + floor : Decimal + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + observers : Parties + controller (view $ asBase this).customer + do + requestCreateAuction this arg + + nonconsuming choice CreateAuction : ContractId Auction.I + with + createAuctionRequestCid : ContractId CreateAuctionRequest.I + controller (view $ asBase this).provider + do + createAuction this arg + + nonconsuming choice ProcessAuction : ContractId Auction.I + with + auctionCid : ContractId Auction.I + bidCids : [ContractId Bid.I] + controller (view $ asBase this).provider + do + processAuction this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Auto.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Auto.daml new file mode 100644 index 00000000..f641da27 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Auto.daml @@ -0,0 +1,43 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Bidding.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndCreateBid : RequestAndCreateBid -> Update (ContractId Bid.I) + -- ^ Implementation of the `RequestAndCreateAuction` choice. + + nonconsuming choice RequestAndCreateBid : (ContractId Bid.I) + with + auctionCid : ContractId Auction.I + amount : Decimal + price : Decimal + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + controller (view $ asBase this).customer + do + requestAndCreateBid this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Bid.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Bid.daml new file mode 100644 index 00000000..0488ea61 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Bid.daml @@ -0,0 +1,99 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Bidding.Bid where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = Bid + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + issuer : Party + auctionId : Id + details : Details + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + status : Status + deriving (Eq, Show) + +data Details = Details with + quantity : InstrumentQuantity + price : InstrumentQuantity + time : Time + deriving (Eq, Show) + +instance Ord Details where + compare x y = (x.price.amount, x.quantity.amount, Down x.time) `compare` (y.price.amount, y.quantity.amount, Down y.time) + +data Allocation = Allocation with + bidCid : ContractId Bid + bid : View + amount : Decimal + deriving (Eq, Show) + +data SettleAllocation = SettleAllocation with + allocation : Allocation + price : Decimal + issuer : Party + deriving (Eq, Show) + +data Status + = Pending + | FullAllocation with + price : Decimal + | PartialAllocation with + price : Decimal + amount : Decimal + | NoAllocation + | Invalid + deriving (Eq, Show) + +interface Bid where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + updateStatus : UpdateStatus -> Update (ContractId Bid) + -- ^ Implementation of the `UpdateStatus` choice. + approveInstruction : ApproveInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `ApproveInstruction` choice. + allocateInstruction : AllocateInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `AllocateInstruction` choice. + + choice UpdateStatus : ContractId Bid + with + newStatus : Status + controller (view this).provider + do + updateStatus this arg + + nonconsuming choice ApproveInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + account : AccountKey + controller (view this).provider + do + approveInstruction this arg + + nonconsuming choice AllocateInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + holdingCid : ContractId Fungible.I + controller (view this).provider + do + allocateInstruction this arg + +-- | Type constraint for requiring templates to implement `Bid`. +type Implementation t = (HasToInterface t Bid, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Bid +instance HasToInterface Bid Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/CreateBidRequest.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/CreateBidRequest.daml new file mode 100644 index 00000000..d217c0e7 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/CreateBidRequest.daml @@ -0,0 +1,37 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Bidding.CreateBidRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = CreateBidRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + issuer : Party + auctionId : Id + quantity : InstrumentQuantity + price : InstrumentQuantity + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + deriving (Eq, Show) + +interface CreateBidRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateBidRequest`. +type Implementation t = (HasToInterface t CreateBidRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateBidRequest +instance HasToInterface CreateBidRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Service.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Service.daml new file mode 100644 index 00000000..d7f9de8a --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Bidding/Service.daml @@ -0,0 +1,77 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Bidding.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Bidding.CreateBidRequest qualified as CreateBidRequest (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (I, Status) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestCreateBid : RequestCreateBid -> Update (ContractId CreateBidRequest.I) + -- ^ Implementation of the `RequestCreateBid` choice. + + createBid : CreateBid -> Update (ContractId Bid.I) + -- ^ Implementation of the `CreateBid` choice. + + processAllocation : ProcessAllocation -> Update (ContractId Bid.I, ContractId Fungible.I) + -- ^ Implementation of the `ProcessAllocation` choice. + + rejectBid : RejectBid -> Update (ContractId Bid.I, ContractId Fungible.I) + -- ^ Implementation of the `RejectBid` choice. + + nonconsuming choice RequestCreateBid : ContractId CreateBidRequest.I + with + auctionCid : ContractId Auction.I + amount : Decimal + price : Decimal + collateralCid : ContractId Fungible.I + receivableAccount : AccountKey + controller (view $ asBase this).customer + do + requestCreateBid this arg + + nonconsuming choice CreateBid : ContractId Bid.I + with + createBidRequestCid : ContractId CreateBidRequest.I + controller (view $ asBase this).provider + do + createBid this arg + + nonconsuming choice ProcessAllocation : (ContractId Bid.I, ContractId Fungible.I) + with + bidCid : ContractId Bid.I + amount : Decimal + price : Decimal + controller (view $ asBase this).provider + do + processAllocation this arg + + nonconsuming choice RejectBid : (ContractId Bid.I, ContractId Fungible.I) + with + bidCid : ContractId Bid.I + newStatus : Bid.Status + controller (view $ asBase this).provider + do + rejectBid this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Fund/Fund.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Fund/Fund.daml new file mode 100644 index 00000000..c55204a7 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Fund/Fund.daml @@ -0,0 +1,69 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Fund.Fund where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentKey, InstrumentQuantity, Parties) + +type I = Fund + +type V = View + +data View = View + with + operator : Party + custodian : Party + manager : Party + id : Id + description : Text + instrument : InstrumentKey + currency : InstrumentKey + custodianCashAccount : AccountKey + managerFundAccount : AccountKey + totalUnits : Decimal + observers : Parties + deriving (Eq, Show) + +interface Fund where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + issueUnits : IssueUnits -> Update (ContractId Transferable.I, ContractId Fund) + -- ^ Implementation of the `IssueUnits` choice. + + approveInstruction : ApproveInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `ApproveInstruction` choice. + + nonconsuming choice GetView : View + with + actor : Party + controller actor + do + pure $ view this + + choice IssueUnits : (ContractId Transferable.I, ContractId Fund) + with + requestId : Id + quantity : InstrumentQuantity + controller (view this).manager + do + issueUnits this arg + + nonconsuming choice ApproveInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + controller (view this).manager + do + approveInstruction this arg + +-- | Type constraint for requiring templates to implement `Fund`. +type Implementation t = (HasToInterface t Fund, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Fund +instance HasToInterface Fund Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Fund/PooledInvestmentRequest.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Fund/PooledInvestmentRequest.daml new file mode 100644 index 00000000..1a801b30 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Fund/PooledInvestmentRequest.daml @@ -0,0 +1,40 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Fund.PooledInvestmentRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (I) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = PooledInvestmentRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + requestId : Id + asOfDate : Date + fundId : Id + quantity : InstrumentQuantity + cashCid : ContractId Transferable.I + investmentRequestCids : [ContractId InvestmentRequest.I] + customerFundAccount : AccountKey + deriving (Eq, Show) + +interface PooledInvestmentRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `PooledInvestmentRequest`. +type Implementation t = (HasToInterface t PooledInvestmentRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation PooledInvestmentRequest +instance HasToInterface PooledInvestmentRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Fund/Service.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Fund/Service.daml new file mode 100644 index 00000000..f936dafa --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Fund/Service.daml @@ -0,0 +1,61 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Fund.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (I) +import Daml.Finance.App.Interface.Distribution.Fund.PooledInvestmentRequest qualified as PooledInvestmentRequest (I) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (I) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.Interface.Lifecycle.Observable.NumericObservable qualified as NumericObservable (I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Types.Common.Types (Id) + +type I = Service + +type V = View + +data View = View + with + settlementServiceCid : ContractId SettlementService.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + poolInvestmentRequests : PoolInvestmentRequests -> Update (ContractId PooledInvestmentRequest.I) + -- ^ Implementation of the `PoolInvestmentRequests` choice. + + fulfillPooledInvestmentRequest : FulfillPooledInvestmentRequest -> Update [ContractId Holding.I] + -- ^ Implementation of the `FulfillPooledInvestmentRequest` choice. + + nonconsuming choice PoolInvestmentRequests : ContractId PooledInvestmentRequest.I + with + requestId : Id + asOfDate : Date + fundCid : ContractId Fund.I + cashCid : ContractId Transferable.I + investmentRequestCids : [ContractId InvestmentRequest.I] + controller (view $ asBase this).customer + do + poolInvestmentRequests this arg + + nonconsuming choice FulfillPooledInvestmentRequest : [ContractId Holding.I] + with + pooledInvestmentRequestCid : ContractId PooledInvestmentRequest.I + fundCid : ContractId Fund.I + navObservableCid : ContractId NumericObservable.I + controller (view $ asBase this).provider + do + fulfillPooledInvestmentRequest this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Investment/InvestmentRequest.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Investment/InvestmentRequest.daml new file mode 100644 index 00000000..54f81867 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Investment/InvestmentRequest.daml @@ -0,0 +1,60 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = InvestmentRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + manager : Party + requestId : Id + asOfDate : Date + fundId : Id + quantity : InstrumentQuantity + cashCid : ContractId Transferable.I + customerFundAccount : AccountKey + deriving (Eq, Show) + +interface InvestmentRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + allocateInstruction : AllocateInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `AllocateInstruction` choice. + + approveInstruction : ApproveInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `ApproveInstruction` choice. + + nonconsuming choice AllocateInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + controller (view this).manager + do + allocateInstruction this arg + + nonconsuming choice ApproveInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + controller (view this).manager + do + approveInstruction this arg + +-- | Type constraint for requiring templates to implement `InvestmentRequest`. +type Implementation t = (HasToInterface t InvestmentRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation InvestmentRequest +instance HasToInterface InvestmentRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Investment/Service.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Investment/Service.daml new file mode 100644 index 00000000..4520bfcd --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Investment/Service.daml @@ -0,0 +1,42 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Investment.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (I) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (I) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Types.Common.Types (Id) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestInvestment : RequestInvestment -> Update (ContractId InvestmentRequest.I) + -- ^ Implementation of the `RequestInvestment` choice. + + nonconsuming choice RequestInvestment : ContractId InvestmentRequest.I + with + requestId : Id + asOfDate : Date + fundCid : ContractId Fund.I + cashCid : ContractId Transferable.I + controller (view $ asBase this).customer + do + requestInvestment this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Offering.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Offering.daml new file mode 100644 index 00000000..41072167 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Offering.daml @@ -0,0 +1,56 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Subscription.Offering where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Subscription.Subscription qualified as Subscription (I) +import Daml.Finance.App.Interface.Distribution.Subscription.Types (BackToBack, Status) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = Offering + +type V = View + +data View = View + with + operator : Party + provider : Party + issuer : Party + id : Id + description : Text + asset : InstrumentQuantity + price : InstrumentQuantity + issuerHoldingCid : ContractId Fungible.I + issuerAccount : AccountKey + backToBack : Optional BackToBack + status : Status + observers : Parties + deriving (Eq, Show) + +interface Offering where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + subscribe : Subscribe -> Update (ContractId Subscription.I) + -- ^ Implementation of the `Subscribe` choice. + + nonconsuming choice Subscribe : ContractId Subscription.I + with + investor : Party + quantity : Decimal + investorHoldingCid : ContractId Fungible.I + investorAccount : AccountKey + controller investor + do + subscribe this arg + +-- | Type constraint for requiring templates to implement `Offering`. +type Implementation t = (HasToInterface t Offering, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Offering +instance HasToInterface Offering Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Service.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Service.daml new file mode 100644 index 00000000..7437ce9d --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Service.daml @@ -0,0 +1,61 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Subscription.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Subscription.Offering qualified as Offering (I) +import Daml.Finance.App.Interface.Distribution.Subscription.Subscription qualified as Subscription (I) +import Daml.Finance.App.Interface.Distribution.Subscription.Types (BackToBack) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = Service + +type V = View + +data View = View + with + settlementServiceCid : ContractId SettlementService.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + createOffering : CreateOffering -> Update (ContractId Offering.I) + -- ^ Implementation of the `CreateOffering` choice. + + processOffering : ProcessOffering -> Update (ContractId Offering.I) + -- ^ Implementation of the `ProcessOffering` choice. + + nonconsuming choice CreateOffering : ContractId Offering.I + with + offeringId : Id + description : Text + asset : InstrumentQuantity + price : InstrumentQuantity + customerHoldingCid : ContractId Fungible.I + customerAccount : AccountKey + backToBack : Optional BackToBack + observers : Parties + controller (view $ asBase this).customer + do + createOffering this arg + + nonconsuming choice ProcessOffering : ContractId Offering.I + with + offeringCid : ContractId Offering.I + subscriptionCids : [ContractId Subscription.I] + controller (view $ asBase this).provider + do + processOffering this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Subscription.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Subscription.daml new file mode 100644 index 00000000..bc3eb367 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Subscription.daml @@ -0,0 +1,72 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Subscription.Subscription where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id) + +type I = Subscription + +type V = View + +data View = View + with + operator : Party + provider : Party + issuer : Party + investor : Party + offeringId : Id + quantity : Decimal + holdingCid : ContractId Fungible.I + account : AccountKey + deriving (Eq, Show) + +interface Subscription where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + allocateInstruction : AllocateInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `AllocateInstruction` choice. + + approveInstruction : ApproveInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `ApproveInstruction` choice. + + unlockHolding : UnlockHolding -> Update (ContractId Holding.I) + -- ^ Implementation of the `UnlockHolding` choice. + + nonconsuming choice AllocateInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + transferableCid : ContractId Transferable.I + controller (view this).provider + do + allocateInstruction this arg + + nonconsuming choice ApproveInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + receiverAccount : AccountKey + controller (view this).provider + do + approveInstruction this arg + + nonconsuming choice UnlockHolding : ContractId Holding.I + with + lockableCid : ContractId Holding.I + controller (view this).provider + do + unlockHolding this arg + +-- | Type constraint for requiring templates to implement `Subscription`. +type Implementation t = (HasToInterface t Subscription, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Subscription +instance HasToInterface Subscription Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Types.daml b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Types.daml new file mode 100644 index 00000000..c623916d --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Distribution/Subscription/Types.daml @@ -0,0 +1,22 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Distribution.Subscription.Types where + +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id) + +data Status + = Open + | Closed + deriving (Eq, Show) + +data BackToBack = BackToBack + with + party : Party + offeringId : Id + issuerReceivableAccount : AccountKey + issuerDeliverableCid : ContractId Fungible.I + b2bReceivableAccount : AccountKey + b2bDeliverableCid : ContractId Fungible.I + deriving (Eq, Show) diff --git a/src/daml/Daml/Finance/App/Interface/Issuance/Auto.daml b/src/daml/Daml/Finance/App/Interface/Issuance/Auto.daml new file mode 100644 index 00000000..a6c5f1b1 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Issuance/Auto.daml @@ -0,0 +1,52 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Issuance.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.App.Interface.Issuance.Issuance qualified as Issuance (I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndIssue : RequestAndIssue -> Update (ContractId Issuance.I, ContractId Holding.I) + -- ^ Implementation of the `RequestAndIssue` choice. + + requestAndDeissue : RequestAndDeissue -> Update (ContractId Issuance.I) + -- ^ Implementation of the `RequestAndDeissue` choice. + + nonconsuming choice RequestAndIssue : (ContractId Issuance.I, ContractId Holding.I) + with + issuanceId : Id + description : Text + quantity : InstrumentQuantity + account : AccountKey + controller (view $ asBase this).customer + do + requestAndIssue this arg + + nonconsuming choice RequestAndDeissue : (ContractId Issuance.I) + with + issuanceId : Id + holdingCid : ContractId Holding.I + controller (view $ asBase this).customer + do + requestAndDeissue this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Issuance/BackToBack.daml b/src/daml/Daml/Finance/App/Interface/Issuance/BackToBack.daml new file mode 100644 index 00000000..e7f36931 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Issuance/BackToBack.daml @@ -0,0 +1,68 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Issuance.BackToBack where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Distribution.Subscription.Offering qualified as Offering (I) +import Daml.Finance.App.Interface.Distribution.Subscription.Types (BackToBack) +import Daml.Finance.App.Interface.Issuance.Issuance qualified as Issuance (I) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = Service + +type V = View + +data View = View + with + settlementServiceCid : ContractId SettlementService.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + createIssuance : CreateIssuance -> Update (ContractId Issuance.I, ContractId Holding.I, ContractId Holding.I) + -- ^ Implementation of the `CreateIssuance` choice. + + lockOffering : LockOffering -> Update BackToBack + -- ^ Implementation of the `LockOffering` choice. + + settleOffering : SettleOffering -> Update [ContractId Holding.I] + -- ^ Implementation of the `SettleOffering` choice. + + nonconsuming choice CreateIssuance : (ContractId Issuance.I, ContractId Holding.I, ContractId Holding.I) + with + issuanceId : Id + description : Text + quantity : InstrumentQuantity + customerAccount : AccountKey + providerAccount : AccountKey + controller (view $ asBase this).customer + do + createIssuance this arg + + nonconsuming choice LockOffering : BackToBack + with + backToBack : BackToBack + controller (view $ asBase this).customer + do + lockOffering this arg + + nonconsuming choice SettleOffering : [ContractId Holding.I] + with + offeringCid : ContractId Offering.I + totalQuantity : Decimal + controller (view $ asBase this).customer + do + settleOffering this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Issuance/DeissueRequest.daml b/src/daml/Daml/Finance/App/Interface/Issuance/DeissueRequest.daml new file mode 100644 index 00000000..a4652244 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Issuance/DeissueRequest.daml @@ -0,0 +1,33 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Issuance.DeissueRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Types.Common.Types (Id) + +type I = DeissueRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + issuanceId : Id + holdingCid : ContractId Holding.I + deriving (Eq, Show) + +interface DeissueRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `DeissueRequest`. +type Implementation t = (HasToInterface t DeissueRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation DeissueRequest +instance HasToInterface DeissueRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Issuance/Issuance.daml b/src/daml/Daml/Finance/App/Interface/Issuance/Issuance.daml new file mode 100644 index 00000000..60017ebf --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Issuance/Issuance.daml @@ -0,0 +1,33 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Issuance.Issuance where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentQuantity) + +type I = Issuance + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + quantity : InstrumentQuantity + deriving (Eq, Show) + +interface Issuance where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `Issuance`. +type Implementation t = (HasToInterface t Issuance, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Issuance +instance HasToInterface Issuance Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Issuance/IssueRequest.daml b/src/daml/Daml/Finance/App/Interface/Issuance/IssueRequest.daml new file mode 100644 index 00000000..421f4c9c --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Issuance/IssueRequest.daml @@ -0,0 +1,34 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Issuance.IssueRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = IssueRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + issuanceId : Id + description : Text + quantity : InstrumentQuantity + account : AccountKey + deriving (Eq, Show) + +interface IssueRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `IssueRequest`. +type Implementation t = (HasToInterface t IssueRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation IssueRequest +instance HasToInterface IssueRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Issuance/Service.daml b/src/daml/Daml/Finance/App/Interface/Issuance/Service.daml new file mode 100644 index 00000000..6b55f39d --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Issuance/Service.daml @@ -0,0 +1,74 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Issuance.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Issuance.Issuance qualified as Issuance (I) +import Daml.Finance.App.Interface.Issuance.IssueRequest qualified as IssueRequest (I) +import Daml.Finance.App.Interface.Issuance.DeissueRequest qualified as DeissueRequest (I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestIssue : RequestIssue -> Update (ContractId IssueRequest.I) + -- ^ Implementation of the `RequestIssue` choice. + + requestDeissue : RequestDeissue -> Update (ContractId DeissueRequest.I) + -- ^ Implementation of the `RequestDeissue` choice. + + issue : Issue -> Update (ContractId Issuance.I, ContractId Holding.I) + -- ^ Implementation of the `Issue` choice. + + deissue : Deissue -> Update (ContractId Issuance.I) + -- ^ Implementation of the `Deissue` choice. + + nonconsuming choice RequestIssue : ContractId IssueRequest.I + with + issuanceId : Id + description : Text + quantity : InstrumentQuantity + account : AccountKey + controller (view $ asBase this).customer + do + requestIssue this arg + + nonconsuming choice RequestDeissue : ContractId DeissueRequest.I + with + issuanceId : Id + holdingCid : ContractId Holding.I + controller (view $ asBase this).customer + do + requestDeissue this arg + + nonconsuming choice Issue : (ContractId Issuance.I, ContractId Holding.I) + with + issueRequestCid : ContractId IssueRequest.I + controller (view $ asBase this).provider + do + issue this arg + + nonconsuming choice Deissue : (ContractId Issuance.I) + with + deissueRequestCid : ContractId DeissueRequest.I + controller (view $ asBase this).provider + do + deissue this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Lending/BorrowAgreement.daml b/src/daml/Daml/Finance/App/Interface/Lending/BorrowAgreement.daml new file mode 100644 index 00000000..6aab30be --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Lending/BorrowAgreement.daml @@ -0,0 +1,52 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Lending.BorrowAgreement where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = BorrowAgreement + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + dealId : Id + description : Text + borrowed : InstrumentQuantity + maturity : Date + interest : InstrumentQuantity + collateral : InstrumentQuantity + collateralCid : ContractId Transferable.I + lenderBorrowedAccount : AccountKey + lenderInterestAccount : AccountKey + deriving (Eq, Show) + +interface BorrowAgreement where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + repay : Repay -> Update (ContractId Transferable.I, ContractId Transferable.I, ContractId Transferable.I) + -- ^ Implementation of the `Repay` choice. + + choice Repay : (ContractId Transferable.I, ContractId Transferable.I, ContractId Transferable.I) + with + borrowedCid : ContractId Transferable.I + interestCid : ContractId Transferable.I + controller (view this).customer + do + repay this arg + +-- | Type constraint for requiring templates to implement `BorrowAgreement`. +type Implementation t = (HasToInterface t BorrowAgreement, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation BorrowAgreement +instance HasToInterface BorrowAgreement Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Lending/BorrowOffer.daml b/src/daml/Daml/Finance/App/Interface/Lending/BorrowOffer.daml new file mode 100644 index 00000000..94482f76 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Lending/BorrowOffer.daml @@ -0,0 +1,40 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Lending.BorrowOffer where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = BorrowOffer + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + dealId : Id + description : Text + borrowed : InstrumentQuantity + maturity : Date + interest : InstrumentQuantity + collateral : InstrumentQuantity + borrowedCid : ContractId Transferable.I + lenderBorrowedAccount : AccountKey + lenderInterestAccount : AccountKey + deriving (Eq, Show) + +interface BorrowOffer where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `BorrowOffer`. +type Implementation t = (HasToInterface t BorrowOffer, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation BorrowOffer +instance HasToInterface BorrowOffer Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Lending/BorrowOfferRequest.daml b/src/daml/Daml/Finance/App/Interface/Lending/BorrowOfferRequest.daml new file mode 100644 index 00000000..4eaed531 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Lending/BorrowOfferRequest.daml @@ -0,0 +1,34 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Lending.BorrowOfferRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentQuantity) + +type I = BorrowOfferRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + dealId : Id + description : Text + borrowed : InstrumentQuantity + maturity : Date + deriving (Eq, Show) + +interface BorrowOfferRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `BorrowOfferRequest`. +type Implementation t = (HasToInterface t BorrowOfferRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation BorrowOfferRequest +instance HasToInterface BorrowOfferRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Lending/Service.daml b/src/daml/Daml/Finance/App/Interface/Lending/Service.daml new file mode 100644 index 00000000..566bd959 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Lending/Service.daml @@ -0,0 +1,70 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Lending.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Lending.BorrowAgreement qualified as BorrowAgreement (I) +import Daml.Finance.App.Interface.Lending.BorrowOffer qualified as BorrowOffer (I) +import Daml.Finance.App.Interface.Lending.BorrowOfferRequest qualified as BorrowOfferRequest (I) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestBorrowOffer : RequestBorrowOffer -> Update (ContractId BorrowOfferRequest.I) + -- ^ Implementation of the `RequestBorrowOffer` choice. + + acceptBorrowOffer : AcceptBorrowOffer -> Update (ContractId Transferable.I, ContractId BorrowAgreement.I) + -- ^ Implementation of the `AcceptBorrowOffer` choice. + + createBorrowOffer : CreateBorrowOffer -> Update (ContractId BorrowOffer.I) + -- ^ Implementation of the `CreateBorrowOffer` choice. + + nonconsuming choice RequestBorrowOffer : ContractId BorrowOfferRequest.I + with + dealId : Id + description : Text + borrowed : InstrumentQuantity + maturity : Date + controller (view $ asBase this).customer + do + requestBorrowOffer this arg + + nonconsuming choice AcceptBorrowOffer : (ContractId Transferable.I, ContractId BorrowAgreement.I) + with + borrowOfferCid : ContractId BorrowOffer.I + collateralCid : ContractId Transferable.I + account : AccountKey + controller (view $ asBase this).customer + do + acceptBorrowOffer this arg + + nonconsuming choice CreateBorrowOffer : ContractId BorrowOffer.I + with + borrowOfferRequestCid : ContractId BorrowOfferRequest.I + interest : InstrumentQuantity + collateral : InstrumentQuantity + borrowedCid : ContractId Transferable.I + lenderBorrowedAccount : AccountKey + lenderInterestAccount : AccountKey + controller (view $ asBase this).provider + do + createBorrowOffer this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Lifecycle/Service.daml b/src/daml/Daml/Finance/App/Interface/Lifecycle/Service.daml new file mode 100644 index 00000000..1b73f599 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Lifecycle/Service.daml @@ -0,0 +1,194 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Lifecycle.Service where + +import ContingentClaims.Core.Claim (Claim) +import ContingentClaims.Core.Observation (Observation(..)) +import ContingentClaims.Lifecycle.Lifecycle qualified as Lifecycle +import ContingentClaims.Valuation.Stochastic (Expr) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.Interface.Lifecycle.Observable.NumericObservable qualified as NumericObservable (I) +import Daml.Finance.Interface.Claims.Claim qualified as Claim (Claim) +import Daml.Finance.Interface.Claims.Types (C, Pending, TaggedClaim) +import Daml.Finance.Interface.Lifecycle.Effect qualified as Effect (I) +import Daml.Finance.Interface.Lifecycle.Event qualified as Event (I) +import Daml.Finance.Interface.Lifecycle.Rule.Lifecycle qualified as Lifecycle (I) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, InstrumentQuantity) + +type I = Service + +type V = View + +data View = View + with + distributionRuleCid : ContractId Lifecycle.I + replacementRuleCid : ContractId Lifecycle.I + genericRuleCid : ContractId Lifecycle.I + dynamicRuleCid : ContractId Lifecycle.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + declareDividend : DeclareDividend -> Update (InstrumentKey, [ContractId Effect.I]) + -- ^ Implementation of the `DeclareDividend` choice. + + declareReplacement : DeclareReplacement -> Update [ContractId Effect.I] + -- ^ Implementation of the `DeclareReplacement` choice. + + declareStockSplit : DeclareStockSplit -> Update (InstrumentKey, [ContractId Effect.I]) + -- ^ Implementation of the `DeclareStockSplit` choice. + + previewLifecycle : PreviewLifecycle -> Update ([TaggedClaim], [Pending]) + -- ^ Implementation of the `PreviewLifecycle` choice. + + simulateLifecycle : SimulateLifecycle -> Update [[Lifecycle.Pending Time InstrumentKey]] + -- ^ Implementation of the `SimulateLifecycle` choice. + + getCurrentClaims : GetCurrentClaims -> Update [TaggedClaim] + -- ^ Implementation of the `GetCurrentClaims` choice. + + lifecycle : Lifecycle -> Update (Optional InstrumentKey, [ContractId Effect.I]) + -- ^ Implementation of the `Lifecycle` choice. + + expiry : Expiry -> Update (Optional Time) + -- ^ Implementation of the `Expiry` choice. + + underlyings : Underlyings -> Update [InstrumentKey] + -- ^ Implementation of the `Underlyings` choice. + + payoffs : Payoffs -> Update [(Observation Time Decimal Text, InstrumentKey)] + -- ^ Implementation of the `Payoffs` choice. + + fixings : Fixings -> Update [Time] + -- ^ Implementation of the `Fixings` choice. + + multipliers : Multipliers -> Update [Decimal] + -- ^ Implementation of the `Multipliers` choice. + + previewPricing : PreviewPricing -> Update (Expr Text, Text) + -- ^ Implementation of the `PreviewPricing` choice. + + nonconsuming choice DeclareDividend : (InstrumentKey, [ContractId Effect.I]) + with + equity : InstrumentKey + newVersion : Text + eventId : Id + description : Text + effectiveTime : Time + perUnitDistribution : [ InstrumentQuantity ] + controller (view $ asBase this).customer + do + declareDividend this arg + + nonconsuming choice DeclareReplacement : [ContractId Effect.I] + with + equity : InstrumentKey + eventId : Id + description : Text + effectiveTime : Time + perUnitReplacement : [ InstrumentQuantity ] + controller (view $ asBase this).customer + do + declareReplacement this arg + + nonconsuming choice DeclareStockSplit : (InstrumentKey, [ContractId Effect.I]) + with + equity : InstrumentKey + newVersion : Text + eventId : Id + description : Text + effectiveTime : Time + adjustmentFactor : Decimal + controller (view $ asBase this).customer + do + declareStockSplit this arg + + nonconsuming choice PreviewLifecycle : ([TaggedClaim], [Pending]) + with + today : Time + observableCids : [ContractId NumericObservable.I] + instrumentCid : ContractId Claim.Claim + controller (view $ asBase this).customer + do + previewLifecycle this arg + + nonconsuming choice SimulateLifecycle : [[Lifecycle.Pending Time InstrumentKey]] + with + today : Time + prices : [Decimal] + instrumentCid : ContractId Claim.Claim + controller (view $ asBase this).customer + do + simulateLifecycle this arg + + nonconsuming choice GetCurrentClaims : [TaggedClaim] + with + instrumentCid : ContractId Claim.Claim + observableCids : [ContractId NumericObservable.I] + controller (view $ asBase this).customer + do + getCurrentClaims this arg + + nonconsuming choice Lifecycle : (Optional InstrumentKey, [ContractId Effect.I]) + with + ruleCid : ContractId Lifecycle.I + eventCid : ContractId Event.I + observableCids : [ContractId NumericObservable.I] + instrument : InstrumentKey + controller (view $ asBase this).customer + do + lifecycle this arg + + nonconsuming choice Expiry : Optional Time + with + claims : C + controller (view $ asBase this).customer + do + expiry this arg + + nonconsuming choice Underlyings : [InstrumentKey] + with + claims : C + controller (view $ asBase this).customer + do + underlyings this arg + + nonconsuming choice Payoffs : [(Observation Time Decimal Text, InstrumentKey)] + with + claims : C + controller (view $ asBase this).customer + do + payoffs this arg + + nonconsuming choice Fixings : [Time] + with + claims : C + controller (view $ asBase this).customer + do + fixings this arg + + nonconsuming choice Multipliers : [Decimal] + with + claims : C + controller (view $ asBase this).customer + do + multipliers this arg + + nonconsuming choice PreviewPricing : (Expr Text, Text) + with + ccy : Text + claims : Claim Text Decimal Text Text + controller (view $ asBase this).customer + do + previewPricing this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Listing/Auto.daml b/src/daml/Daml/Finance/App/Interface/Listing/Auto.daml new file mode 100644 index 00000000..6a0b816d --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Listing/Auto.daml @@ -0,0 +1,51 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Listing.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.App.Interface.Listing.Listing qualified as Listing (I) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, Parties) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndList : RequestAndList -> Update (ContractId Listing.I) + -- ^ Implementation of the `RequestAndList` choice. + + requestAndDelist : RequestAndDelist -> Update () + -- ^ Implementation of the `RequestAndDelist` choice. + + nonconsuming choice RequestAndList : ContractId Listing.I + with + listingId : Id + description : Text + tradedInstrument : InstrumentKey + quotedInstrument : InstrumentKey + observers : Parties + controller (view $ asBase this).customer + do + requestAndList this arg + + nonconsuming choice RequestAndDelist : () + with + listingCid : ContractId Listing.I + controller (view $ asBase this).customer + do + requestAndDelist this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Listing/DelistingRequest.daml b/src/daml/Daml/Finance/App/Interface/Listing/DelistingRequest.daml new file mode 100644 index 00000000..682f1b65 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Listing/DelistingRequest.daml @@ -0,0 +1,32 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Listing.DelistingRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.App.Interface.Listing.Listing qualified as Listing (I) + +type I = DelistingRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + listingCid : ContractId Listing.I + deriving (Eq, Show) + +interface DelistingRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `DelistingRequest`. +type Implementation t = (HasToInterface t DelistingRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation DelistingRequest +instance HasToInterface DelistingRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Listing/Listing.daml b/src/daml/Daml/Finance/App/Interface/Listing/Listing.daml new file mode 100644 index 00000000..b08cb4fb --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Listing/Listing.daml @@ -0,0 +1,36 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Listing.Listing where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, Parties) + +type I = Listing + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + tradedInstrument : InstrumentKey + quotedInstrument : InstrumentKey + observers : Parties + deriving (Eq, Show) + +interface Listing where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `Listing`. +type Implementation t = (HasToInterface t Listing, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Listing +instance HasToInterface Listing Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Listing/ListingRequest.daml b/src/daml/Daml/Finance/App/Interface/Listing/ListingRequest.daml new file mode 100644 index 00000000..524cec60 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Listing/ListingRequest.daml @@ -0,0 +1,36 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Listing.ListingRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, Parties) + +type I = ListingRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + listingId : Id + description : Text + tradedInstrument : InstrumentKey + quotedInstrument : InstrumentKey + observers : Parties + deriving (Eq, Show) + +interface ListingRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `ListingRequest`. +type Implementation t = (HasToInterface t ListingRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation ListingRequest +instance HasToInterface ListingRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Listing/Service.daml b/src/daml/Daml/Finance/App/Interface/Listing/Service.daml new file mode 100644 index 00000000..78e8695e --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Listing/Service.daml @@ -0,0 +1,74 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Listing.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Listing.Listing qualified as Listing (I) +import Daml.Finance.App.Interface.Listing.ListingRequest qualified as ListingRequest (I) +import Daml.Finance.App.Interface.Listing.DelistingRequest qualified as DelistingRequest (I) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, Parties) +import Prelude hiding (List) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestListing : RequestListing -> Update (ContractId ListingRequest.I) + -- ^ Implementation of the `RequestListing` choice. + + requestDelisting : RequestDelisting -> Update (ContractId DelistingRequest.I) + -- ^ Implementation of the `RequestDelisting` choice. + + list : List -> Update (ContractId Listing.I) + -- ^ Implementation of the `List` choice. + + delist : Delist -> Update () + -- ^ Implementation of the `Delist` choice. + + nonconsuming choice RequestListing : ContractId ListingRequest.I + with + listingId : Id + description : Text + tradedInstrument : InstrumentKey + quotedInstrument : InstrumentKey + observers : Parties + controller (view $ asBase this).customer + do + requestListing this arg + + nonconsuming choice RequestDelisting : ContractId DelistingRequest.I + with + listingCid : ContractId Listing.I + controller (view $ asBase this).customer + do + requestDelisting this arg + + nonconsuming choice List : ContractId Listing.I + with + listingRequestCid : ContractId ListingRequest.I + controller (view $ asBase this).provider + do + list this arg + + nonconsuming choice Delist : () + with + delistingRequestCid : ContractId DelistingRequest.I + controller (view $ asBase this).provider + do + delist this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Settlement/Service.daml b/src/daml/Daml/Finance/App/Interface/Settlement/Service.daml new file mode 100644 index 00000000..732e5ca8 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Settlement/Service.daml @@ -0,0 +1,74 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Settlement.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.Interface.Settlement.Batch qualified as Batch (I) +import Daml.Finance.Interface.Settlement.Factory qualified as SettlementFactory (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I) +import Daml.Finance.Interface.Settlement.RouteProvider qualified as RouteProvider (I) +import Daml.Finance.Interface.Settlement.Types (Allocation, Approval, Step) +import Daml.Finance.Interface.Types.Common.Types (Id, Parties) + +type I = Service + +type V = View + +data View = View + with + routeProviderCid : ContractId RouteProvider.I + settlementFactoryCid : ContractId SettlementFactory.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + allocateInstruction : AllocateInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `AllocationInstruction` choice. + + approveInstruction : ApproveInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `ApproveInstruction` choice. + + discoverAndInstruct : DiscoverAndInstruct -> Update (ContractId Batch.I, [ContractId Instruction.I]) + -- ^ Implementation of the `DiscoverAndInstruct` choice. + + nonconsuming choice AllocateInstruction : ContractId Instruction.I + with + actor : Party + instructionCid : ContractId Instruction.I + allocation : Allocation + controller actor + do + allocateInstruction this arg + + nonconsuming choice ApproveInstruction : ContractId Instruction.I + with + actor : Party + instructionCid : ContractId Instruction.I + approval : Approval + controller actor + do + approveInstruction this arg + + nonconsuming choice DiscoverAndInstruct : (ContractId Batch.I, [ContractId Instruction.I]) + with + actor : Party + settlers : Parties + id : Id + description : Text + contextId : Optional Id + settlementTime : Optional Time + steps : [Step] + controller actor + do + discoverAndInstruct this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/Auto.daml b/src/daml/Daml/Finance/App/Interface/Structuring/Auto.daml new file mode 100644 index 00000000..509f6361 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/Auto.daml @@ -0,0 +1,189 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.Interface.Claims.Types (C) +import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I) +import Daml.Finance.Interface.Instrument.Swap.Fpml.FpmlTypes (SwapStream) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndCreateToken : RequestAndCreateToken -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateEquity : RequestAndCreateEquity -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateGeneric : RequestAndCreateGeneric -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateFixedRateBond : RequestAndCreateFixedRateBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateFloatingRateBond : RequestAndCreateFloatingRateBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateInflationLinkedBond : RequestAndCreateInflationLinkedBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateZeroCouponBond : RequestAndCreateZeroCouponBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + requestAndCreateFpmlSwap : RequestAndCreateFpmlSwap -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + nonconsuming choice RequestAndCreateToken : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + validAsOf : Time + observers : PartiesMap + controller (view $ asBase this).customer + do + requestAndCreateToken this arg + + nonconsuming choice RequestAndCreateEquity : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + validAsOf : Time + observers : PartiesMap + controller (view $ asBase this).customer + do + requestAndCreateEquity this arg + + nonconsuming choice RequestAndCreateGeneric : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + claims : C + acquisitionTime : Time + lastEventTimestamp : Time + observers : PartiesMap + controller (view $ asBase this).customer + do + requestAndCreateGeneric this arg + + nonconsuming choice RequestAndCreateFixedRateBond : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + couponRate : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestAndCreateFixedRateBond this arg + + nonconsuming choice RequestAndCreateFloatingRateBond : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + referenceRateId : Text + couponSpread : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestAndCreateFloatingRateBond this arg + + nonconsuming choice RequestAndCreateInflationLinkedBond : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + inflationIndexId : Text + inflationIndexBaseValue : Decimal + couponRate : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestAndCreateInflationLinkedBond this arg + + nonconsuming choice RequestAndCreateZeroCouponBond : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + issueDate : Date + maturityDate : Date + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestAndCreateZeroCouponBond this arg + + nonconsuming choice RequestAndCreateFpmlSwap : (ContractId Instrument.I, InstrumentKey) + with + id : Id + description : Text + version : Text + swapStreams : [SwapStream] + issuerPartyRef : Text + calendarDataProvider : Party + currencies : [InstrumentKey] + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestAndCreateFpmlSwap this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateEquityRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateEquityRequest.daml new file mode 100644 index 00000000..fb38b527 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateEquityRequest.daml @@ -0,0 +1,35 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateEquityRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, PartiesMap) + +type I = CreateEquityRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + observers : PartiesMap + validAsOf : Time + deriving (Eq, Show) + +interface CreateEquityRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateEquityRequest`. +type Implementation t = (HasToInterface t CreateEquityRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateEquityRequest +instance HasToInterface CreateEquityRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateFixedRateBondRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateFixedRateBondRequest.daml new file mode 100644 index 00000000..a36964f0 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateFixedRateBondRequest.daml @@ -0,0 +1,49 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateFixedRateBondRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) + +type I = CreateFixedRateBondRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + couponRate : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + deriving (Eq, Show) + +interface CreateFixedRateBondRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateFixedRateBondRequest`. +type Implementation t = (HasToInterface t CreateFixedRateBondRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateFixedRateBondRequest +instance HasToInterface CreateFixedRateBondRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateFloatingRateBondRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateFloatingRateBondRequest.daml new file mode 100644 index 00000000..eb5e24e7 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateFloatingRateBondRequest.daml @@ -0,0 +1,51 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateFloatingRateBondRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) + +type I = CreateFloatingRateBondRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + referenceRateId : Text + couponSpread : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + deriving (Eq, Show) + +interface CreateFloatingRateBondRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateFloatingRateBondRequest`. +type Implementation t = (HasToInterface t CreateFloatingRateBondRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateFloatingRateBondRequest +instance HasToInterface CreateFloatingRateBondRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateFpmlSwapRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateFpmlSwapRequest.daml new file mode 100644 index 00000000..87e87fe0 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateFpmlSwapRequest.daml @@ -0,0 +1,40 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateFpmlSwapRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Instrument.Swap.Fpml.FpmlTypes (SwapStream) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) + +type I = CreateFpmlSwapRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + swapStreams : [SwapStream] + issuerPartyRef : Text + calendarDataProvider : Party + currencies : [InstrumentKey] + observers : PartiesMap + lastEventTimestamp : Time + deriving (Eq, Show) + +interface CreateFpmlSwapRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateFpmlSwapRequest`. +type Implementation t = (HasToInterface t CreateFpmlSwapRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateFpmlSwapRequest +instance HasToInterface CreateFpmlSwapRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateGenericRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateGenericRequest.daml new file mode 100644 index 00000000..3c2df38d --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateGenericRequest.daml @@ -0,0 +1,38 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateGenericRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Claims.Types (C) +import Daml.Finance.Interface.Types.Common.Types (Id, PartiesMap) + +type I = CreateGenericRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + claims : C + acquisitionTime : Time + observers : PartiesMap + lastEventTimestamp : Time + deriving (Eq, Show) + +interface CreateGenericRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateGenericRequest`. +type Implementation t = (HasToInterface t CreateGenericRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateGenericRequest +instance HasToInterface CreateGenericRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateInflationLinkedBondRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateInflationLinkedBondRequest.daml new file mode 100644 index 00000000..861f9e19 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateInflationLinkedBondRequest.daml @@ -0,0 +1,51 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateInflationLinkedBondRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) + +type I = CreateInflationLinkedBondRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + inflationIndexId : Text + inflationIndexBaseValue : Decimal + couponRate : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + deriving (Eq, Show) + +interface CreateInflationLinkedBondRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateInflationLinkedBondRequest`. +type Implementation t = (HasToInterface t CreateInflationLinkedBondRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateInflationLinkedBondRequest +instance HasToInterface CreateInflationLinkedBondRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateTokenRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateTokenRequest.daml new file mode 100644 index 00000000..1345e64a --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateTokenRequest.daml @@ -0,0 +1,35 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateTokenRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, PartiesMap) + +type I = CreateTokenRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + observers : PartiesMap + validAsOf : Time + deriving (Eq, Show) + +interface CreateTokenRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateTokenRequest`. +type Implementation t = (HasToInterface t CreateTokenRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateTokenRequest +instance HasToInterface CreateTokenRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/CreateZeroCouponBondRequest.daml b/src/daml/Daml/Finance/App/Interface/Structuring/CreateZeroCouponBondRequest.daml new file mode 100644 index 00000000..a55c5757 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/CreateZeroCouponBondRequest.daml @@ -0,0 +1,38 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.CreateZeroCouponBondRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) + +type I = CreateZeroCouponBondRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + issueDate : Date + maturityDate : Date + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + deriving (Eq, Show) + +interface CreateZeroCouponBondRequest where + viewtype View + -- ^ Interface view type. + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateZeroCouponBondRequest`. +type Implementation t = (HasToInterface t CreateZeroCouponBondRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateZeroCouponBondRequest +instance HasToInterface CreateZeroCouponBondRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Structuring/Service.daml b/src/daml/Daml/Finance/App/Interface/Structuring/Service.daml new file mode 100644 index 00000000..b76412a2 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Structuring/Service.daml @@ -0,0 +1,294 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Structuring.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Structuring.CreateTokenRequest qualified as CreateTokenRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateEquityRequest qualified as CreateEquityRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateGenericRequest qualified as CreateGenericRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateFixedRateBondRequest qualified as CreateFixedRateBondRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateFloatingRateBondRequest qualified as CreateFloatingRateBondRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateInflationLinkedBondRequest qualified as CreateInflationLinkedBondRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateZeroCouponBondRequest qualified as CreateZeroCouponBondRequest (I) +import Daml.Finance.App.Interface.Structuring.CreateFpmlSwapRequest qualified as CreateFpmlSwapRequest (I) +import Daml.Finance.Interface.Claims.Types (C) +import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I) +import Daml.Finance.Interface.Instrument.Bond.FixedRate.Factory qualified as FixedRateBond (Factory) +import Daml.Finance.Interface.Instrument.Bond.FloatingRate.Factory qualified as FloatingRateBond (Factory) +import Daml.Finance.Interface.Instrument.Bond.InflationLinked.Factory qualified as InflationLinkedBond (Factory) +import Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Factory qualified as ZeroCouponBond (Factory) +import Daml.Finance.Interface.Instrument.Equity.Factory qualified as Equity (Factory) +import Daml.Finance.Interface.Instrument.Generic.Factory qualified as Generic (Factory) +import Daml.Finance.Interface.Instrument.Swap.Fpml.Factory qualified as FpmlSwap (Factory) +import Daml.Finance.Interface.Instrument.Swap.Fpml.FpmlTypes (SwapStream) +import Daml.Finance.Interface.Instrument.Token.Factory qualified as Token (Factory) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) + +type I = Service + +type V = View + +data View = View + with + token : ContractId Token.Factory + equity : ContractId Equity.Factory + generic : ContractId Generic.Factory + fixedRateBond : ContractId FixedRateBond.Factory + floatingRateBond : ContractId FloatingRateBond.Factory + inflationLinkedBond : ContractId InflationLinkedBond.Factory + zeroCouponBond : ContractId ZeroCouponBond.Factory + fpmlSwap : ContractId FpmlSwap.Factory + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestCreateToken : RequestCreateToken -> Update (ContractId CreateTokenRequest.I) + -- ^ Implementation of the `RequestCreateToken` choice. + + requestCreateEquity : RequestCreateEquity -> Update (ContractId CreateEquityRequest.I) + -- ^ Implementation of the `RequestCreateEquity` choice. + + requestCreateGeneric : RequestCreateGeneric -> Update (ContractId CreateGenericRequest.I) + -- ^ Implementation of the `RequestCreateGeneric` choice. + + requestCreateFixedRateBond : RequestCreateFixedRateBond -> Update (ContractId CreateFixedRateBondRequest.I) + -- ^ Implementation of the `RequestCreateFixedRateBond` choice. + + requestCreateFloatingRateBond : RequestCreateFloatingRateBond -> Update (ContractId CreateFloatingRateBondRequest.I) + -- ^ Implementation of the `RequestCreateFloatingRateBond` choice. + + requestCreateInflationLinkedBond : RequestCreateInflationLinkedBond -> Update (ContractId CreateInflationLinkedBondRequest.I) + -- ^ Implementation of the `RequestCreateInflationLinkedBond` choice. + + requestCreateZeroCouponBond : RequestCreateZeroCouponBond -> Update (ContractId CreateZeroCouponBondRequest.I) + -- ^ Implementation of the `RequestCreateZeroCouponBond` choice. + + requestCreateFpmlSwap : RequestCreateFpmlSwap -> Update (ContractId CreateFpmlSwapRequest.I) + -- ^ Implementation of the `RequestCreateFpmlSwap` choice. + + createToken : CreateToken -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createEquity : CreateEquity -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createGeneric : CreateGeneric -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createFixedRateBond : CreateFixedRateBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createFloatingRateBond : CreateFloatingRateBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createInflationLinkedBond : CreateInflationLinkedBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createZeroCouponBond : CreateZeroCouponBond -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + createFpmlSwap : CreateFpmlSwap -> Update (ContractId Instrument.I, InstrumentKey) + -- ^ Implementation of the `RequestCreateFpmlSwapBond` choice. + + nonconsuming choice RequestCreateToken : ContractId CreateTokenRequest.I + with + id : Id + description : Text + version : Text + validAsOf : Time + observers : PartiesMap + controller (view $ asBase this).customer + do + requestCreateToken this arg + + nonconsuming choice RequestCreateEquity : ContractId CreateEquityRequest.I + with + id : Id + description : Text + version : Text + validAsOf : Time + observers : PartiesMap + controller (view $ asBase this).customer + do + requestCreateEquity this arg + + nonconsuming choice RequestCreateGeneric : ContractId CreateGenericRequest.I + with + id : Id + description : Text + version : Text + claims : C + acquisitionTime : Time + lastEventTimestamp : Time + observers : PartiesMap + controller (view $ asBase this).customer + do + requestCreateGeneric this arg + + nonconsuming choice RequestCreateFixedRateBond : ContractId CreateFixedRateBondRequest.I + with + id : Id + description : Text + version : Text + couponRate : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestCreateFixedRateBond this arg + + nonconsuming choice RequestCreateFloatingRateBond : ContractId CreateFloatingRateBondRequest.I + with + id : Id + description : Text + version : Text + referenceRateId : Text + couponSpread : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestCreateFloatingRateBond this arg + + nonconsuming choice RequestCreateInflationLinkedBond : ContractId CreateInflationLinkedBondRequest.I + with + id : Id + description : Text + version : Text + inflationIndexId : Text + inflationIndexBaseValue : Decimal + couponRate : Decimal + issueDate : Date + firstCouponDate : Date + maturityDate : Date + holidayCalendarIds : [Text] + calendarDataProvider : Party + dayCountConvention : DayCountConventionEnum + businessDayConvention : BusinessDayConventionEnum + couponPeriod : PeriodEnum + couponPeriodMultiplier : Int + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestCreateInflationLinkedBond this arg + + nonconsuming choice RequestCreateZeroCouponBond : ContractId CreateZeroCouponBondRequest.I + with + id : Id + description : Text + version : Text + issueDate : Date + maturityDate : Date + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestCreateZeroCouponBond this arg + + nonconsuming choice RequestCreateFpmlSwap : ContractId CreateFpmlSwapRequest.I + with + id : Id + description : Text + version : Text + swapStreams : [SwapStream] + issuerPartyRef : Text + calendarDataProvider : Party + currencies : [InstrumentKey] + observers : PartiesMap + lastEventTimestamp : Time + controller (view $ asBase this).customer + do + requestCreateFpmlSwap this arg + + nonconsuming choice CreateToken : (ContractId Instrument.I, InstrumentKey) + with + createTokenRequestCid : ContractId CreateTokenRequest.I + controller (view $ asBase this).provider + do + createToken this arg + + nonconsuming choice CreateEquity : (ContractId Instrument.I, InstrumentKey) + with + createEquityRequestCid : ContractId CreateEquityRequest.I + controller (view $ asBase this).provider + do + createEquity this arg + + nonconsuming choice CreateGeneric : (ContractId Instrument.I, InstrumentKey) + with + createGenericRequestCid : ContractId CreateGenericRequest.I + controller (view $ asBase this).provider + do + createGeneric this arg + + nonconsuming choice CreateFixedRateBond : (ContractId Instrument.I, InstrumentKey) + with + createFixedRateBondRequestCid : ContractId CreateFixedRateBondRequest.I + controller (view $ asBase this).provider + do + createFixedRateBond this arg + + nonconsuming choice CreateFloatingRateBond : (ContractId Instrument.I, InstrumentKey) + with + createFloatingRateBondRequestCid : ContractId CreateFloatingRateBondRequest.I + controller (view $ asBase this).provider + do + createFloatingRateBond this arg + + nonconsuming choice CreateInflationLinkedBond : (ContractId Instrument.I, InstrumentKey) + with + createInflationLinkedBondRequestCid : ContractId CreateInflationLinkedBondRequest.I + controller (view $ asBase this).provider + do + createInflationLinkedBond this arg + + nonconsuming choice CreateZeroCouponBond : (ContractId Instrument.I, InstrumentKey) + with + createZeroCouponBondRequestCid : ContractId CreateZeroCouponBondRequest.I + controller (view $ asBase this).provider + do + createZeroCouponBond this arg + + nonconsuming choice CreateFpmlSwap : (ContractId Instrument.I, InstrumentKey) + with + createFpmlSwapRequestCid : ContractId CreateFpmlSwapRequest.I + controller (view $ asBase this).provider + do + createFpmlSwap this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Trading/Auto.daml b/src/daml/Daml/Finance/App/Interface/Trading/Auto.daml new file mode 100644 index 00000000..202d382c --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Trading/Auto.daml @@ -0,0 +1,56 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Trading.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (I, Side, View) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = Service + +type V = View + +data View = View {} + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestAndCreateOrder : RequestAndCreateOrder -> Update (Optional (ContractId Order.I, Order.View)) + -- ^ Implementation of the `RequestAndCreateOrder` choice. + + requestAndCancelOrder : RequestAndCancelOrder -> Update () + -- ^ Implementation of the `RequestAndCancelOrder` choice. + + nonconsuming choice RequestAndCreateOrder : Optional (ContractId Order.I, Order.View) + with + id : Id + listingId : Id + quantity : InstrumentQuantity + price : InstrumentQuantity + side : Order.Side + collateralCid : ContractId Fungible.I + account : AccountKey + orderCids : [ContractId Order.I] + observers : Parties + controller (view $ asBase this).customer + do + requestAndCreateOrder this arg + + nonconsuming choice RequestAndCancelOrder : () + with + orderCid : ContractId Order.I + controller (view $ asBase this).customer + do + requestAndCancelOrder this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = HasToInterface t Service +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Interface/Trading/CancelOrderRequest.daml b/src/daml/Daml/Finance/App/Interface/Trading/CancelOrderRequest.daml new file mode 100644 index 00000000..56d2d7ae --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Trading/CancelOrderRequest.daml @@ -0,0 +1,32 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Trading.CancelOrderRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (I) + +type I = CancelOrderRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + orderCid : ContractId Order.I + deriving (Eq, Show) + +interface CancelOrderRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CancelOrderRequest`. +type Implementation t = (HasToInterface t CancelOrderRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CancelOrderRequest +instance HasToInterface CancelOrderRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Trading/CreateOrderRequest.daml b/src/daml/Daml/Finance/App/Interface/Trading/CreateOrderRequest.daml new file mode 100644 index 00000000..15231cb3 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Trading/CreateOrderRequest.daml @@ -0,0 +1,43 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Trading.CreateOrderRequest where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (I, Side) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = CreateOrderRequest + +type V = View + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + timestamp : Time + listingId : Id + quantity : InstrumentQuantity + side : Order.Side + price : InstrumentQuantity + collateralCid : ContractId Fungible.I + account : AccountKey + orderCids : [ContractId Order.I] + observers : Parties + deriving (Eq, Show) + +interface CreateOrderRequest where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + +-- | Type constraint for requiring templates to implement `CreateOrderRequest`. +type Implementation t = (HasToInterface t CreateOrderRequest, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation CreateOrderRequest +instance HasToInterface CreateOrderRequest Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Trading/Order.daml b/src/daml/Daml/Finance/App/Interface/Trading/Order.daml new file mode 100644 index 00000000..91efbbc4 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Trading/Order.daml @@ -0,0 +1,78 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Trading.Order where + +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Implementation) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Settlement.Batch qualified as Batch (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = Order + +type V = View + +data Side + = Buy + | Sell + deriving (Eq, Show) + +data FillResult = FillResult + with + orderOpt : Optional (ContractId Order, View) + batchCid : ContractId Batch.I + instructionCid : ContractId Instruction.I + deriving (Eq, Show) + +data View = View + with + operator : Party + provider : Party + customer : Party + id : Id + timestamp : Time + listingId : Id + quantity : InstrumentQuantity + side : Side + price : InstrumentQuantity + collateralCid : ContractId Fungible.I + account : AccountKey + observers : Parties + deriving (Eq, Show) + +interface Order where + viewtype View + -- ^ Interface view type. + + asRemovable : Removable.I + -- ^ Conversion to the `Removable` interface. + + fill : Fill -> Update FillResult + -- ^ Implementation of the `Fill` choice. + + approveInstruction : ApproveInstruction -> Update (ContractId Instruction.I) + -- ^ Implementation of the `ApproveInstruction` choice. + + choice Fill : FillResult + with + settlementServiceCid : ContractId SettlementService.I + other : View + isResting : Bool + controller (view this).provider + do + fill this arg + + nonconsuming choice ApproveInstruction : ContractId Instruction.I + with + instructionCid : ContractId Instruction.I + controller (view this).provider + do + approveInstruction this arg + +-- | Type constraint for requiring templates to implement `Order`. +type Implementation t = (HasToInterface t Order, Removable.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Order +instance HasToInterface Order Removable.I where _toInterface = asRemovable diff --git a/src/daml/Daml/Finance/App/Interface/Trading/Service.daml b/src/daml/Daml/Finance/App/Interface/Trading/Service.daml new file mode 100644 index 00000000..14ea4492 --- /dev/null +++ b/src/daml/Daml/Finance/App/Interface/Trading/Service.daml @@ -0,0 +1,92 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Interface.Trading.Service where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Implementation) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (I, Side, View) +import Daml.Finance.App.Interface.Trading.CreateOrderRequest qualified as CreateOrderRequest (I) +import Daml.Finance.App.Interface.Trading.CancelOrderRequest qualified as CancelOrderRequest (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity, Parties) + +type I = Service + +type V = View + +data View = View + with + settlementServiceCid : ContractId SettlementService.I + deriving (Eq, Show) + +interface Service where + viewtype V + + asBase : Base.I + -- ^ Conversion to base `Service` interface. + + requestCreateOrder : RequestCreateOrder -> Update (ContractId CreateOrderRequest.I) + -- ^ Implementation of the `RequestCreateOrder` choice. + + requestCancelOrder : RequestCancelOrder -> Update (ContractId CancelOrderRequest.I) + -- ^ Implementation of the `RequestCancelOrder` choice. + + createOrder : ContractId Service -> CreateOrder -> Update (Optional (ContractId Order.I, Order.View)) + -- ^ Implementation of the `CreateOrder` choice. + + cancelOrder : CancelOrder -> Update () + -- ^ Implementation of the `CancelOrder` choice. + + executeOrder : ExecuteOrder -> Update (Optional (ContractId Order.I, Order.View)) + -- ^ Implementation of the `ExecuteOrder` choice. + + nonconsuming choice RequestCreateOrder : ContractId CreateOrderRequest.I + with + id : Id + listingId : Id + quantity : InstrumentQuantity + price : InstrumentQuantity + side : Order.Side + collateralCid : ContractId Fungible.I + account : AccountKey + orderCids : [ContractId Order.I] + observers : Parties + controller (view $ asBase this).customer + do + requestCreateOrder this arg + + nonconsuming choice RequestCancelOrder : ContractId CancelOrderRequest.I + with + orderCid : ContractId Order.I + controller (view $ asBase this).customer + do + requestCancelOrder this arg + + nonconsuming choice CreateOrder : Optional (ContractId Order.I, Order.View) + with + createOrderRequestCid : ContractId CreateOrderRequest.I + controller (view $ asBase this).provider + do + createOrder this self arg + + nonconsuming choice CancelOrder : () + with + cancelOrderRequestCid : ContractId CancelOrderRequest.I + controller (view $ asBase this).provider + do + cancelOrder this arg + + nonconsuming choice ExecuteOrder : Optional (ContractId Order.I, Order.View) + with + orderCid : ContractId Order.I + orderCids : [ContractId Order.I] + controller (view $ asBase this).provider + do + executeOrder this arg + +-- | Type constraint for requiring templates to implement `Service`. +type Implementation t = (HasToInterface t Service, Base.Implementation t) +class (Implementation t) => HasImplementation t +instance HasImplementation Service +instance HasToInterface Service Base.I where _toInterface = asBase diff --git a/src/daml/Daml/Finance/App/Issuance/Auto.daml b/src/daml/Daml/Finance/App/Issuance/Auto.daml new file mode 100644 index 00000000..3e21db3f --- /dev/null +++ b/src/daml/Daml/Finance/App/Issuance/Auto.daml @@ -0,0 +1,88 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Issuance.Auto where + +import Daml.Finance.App.Issuance.Service qualified as Service (T) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Issuance.Auto qualified as Auto (HasImplementation, I, View(..), RequestAndDeissue(..), RequestAndIssue(..)) +import Daml.Finance.App.Interface.Issuance.Service qualified as Service (Deissue(..), Issue(..), I, RequestDeissue(..), RequestIssue(..)) + +type T = Service + +instance Auto.HasImplementation Service + +template Service + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider, customer + + key (operator, provider, customer) : (Party, Party, Party) + maintainer key._1 + + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Auto.I for Service where + view = Auto.View + + asBase = toInterface @Base.I this + + requestAndIssue Auto.RequestAndIssue{issuanceId; description; quantity; account} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + issueRequestCid <- exercise serviceCid Service.RequestIssue with issuanceId; description; quantity; account + exercise serviceCid Service.Issue with issueRequestCid + + requestAndDeissue Auto.RequestAndDeissue{issuanceId; holdingCid} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + deissueRequestCid <- exercise serviceCid Service.RequestDeissue with issuanceId; holdingCid + exercise serviceCid Service.Deissue with deissueRequestCid + +template Offer + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider + observer customer + + choice Accept : ContractId Service + controller customer + do + create Service with .. + + choice Decline : () + controller customer + do pure () + + choice Withdraw : () + controller provider + do pure () + +template Request + with + customer : Party + provider : Party + where + signatory customer + observer provider + + choice Cancel : () + controller customer + do pure () + + choice Reject : () + controller provider + do pure () + + choice Approve : ContractId Service + with + operator : Party + controller operator, provider + do + create Service with .. diff --git a/src/daml/Daml/Finance/App/Issuance/Auto/Service.daml b/src/daml/Daml/Finance/App/Issuance/Auto/Service.daml deleted file mode 100644 index 997b2ed2..00000000 --- a/src/daml/Daml/Finance/App/Issuance/Auto/Service.daml +++ /dev/null @@ -1,95 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Issuance.Auto.Service where - -import Daml.Finance.App.Issuance.Model (Issuance) -import Daml.Finance.App.Issuance.Service qualified as S (CreateIssuance(..), ReduceIssuance(..), RequestCreateIssuance(..), RequestReduceIssuance(..), Service) -import Daml.Finance.Interface.Account.Account qualified as Account (K) -import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (Id) - -template Service - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider, customer - - key (operator, provider, customer) : (Party, Party, Party) - maintainer key._1 - - nonconsuming choice RequestAndCreateIssuance : (ContractId Issuance, ContractId Holding.I) - with - id : Id - description : Text - quantity : Instrument.Q - account : Account.K - controller customer - do - createIssuanceRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateIssuance with id; description; quantity; account - exerciseByKey @S.Service (operator, provider, customer) S.CreateIssuance with createIssuanceRequestCid - - nonconsuming choice RequestAndReduceIssuance : ContractId Issuance - with - id : Id - holdingCid : ContractId Holding.I - controller customer - do - reduceIssuanceRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestReduceIssuance with id; holdingCid - exerciseByKey @S.Service (operator, provider, customer) S.ReduceIssuance with reduceIssuanceRequestCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - -template Offer - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider - observer customer - - choice Accept : ContractId Service - controller customer - do - create Service with .. - - choice Decline : () - controller customer - do pure () - - choice Withdraw : () - controller provider - do pure () - -template Request - with - customer : Party - provider : Party - where - signatory customer - observer provider - - choice Cancel : () - controller customer - do pure () - - choice Reject : () - controller provider - do pure () - - choice Approve : ContractId Service - with - operator : Party - controller operator, provider - do - create Service with .. diff --git a/src/daml/Daml/Finance/App/BackToBack/Service.daml b/src/daml/Daml/Finance/App/Issuance/BackToBack.daml similarity index 60% rename from src/daml/Daml/Finance/App/BackToBack/Service.daml rename to src/daml/Daml/Finance/App/Issuance/BackToBack.daml index f6d7261c..816792b1 100644 --- a/src/daml/Daml/Finance/App/BackToBack/Service.daml +++ b/src/daml/Daml/Finance/App/Issuance/BackToBack.daml @@ -1,84 +1,86 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.App.BackToBack.Service where +module Daml.Finance.App.Issuance.BackToBack where import DA.List (head) import DA.Optional (fromSome) import DA.Set (fromList, singleton) -import Daml.Finance.App.Distribution.Subscription.Model (BackToBack, Offering(..)) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Issuance.BackToBack qualified as Service (CreateIssuance(..), HasImplementation, I, LockOffering(..), SettleOffering(..), View(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (DiscoverAndInstruct(..), I) import Daml.Finance.App.Issuance.Model (Issuance(..)) -import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), K, R) +import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), R) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (Split(..), SplitResult(..)) import Daml.Finance.Interface.Holding.Base qualified as Holding (I, Acquire(..), I, LockType(..), Release(..)) import Daml.Finance.Interface.Holding.Util (getAmount) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Settlement.Factory qualified as Factory (I, Instruct(..)) import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Batch qualified as Batch (Settle(..)) import Daml.Finance.Interface.Settlement.Types (Allocation(Pledge), Approval(TakeDelivery), Step(..)) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (AddObservers(..), I) -import Daml.Finance.Interface.Types.Common (Id(..)) + +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party - public : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice CreateIssuance : (ContractId Issuance, ContractId Holding.I, ContractId Holding.I) - with - id : Id - description : Text - quantity : Instrument.Q - customerAccount : Account.K - providerAccount : Account.K - controller customer - do + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with settlementServiceCid + + asBase = toInterface @Base.I this + + createIssuance Service.CreateIssuance{issuanceId; description; quantity; customerAccount; providerAccount} = do (_, customerRef) <- fetchByKey @Account.R customerAccount customerHoldingCid <- exercise customerRef.cid Account.Credit with quantity (_, providerRef) <- fetchByKey @Account.R providerAccount providerHoldingCid <- exercise providerRef.cid Account.Credit with quantity - providerHoldingCid <- coerceContractId <$> exercise (coerceContractId providerHoldingCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton provider; observersToAdd = (show id, singleton customer) - issuanceCid <- create Issuance with operator; provider; customer; id; description; quantity + providerHoldingCid <- coerceContractId <$> exercise (coerceContractId providerHoldingCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton provider; observersToAdd = (show issuanceId, singleton customer) + issuanceCid <- toInterfaceContractId <$> create Issuance with operator; provider; customer; id = issuanceId; description; quantity pure (issuanceCid, customerHoldingCid, providerHoldingCid) - nonconsuming choice LockOffering : BackToBack - with - backToBack : BackToBack - controller customer - do - b2bDeliverableCid <- coerceContractId <$> exercise (toInterfaceContractId backToBack.b2bDeliverableCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [customer]; context = backToBack.offeringId; lockType = Holding.Semaphore - issuerDeliverableCid <- coerceContractId <$> exercise (toInterfaceContractId backToBack.issuerDeliverableCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [provider]; context = backToBack.offeringId; lockType = Holding.Semaphore + lockOffering Service.LockOffering{backToBack} = do + b2bDeliverableCid <- coerceContractId <$> exercise (toInterfaceContractId backToBack.b2bDeliverableCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [customer]; context = show backToBack.offeringId; lockType = Holding.Semaphore + issuerDeliverableCid <- coerceContractId <$> exercise (toInterfaceContractId backToBack.issuerDeliverableCid : ContractId Holding.I) Holding.Acquire with newLockers = fromList [provider]; context = show backToBack.offeringId; lockType = Holding.Semaphore pure backToBack with b2bDeliverableCid; issuerDeliverableCid - nonconsuming choice SettleOffering : [ContractId Holding.I] - with - settlementFactoryCid : ContractId Factory.I - offeringCid : ContractId Offering - totalQuantity : Decimal - controller customer - do - offering <- fetch offeringCid + settleOffering Service.SettleOffering{offeringCid; totalQuantity} = do + offering <- view <$> fetch offeringCid let Some b2b = offering.backToBack totalNotional = totalQuantity * offering.price.amount delivery = Step with sender = b2b.party; receiver = offering.issuer; quantity = (offering.asset with amount = totalQuantity) payment = Step with sender = offering.issuer; receiver = b2b.party; quantity = (offering.price with amount = totalNotional) - (batchCid, [deliveryCid, paymentCid]) <- exercise settlementFactoryCid Factory.Instruct with instructors = singleton customer; settlers = singleton offering.issuer; id = Id offering.offeringId; contextId = None; steps = [ delivery, payment ]; description = "Settlement for offering " <> offering.offeringId + (batchCid, [deliveryCid, paymentCid]) <- exercise settlementServiceCid SettlementService.DiscoverAndInstruct with + actor = customer + settlers = singleton offering.issuer + id = offering.id + description = "Settlement for offering " <> show offering.id + contextId = None + settlementTime = None + steps = [ delivery, payment ] b2bDeliverable <- fetch b2b.b2bDeliverableCid b2bSizedDeliverableCid <- if getAmount b2bDeliverable > totalQuantity then do Fungible.SplitResult{splitCids, rest} <- exercise b2b.b2bDeliverableCid Fungible.Split with amounts = [ totalQuantity ] - exercise (toInterfaceContractId (fromSome rest) : ContractId Holding.I) Holding.Release with context = offering.offeringId + exercise (toInterfaceContractId (fromSome rest) : ContractId Holding.I) Holding.Release with context = show offering.id pure $ head splitCids else pure b2b.b2bDeliverableCid issuerDeliverable <- fetch b2b.issuerDeliverableCid @@ -86,27 +88,19 @@ template Service if getAmount issuerDeliverable > totalNotional then head . (.splitCids) <$> exercise b2b.issuerDeliverableCid Fungible.Split with amounts = [ totalNotional ] else pure b2b.issuerDeliverableCid - deliveryCid <- fst <$> exercise deliveryCid Instruction.Allocate with actors = fromList [provider, customer]; allocation = Pledge $ coerceContractId b2bSizedDeliverableCid - deliveryCid <- exercise deliveryCid Instruction.Approve with actors = fromList [provider, customer]; approval = TakeDelivery b2b.issuerReceivableAccount - paymentCid <- fst <$> exercise paymentCid Instruction.Allocate with actors = fromList [provider, customer]; allocation = Pledge $ coerceContractId issuerSizedDeliverableCid - paymentCid <- exercise paymentCid Instruction.Approve with actors = fromList [provider, customer]; approval = TakeDelivery b2b.b2bReceivableAccount + deliveryCid <- fst <$> exercise deliveryCid Instruction.Allocate with actors = fromList [provider, customer]; allocation = Pledge $ coerceContractId b2bSizedDeliverableCid + deliveryCid <- exercise deliveryCid Instruction.Approve with actors = fromList [provider, customer]; approval = TakeDelivery b2b.issuerReceivableAccount + paymentCid <- fst <$> exercise paymentCid Instruction.Allocate with actors = fromList [provider, customer]; allocation = Pledge $ coerceContractId issuerSizedDeliverableCid + paymentCid <- exercise paymentCid Instruction.Approve with actors = fromList [provider, customer]; approval = TakeDelivery b2b.b2bReceivableAccount deliveredCids <- exercise batchCid Batch.Settle with actors = singleton customer - mapA (\cid -> exercise (toInterfaceContractId cid : ContractId Holding.I) Holding.Release with context = offering.offeringId) deliveredCids - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == customer || actor == provider - pure () + mapA (\cid -> exercise (toInterfaceContractId cid : ContractId Holding.I) Holding.Release with context = show offering.id) deliveredCids template Offer with operator : Party provider : Party customer : Party - public : Party + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider observer customer @@ -114,7 +108,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid choice Decline : () controller customer @@ -128,7 +122,6 @@ template Request with customer : Party provider : Party - public : Party where signatory customer observer provider @@ -144,6 +137,7 @@ template Request choice Approve : ContractId Service with operator : Party + settlementServiceCid : ContractId SettlementService.I controller operator, provider do - create Service with .. + create Service with operator; provider; customer; settlementServiceCid diff --git a/src/daml/Daml/Finance/App/Issuance/Model.daml b/src/daml/Daml/Finance/App/Issuance/Model.daml index 74294f00..e238560e 100644 --- a/src/daml/Daml/Finance/App/Issuance/Model.daml +++ b/src/daml/Daml/Finance/App/Issuance/Model.daml @@ -3,10 +3,13 @@ module Daml.Finance.App.Issuance.Model where -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Issuance.DeissueRequest qualified as DeissueRequest (I, View(..)) +import Daml.Finance.App.Interface.Issuance.Issuance qualified as Issuance (I, View(..)) +import Daml.Finance.App.Interface.Issuance.IssueRequest qualified as IssueRequest (I, View(..)) import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (Id) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) type T = Issuance @@ -17,31 +20,53 @@ template Issuance customer : Party id : Id description : Text - quantity : Instrument.Q + quantity : InstrumentQuantity where signatory operator, provider, customer key (operator, provider, id) : (Party, Party, Id) maintainer key._1 -template CreateIssuanceRequest + interface instance Removable.I for Issuance where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance Issuance.I for Issuance where + view = Issuance.View with operator; provider; customer; id; description; quantity + asRemovable = toInterface @Removable.I this + +template IssueRequest with operator : Party provider : Party customer : Party - id : Id + issuanceId : Id description : Text - quantity : Instrument.Q - account : Account.K + quantity : InstrumentQuantity + account : AccountKey where signatory operator, provider, customer -template ReduceIssuanceRequest + interface instance Removable.I for IssueRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance IssueRequest.I for IssueRequest where + view = IssueRequest.View with operator; provider; customer; issuanceId; description; quantity; account + asRemovable = toInterface @Removable.I this + +template DeissueRequest with operator : Party provider : Party customer : Party - id : Id + issuanceId : Id holdingCid : ContractId Holding.I where signatory operator, provider, customer + + interface instance Removable.I for DeissueRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance DeissueRequest.I for DeissueRequest where + view = DeissueRequest.View with operator; provider; customer; issuanceId; holdingCid + asRemovable = toInterface @Removable.I this + diff --git a/src/daml/Daml/Finance/App/Issuance/Service.daml b/src/daml/Daml/Finance/App/Issuance/Service.daml index f77cfecc..fa3ea948 100644 --- a/src/daml/Daml/Finance/App/Issuance/Service.daml +++ b/src/daml/Daml/Finance/App/Issuance/Service.daml @@ -3,14 +3,20 @@ module Daml.Finance.App.Issuance.Service where -import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), Debit(..), K, R) +import DA.Assert ((===)) +import Daml.Finance.App.Issuance.Model qualified as Model (DeissueRequest(..), Issuance(..), IssueRequest(..)) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Issuance.IssueRequest qualified as IssueRequest (View(..)) +import Daml.Finance.App.Interface.Issuance.DeissueRequest qualified as DeissueRequest (View(..)) +import Daml.Finance.App.Interface.Issuance.Service qualified as Service +import Daml.Finance.Interface.Account.Account qualified as Account (Credit(..), Debit(..), I, exerciseInterfaceByKey) import Daml.Finance.Interface.Account.Util (getAccount) -import Daml.Finance.Interface.Holding.Base qualified as Holding (I) import Daml.Finance.Interface.Holding.Util (getAmount) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (Id) -import Daml.Finance.App.Issuance.Model (CreateIssuanceRequest(..), ReduceIssuanceRequest(..), Issuance(..)) -import Daml.Finance.App.Util (fetchAndArchive) + +type T = Service + +instance Service.HasImplementation Service template Service with @@ -23,59 +29,36 @@ template Service key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestCreateIssuance : ContractId CreateIssuanceRequest - with - id : Id - description : Text - quantity : Instrument.Q - account : Account.K - controller customer - do - create CreateIssuanceRequest with .. - - nonconsuming choice RequestReduceIssuance : ContractId ReduceIssuanceRequest - with - id : Id - holdingCid : ContractId Holding.I - controller customer - do - create ReduceIssuanceRequest with .. - - nonconsuming choice CreateIssuance : (ContractId Issuance, ContractId Holding.I) - with - createIssuanceRequestCid : ContractId CreateIssuanceRequest - controller provider - do - CreateIssuanceRequest{id; description; account; quantity} <- fetchAndArchive createIssuanceRequestCid - issuanceCid <- create Issuance with operator; provider; customer; id; description; quantity - - (_, ref) <- fetchByKey @Account.R account - transferableCid <- exercise ref.cid Account.Credit with quantity - pure (issuanceCid, transferableCid) - - nonconsuming choice ReduceIssuance : ContractId Issuance - with - reduceIssuanceRequestCid : ContractId ReduceIssuanceRequest - controller provider - do - ReduceIssuanceRequest{id; holdingCid} <- fetchAndArchive reduceIssuanceRequestCid + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Service.I for Service where + view = Service.View + asBase = toInterface @Base.I this + requestIssue Service.RequestIssue{issuanceId; description; quantity; account} = do + toInterfaceContractId <$> create Model.IssueRequest with operator; provider; customer; issuanceId; description; quantity; account + requestDeissue Service.RequestDeissue{issuanceId; holdingCid} = do + toInterfaceContractId <$> create Model.DeissueRequest with operator; provider; customer; issuanceId; holdingCid + issue Service.Issue{issueRequestCid} = do + IssueRequest.View{issuanceId; description; quantity; account} <- view <$> fetchAndRemove issueRequestCid + issuanceCid <- toInterfaceContractId <$> create Model.Issuance with operator; provider; customer; id = issuanceId; description; quantity + account.custodian === provider + account.owner === customer + holdingCid <- Account.exerciseInterfaceByKey @Account.I account provider Account.Credit with quantity + pure (issuanceCid, holdingCid) + deissue Service.Deissue{deissueRequestCid} = do + DeissueRequest.View{issuanceId; holdingCid} <- view <$> fetchAndRemove deissueRequestCid holding <- fetch holdingCid let - amount = getAmount holding account = getAccount holding - (_, ref) <- fetchByKey @Account.R account - exercise ref.cid Account.Debit with holdingCid - (issuanceCid, issuance) <- fetchByKey @Issuance (operator, provider, id) + amount = getAmount holding + account.custodian === provider + account.owner === customer + Account.exerciseInterfaceByKey @Account.I account provider Account.Debit with holdingCid + (issuanceCid, issuance) <- fetchByKey @Model.Issuance (operator, provider, issuanceId) archive issuanceCid - create issuance with quantity = (issuance.quantity with amount = issuance.quantity.amount - amount) - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + toInterfaceContractId <$> create issuance with quantity = (issuance.quantity with amount = issuance.quantity.amount - amount) template Offer with diff --git a/src/daml/Daml/Finance/App/Lending/Model.daml b/src/daml/Daml/Finance/App/Lending/Model.daml index 3ecc8c8b..ee1b933b 100644 --- a/src/daml/Daml/Finance/App/Lending/Model.daml +++ b/src/daml/Daml/Finance/App/Lending/Model.daml @@ -3,11 +3,15 @@ module Daml.Finance.App.Lending.Model where -import DA.Set (singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K, exerciseInterfaceByKey) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Lending.BorrowAgreement qualified as BorrowAgreement (I, Repay(..), View(..)) +import Daml.Finance.App.Interface.Lending.BorrowOffer qualified as BorrowOffer (I, View(..)) +import Daml.Finance.App.Interface.Lending.BorrowOfferRequest qualified as BorrowOfferRequest (I, View(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (exerciseInterfaceByKey) import Daml.Finance.Interface.Holding.Base qualified as Holding (I, Release(..)) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I, Transfer(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id, InstrumentQuantity) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, RemoveObservers(..)) template BorrowOfferRequest @@ -15,62 +19,84 @@ template BorrowOfferRequest operator : Party provider : Party customer : Party - id : Text - borrowed : Instrument.Q + dealId : Id + description : Text + borrowed : InstrumentQuantity maturity : Date where signatory operator, provider, customer - key (operator, provider, id) : (Party, Party, Text) + key (operator, provider, dealId) : (Party, Party, Id) maintainer key._1 + interface instance Removable.I for BorrowOfferRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance BorrowOfferRequest.I for BorrowOfferRequest where + view = BorrowOfferRequest.View with operator; provider; customer; dealId; description; borrowed; maturity + + asRemovable = toInterface @Removable.I this + template BorrowOffer with operator : Party provider : Party customer : Party - id : Text - borrowed : Instrument.Q + dealId : Id + description : Text + borrowed : InstrumentQuantity maturity : Date - interest : Instrument.Q - collateral : Instrument.Q + interest : InstrumentQuantity + collateral : InstrumentQuantity borrowedCid : ContractId Transferable.I - lenderBorrowedAccount : Account.K - lenderInterestAccount : Account.K + lenderBorrowedAccount : AccountKey + lenderInterestAccount : AccountKey where signatory operator, provider, customer - key (operator, provider, id) : (Party, Party, Text) + key (operator, provider, dealId) : (Party, Party, Id) maintainer key._1 + interface instance Removable.I for BorrowOffer where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance BorrowOffer.I for BorrowOffer where + view = BorrowOffer.View with operator; provider; customer; dealId; description; borrowed; maturity; interest; collateral; borrowedCid; lenderBorrowedAccount; lenderInterestAccount + + asRemovable = toInterface @Removable.I this + template BorrowAgreement with operator : Party provider : Party customer : Party - id : Text - borrowed : Instrument.Q + dealId : Id + description : Text + borrowed : InstrumentQuantity maturity : Date - interest : Instrument.Q - collateral : Instrument.Q + interest : InstrumentQuantity + collateral : InstrumentQuantity collateralCid : ContractId Transferable.I - lenderBorrowedAccount : Account.K - lenderInterestAccount : Account.K + lenderBorrowedAccount : AccountKey + lenderInterestAccount : AccountKey where signatory operator, provider, customer - key (operator, provider, id) : (Party, Party, Text) + key (operator, provider, dealId) : (Party, Party, Id) maintainer key._1 - choice Repay : (ContractId Transferable.I, ContractId Transferable.I, ContractId Transferable.I) - with - borrowedCid : ContractId Transferable.I - interestCid : ContractId Transferable.I - controller customer - do - borrowedCid <- exercise borrowedCid Transferable.Transfer with actors = singleton customer; newOwnerAccount = lenderBorrowedAccount - interestCid <- exercise interestCid Transferable.Transfer with actors = singleton customer; newOwnerAccount = lenderInterestAccount - unlockedCid <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Release with context = id - Account.exerciseInterfaceByKey @Disclosure.I lenderBorrowedAccount provider Disclosure.RemoveObservers with disclosers = singleton customer; observersToRemove = (id, singleton customer) - Account.exerciseInterfaceByKey @Disclosure.I lenderInterestAccount provider Disclosure.RemoveObservers with disclosers = singleton customer; observersToRemove = (id, singleton customer) + interface instance Removable.I for BorrowAgreement where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance BorrowAgreement.I for BorrowAgreement where + view = BorrowAgreement.View with operator; provider; customer; dealId; description; borrowed; maturity; interest; collateral; collateralCid; lenderBorrowedAccount; lenderInterestAccount + + asRemovable = toInterface @Removable.I this + + repay BorrowAgreement.Repay{borrowedCid; interestCid} = do + borrowedCid <- exercise borrowedCid Transferable.Transfer with actors = fromList [provider, customer]; newOwnerAccount = lenderBorrowedAccount + interestCid <- exercise interestCid Transferable.Transfer with actors = fromList [provider, customer]; newOwnerAccount = lenderInterestAccount + unlockedCid <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Release with context = show dealId + Account.exerciseInterfaceByKey @Disclosure.I lenderBorrowedAccount provider Disclosure.RemoveObservers with disclosers = singleton customer; observersToRemove = (show dealId, singleton customer) + Account.exerciseInterfaceByKey @Disclosure.I lenderInterestAccount provider Disclosure.RemoveObservers with disclosers = singleton customer; observersToRemove = (show dealId, singleton customer) pure (unlockedCid, borrowedCid, interestCid) diff --git a/src/daml/Daml/Finance/App/Lending/Service.daml b/src/daml/Daml/Finance/App/Lending/Service.daml index 5c6c5b7e..6010d994 100644 --- a/src/daml/Daml/Finance/App/Lending/Service.daml +++ b/src/daml/Daml/Finance/App/Lending/Service.daml @@ -3,15 +3,22 @@ module Daml.Finance.App.Lending.Service where -import DA.Set (singleton) -import Daml.Finance.App.Lending.Model (BorrowAgreement(..), BorrowOffer(..), BorrowOfferRequest(..)) -import Daml.Finance.App.Util (fetchAndArchive) -import Daml.Finance.Interface.Account.Account qualified as Account (K, exerciseInterfaceByKey) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Lending.BorrowOffer qualified as BorrowOffer (View(..)) +import Daml.Finance.App.Interface.Lending.BorrowOfferRequest qualified as BorrowOfferRequest (View(..)) +import Daml.Finance.App.Interface.Lending.Service qualified as Service (AcceptBorrowOffer(..), CreateBorrowOffer(..), HasImplementation, I, RequestBorrowOffer(..), View(..)) +import Daml.Finance.App.Lending.Model qualified as Model (BorrowAgreement(..), BorrowOffer(..), BorrowOfferRequest(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (exerciseInterfaceByKey) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I, Transfer(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..)) +type T = Service + +instance Service.HasImplementation Service + template Service with operator : Party @@ -23,52 +30,32 @@ template Service key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestBorrowOffer : ContractId BorrowOfferRequest - with - id : Text - borrowed : Instrument.Q - maturity : Date - controller customer - do - create BorrowOfferRequest with operator; provider; customer; id; borrowed; maturity + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () - nonconsuming choice AcceptBorrowOffer : (ContractId Transferable.I, ContractId BorrowAgreement) - with - borrowOfferCid : ContractId BorrowOffer - collateralCid : ContractId Transferable.I - account : Account.K - controller customer - do - BorrowOffer{operator; provider; customer; id; borrowed; maturity; interest; collateral; borrowedCid; lenderBorrowedAccount; lenderInterestAccount} <- fetchAndArchive borrowOfferCid - unlockedBorrowedCid <- exercise (coerceContractId borrowedCid : ContractId Holding.I) Holding.Release with context = id - transferredCid <- exercise (coerceContractId unlockedBorrowedCid : ContractId Transferable.I) Transferable.Transfer with actors = singleton customer; newOwnerAccount = account - lockedCollateralCid : ContractId Transferable.I <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Acquire with newLockers = (singleton provider); context = id; lockType = Holding.Semaphore - borrowAgreementCid <- create BorrowAgreement with operator; provider; customer; id; borrowed; maturity; interest; collateral; collateralCid = lockedCollateralCid; lenderBorrowedAccount; lenderInterestAccount - pure (transferredCid, borrowAgreementCid) + interface instance Service.I for Service where + view = Service.View - nonconsuming choice CreateBorrowOffer : ContractId BorrowOffer - with - borrowOfferRequestCid : ContractId BorrowOfferRequest - interest : Instrument.Q - collateral : Instrument.Q - borrowedCid : ContractId Transferable.I - lenderBorrowedAccount : Account.K - lenderInterestAccount : Account.K - controller provider - do - BorrowOfferRequest{operator; provider; customer; id; borrowed; maturity} <- fetchAndArchive borrowOfferRequestCid - Account.exerciseInterfaceByKey @Disclosure.I lenderBorrowedAccount customer Disclosure.AddObservers with disclosers = singleton provider; observersToAdd = (id, singleton customer) - Account.exerciseInterfaceByKey @Disclosure.I lenderInterestAccount customer Disclosure.AddObservers with disclosers = singleton provider; observersToAdd = (id, singleton customer) - lockedBorrowedCid : ContractId Transferable.I <- coerceContractId <$> exercise (toInterfaceContractId borrowedCid : ContractId Holding.I) Holding.Acquire with newLockers = (singleton customer); context = id; lockType = Holding.Semaphore - create BorrowOffer with operator; provider; customer; id; borrowed; maturity; interest; collateral; borrowedCid = lockedBorrowedCid; lenderBorrowedAccount; lenderInterestAccount + asBase = toInterface @Base.I this - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + requestBorrowOffer Service.RequestBorrowOffer{dealId; description; borrowed; maturity} = do + toInterfaceContractId <$> create Model.BorrowOfferRequest with operator; provider; customer; dealId; description; borrowed; maturity + + acceptBorrowOffer Service.AcceptBorrowOffer{borrowOfferCid; collateralCid; account} = do + BorrowOffer.View{operator; provider; customer; dealId; description; borrowed; maturity; interest; collateral; borrowedCid; lenderBorrowedAccount; lenderInterestAccount} <- view <$> fetchAndRemove borrowOfferCid + unlockedBorrowedCid <- exercise (coerceContractId borrowedCid : ContractId Holding.I) Holding.Release with context = show dealId + transferredCid <- exercise (coerceContractId unlockedBorrowedCid : ContractId Transferable.I) Transferable.Transfer with actors = fromList [provider, customer]; newOwnerAccount = account + lockedCollateralCid : ContractId Transferable.I <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Acquire with newLockers = (singleton provider); context = show dealId; lockType = Holding.Semaphore + borrowAgreementCid <- toInterfaceContractId <$> create Model.BorrowAgreement with operator; provider; customer; dealId; description; borrowed; maturity; interest; collateral; collateralCid = lockedCollateralCid; lenderBorrowedAccount; lenderInterestAccount + pure (transferredCid, borrowAgreementCid) + + createBorrowOffer Service.CreateBorrowOffer{borrowOfferRequestCid; interest; collateral; borrowedCid; lenderBorrowedAccount; lenderInterestAccount} = do + BorrowOfferRequest.View{operator; provider; customer; dealId; description; borrowed; maturity} <- view <$> fetchAndRemove borrowOfferRequestCid + Account.exerciseInterfaceByKey @Disclosure.I lenderBorrowedAccount customer Disclosure.AddObservers with disclosers = singleton provider; observersToAdd = (show dealId, singleton customer) + Account.exerciseInterfaceByKey @Disclosure.I lenderInterestAccount customer Disclosure.AddObservers with disclosers = singleton provider; observersToAdd = (show dealId, singleton customer) + lockedBorrowedCid : ContractId Transferable.I <- coerceContractId <$> exercise (toInterfaceContractId borrowedCid : ContractId Holding.I) Holding.Acquire with newLockers = (singleton customer); context = show dealId; lockType = Holding.Semaphore + toInterfaceContractId <$> create Model.BorrowOffer with operator; provider; customer; dealId; description; borrowed; maturity; interest; collateral; borrowedCid = lockedBorrowedCid; lenderBorrowedAccount; lenderInterestAccount template Offer with diff --git a/src/daml/Daml/Finance/App/Lifecycle/Service.daml b/src/daml/Daml/Finance/App/Lifecycle/Service.daml index 9c6d3b24..040cc908 100644 --- a/src/daml/Daml/Finance/App/Lifecycle/Service.daml +++ b/src/daml/Daml/Finance/App/Lifecycle/Service.daml @@ -3,25 +3,25 @@ module Daml.Finance.App.Lifecycle.Service where -import ContingentClaims.Core.Claim (Claim) import ContingentClaims.Core.Observation (Observation(..)) import ContingentClaims.Lifecycle.Lifecycle qualified as Lifecycle -import ContingentClaims.Lifecycle.Util (expiry, fixings, payoffs) -import ContingentClaims.Valuation.Stochastic (Expr) +import ContingentClaims.Lifecycle.Util qualified as Util (expiry, fixings, payoffs) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Lifecycle.Service qualified as Service +import Daml.Finance.App.Interface.Structuring.Service qualified as Structuring (CreateEquity(..), I, RequestCreateEquity(..)) +import Daml.Finance.App.Lifecycle.Pricing qualified as Pricing +import Daml.Finance.App.Structuring.Service qualified as Structuring (T) import Daml.Finance.Claims.Util.Lifecycle qualified as Claim (lifecycle, lifecycleClaims, timeEvent) -import Daml.Finance.Interface.Data.NumericObservable qualified as NumericObservable (I) -import Daml.Finance.Interface.Data.TimeObservable qualified as TimeObservable (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I, K, Q, R) +import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I, R, exerciseInterfaceByKey) import Daml.Finance.Interface.Instrument.Equity.Instrument qualified as Equity (I, DeclareDividend(..), DeclareReplacement(..), DeclareStockSplit(..)) -import Daml.Finance.Interface.Claims.Claim qualified as Claim (Claim, getClaims, GetClaims(..)) -import Daml.Finance.Interface.Claims.Types (C, Pending, TaggedClaim) -import Daml.Finance.Interface.Lifecycle.Effect qualified as Effect (I) -import Daml.Finance.Interface.Lifecycle.Event qualified as Event (I) +import Daml.Finance.Interface.Claims.Claim qualified as Claim (getClaims, GetClaims(..)) import Daml.Finance.Interface.Lifecycle.Rule.Lifecycle qualified as Lifecycle (I, Evolve(..)) +import Daml.Finance.Interface.Util.Common (fetchInterfaceByKey) import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I) -import Daml.Finance.Interface.Types.Common (Id, InstrumentKey(..)) -import Daml.Finance.App.Lifecycle.Pricing qualified as Pricing -import Daml.Finance.App.Structuring.Auto.Service qualified as Structuring + +type T = Service + +instance Service.HasImplementation Service template Service with @@ -30,90 +30,62 @@ template Service customer : Party distributionRuleCid : ContractId Lifecycle.I replacementRuleCid : ContractId Lifecycle.I + genericRuleCid : ContractId Lifecycle.I + dynamicRuleCid : ContractId Lifecycle.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice DeclareDividend : [ContractId Effect.I] - with - timeObservableCid : ContractId TimeObservable.I - equity : Instrument.K - newVersion : Text - id : Id - description : Text - effectiveDate : Date - perUnitDistribution : [ Instrument.Q ] - controller customer - do + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with distributionRuleCid; replacementRuleCid; genericRuleCid; dynamicRuleCid + + asBase = toInterface @Base.I this + + declareDividend Service.DeclareDividend{equity; newVersion; eventId; description; effectiveTime; perUnitDistribution} = do now <- getTime - (_, equityRef) <- fetchByKey @Instrument.R equity - equity <- fetch equityRef.cid + instrument <- fetchInterfaceByKey @Instrument.R @Instrument.I equity let - disclosure = toInterface @Disclosure.I equity - v = view equity - dv = view disclosure - newInstrument = InstrumentKey with depository = provider; issuer = customer; id = v.id; version = newVersion - exerciseByKey @Structuring.Service (operator, provider, customer) Structuring.RequestAndCreateEquity with id = v.id; description = v.description; version = newVersion; validAsOf = now; observers = dv.observers - eventCid <- exercise (coerceContractId equityRef.cid : ContractId Equity.I) Equity.DeclareDividend with id; description; effectiveDate; newInstrument; perUnitDistribution - snd <$> exercise distributionRuleCid Lifecycle.Evolve with ruleName = "Dividend"; eventCid; timeObservableCid; observableCids = [] - - nonconsuming choice DeclareReplacement : [ContractId Effect.I] - with - timeObservableCid : ContractId TimeObservable.I - equity : Instrument.K - id : Id - description : Text - effectiveDate : Date - perUnitReplacement : [ Instrument.Q ] - controller customer - do - (_, equityRef) <- fetchByKey @Instrument.R equity - eventCid <- exercise (coerceContractId equityRef.cid : ContractId Equity.I) Equity.DeclareReplacement with id; description; effectiveDate; perUnitReplacement - snd <$> exercise replacementRuleCid Lifecycle.Evolve with ruleName = "StockSplit"; eventCid; timeObservableCid; observableCids = [] - - nonconsuming choice DeclareStockSplit : [ContractId Effect.I] - with - timeObservableCid : ContractId TimeObservable.I - equity : Instrument.K - newVersion : Text - id : Id - description : Text - effectiveDate : Date - adjustmentFactor : Decimal - controller customer - do + iv = view instrument + disclosure = view $ toInterface @Disclosure.I instrument + serviceCid <- toInterfaceContractId @Structuring.I . fst <$> fetchByKey @Structuring.T (operator, provider, customer) + createEquityRequestCid <- exercise serviceCid Structuring.RequestCreateEquity with id = iv.id; description = iv.description; version = newVersion; validAsOf = now; observers = disclosure.observers + (_, newInstrument) <- exercise serviceCid Structuring.CreateEquity with createEquityRequestCid + eventCid <- Instrument.exerciseInterfaceByKey @Equity.I equity customer Equity.DeclareDividend with id = eventId; description; effectiveTime; newInstrument; perUnitDistribution + effectCids <- snd <$> exercise distributionRuleCid Lifecycle.Evolve with eventCid; instrument = equity; observableCids = [] + pure (newInstrument, effectCids) + + declareReplacement Service.DeclareReplacement{equity; eventId; description; effectiveTime; perUnitReplacement} = do + eventCid <- Instrument.exerciseInterfaceByKey @Equity.I equity customer Equity.DeclareReplacement with id = eventId; description; effectiveTime; perUnitReplacement + effectCids <- snd <$> exercise replacementRuleCid Lifecycle.Evolve with eventCid; instrument = equity; observableCids = [] + pure effectCids + + declareStockSplit Service.DeclareStockSplit{equity; newVersion; eventId; description; effectiveTime; adjustmentFactor} = do now <- getTime - (_, equityRef) <- fetchByKey @Instrument.R equity - equity <- fetch equityRef.cid + instrument <- fetchInterfaceByKey @Instrument.R @Instrument.I equity let - disclosure = toInterface @Disclosure.I equity - v = view equity - dv = view disclosure - newInstrument = InstrumentKey with depository = provider; issuer = customer; id = v.id; version = newVersion - exerciseByKey @Structuring.Service (operator, provider, customer) Structuring.RequestAndCreateEquity with id = v.id; description = v.description; version = newVersion; validAsOf = now; observers = dv.observers - eventCid <- exercise (coerceContractId equityRef.cid : ContractId Equity.I) Equity.DeclareStockSplit with id; description; effectiveDate; newInstrument; adjustmentFactor - snd <$> exercise replacementRuleCid Lifecycle.Evolve with ruleName = "StockSplit"; eventCid; timeObservableCid; observableCids = [] - - nonconsuming choice PreviewLifecycle : ([TaggedClaim], [Pending]) - with - today : Time - observableCids : [ContractId NumericObservable.I] - instrumentCid : ContractId Claim.Claim - controller customer - do - instrument <- fetch instrumentCid - claims <- exercise self GetCurrentClaims with instrumentCid; observableCids - Claim.lifecycleClaims observableCids ((view instrument).acquisitionTime) claims [Claim.timeEvent today] + iv = view instrument + disclosure = view $ toInterface @Disclosure.I instrument + serviceCid <- toInterfaceContractId @Structuring.I . fst <$> fetchByKey @Structuring.T (operator, provider, customer) + createEquityRequestCid <- exercise serviceCid Structuring.RequestCreateEquity with id = iv.id; description = iv.description; version = newVersion; validAsOf = now; observers = disclosure.observers + (_, newInstrument) <- exercise serviceCid Structuring.CreateEquity with createEquityRequestCid + eventCid <- Instrument.exerciseInterfaceByKey @Equity.I equity customer Equity.DeclareStockSplit with id = eventId; description; effectiveTime; newInstrument; adjustmentFactor + effectCids <- snd <$> exercise replacementRuleCid Lifecycle.Evolve with eventCid; instrument = equity; observableCids = [] + pure (newInstrument, effectCids) + + previewLifecycle Service.PreviewLifecycle{today; observableCids; instrumentCid} = do + hasClaims <- fetch instrumentCid + instrument <- fetch (coerceContractId instrumentCid : ContractId Instrument.I) + claims <- fst <$> Claim.lifecycle customer observableCids hasClaims [Claim.timeEvent (view instrument).validAsOf] + Claim.lifecycleClaims observableCids ((view hasClaims).acquisitionTime) claims [Claim.timeEvent today] - nonconsuming choice SimulateLifecycle : [[Lifecycle.Pending Time Instrument.K]] - with - today : Time - prices : [Decimal] - instrumentCid : ContractId Claim.Claim - controller customer - do + simulateLifecycle Service.SimulateLifecycle{today; prices; instrumentCid} = do instrument <- fetch instrumentCid taggedClaims <- Claim.getClaims instrument $ Claim.GetClaims with actor = customer let @@ -123,82 +95,36 @@ template Service pure result.pending mapA simulate prices - nonconsuming choice GetCurrentClaims : [TaggedClaim] - with - instrumentCid : ContractId Claim.Claim - observableCids : [ContractId NumericObservable.I] - controller customer - do + getCurrentClaims Service.GetCurrentClaims{instrumentCid; observableCids} = do hasClaims <- fetch instrumentCid instrument <- fetch (coerceContractId instrumentCid : ContractId Instrument.I) fst <$> Claim.lifecycle customer observableCids hasClaims [Claim.timeEvent (view instrument).validAsOf] - nonconsuming choice Lifecycle : (ContractId Lifecycle.I, [ContractId Effect.I]) - with - ruleName : Text - eventCid : ContractId Event.I - timeObservableCid : ContractId TimeObservable.I - observableCids : [ContractId NumericObservable.I] - lifecyclableCid : ContractId Lifecycle.I - controller customer - do - exercise lifecyclableCid Lifecycle.Evolve with ruleName; eventCid; timeObservableCid; observableCids + lifecycle Service.Lifecycle{ruleCid; eventCid; observableCids; instrument} = do + exercise ruleCid Lifecycle.Evolve with eventCid; observableCids; instrument - nonconsuming choice Expiry : Optional Time - with - claims : C - controller customer - do - pure $ expiry claims + expiry Service.Expiry{claims} = do + pure $ Util.expiry claims - nonconsuming choice Underlying : [Instrument.K] - with - claims : C - controller customer - do - pure $ snd <$> payoffs claims + underlyings Service.Underlyings{claims} = do + pure $ snd <$> Util.payoffs claims - nonconsuming choice Payoffs : [(Observation Time Decimal Text, Instrument.K)] - with - claims : C - controller customer - do - pure $ payoffs claims + payoffs Service.Payoffs{claims} = do + pure $ Util.payoffs claims - nonconsuming choice Fixings : [Time] - with - claims : C - controller customer - do - pure $ fixings claims + fixings Service.Fixings{claims} = do + pure $ Util.fixings claims - nonconsuming choice Multipliers : [Decimal] - with - claims : C - controller customer - do + multipliers Service.Multipliers{claims} = do let getConst : (Observation Time Decimal a, b) -> [Decimal] getConst (Const x, _) = [x] getConst _ = [] - return $ concatMap getConst $ payoffs claims + return $ concatMap getConst $ Util.payoffs claims - nonconsuming choice PreviewPricing : (Expr Text, Text) - with - ccy : Text - claims : Claim Text Decimal Text Text - controller customer - do + previewPricing Service.PreviewPricing{ccy; claims} = do let formula = Pricing.valueClaim ccy claims pure (formula, Pricing.print formula) - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - template Offer with operator : Party @@ -206,6 +132,8 @@ template Offer customer : Party distributionRuleCid : ContractId Lifecycle.I replacementRuleCid : ContractId Lifecycle.I + genericRuleCid : ContractId Lifecycle.I + dynamicRuleCid : ContractId Lifecycle.I where signatory operator, provider observer customer @@ -244,6 +172,8 @@ template Request operator : Party distributionRuleCid : ContractId Lifecycle.I replacementRuleCid : ContractId Lifecycle.I + genericRuleCid : ContractId Lifecycle.I + dynamicRuleCid : ContractId Lifecycle.I controller operator, provider do create Service with .. diff --git a/src/daml/Daml/Finance/App/Listing/Auto.daml b/src/daml/Daml/Finance/App/Listing/Auto.daml new file mode 100644 index 00000000..235a65d6 --- /dev/null +++ b/src/daml/Daml/Finance/App/Listing/Auto.daml @@ -0,0 +1,86 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Listing.Auto where + +import Daml.Finance.App.Listing.Service qualified as Service (T) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Listing.Auto qualified as Auto (HasImplementation, I, View(..), RequestAndDelist(..), RequestAndList(..)) +import Daml.Finance.App.Interface.Listing.Service qualified as Service (Delist(..), List(..), I, RequestDelisting(..), RequestListing(..)) + +instance Auto.HasImplementation Service + +template Service + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider, customer + + key (operator, provider, customer) : (Party, Party, Party) + maintainer key._1 + + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Auto.I for Service where + view = Auto.View + + asBase = toInterface @Base.I this + + requestAndList Auto.RequestAndList{listingId; description; tradedInstrument; quotedInstrument; observers} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + listingRequestCid <- exercise serviceCid Service.RequestListing with listingId; description; tradedInstrument; quotedInstrument; observers + exercise serviceCid Service.List with listingRequestCid + + requestAndDelist Auto.RequestAndDelist{listingCid} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + delistingRequestCid <- exercise serviceCid Service.RequestDelisting with listingCid + exercise serviceCid Service.Delist with delistingRequestCid + +template Offer + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider + observer customer + + choice Accept : ContractId Service + controller customer + do + create Service with .. + + choice Decline : () + controller customer + do pure () + + choice Withdraw : () + controller provider + do pure () + +template Request + with + customer : Party + provider : Party + where + signatory customer + observer provider + + choice Cancel : () + controller customer + do pure () + + choice Reject : () + controller provider + do pure () + + choice Approve : ContractId Service + with + operator : Party + controller operator, provider + do + create Service with .. diff --git a/src/daml/Daml/Finance/App/Listing/Auto/Service.daml b/src/daml/Daml/Finance/App/Listing/Auto/Service.daml deleted file mode 100644 index 14c9b87c..00000000 --- a/src/daml/Daml/Finance/App/Listing/Auto/Service.daml +++ /dev/null @@ -1,92 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Listing.Auto.Service where - -import Daml.Finance.App.Listing.Service qualified as S (CreateListing(..), DeleteListing(..), RequestCreateListing(..), RequestDeleteListing(..), Service) -import Daml.Finance.App.Listing.Model (Listing) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K) -import Daml.Finance.Interface.Types.Common (Parties) - -template Service - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider, customer - - key (operator, provider, customer) : (Party, Party, Party) - maintainer key._1 - - nonconsuming choice RequestAndCreateListing : ContractId Listing - with - id : Text - tradedInstrument : Instrument.K - quotedInstrument : Instrument.K - observers : Parties - controller customer - do - createListingRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateListing with id; tradedInstrument; quotedInstrument; observers - exerciseByKey @S.Service (operator, provider, customer) S.CreateListing with createListingRequestCid - - nonconsuming choice RequestAndDeleteListing : () - with - listingCid : ContractId Listing - controller customer - do - deleteListingRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestDeleteListing with listingCid - exerciseByKey @S.Service (operator, provider, customer) S.DeleteListing with deleteListingRequestCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - -template Offer - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider - observer customer - - choice Accept : ContractId Service - controller customer - do - create Service with .. - - choice Decline : () - controller customer - do pure () - - choice Withdraw : () - controller provider - do pure () - -template Request - with - customer : Party - provider : Party - where - signatory customer - observer provider - - choice Cancel : () - controller customer - do pure () - - choice Reject : () - controller provider - do pure () - - choice Approve : ContractId Service - with - operator : Party - controller operator, provider - do - create Service with .. diff --git a/src/daml/Daml/Finance/App/Listing/Model.daml b/src/daml/Daml/Finance/App/Listing/Model.daml index 68a29ce4..e324b387 100644 --- a/src/daml/Daml/Finance/App/Listing/Model.daml +++ b/src/daml/Daml/Finance/App/Listing/Model.daml @@ -3,8 +3,12 @@ module Daml.Finance.App.Listing.Model where -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K) -import Daml.Finance.Interface.Types.Common (Parties) +import DA.Set (fromList) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Listing.DelistingRequest qualified as DelistingRequest (I, View(..)) +import Daml.Finance.App.Interface.Listing.Listing qualified as Listing (I, View(..)) +import Daml.Finance.App.Interface.Listing.ListingRequest qualified as ListingRequest (I, View(..)) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, Parties) type T = Listing @@ -13,34 +17,58 @@ template Listing operator : Party provider : Party customer : Party - id : Text - tradedInstrument : Instrument.K - quotedInstrument : Instrument.K + id : Id + description : Text + tradedInstrument : InstrumentKey + quotedInstrument : InstrumentKey observers : Parties where signatory operator, provider, customer observer observers - key (operator, provider, id) : (Party, Party, Text) + key (operator, provider, id) : (Party, Party, Id) maintainer key._1, key._2 -template CreateListingRequest + interface instance Removable.I for Listing where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance Listing.I for Listing where + view = Listing.View with operator; provider; customer; id; description; tradedInstrument; quotedInstrument; observers + + asRemovable = toInterface @Removable.I this + +template ListingRequest with operator : Party provider : Party customer : Party - id : Text - tradedInstrument : Instrument.K - quotedInstrument : Instrument.K + listingId : Id + description : Text + tradedInstrument : InstrumentKey + quotedInstrument : InstrumentKey observers : Parties where signatory operator, provider, customer -template DeleteListingRequest + interface instance Removable.I for ListingRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance ListingRequest.I for ListingRequest where + view = ListingRequest.View with operator; provider; customer; listingId; description; tradedInstrument; quotedInstrument; observers + asRemovable = toInterface @Removable.I this + +template DelistingRequest with operator : Party provider : Party customer : Party - listingCid : ContractId Listing + listingCid : ContractId Listing.I where signatory operator, provider, customer + + interface instance Removable.I for DelistingRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance DelistingRequest.I for DelistingRequest where + view = DelistingRequest.View with operator; provider; customer; listingCid + asRemovable = toInterface @Removable.I this diff --git a/src/daml/Daml/Finance/App/Listing/Service.daml b/src/daml/Daml/Finance/App/Listing/Service.daml index 5de309dc..b5751b16 100644 --- a/src/daml/Daml/Finance/App/Listing/Service.daml +++ b/src/daml/Daml/Finance/App/Listing/Service.daml @@ -3,10 +3,17 @@ module Daml.Finance.App.Listing.Service where -import Daml.Finance.App.Listing.Model (CreateListingRequest(..), DeleteListingRequest(..), Listing(..)) -import Daml.Finance.App.Util (fetchAndArchive) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K) -import Daml.Finance.Interface.Types.Common (Parties) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, Remove(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Listing.ListingRequest qualified as ListingRequest (View(..)) +import Daml.Finance.App.Interface.Listing.DelistingRequest qualified as DelistingRequest (View(..)) +import Daml.Finance.App.Interface.Listing.Service qualified as Service (Delist(..), HasImplementation, I, List(..), RequestDelisting(..), RequestListing(..), View(..)) +import Daml.Finance.App.Listing.Model qualified as Model + +type T = Service + +instance Service.HasImplementation Service template Service with @@ -19,46 +26,29 @@ template Service key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestCreateListing : ContractId CreateListingRequest - with - id : Text - tradedInstrument : Instrument.K - quotedInstrument : Instrument.K - observers : Parties - controller customer - do - create CreateListingRequest with operator; provider; customer; id; tradedInstrument; quotedInstrument; observers + interface instance Base.I for Service where + view = Base.View with operator; provider; customer - nonconsuming choice RequestDeleteListing : ContractId DeleteListingRequest - with - listingCid : ContractId Listing - controller customer - do - create DeleteListingRequest with operator; provider; customer; listingCid + terminate = pure () - nonconsuming choice CreateListing : ContractId Listing - with - createListingRequestCid : ContractId CreateListingRequest - controller provider - do - CreateListingRequest{operator; provider; customer; id; tradedInstrument; quotedInstrument; observers} <- fetchAndArchive createListingRequestCid - create Listing with operator; provider; customer; id; tradedInstrument; quotedInstrument; observers + interface instance Service.I for Service where + view = Service.View - nonconsuming choice DeleteListing : () - with - deleteListingRequestCid : ContractId DeleteListingRequest - controller provider - do - DeleteListingRequest{operator; provider; customer; listingCid} <- fetchAndArchive deleteListingRequestCid - archive listingCid + asBase = toInterface @Base.I this - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + requestListing Service.RequestListing{listingId; description; tradedInstrument; quotedInstrument; observers} = do + toInterfaceContractId <$> create Model.ListingRequest with operator; provider; customer; listingId; description; tradedInstrument; quotedInstrument; observers + + requestDelisting Service.RequestDelisting{listingCid} = do + toInterfaceContractId <$> create Model.DelistingRequest with operator; provider; customer; listingCid + + list Service.List{listingRequestCid} = do + ListingRequest.View{listingId; description; tradedInstrument; quotedInstrument; observers} <- view <$> fetchAndRemove listingRequestCid + toInterfaceContractId <$> create Model.Listing with operator; provider; customer; id = listingId; description; tradedInstrument; quotedInstrument; observers + + delist Service.Delist{delistingRequestCid} = do + DelistingRequest.View{listingCid} <- view <$> fetchAndRemove delistingRequestCid + exercise (toInterfaceContractId @Removable.I listingCid) Removable.Remove template Offer with diff --git a/src/daml/Daml/Finance/App/Role/Custodian.daml b/src/daml/Daml/Finance/App/Role/Custodian.daml index 248e1eef..3e4186d7 100644 --- a/src/daml/Daml/Finance/App/Role/Custodian.daml +++ b/src/daml/Daml/Finance/App/Role/Custodian.daml @@ -3,19 +3,32 @@ module Daml.Finance.App.Role.Custodian where -import Daml.Finance.App.BackToBack.Service qualified as BackToBack (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Custody.Service qualified as Custody (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Issuance.Auto.Service qualified as IssuanceAuto (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Issuance.Service qualified as Issuance (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Lending.Service qualified as Lending (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Lifecycle.Service qualified as Lifecycle (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Settlement.Service qualified as Settlement (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Structuring.Auto.Service qualified as StructuringAuto (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Structuring.Service qualified as Structuring (Approve(..), Factories, Offer(..), Request, Service, Terminate(..)) +import Daml.Finance.App.Custody.Auto qualified as CustodyAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Custody.Service qualified as Custody (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Terminate(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.App.Issuance.Auto qualified as IssuanceAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Issuance.BackToBack qualified as BackToBack (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Issuance.Service qualified as Issuance (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Lending.Service qualified as Lending (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Lifecycle.Service qualified as Lifecycle (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Settlement.Service qualified as Settlement (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Structuring.Auto qualified as StructuringAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Structuring.Service qualified as Structuring (Approve(..), Offer(..), Request, Service) import Daml.Finance.Interface.Account.Factory qualified as Account (F) import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) +import Daml.Finance.Interface.Instrument.Bond.FixedRate.Factory qualified as FixedRateBond (Factory) +import Daml.Finance.Interface.Instrument.Bond.FloatingRate.Factory qualified as FloatingRateBond (Factory) +import Daml.Finance.Interface.Instrument.Bond.InflationLinked.Factory qualified as InflationLinkedBond (Factory) +import Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Factory qualified as ZeroCouponBond (Factory) +import Daml.Finance.Interface.Instrument.Equity.Factory qualified as Equity (Factory) +import Daml.Finance.Interface.Instrument.Generic.Factory qualified as Generic (Factory) +import Daml.Finance.Interface.Instrument.Swap.Fpml.Factory qualified as FpmlSwap (Factory) +import Daml.Finance.Interface.Instrument.Token.Factory qualified as Token (Factory) import Daml.Finance.Interface.Lifecycle.Rule.Claim qualified as Lifecycle (Claim) import Daml.Finance.Interface.Lifecycle.Rule.Lifecycle qualified as Lifecycle (I) +import Daml.Finance.Interface.Settlement.Factory qualified as SettlementFactory (I) +import Daml.Finance.Interface.Settlement.RouteProvider qualified as RouteProvider (I) template Role with @@ -30,29 +43,56 @@ template Role nonconsuming choice OfferCustodyService : ContractId Custody.Offer with customer : Party - claimRuleCid : ContractId Lifecycle.Claim accountFactoryCid : ContractId Account.F holdingFactoryCid : ContractId Holding.F + claimRuleCid : ContractId Lifecycle.Claim controller provider do - create Custody.Offer with operator; provider; customer; claimRuleCid; accountFactoryCid; holdingFactoryCid + create Custody.Offer with operator; provider; customer; accountFactoryCid; holdingFactoryCid; claimRuleCid nonconsuming choice ApproveCustodyRequest : ContractId Custody.Service with custodyRequestCid : ContractId Custody.Request - claimRuleCid : ContractId Lifecycle.Claim accountFactoryCid : ContractId Account.F holdingFactoryCid : ContractId Holding.F + claimRuleCid : ContractId Lifecycle.Claim controller provider do - exercise custodyRequestCid Custody.Approve with operator; claimRuleCid; accountFactoryCid; holdingFactoryCid + exercise custodyRequestCid Custody.Approve with operator; accountFactoryCid; holdingFactoryCid; claimRuleCid nonconsuming choice TerminateCustodyService : () with customer : Party controller provider do - exerciseByKey @Custody.Service (operator, provider, customer) Custody.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Custody.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider + + nonconsuming choice OfferCustodyAutoService : ContractId CustodyAuto.Offer + with + customer : Party + accountFactoryCid : ContractId Account.F + holdingFactoryCid : ContractId Holding.F + controller provider + do + create CustodyAuto.Offer with operator; provider; customer; accountFactoryCid; holdingFactoryCid + + nonconsuming choice ApproveCustodyAutoRequest : ContractId CustodyAuto.Service + with + custodyRequestCid : ContractId CustodyAuto.Request + accountFactoryCid : ContractId Account.F + holdingFactoryCid : ContractId Holding.F + controller provider + do + exercise custodyRequestCid CustodyAuto.Approve with operator; accountFactoryCid; holdingFactoryCid + + nonconsuming choice TerminateCustodyAutoService : () + with + customer : Party + controller provider + do + (serviceCid, _) <- fetchByKey @CustodyAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferIssuanceService : ContractId Issuance.Offer with @@ -73,7 +113,8 @@ template Role customer : Party controller provider do - exerciseByKey @Issuance.Service (operator, provider, customer) Issuance.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Issuance.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferIssuanceAutoService : ContractId IssuanceAuto.Offer with @@ -94,12 +135,13 @@ template Role customer : Party controller provider do - exerciseByKey @IssuanceAuto.Service (operator, provider, customer) IssuanceAuto.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @IssuanceAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferBackToBackService : ContractId BackToBack.Offer with customer : Party - public : Party + settlementServiceCid : ContractId SettlementService.I controller provider do create BackToBack.Offer with .. @@ -107,6 +149,7 @@ template Role nonconsuming choice ApproveBackToBackRequest : ContractId BackToBack.Service with backToBackServiceRequestCid : ContractId BackToBack.Request + settlementServiceCid : ContractId SettlementService.I controller provider do exercise backToBackServiceRequestCid BackToBack.Approve with .. @@ -116,11 +159,14 @@ template Role customer : Party controller provider do - exerciseByKey @BackToBack.Service (operator, provider, customer) BackToBack.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @BackToBack.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferSettlementService : ContractId Settlement.Offer with customer : Party + routeProviderCid : ContractId RouteProvider.I + settlementFactoryCid : ContractId SettlementFactory.I controller provider do create Settlement.Offer with .. @@ -128,6 +174,8 @@ template Role nonconsuming choice ApproveSettlementRequest : ContractId Settlement.Service with settlementServiceRequestCid : ContractId Settlement.Request + routeProviderCid : ContractId RouteProvider.I + settlementFactoryCid : ContractId SettlementFactory.I controller provider do exercise settlementServiceRequestCid Settlement.Approve with .. @@ -137,12 +185,20 @@ template Role customer : Party controller provider do - exerciseByKey @Settlement.Service (operator, provider, customer) Settlement.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Settlement.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferStructuringService : ContractId Structuring.Offer with customer : Party - factories : Structuring.Factories + token : ContractId Token.Factory + equity : ContractId Equity.Factory + generic : ContractId Generic.Factory + fixedRateBond : ContractId FixedRateBond.Factory + floatingRateBond : ContractId FloatingRateBond.Factory + inflationLinkedBond : ContractId InflationLinkedBond.Factory + zeroCouponBond : ContractId ZeroCouponBond.Factory + fpmlSwap : ContractId FpmlSwap.Factory controller provider do create Structuring.Offer with .. @@ -150,7 +206,14 @@ template Role nonconsuming choice ApproveStructuringRequest : ContractId Structuring.Service with structuringServiceRequestCid : ContractId Structuring.Request - factories : Structuring.Factories + token : ContractId Token.Factory + equity : ContractId Equity.Factory + generic : ContractId Generic.Factory + fixedRateBond : ContractId FixedRateBond.Factory + floatingRateBond : ContractId FloatingRateBond.Factory + inflationLinkedBond : ContractId InflationLinkedBond.Factory + zeroCouponBond : ContractId ZeroCouponBond.Factory + fpmlSwap : ContractId FpmlSwap.Factory controller provider do exercise structuringServiceRequestCid Structuring.Approve with .. @@ -160,7 +223,8 @@ template Role customer : Party controller provider do - exerciseByKey @Structuring.Service (operator, provider, customer) Structuring.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Structuring.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferStructuringAutoService : ContractId StructuringAuto.Offer with @@ -181,13 +245,16 @@ template Role customer : Party controller provider do - exerciseByKey @StructuringAuto.Service (operator, provider, customer) StructuringAuto.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @StructuringAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferLifecycleService : ContractId Lifecycle.Offer with customer : Party distributionRuleCid : ContractId Lifecycle.I replacementRuleCid : ContractId Lifecycle.I + genericRuleCid : ContractId Lifecycle.I + dynamicRuleCid : ContractId Lifecycle.I controller provider do create Lifecycle.Offer with .. @@ -197,6 +264,8 @@ template Role lifecycleServiceRequestCid : ContractId Lifecycle.Request distributionRuleCid : ContractId Lifecycle.I replacementRuleCid : ContractId Lifecycle.I + genericRuleCid : ContractId Lifecycle.I + dynamicRuleCid : ContractId Lifecycle.I controller provider do exercise lifecycleServiceRequestCid Lifecycle.Approve with .. @@ -206,7 +275,8 @@ template Role customer : Party controller provider do - exerciseByKey @Lifecycle.Service (operator, provider, customer) Lifecycle.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Lifecycle.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferLendingService : ContractId Lending.Offer with @@ -227,7 +297,8 @@ template Role customer : Party controller provider do - exerciseByKey @Lending.Service (operator, provider, customer) Lending.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Lending.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider choice TerminateRole: () controller operator diff --git a/src/daml/Daml/Finance/App/Role/Distributor.daml b/src/daml/Daml/Finance/App/Role/Distributor.daml index 24b98c2d..0104125d 100644 --- a/src/daml/Daml/Finance/App/Role/Distributor.daml +++ b/src/daml/Daml/Finance/App/Role/Distributor.daml @@ -3,13 +3,15 @@ module Daml.Finance.App.Role.Distributor where -import Daml.Finance.App.Distribution.Auction.Auto.Service qualified as AuctionAuto (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Distribution.Auction.Service qualified as Auction (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Distribution.Bidding.Auto.Service qualified as BiddingAuto (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Distribution.Fund.Service qualified as Fund (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Distribution.Investment.Service qualified as Investment (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Distribution.Subscription.Service qualified as Subscription (Approve(..), Offer(..), Request, Service, Terminate(..)) +import Daml.Finance.App.Distribution.Auction.Auto qualified as AuctionAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Distribution.Auction.Service qualified as Auction (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Distribution.Bidding.Auto qualified as BiddingAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Distribution.Fund.Service qualified as Fund (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Distribution.Investment.Service qualified as Investment (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Distribution.Subscription.Service qualified as Subscription (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Terminate(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) template Role with @@ -24,6 +26,7 @@ template Role nonconsuming choice OfferAuctionService : ContractId Auction.Offer with customer : Party + settlementServiceCid : ContractId SettlementService.I controller provider do create Auction.Offer with .. @@ -31,6 +34,7 @@ template Role nonconsuming choice ApproveAuctionServiceRequest : ContractId Auction.Service with auctionServiceRequestCid : ContractId Auction.Request + settlementServiceCid : ContractId SettlementService.I controller provider do exercise auctionServiceRequestCid Auction.Approve with .. @@ -40,7 +44,8 @@ template Role customer : Party controller provider do - exerciseByKey @Auction.Service (operator, provider, customer) Auction.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Auction.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferAuctionAutoService : ContractId AuctionAuto.Offer with @@ -61,7 +66,8 @@ template Role customer : Party controller provider do - exerciseByKey @AuctionAuto.Service (operator, provider, customer) AuctionAuto.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @AuctionAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferBiddingService : ContractId Bidding.Offer with @@ -82,7 +88,8 @@ template Role customer : Party controller provider do - exerciseByKey @Bidding.Service (operator, provider, customer) Bidding.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Bidding.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferBiddingAutoService : ContractId BiddingAuto.Offer with @@ -103,12 +110,13 @@ template Role customer : Party controller provider do - exerciseByKey @BiddingAuto.Service (operator, provider, customer) BiddingAuto.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @BiddingAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferSubscriptionService : ContractId Subscription.Offer with customer : Party - public : Party + settlementServiceCid : ContractId SettlementService.I controller provider do create Subscription.Offer with .. @@ -116,6 +124,7 @@ template Role nonconsuming choice ApproveSubscriptionServiceRequest : ContractId Subscription.Service with subscriptionServiceRequestCid : ContractId Subscription.Request + settlementServiceCid : ContractId SettlementService.I controller provider do exercise subscriptionServiceRequestCid Subscription.Approve with .. @@ -125,7 +134,8 @@ template Role customer : Party controller provider do - exerciseByKey @Subscription.Service (operator, provider, customer) Subscription.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Subscription.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferInvestmentService : ContractId Investment.Offer with @@ -146,11 +156,13 @@ template Role customer : Party controller provider do - exerciseByKey @Investment.Service (operator, provider, customer) Investment.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Investment.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferFundService : ContractId Fund.Offer with customer : Party + settlementServiceCid : ContractId SettlementService.I controller provider do create Fund.Offer with .. @@ -158,6 +170,7 @@ template Role nonconsuming choice ApproveFundServiceRequest : ContractId Fund.Service with fundServiceRequestCid : ContractId Fund.Request + settlementServiceCid : ContractId SettlementService.I controller provider do exercise fundServiceRequestCid Fund.Approve with .. @@ -167,7 +180,8 @@ template Role customer : Party controller provider do - exerciseByKey @Fund.Service (operator, provider, customer) Fund.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Fund.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider choice Terminate : () with diff --git a/src/daml/Daml/Finance/App/Role/Exchange.daml b/src/daml/Daml/Finance/App/Role/Exchange.daml index 122af388..c307ee78 100644 --- a/src/daml/Daml/Finance/App/Role/Exchange.daml +++ b/src/daml/Daml/Finance/App/Role/Exchange.daml @@ -3,11 +3,12 @@ module Daml.Finance.App.Role.Exchange where -import Daml.Finance.App.Listing.Auto.Service qualified as ListingAuto (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Listing.Service qualified as Listing (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Trading.Auto.Service qualified as TradingAuto (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.App.Trading.Service qualified as Trading (Approve(..), Offer(..), Request, Service, Terminate(..)) -import Daml.Finance.Interface.Settlement.Factory qualified as Factory (I) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, Terminate(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.App.Listing.Auto qualified as ListingAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Listing.Service qualified as Listing (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Trading.Auto qualified as TradingAuto (Approve(..), Offer(..), Request, Service) +import Daml.Finance.App.Trading.Service qualified as Trading (Approve(..), Offer(..), Request, Service) template Role with @@ -22,25 +23,26 @@ template Role nonconsuming choice OfferTradingService : ContractId Trading.Offer with customer : Party - settlementFactoryCid : ContractId Factory.I + settlementServiceCid : ContractId SettlementService.I controller provider do - create Trading.Offer with operator; provider; customer; settlementFactoryCid + create Trading.Offer with operator; provider; customer; settlementServiceCid nonconsuming choice ApproveTradingServiceRequest : ContractId Trading.Service with tradingRequestCid : ContractId Trading.Request - settlementFactoryCid : ContractId Factory.I + settlementServiceCid : ContractId SettlementService.I controller provider do - exercise tradingRequestCid Trading.Approve with operator; settlementFactoryCid + exercise tradingRequestCid Trading.Approve with operator; settlementServiceCid nonconsuming choice TerminateTradingService : () with customer : Party controller provider do - exerciseByKey @Trading.Service (operator, provider, customer) Trading.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Trading.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferTradingAutoService : ContractId TradingAuto.Offer with @@ -61,7 +63,8 @@ template Role customer : Party controller provider do - exerciseByKey @TradingAuto.Service (operator, provider, customer) TradingAuto.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @TradingAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferListingService : ContractId Listing.Offer with @@ -82,7 +85,8 @@ template Role customer : Party controller provider do - exerciseByKey @Listing.Service (operator, provider, customer) Listing.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @Listing.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider nonconsuming choice OfferListingAutoService : ContractId ListingAuto.Offer with @@ -103,7 +107,8 @@ template Role customer : Party controller provider do - exerciseByKey @ListingAuto.Service (operator, provider, customer) ListingAuto.Terminate with actor = provider + (serviceCid, _) <- fetchByKey @ListingAuto.Service (operator, provider, customer) + exercise (toInterfaceContractId @Base.I serviceCid) Base.Terminate with actor = provider choice TerminateRole : () controller operator diff --git a/src/daml/Daml/Finance/App/Settlement/Service.daml b/src/daml/Daml/Finance/App/Settlement/Service.daml index e4aceec7..a814d354 100644 --- a/src/daml/Daml/Finance/App/Settlement/Service.daml +++ b/src/daml/Daml/Finance/App/Settlement/Service.daml @@ -4,53 +4,58 @@ module Daml.Finance.App.Settlement.Service where import DA.Set (singleton) -import Daml.Finance.Interface.Settlement.Types qualified as Settlement (Allocation, Approval) -import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I, Allocate(..), Approve(..)) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as Service (AllocateInstruction(..), ApproveInstruction(..), DiscoverAndInstruct(..), HasImplementation, I, View(..)) +import Daml.Finance.Interface.Settlement.Factory qualified as SettlementFactory (I, Instruct(..)) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) +import Daml.Finance.Interface.Settlement.RouteProvider qualified as RouteProvider (Discover(..), I) + +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party + routeProviderCid : ContractId RouteProvider.I + settlementFactoryCid : ContractId SettlementFactory.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice AllocateInstruction : ContractId Instruction.I - with - actor : Party - instructionCid : ContractId Instruction.I - allocation : Settlement.Allocation - controller actor - do + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with routeProviderCid; settlementFactoryCid + + asBase = toInterface @Base.I this + + allocateInstruction Service.AllocateInstruction{actor; instructionCid; allocation} = do assertMsg "Actor must be provider or customer" $ actor == customer || actor == provider fst <$> exercise instructionCid Instruction.Allocate with actors = singleton actor; allocation - nonconsuming choice ApproveInstruction : ContractId Instruction.I - with - actor : Party - instructionCid : ContractId Instruction.I - approval : Settlement.Approval - controller actor - do + approveInstruction Service.ApproveInstruction{actor; instructionCid; approval} = do assertMsg "Actor must be provider or customer" $ actor == customer || actor == provider exercise instructionCid Instruction.Approve with actors = singleton actor; approval - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + discoverAndInstruct Service.DiscoverAndInstruct{actor; settlers; id; description; contextId; settlementTime; steps} = do + routedSteps <- exercise routeProviderCid RouteProvider.Discover with discoverors = singleton actor; contextId = None; steps + exercise settlementFactoryCid SettlementFactory.Instruct with instructors = singleton actor; settlers; id; description; contextId; settlementTime; routedSteps template Offer with operator : Party provider : Party customer : Party + routeProviderCid : ContractId RouteProvider.I + settlementFactoryCid : ContractId SettlementFactory.I where signatory operator, provider observer customer @@ -58,7 +63,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with operator; provider; customer + create Service with operator; provider; customer; routeProviderCid; settlementFactoryCid choice Decline : () controller customer @@ -87,6 +92,8 @@ template Request choice Approve : ContractId Service with operator : Party + routeProviderCid : ContractId RouteProvider.I + settlementFactoryCid : ContractId SettlementFactory.I controller operator, provider do - create Service with operator; provider; customer + create Service with operator; provider; customer; routeProviderCid; settlementFactoryCid diff --git a/src/daml/Daml/Finance/Setup/Payoff.daml b/src/daml/Daml/Finance/App/Setup/Payoff.daml similarity index 80% rename from src/daml/Daml/Finance/Setup/Payoff.daml rename to src/daml/Daml/Finance/App/Setup/Payoff.daml index e96ebb76..2cefe62f 100644 --- a/src/daml/Daml/Finance/Setup/Payoff.daml +++ b/src/daml/Daml/Finance/App/Setup/Payoff.daml @@ -1,7 +1,7 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.Setup.Payoff where +module Daml.Finance.App.Setup.Payoff where import ContingentClaims.Core.Claim (Claim, and, anytime, at, cond, give, one, or, scale, until, when, zero, (<=)) import ContingentClaims.Core.Internal.Claim (Claim(And)) @@ -10,88 +10,88 @@ import ContingentClaims.Core.Builders (forward, fixed, floating, swap, european, import DA.Date (DayOfWeek(..), Month(..), addDays, date, monthDayCount, toGregorian) import DA.List (last) import DA.Time (time) +import Daml.Finance.Interface.Types.Common.Types (InstrumentKey, InstrumentQuantity) import Daml.Finance.Interface.Types.Date.Calendar import Daml.Finance.Interface.Types.Date.DayCount import Daml.Finance.Interface.Types.Date.RollConvention import Daml.Finance.Interface.Types.Date.Schedule -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K, Q) import Daml.Finance.Util.Date.DayCount import Daml.Finance.Util.Date.Schedule import Prelude hiding (and, or, (<=)) -type C = Claim Time Decimal Instrument.K Text +type C = Claim Time Decimal InstrumentKey Text t : Date -> Time t d = time d 12 00 00 -payment : Instrument.K -> Decimal -> C +payment : InstrumentKey -> Decimal -> C payment ccy qty = scale (Const qty) (one ccy) -delivery : Instrument.K -> Decimal -> C +delivery : InstrumentKey -> Decimal -> C delivery asset qty = give $ scale (Const qty) (one asset) -futurePayment : Instrument.K -> Decimal -> Date -> C +futurePayment : InstrumentKey -> Decimal -> Date -> C futurePayment ccy qty d = when (at $ t d) $ payment ccy qty -futureDelivery : Instrument.K -> Decimal -> Date -> C +futureDelivery : InstrumentKey -> Decimal -> Date -> C futureDelivery asset qty d = when (at $ t d) $ delivery asset qty -dvp : Instrument.K -> Decimal -> Instrument.K -> Decimal -> C +dvp : InstrumentKey -> Decimal -> InstrumentKey -> Decimal -> C dvp asset assetQty ccy ccyQty = delivery asset assetQty `and` payment ccy ccyQty -futureDvp : Instrument.K -> Decimal -> Instrument.K -> Decimal -> Date -> C +futureDvp : InstrumentKey -> Decimal -> InstrumentKey -> Decimal -> Date -> C futureDvp asset assetQty ccy ccyQty d = when (at $ t d) $ dvp asset assetQty ccy ccyQty -floatingStream : Observation Time Decimal Text -> Instrument.K -> [Time] -> C +floatingStream : Observation Time Decimal Text -> InstrumentKey -> [Time] -> C floatingStream rate ccy dates = case dates of d :: rest -> forward d rate (one ccy) `and` floatingStream rate ccy rest [] -> zero -fixedStream : Decimal -> Instrument.K -> [Time] -> C +fixedStream : Decimal -> InstrumentKey -> [Time] -> C fixedStream rate ccy dates = floatingStream (Const rate) ccy dates -bond : Instrument.K -> Decimal -> Decimal -> [Date] -> C +bond : InstrumentKey -> Decimal -> Decimal -> [Date] -> C bond ccy notional coupon dates = fixed notional (notional * coupon) ccy (map t dates) -callOptionPhysical : Instrument.K -> Decimal -> Instrument.K -> Decimal -> Date -> C +callOptionPhysical : InstrumentKey -> Decimal -> InstrumentKey -> Decimal -> Date -> C callOptionPhysical asset assetQty ccy ccyQty maturity = european (t maturity) $ dvp ccy ccyQty asset assetQty -putOptionPhysical : Instrument.K -> Decimal -> Instrument.K -> Decimal -> Date -> C +putOptionPhysical : InstrumentKey -> Decimal -> InstrumentKey -> Decimal -> Date -> C putOptionPhysical asset assetQty ccy ccyQty maturity = european (t maturity) $ dvp asset assetQty ccy ccyQty -callOptionCash : Text -> Instrument.K -> Decimal -> Date -> C +callOptionCash : Text -> InstrumentKey -> Decimal -> Date -> C callOptionCash underlying ccy strike maturity = european (t maturity) $ scale (observe underlying - Const strike) (one ccy) -putOptionCash : Text -> Instrument.K -> Decimal -> Date -> C +putOptionCash : Text -> InstrumentKey -> Decimal -> Date -> C putOptionCash underlying ccy strike maturity = european (t maturity) $ scale (Const strike - observe underlying) (one ccy) -callOptionCashAuto : Text -> Instrument.K -> Decimal -> Date -> C +callOptionCashAuto : Text -> InstrumentKey -> Decimal -> Date -> C callOptionCashAuto underlying ccy strike maturity = let predicate = Const strike <= observe underlying cash = (observe underlying) - Const strike in when (at $ t maturity) $ cond predicate (scale cash $ one ccy) zero -putOptionCashAuto : Text -> Instrument.K -> Decimal -> Date -> C +putOptionCashAuto : Text -> InstrumentKey -> Decimal -> Date -> C putOptionCashAuto underlying ccy strike maturity = let predicate = observe underlying <= Const strike cash = (Const strike) - (observe underlying) in when (at $ t maturity) $ cond predicate (scale cash $ one ccy) zero -kiPutOptionCashAuto : Text -> Instrument.K -> Decimal -> Decimal -> Date -> Date -> C +kiPutOptionCashAuto : Text -> InstrumentKey -> Decimal -> Decimal -> Date -> Date -> C kiPutOptionCashAuto underlying ccy strike barrier barrierStartDate maturity = let und = observe underlying @@ -100,21 +100,21 @@ kiPutOptionCashAuto underlying ccy strike barrier barrierStartDate maturity = barrierPredicate = und <= (Const barrier) in when (at $ t barrierStartDate) $ when barrierPredicate $ when (at $ t maturity) $ cond optionPredicate (scale cash $ one ccy) zero -callOptionPhysicalAuto : Text -> Instrument.K -> Decimal -> Instrument.K -> Decimal -> Decimal -> Date -> C +callOptionPhysicalAuto : Text -> InstrumentKey -> Decimal -> InstrumentKey -> Decimal -> Decimal -> Date -> C callOptionPhysicalAuto assetObs asset assetQty ccy ccyQty strike maturity = let predicate = Const strike <= observe assetObs payoff = dvp ccy ccyQty asset assetQty in when (at $ t maturity) $ cond predicate payoff zero -putOptionPhysicalAuto : Text -> Instrument.K -> Decimal -> Instrument.K -> Decimal -> Decimal -> Date -> C +putOptionPhysicalAuto : Text -> InstrumentKey -> Decimal -> InstrumentKey -> Decimal -> Decimal -> Date -> C putOptionPhysicalAuto assetObs asset assetQty ccy ccyQty strike maturity = let predicate = observe assetObs <= Const strike payoff = dvp asset assetQty ccy ccyQty in when (at $ t maturity) $ cond predicate payoff zero -reverseConvertibleExplicit : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Decimal -> Date -> C +reverseConvertibleExplicit : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Date -> C reverseConvertibleExplicit assetObs asset ccy notional strike interest maturity = let payment = (1.0 + interest) * notional @@ -122,7 +122,7 @@ reverseConvertibleExplicit assetObs asset ccy notional strike interest maturity put = putOptionPhysicalAuto assetObs asset (notional / strike) ccy payment strike maturity in deposit `and` (give put) -reverseConvertible : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Decimal -> Date -> C +reverseConvertible : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Date -> C reverseConvertible assetObs asset ccy notional strike interest maturity = let conversioncondition = observe assetObs <= Const strike @@ -130,42 +130,42 @@ reverseConvertible assetObs asset ccy notional strike interest maturity = principalPayout = scale (Const (notional * (1.0 + interest))) (one ccy) in when (at $ t maturity) $ cond conversioncondition conversionPayout principalPayout -rc : Text -> Instrument.K -> Decimal -> Decimal -> [Date] -> C +rc : Text -> InstrumentKey -> Decimal -> Decimal -> [Date] -> C rc asset ccy coupon strike dates = let bondLeg = bond ccy strike coupon dates put = putOptionCash asset ccy strike (last dates) in And (give put) bondLeg [] -brc : Text -> Instrument.K -> Decimal -> Decimal -> Decimal -> Date -> [Date] -> C +brc : Text -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Date -> [Date] -> C brc asset ccy coupon strike barrier barrierStartDate dates = let bondLeg = bond ccy strike coupon dates kiPut = kiPutOptionCashAuto asset ccy strike barrier barrierStartDate (last dates) in bondLeg `and` give kiPut -call : Instrument.K -> Text -> Decimal -> C +call : InstrumentKey -> Text -> Decimal -> C call ccy underlying strike = let payoff = (observe underlying) - (Const strike) payout = scale payoff (one ccy) in payout `or` zero -put : Instrument.K -> Text -> Decimal -> C +put : InstrumentKey -> Text -> Decimal -> C put ccy underlying strike = let payoff = Const strike - observe underlying payout = scale payoff (one ccy) in payout `or` zero -turboCall : Instrument.K -> Text -> Decimal -> Decimal -> Date -> C +turboCall : InstrumentKey -> Text -> Decimal -> Decimal -> Date -> C turboCall ccy underlying strike barrier startDate = let option = call ccy underlying strike barriercondition = observe underlying <= Const barrier in until barriercondition $ anytime (at $ t startDate) option -inverseConvertibleExplicit : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Decimal -> Date -> C +inverseConvertibleExplicit : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Date -> C inverseConvertibleExplicit assetObs asset ccy notional strike interest maturity = let interestAmount = notional * strike * interest @@ -173,7 +173,7 @@ inverseConvertibleExplicit assetObs asset ccy notional strike interest maturity call = callOptionPhysicalAuto assetObs asset notional ccy (notional * strike + interestAmount) strike maturity in deposit `and` (give call) -inverseConvertible : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Decimal -> Date -> C +inverseConvertible : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Date -> C inverseConvertible assetObs asset ccy notional strike interest maturity = let interestAmount = notional * strike * interest @@ -182,19 +182,19 @@ inverseConvertible assetObs asset ccy notional strike interest maturity = principalPayout = scale (Const notional) (one asset) `and` scale (Const interestAmount) (one ccy) in when (at $ t maturity) $ cond conversioncondition conversionPayout principalPayout -binaryCallOption : Text -> Instrument.K -> Decimal -> Date -> C +binaryCallOption : Text -> InstrumentKey -> Decimal -> Date -> C binaryCallOption underlying ccy strike expiry = when (at $ t expiry) $ cond (Const strike <= observe underlying) (one ccy) zero `or` zero -koPutWarrant : Decimal -> Decimal -> Text -> Instrument.K -> C +koPutWarrant : Decimal -> Decimal -> Text -> InstrumentKey -> C koPutWarrant barrier strike underlying ccy = cond (observe underlying <= Const barrier) (scale (Const strike + (observe underlying)) (one ccy) `or` zero) zero -convertibleShare : Instrument.K -> Instrument.K -> Date -> C +convertibleShare : InstrumentKey -> InstrumentKey -> Date -> C convertibleShare from to conversionDate = when (at $ t conversionDate) $ (give (one from) `and` (one to)) `or` (one from) -interestRateSwap : Text -> Decimal -> Instrument.K -> [Date] -> C +interestRateSwap : Text -> Decimal -> InstrumentKey -> [Date] -> C interestRateSwap floatingRateId fixedRate ccyId fixingDates = let floatObs = observe floatingRateId @@ -202,7 +202,7 @@ interestRateSwap floatingRateId fixedRate ccyId fixingDates = fixedLeg = fixedStream fixedRate ccyId in swap floatingLeg fixedLeg (map t fixingDates) -basisSwap : Text -> Text -> Decimal -> Instrument.K -> [Date] -> C +basisSwap : Text -> Text -> Decimal -> InstrumentKey -> [Date] -> C basisSwap floatingRateId1 floatingRateId2 spread ccyId fixingDates = let floatObs1 = observe floatingRateId1 @@ -211,7 +211,7 @@ basisSwap floatingRateId1 floatingRateId2 spread ccyId fixingDates = floatingLeg2 = floatingStream floatObs2 ccyId in swap floatingLeg1 floatingLeg2 (map t fixingDates) -bermudanSwaption : Text -> Decimal -> Instrument.K -> Decimal -> [Date] -> [Date] -> C +bermudanSwaption : Text -> Decimal -> InstrumentKey -> Decimal -> [Date] -> [Date] -> C bermudanSwaption floatingRateId fixedRate fixedCcyId principal fixingDates exerciseDates = let floatObs = observe floatingRateId @@ -219,7 +219,7 @@ bermudanSwaption floatingRateId fixedRate fixedCcyId principal fixingDates exerc fixedLeg = fixed principal fixedRate fixedCcyId in bermudan (map t exerciseDates) $ swap floatingLeg fixedLeg (map t fixingDates) -convertibleNote : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Date -> Decimal -> Decimal -> C +convertibleNote : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Date -> Decimal -> Decimal -> C convertibleNote underlyingObs underlying ccy principal discount maturity interest cap = let conversioncondition = observe underlyingObs <= Const cap @@ -227,7 +227,7 @@ convertibleNote underlyingObs underlying ccy principal discount maturity interes cappedPayout = scale (Const (principal * (1.0 + interest)) / (Const cap * Const (1.0 - discount))) (one underlying) in when (at $ t maturity) $ cond conversioncondition conversionPayout cappedPayout -accumulator : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Decimal -> Decimal -> [Date] -> C +accumulator : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Decimal -> [Date] -> C accumulator assetObs asset ccy strike aboveBuyQty belowBuyQty knockOutLevel dates = let kocondition = Const knockOutLevel <= observe assetObs @@ -245,7 +245,7 @@ accumulator assetObs asset ccy strike aboveBuyQty belowBuyQty knockOutLevel date claims = foldr accumulator first t in until kocondition claims -decumulator : Text -> Instrument.K -> Instrument.K -> Decimal -> Decimal -> Decimal -> Decimal -> [Date] -> C +decumulator : Text -> InstrumentKey -> InstrumentKey -> Decimal -> Decimal -> Decimal -> Decimal -> [Date] -> C decumulator assetObs asset ccy strike aboveSellQty belowSellQty knockOutLevel dates = let kocondition = observe assetObs <= Const knockOutLevel @@ -263,7 +263,7 @@ decumulator assetObs asset ccy strike aboveSellQty belowSellQty knockOutLevel da claims = foldr accumulator first t in until kocondition claims -buyWriteNote : Date -> Date -> Date -> Text -> Instrument.K -> Decimal -> Decimal -> Decimal -> C +buyWriteNote : Date -> Date -> Date -> Text -> InstrumentKey -> Decimal -> Decimal -> Decimal -> C buyWriteNote issueDate endDate maturityDate und ccy couponRatePerAnnum denominationCcy capPrice = let (iy, im, id) = toGregorian issueDate @@ -329,7 +329,7 @@ buyWriteNote issueDate endDate maturityDate und ccy couponRatePerAnnum denominat in cCoupon `and` cPayoff -- | Multiple delivery locations -ngMultiLocation : Date -> Date -> [Instrument.Q] -> Decimal -> Instrument.K -> C +ngMultiLocation : Date -> Date -> [InstrumentQuantity] -> Decimal -> InstrumentKey -> C ngMultiLocation startDate endDate deliveries price ccy = let total = sum $ map (.amount) deliveries @@ -343,7 +343,7 @@ ngMultiLocation startDate endDate deliveries price ccy = in claim -- | Location / Pricing options -ngLocationPricingOption : Date -> Date -> Decimal -> Instrument.K -> Text -> Instrument.K -> Text -> Instrument.K -> C +ngLocationPricingOption : Date -> Date -> Decimal -> InstrumentKey -> Text -> InstrumentKey -> Text -> InstrumentKey -> C ngLocationPricingOption startDate endDate quantity location1 price1 location2 price2 ccy = let dates = rollDaily startDate endDate @@ -353,7 +353,7 @@ ngLocationPricingOption startDate endDate quantity location1 price1 location2 pr in claim -- | Capped price -ngCapped : Date -> Date -> Decimal -> Instrument.K -> Text -> Decimal -> Instrument.K -> C +ngCapped : Date -> Date -> Decimal -> InstrumentKey -> Text -> Decimal -> InstrumentKey -> C ngCapped startDate endDate quantity asset price cap ccy = let dates = rollDaily startDate endDate @@ -367,7 +367,7 @@ ngCapped startDate endDate quantity asset price cap ccy = in claim -- | Price-conditional location -ngConditionalLocation : Date -> Date -> Decimal -> Instrument.K -> Text -> Decimal -> Instrument.K -> Text -> Instrument.K -> C +ngConditionalLocation : Date -> Date -> Decimal -> InstrumentKey -> Text -> Decimal -> InstrumentKey -> Text -> InstrumentKey -> C ngConditionalLocation startDate endDate quantity location1 price1 price1Cap location2 price2 ccy = let dates = rollDaily startDate endDate @@ -376,7 +376,7 @@ ngConditionalLocation startDate endDate quantity location1 price1 price1Cap loca claim = mconcat $ map (\date -> when (at $ t date) $ cond (observe price1 <= Const price1Cap) c1 c2) dates in claim -loan : Date -> Date -> Instrument.K -> Decimal -> Instrument.K -> [Date] -> C +loan : Date -> Date -> InstrumentKey -> Decimal -> InstrumentKey -> [Date] -> C loan startDate endDate underlying interestAmount interestCurrency interestDates = let initial = when (at $ t startDate) $ one underlying diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/BondIssuance.daml b/src/daml/Daml/Finance/App/Setup/Scenario/BondIssuance.daml new file mode 100644 index 00000000..17582c1c --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/BondIssuance.daml @@ -0,0 +1,170 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.BondIssuance where + +import DA.Date (Month(..), date, toDateUTC, toGregorian) +import DA.Foldable (mapA_) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createIssuanceService, createIssuanceAutoService, createLifecycleService, createStructuringService, createStructuringAutoService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createCalendar, createClockAndEvent, createObservation, deposit, issue, originateFixedRateBond, originateFloatingRateBond, originateInflationLinkedBond, originateToken, originateZeroCouponBond, transfer) +import Daml.Finance.Claims.Lifecycle.Rule qualified as Lifecycle (Rule(..)) +import Daml.Finance.Data.Time.DateClock qualified as Data (DateClock) +import Daml.Finance.Data.Time.DateClockUpdate qualified as Data (DateClockUpdateEvent) +import Daml.Finance.Interface.Lifecycle.Rule.Lifecycle qualified as Lifecycle (Evolve(..), I) +import Daml.Finance.Interface.Types.Common.Types (Id(..)) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum(..)) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum(..)) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Lifecycle.Effect qualified as Lifecycle (Effect) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [ operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3 ] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator centralBank + createCustodianRole operator registry + createCustodianRole operator custodian + + -- Services + let + assets = ["BOND1", "BOND2", "BOND3", "BOND4"] + settlementPaths = [[issuer], [custodian], [inv1, custodian], [inv2, custodian], [inv3, custodian]] + cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = registry; pathsToRootCustodian = settlementPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + createCustodyService operator centralBank registry public paths + createCustodyService operator centralBank issuer public paths + createCustodyService operator centralBank custodian public paths + createCustodyService operator registry issuer public paths + createCustodyService operator registry custodian public paths + createCustodyService operator custodian inv1 public paths + createCustodyService operator custodian inv2 public paths + createCustodyService operator custodian inv3 public paths + createIssuanceService operator registry issuer + createIssuanceAutoService operator registry issuer + createStructuringService operator registry issuer + createStructuringAutoService operator registry issuer + createLifecycleService operator registry issuer public + + -- Accounts + registryCashAccount <- createAccount operator centralBank registry public "Registry@CentralBank/Cash" empty + issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank/Cash" empty + custodianCashAccount <- createAccount operator centralBank custodian public "Custodian@CentralBank/Cash" empty + inv1CashAccount <- createAccount operator custodian inv1 public "Investor1@Custodian/Cash" empty + inv2CashAccount <- createAccount operator custodian inv2 public "Investor2@Custodian/Cash" empty + inv3CashAccount <- createAccount operator custodian inv3 public "Investor3@Custodian/Cash" empty + issuerSecAccount <- createAccount operator registry issuer public "Issuer@Registry/Securties" empty + custodianSecAccount <- createAccount operator registry custodian public "Custodian@Registry/Securities" empty + inv1SecAccount <- createAccount operator custodian inv1 public "Investor1@Custodian/Securities" empty + inv2SecAccount <- createAccount operator custodian inv2 public "Investor2@Custodian/Securities" empty + inv3SecAccount <- createAccount operator custodian inv3 public "Investor3@Custodian/Securities" empty + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + tt d = time d 0 0 0 + epoch = tt $ date 1970 Jan 1 + (ty, tm, td) = toGregorian today + (timeObservableCid, eventCid) <- createClockAndEvent parties (date 2021 tm td) (singleton public) + + -- Data + let + pub = fromList [("Public", singleton public)] + libor12m = "USD-LIBOR-12M" + libor12mData = + [ (tt $ date 2020 tm td, 0.0010) + , (tt $ date 2021 tm td, 0.0015) + , (tt $ date 2022 tm td, 0.0020) ] + cpi = "CPI" + cpiData = + [ (tt $ date 2021 tm td, 102.2500) + , (tt $ date 2022 tm td, 104.5000) ] + obsCid1 <- createObservation issuer libor12m libor12mData pub + obsCid2 <- createObservation issuer cpi cpiData pub + createCalendar registry "EMPTY" [] [] pub + + -- Instruments + usd <- originateToken centralBank centralBank pub epoch "USD" "United States Dollar" + bond1 <- originateZeroCouponBond registry issuer "BOND1" "Zero Coupon Bond 5Y" pub (tt $ date 2022 tm td) (date 2022 tm td) (date 2027 Sep td) usd + bond2 <- originateFixedRateBond registry issuer "BOND2" "Fixed Rate Bond 5Y @ 1.1%" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] registry (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.011 M 12 usd + bond3 <- originateFloatingRateBond registry issuer "BOND3" "Floating Rate Bond 5Y @ LIBOR-12M + 0.5%" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] registry (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.005 M 12 usd libor12m + bond4 <- originateInflationLinkedBond registry issuer "BOND4" "Inflation Linked Bond 5Y @ 0.5% * (1 + CPI)" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] registry (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.005 M 12 usd cpi 100.0 + + let securities = [bond1, bond2, bond3, bond4] + createAccountDirectory issuer ([(usd, issuerCashAccount)] <> map (\s -> (s, issuerSecAccount)) securities) $ singleton public + createAccountDirectory custodian ([(usd, custodianCashAccount)] <> map (\s -> (s, custodianSecAccount)) securities) $ singleton public + createAccountDirectory inv1 ([(usd, inv1CashAccount)] <> map (\s -> (s, inv1SecAccount)) securities) $ singleton public + createAccountDirectory inv2 ([(usd, inv2CashAccount)] <> map (\s -> (s, inv2SecAccount)) securities) $ singleton public + createAccountDirectory inv3 ([(usd, inv3CashAccount)] <> map (\s -> (s, inv3SecAccount)) securities) $ singleton public + + -- Lifecycle + lifecycleCid <- toInterfaceContractId @Lifecycle.I <$> create Lifecycle.Rule with providers = singleton operator; lifecycler = issuer; observers = pub; id = Id "LC-RULE"; description = "Dynamic instrument lifecycle rule" + (Some bond2, effectCids2) <- exercise lifecycleCid Lifecycle.Evolve with eventCid; instrument = bond2; observableCids = [obsCid1, obsCid2] + (Some bond3, effectCids3) <- exercise lifecycleCid Lifecycle.Evolve with eventCid; instrument = bond3; observableCids = [obsCid1, obsCid2] + (Some bond4, effectCids4) <- exercise lifecycleCid Lifecycle.Evolve with eventCid; instrument = bond4; observableCids = [obsCid1, obsCid2] + mapA_ (\eCid -> archive $ fromInterfaceContractId @Lifecycle.Effect eCid) effectCids2 + mapA_ (\eCid -> archive $ fromInterfaceContractId @Lifecycle.Effect eCid) effectCids3 + mapA_ (\eCid -> archive $ fromInterfaceContractId @Lifecycle.Effect eCid) effectCids4 + archive $ fromInterfaceContractId @Data.DateClock timeObservableCid + archive $ fromInterfaceContractId @Data.DateClockUpdateEvent eventCid + + (timeObservableCid, eventCid) <- createClockAndEvent parties today (singleton public) + + -- Holdings + (_, bond2HoldingCid) <- issue operator registry issuer public (qty 100_000_000.0 bond2) issuerSecAccount + (_, bond3HoldingCid) <- issue operator registry issuer public (qty 100_000_000.0 bond3) issuerSecAccount + (_, bond4HoldingCid) <- issue operator registry issuer public (qty 100_000_000.0 bond4) issuerSecAccount + + transfer issuer custodianSecAccount public $ coerceContractId bond2HoldingCid + transfer issuer custodianSecAccount public $ coerceContractId bond3HoldingCid + transfer issuer custodianSecAccount public $ coerceContractId bond4HoldingCid + + holdings <- sequence + [ deposit operator custodian inv1 public (qty 50_000_000.0 bond2) inv1SecAccount + , deposit operator custodian inv2 public (qty 30_000_000.0 bond2) inv2SecAccount + , deposit operator custodian inv3 public (qty 20_000_000.0 bond2) inv3SecAccount + , deposit operator custodian inv1 public (qty 60_000_000.0 bond3) inv1SecAccount + , deposit operator custodian inv2 public (qty 30_000_000.0 bond3) inv2SecAccount + , deposit operator custodian inv3 public (qty 10_000_000.0 bond3) inv3SecAccount + , deposit operator custodian inv1 public (qty 70_000_000.0 bond4) inv1SecAccount + , deposit operator custodian inv2 public (qty 20_000_000.0 bond4) inv2SecAccount + , deposit operator custodian inv3 public (qty 10_000_000.0 bond4) inv3SecAccount + , deposit operator centralBank registry public (qty 120_000_000.0 usd) registryCashAccount + , deposit operator centralBank custodian public (qty 120_000_000.0 usd) custodianCashAccount + , deposit operator custodian inv1 public (qty 50_000_000.0 usd) inv1CashAccount + , deposit operator custodian inv2 public (qty 40_000_000.0 usd) inv2CashAccount + , deposit operator custodian inv3 public (qty 30_000_000.0 usd) inv3CashAccount ] + + let + instruments = [usd, bond1, bond2, bond3, bond4] + accounts = [registryCashAccount, issuerCashAccount, custodianCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, issuerSecAccount, custodianSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script () +run = do + parties@[operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Issuer", "Custodian", "Investor1", "Investor2", "Investor3"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + pure () diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/CorporateActions.daml b/src/daml/Daml/Finance/App/Setup/Scenario/CorporateActions.daml new file mode 100644 index 00000000..3b54579d --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/CorporateActions.daml @@ -0,0 +1,182 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.CorporateActions where + +import DA.Date (Month(..), date, toDateUTC, toGregorian) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.Interface.Settlement.Batch qualified as Batch (Settle(..)) +import Daml.Finance.Interface.Settlement.Types (Allocation(..), Approval(..)) +import Daml.Finance.Interface.Types.Common.Types (Id(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Script.Workflow (allocateAndApprove, claimEffect, declareDividend) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createIssuanceService, createIssuanceAutoService, createLifecycleService, createSettlementService, createStructuringService, createStructuringAutoService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createClockAndEvent, deposit, issue, originateEquity, originateToken, transfer) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [ operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3 ] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator centralBank + createCustodianRole operator registry + createCustodianRole operator issuer + createCustodianRole operator custodian + + -- Services + let + assets = ["AcmePref", "AcmeCommon"] + cashSettlementPaths = [[issuer], [registry], [custodian], [inv1, custodian], [inv2, custodian], [inv3, custodian]] + secSettlementPaths = [[registry], [custodian, registry], [inv1, custodian, registry], [inv2, custodian, registry], [inv3, custodian, registry]] + cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = cashSettlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = issuer; pathsToRootCustodian = secSettlementPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + createCustodyService operator centralBank issuer public paths + createCustodyService operator centralBank registry public paths + createCustodyService operator centralBank custodian public paths + createCustodyService operator issuer registry public paths + createCustodyService operator registry issuer public paths + createCustodyService operator registry custodian public paths + createCustodyService operator custodian inv1 public paths + createCustodyService operator custodian inv2 public paths + createCustodyService operator custodian inv3 public paths + createIssuanceService operator registry issuer + createIssuanceAutoService operator registry issuer + createStructuringService operator registry issuer + createStructuringAutoService operator registry issuer + createLifecycleService operator registry issuer public + createSettlementService operator issuer registry paths + createSettlementService operator registry custodian paths + createSettlementService operator custodian inv1 paths + createSettlementService operator custodian inv2 paths + createSettlementService operator custodian inv3 paths + + -- Accounts + registryCashAccount <- createAccount operator centralBank registry public "Registry@CentralBank|Cash" empty + issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank|Cash" empty + custodianCashAccount <- createAccount operator centralBank custodian public "Custodian@CentralBank|Cash" empty + inv1CashAccount <- createAccount operator custodian inv1 public "Investor1@Custodian|Cash" empty + inv2CashAccount <- createAccount operator custodian inv2 public "Investor2@Custodian|Cash" empty + inv3CashAccount <- createAccount operator custodian inv3 public "Investor3@Custodian|Cash" empty + registrySecAccount <- createAccount operator issuer registry public "Registry@Issuer|Securities" empty + issuerSecAccount <- createAccount operator registry issuer public "Issuer@Registry|Securities" empty + custodianSecAccount <- createAccount operator registry custodian public "Custodian@Registry|Securities" empty + inv1SecAccount <- createAccount operator custodian inv1 public "Investor1@Custodian|Securities" empty + inv2SecAccount <- createAccount operator custodian inv2 public "Investor2@Custodian|Securities" empty + inv3SecAccount <- createAccount operator custodian inv3 public "Investor3@Custodian|Securities" empty + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + tt d = time d 0 0 0 + epoch = tt $ date 1970 Jan 1 + (ty, tm, td) = toGregorian today + pub = fromList [("Public", singleton public)] + (clockCid, eventCid) <- createClockAndEvent parties today (singleton public) + + -- Instruments + usd <- originateToken centralBank centralBank pub epoch "USD" "United States Dollar" + equity <- originateEquity registry issuer pub epoch "AcmePref" "Acme, Inc. Preferred Stock" + equity2 <- originateEquity registry issuer pub epoch "AcmeCommon" "Acme, Inc. Common Stock" + + -- Data + createAccountDirectory issuer [(usd, issuerCashAccount), (equity, issuerSecAccount)] $ singleton public + createAccountDirectory registry [(usd, registryCashAccount), (equity, registrySecAccount)] $ singleton public + createAccountDirectory custodian [(usd, custodianCashAccount), (equity, custodianSecAccount)] $ singleton public + createAccountDirectory inv1 [(usd, inv1CashAccount), (equity, inv1SecAccount)] $ singleton public + createAccountDirectory inv2 [(usd, inv2CashAccount), (equity, inv2SecAccount)] $ singleton public + createAccountDirectory inv3 [(usd, inv3CashAccount), (equity, inv3SecAccount)] $ singleton public + + -- Holdings + registryEquityCid <- deposit operator issuer registry public (qty 1_000_000.0 equity) registrySecAccount + (_, issuerEquityCid) <- issue operator registry issuer public (qty 1_000_000.0 equity) issuerSecAccount + custodianEquityCid <- transfer issuer custodianSecAccount public $ coerceContractId issuerEquityCid + inv1EquityCid <- deposit operator custodian inv1 public (qty 500_000.0 equity) inv1SecAccount + inv2EquityCid <- deposit operator custodian inv2 public (qty 300_000.0 equity) inv2SecAccount + inv3EquityCid <- deposit operator custodian inv3 public (qty 200_000.0 equity) inv3SecAccount + + issuerCashCid <- coerceContractId <$> deposit operator centralBank issuer public (qty 500_000.0 usd) issuerCashAccount + registryCashCid <- coerceContractId <$> deposit operator centralBank registry public (qty 500_000.0 usd) registryCashAccount + + let + instruments = [usd, equity, equity2] + accounts = [registryCashAccount, issuerCashAccount, custodianCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, registrySecAccount, issuerSecAccount, custodianSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount] + holdings = [registryEquityCid, issuerEquityCid, toInterfaceContractId custodianEquityCid, inv1EquityCid, inv2EquityCid, inv3EquityCid, issuerCashCid, registryCashCid] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script () +run = do + parties@[operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Issuer", "Custodian", "Investor1", "Investor2", "Investor3"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + pure () + +testDividend : Script () +testDividend = do + -- Fixture + parties@[operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Issuer", "Custodian", "Investor1", "Investor2", "Investor3"] + Fixture{instruments; accounts; holdings} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + -- Workflows + t <- getTime + let + [usd, equity, _] = instruments + [registryCashAccount, issuerCashAccount, custodianCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, registrySecAccount, issuerSecAccount, custodianSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount] = accounts + [registryEquityCid, issuerEquityCid, custodianEquityCid, inv1EquityCid, inv2EquityCid, inv3EquityCid, issuerCashCid, registryCashCid] = holdings + today = toDateUTC t + todayTime = time today 0 0 0 + + (newEquity, effectCid) <- declareDividend operator registry issuer public equity todayTime [qty 0.5 usd] + + -- Claim registry holding + (batchCid, [oldCid, newCid, cashCid]) <- claimEffect operator issuer registry public effectCid [registryEquityCid] (Id "Registry-Settlement") + allocateAndApprove operator issuer oldCid (Pledge registryEquityCid) DebitSender + allocateAndApprove operator issuer newCid CreditReceiver (TakeDelivery registrySecAccount) + allocateAndApprove operator issuer cashCid (Pledge issuerCashCid) (TakeDelivery registryCashAccount) + submitMulti [issuer] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton issuer + + -- Claim custodian holding + (batchCid, [oldCid, newCid, cashCid]) <- claimEffect operator registry custodian public effectCid [toInterfaceContractId custodianEquityCid] (Id "Custodian-Settlement") + allocateAndApprove operator registry oldCid (Pledge custodianEquityCid) DebitSender + allocateAndApprove operator registry newCid CreditReceiver (TakeDelivery custodianSecAccount) + allocateAndApprove operator registry cashCid (Pledge registryCashCid) (TakeDelivery custodianCashAccount) + submitMulti [registry] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton registry + + -- Claim investor holdings + (batchCid, [oldCid, newCid, cashCid]) <- claimEffect operator custodian inv1 public effectCid [toInterfaceContractId inv1EquityCid] (Id "Investor1-Settlement") + allocateAndApprove operator custodian oldCid (Pledge inv1EquityCid) DebitSender + allocateAndApprove operator custodian newCid CreditReceiver (TakeDelivery inv1SecAccount) + allocateAndApprove operator custodian cashCid CreditReceiver (TakeDelivery inv1CashAccount) + submitMulti [custodian] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton custodian + (batchCid, [oldCid, newCid, cashCid]) <- claimEffect operator custodian inv2 public effectCid [toInterfaceContractId inv2EquityCid] (Id "Investor2-Settlement") + allocateAndApprove operator custodian oldCid (Pledge inv2EquityCid) DebitSender + allocateAndApprove operator custodian newCid CreditReceiver (TakeDelivery inv2SecAccount) + allocateAndApprove operator custodian cashCid CreditReceiver (TakeDelivery inv2CashAccount) + submitMulti [custodian] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton custodian + (batchCid, [oldCid, newCid, cashCid]) <- claimEffect operator custodian inv3 public effectCid [toInterfaceContractId inv3EquityCid] (Id "Investor3-Settlement") + allocateAndApprove operator custodian oldCid (Pledge inv3EquityCid) DebitSender + allocateAndApprove operator custodian newCid CreditReceiver (TakeDelivery inv3SecAccount) + allocateAndApprove operator custodian cashCid CreditReceiver (TakeDelivery inv3CashAccount) + submitMulti [custodian] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton custodian + + pure () diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/DecentralizedFinance.daml b/src/daml/Daml/Finance/App/Setup/Scenario/DecentralizedFinance.daml new file mode 100644 index 00000000..0991115d --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/DecentralizedFinance.daml @@ -0,0 +1,142 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.DecentralizedFinance where + +import DA.Date (toDateUTC) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Interface.Decentralized.Exchange.Service qualified as Dex (I, Swap(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole, createExchangeRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createDecentralizedExchangeService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, deposit, originateEquity, originateToken) +import Daml.Finance.App.Setup.Util.Script.Workflow () +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [operator, public, fed, ecb, snb, boe, con, trd] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator fed + createCustodianRole operator ecb + createCustodianRole operator snb + createCustodianRole operator boe + createExchangeRole operator con + + -- Services + createCustodyService operator fed con public empty + createCustodyService operator fed trd public empty + createCustodyService operator ecb con public empty + createCustodyService operator ecb trd public empty + createCustodyService operator snb con public empty + createCustodyService operator snb trd public empty + createCustodyService operator boe con public empty + createCustodyService operator boe trd public empty + + -- Accounts + let pub = fromList [("Public", singleton public)] + conFedAccount <- createAccount operator fed con public "Consortium@FED" pub + conEcbAccount <- createAccount operator ecb con public "Consortium@ECB" pub + conSnbAccount <- createAccount operator snb con public "Consortium@SNB" pub + conBoeAccount <- createAccount operator boe con public "Consortium@BOE" pub + trdFedAccount <- createAccount operator fed trd public "Trader@FED" empty + trdEcbAccount <- createAccount operator ecb trd public "Trader@ECB" empty + trdSnbAccount <- createAccount operator snb trd public "Trader@SNB" empty + trdBoeAccount <- createAccount operator boe trd public "Trader@BOE" empty + let + conAccounts = [conFedAccount, conEcbAccount, conSnbAccount, conBoeAccount] + trdAccounts = [trdFedAccount, trdEcbAccount, trdSnbAccount, trdBoeAccount] + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + + -- Instruments + usd <- originateToken fed fed pub todayTime "USD" "United States Dollar" + eur <- originateToken ecb ecb pub todayTime "EUR" "Euro" + chf <- originateToken snb snb pub todayTime "CHF" "Swiss Franc" + gbp <- originateToken boe boe pub todayTime "GBP" "British Pound" + eurusd <- originateEquity con con pub todayTime "LPS-EURUSD" "Liqudity Pool Share for EURUSD" + usdchf <- originateEquity con con pub todayTime "LPS-USDCHF" "Liqudity Pool Share for USDCHF" + usdgbp <- originateEquity con con pub todayTime "LPS-USDGBP" "Liqudity Pool Share for USDGBP" + eurchf <- originateEquity con con pub todayTime "LPS-EURCHF" "Liqudity Pool Share for EURCHF" + eurgbp <- originateEquity con con pub todayTime "LPS-EURGBP" "Liqudity Pool Share for EURGBP" + gbpchf <- originateEquity con con pub todayTime "LPS-GBPCHF" "Liqudity Pool Share for GBPCHF" + let currencies = [usd, eur, chf, gbp] + + -- Holdings + conUsdCid1 <- deposit operator fed con public (qty 105_000_000.0 usd) conFedAccount + conUsdCid2 <- deposit operator fed con public (qty 100_000_000.0 usd) conFedAccount + conUsdCid3 <- deposit operator fed con public (qty 100_000_000.0 usd) conFedAccount + conEurCid1 <- deposit operator ecb con public (qty 100_000_000.0 eur) conEcbAccount + conEurCid2 <- deposit operator ecb con public (qty 100_000_000.0 eur) conEcbAccount + conEurCid3 <- deposit operator ecb con public (qty 100_000_000.0 eur) conEcbAccount + conChfCid1 <- deposit operator snb con public (qty 95_000_000.0 chf) conSnbAccount + conChfCid2 <- deposit operator snb con public (qty 100_000_000.0 chf) conSnbAccount + conChfCid3 <- deposit operator snb con public (qty 115_000_000.0 chf) conSnbAccount + conGbpCid1 <- deposit operator boe con public (qty 80_000_000.0 gbp) conBoeAccount + conGbpCid2 <- deposit operator boe con public (qty 85_000_000.0 gbp) conBoeAccount + conGbpCid3 <- deposit operator boe con public (qty 100_000_000.0 gbp) conBoeAccount + trdUsdCid <- deposit operator fed trd public (qty 10_000_000.0 usd) trdFedAccount + -- trdEurCid <- coerceContractId <$> deposit operator ecb trd public (qty 10_000_000.0 eur) trdEcbAccount + -- trdChfCid <- coerceContractId <$> deposit operator snb trd public (qty 10_000_000.0 chf) trdSnbAccount + -- trdGbpCid <- coerceContractId <$> deposit operator boe trd public (qty 10_000_000.0 gbp) trdBoeAccount + + -- Data + createAccountDirectory con (zip currencies conAccounts) $ singleton public + createAccountDirectory trd (zip currencies trdAccounts) $ singleton public + + -- Workflows + dex1Cid <- toInterfaceContractId <$> createDecentralizedExchangeService con (singleton public) "DEX-EURUSD" (qty 100_000_000.0 eurusd) (qty 100_000_000.0 eur) conEcbAccount (coerceContractId conEurCid1) (qty 105_000_000.0 usd) conFedAccount (coerceContractId conUsdCid1) + dex2Cid <- toInterfaceContractId <$> createDecentralizedExchangeService con (singleton public) "DEX-USDCHF" (qty 100_000_000.0 usdchf) (qty 100_000_000.0 usd) conFedAccount (coerceContractId conUsdCid2) (qty 95_000_000.0 chf) conSnbAccount (coerceContractId conChfCid1) + dex3Cid <- toInterfaceContractId <$> createDecentralizedExchangeService con (singleton public) "DEX-USDGBP" (qty 100_000_000.0 usdgbp) (qty 100_000_000.0 usd) conFedAccount (coerceContractId conUsdCid3) (qty 80_000_000.0 gbp) conBoeAccount (coerceContractId conGbpCid1) + dex4Cid <- toInterfaceContractId <$> createDecentralizedExchangeService con (singleton public) "DEX-EURCHF" (qty 100_000_000.0 eurchf) (qty 100_000_000.0 eur) conEcbAccount (coerceContractId conEurCid2) (qty 100_000_000.0 chf) conSnbAccount (coerceContractId conChfCid2) + dex5Cid <- toInterfaceContractId <$> createDecentralizedExchangeService con (singleton public) "DEX-EURGBP" (qty 100_000_000.0 eurgbp) (qty 100_000_000.0 eur) conEcbAccount (coerceContractId conEurCid3) (qty 85_000_000.0 gbp) conBoeAccount (coerceContractId conGbpCid2) + dex6Cid <- toInterfaceContractId <$> createDecentralizedExchangeService con (singleton public) "DEX-GBPCHF" (qty 100_000_000.0 gbpchf) (qty 100_000_000.0 gbp) conBoeAccount (coerceContractId conGbpCid3) (qty 115_000_000.0 chf) conSnbAccount (coerceContractId conChfCid3) + + let + instruments = [usd, eur, chf, gbp, eurusd, usdchf, usdgbp, eurchf, eurgbp, gbpchf] + accounts = [conFedAccount, conEcbAccount, conSnbAccount, conBoeAccount, trdFedAccount, trdEcbAccount, trdSnbAccount, trdBoeAccount] + holdings = [conUsdCid1, conUsdCid2, conUsdCid3, conEurCid1, conEurCid2, conEurCid3, conChfCid1, conChfCid2, conChfCid3, conGbpCid1, conGbpCid2, conGbpCid3, trdUsdCid ] + services = [dex1Cid, dex2Cid, dex3Cid, dex4Cid, dex5Cid, dex6Cid] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, fed, ecb, snb, boe, con, trd] <- + mapA allocateParty ["Operator", "Public", "FED", "ECB", "SNB", "BOE", "Consortium", "Trader"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + +testRoundTrip : Script () +testRoundTrip = do + parties@[operator, public, fed, ecb, snb, boe, con, trd] <- + mapA allocateParty ["Operator", "Public", "FED", "ECB", "SNB", "BOE", "Consortium", "Trader"] + Fixture{accounts; holdings, services} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + let + [_, _, _, _, trdFedAccount, trdEcbAccount, trdSnbAccount, trdBoeAccount] = accounts + [_, _, _, _, _, _, _, _, _, _, _, _, trdUsdCid] = holdings + [dex1Cid, dex2Cid, dex3Cid, dex4Cid, dex5Cid, dex6Cid] = services + + (dex1Cid, [trdEurCid]) <- submitMulti [trd] [public] do exerciseCmd (coerceInterfaceContractId dex1Cid : ContractId Dex.I) Dex.Swap with actor = trd; xFungibleCid = coerceContractId trdUsdCid; yAccount = trdEcbAccount + (dex4Cid, [trdChfCid]) <- submitMulti [trd] [public] do exerciseCmd (coerceInterfaceContractId dex4Cid : ContractId Dex.I) Dex.Swap with actor = trd; xFungibleCid = coerceContractId trdEurCid; yAccount = trdSnbAccount + (dex6Cid, [trdGbpCid]) <- submitMulti [trd] [public] do exerciseCmd (coerceInterfaceContractId dex6Cid : ContractId Dex.I) Dex.Swap with actor = trd; xFungibleCid = coerceContractId trdChfCid; yAccount = trdBoeAccount + (dex3Cid, [trdUsdCid]) <- submitMulti [trd] [public] do exerciseCmd (coerceInterfaceContractId dex3Cid : ContractId Dex.I) Dex.Swap with actor = trd; xFungibleCid = coerceContractId trdGbpCid; yAccount = trdFedAccount + + pure () diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/Default.daml b/src/daml/Daml/Finance/App/Setup/Scenario/Default.daml new file mode 100644 index 00000000..1f525882 --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/Default.daml @@ -0,0 +1,189 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.Default where + +import ContingentClaims.Core.Builders (unrollDates) +import DA.Date (DayOfWeek(Saturday, Sunday), addDays, date, toDateUTC, toGregorian) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Setup.Payoff (basisSwap, bond, callOptionPhysical, callOptionCash, futureDvp, interestRateSwap) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Script.Common (getHolding) +import Daml.Finance.App.Setup.Util.Script.Workflow (createAskOrder, createAuction, createAuctionBid, createBidOrder, list, processAuction) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole, createDistributorRole, createExchangeRole) +import Daml.Finance.App.Setup.Util.Update.Service (createAuctionService, createAuctionAutoService, createBiddingService, createBiddingAutoService, createCustodyService, createIssuanceService, createIssuanceAutoService, createLifecycleService, createListingService, createListingAutoService, createStructuringService, createStructuringAutoService, createTradingService, createTradingAutoService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createCalendar, createClockAndEvent, createObservation, deposit, issue, originateEquity, originateGeneric, originateToken) +import Daml.Finance.Interface.Types.Common.Types (Id(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [ operator, public, centralBank, registry, exchange, agent, issuer, inv1, inv2, inv3 ] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator centralBank + createCustodianRole operator registry + createDistributorRole operator agent + createExchangeRole operator exchange + + -- Services + let + assets = ["TSLA", "NFLX", "FWD1", "BOND1", "SWAP1", "BSWAP1", "OPT1", "OPT2"] + custodianPaths = [[issuer], [inv1], [inv2], [inv3]] + cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = custodianPaths + secRoute = Settlement.Hierarchy with rootCustodian = registry; pathsToRootCustodian = custodianPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + createCustodyService operator centralBank issuer public paths + createCustodyService operator centralBank inv1 public paths + createCustodyService operator centralBank inv2 public paths + createCustodyService operator centralBank inv3 public paths + createCustodyService operator registry issuer public paths + createCustodyService operator registry inv1 public paths + createCustodyService operator registry inv2 public paths + createCustodyService operator registry inv3 public paths + createIssuanceService operator registry issuer + createIssuanceAutoService operator registry issuer + createStructuringService operator registry issuer + createStructuringAutoService operator registry issuer + createLifecycleService operator registry issuer public + createListingService operator exchange issuer + createListingAutoService operator exchange issuer + createTradingService operator exchange issuer paths + createTradingAutoService operator exchange issuer + createTradingService operator exchange inv1 paths + createTradingAutoService operator exchange inv1 + createTradingService operator exchange inv2 paths + createTradingAutoService operator exchange inv2 + createTradingService operator exchange inv3 paths + createTradingAutoService operator exchange inv3 + createAuctionService operator agent issuer paths + createAuctionAutoService operator agent issuer + createBiddingService operator agent inv1 + createBiddingAutoService operator agent inv1 + createBiddingService operator agent inv2 + createBiddingAutoService operator agent inv2 + createBiddingService operator agent inv3 + createBiddingAutoService operator agent inv3 + + -- Accounts + issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank" empty + inv1CashAccount <- createAccount operator centralBank inv1 public "Investor1@CentralBank" empty + inv2CashAccount <- createAccount operator centralBank inv2 public "Investor2@CentralBank" empty + inv3CashAccount <- createAccount operator centralBank inv3 public "Investor3@CentralBank" empty + issuerSecAccount <- createAccount operator registry issuer public "Issuer@Registry" empty + inv1SecAccount <- createAccount operator registry inv1 public "Investor1@Registry" empty + inv2SecAccount <- createAccount operator registry inv2 public "Investor2@Registry" empty + inv3SecAccount <- createAccount operator registry inv3 public "Investor3@Registry" empty + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + yday = time (addDays today (-1)) 0 0 0 + (todayYear, todayMonth, todayDay) = toGregorian today + createClockAndEvent parties today (singleton public) + + -- Data + let + pub = fromList [("Public", singleton public)] + libor3M = "USD-LIBOR-3M" + libor6M = "USD-LIBOR-6M" + tslaObs = "TSLA" + createObservation issuer libor3M [(todayTime, 0.0018825)] pub + createObservation issuer libor6M [(todayTime, 0.0022363)] pub + createCalendar issuer "FED" [Saturday, Sunday] [] pub + + -- Instruments + usd <- originateToken centralBank centralBank pub yday "USD" "United States Dollar" + tsla <- originateEquity registry issuer pub yday "TSLA" "Tesla, Inc. Common Stock" + nflx <- originateEquity registry issuer pub yday "NFLX" "Netflix, Inc. Common Stock" + fwd <- originateGeneric registry issuer pub yday "FWD1" "Forward on TSLA" $ futureDvp tsla 20.0 usd 10_000.0 today + bnd <- originateGeneric registry issuer pub yday "BOND1" "Bond 5Y @ 4.875%" $ bond usd 1.0 0.04875 $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay + swp <- originateGeneric registry issuer pub yday "SWAP1" "Swap LIBOR-6M vs 0.25%" $ interestRateSwap libor6M 0.0025 usd $ unrollDates todayYear (todayYear + 2) [todayMonth] todayDay + bswp <- originateGeneric registry issuer pub yday "BSWAP1" "Basis Swap LIBOR-6M vs 3M+0.15%" $ basisSwap libor3M libor6M 0.0015 usd $ unrollDates todayYear (todayYear + 2) [todayMonth] todayDay + opt <- originateGeneric registry issuer pub yday "OPT1" "Call on TSLA @ 500.0 (physical)" $ callOptionPhysical tsla 20.0 usd 10_000.0 (date (todayYear + 1) todayMonth todayDay) + opt2 <- originateGeneric registry issuer pub yday "OPT2" "Call on TSLA @ 700.0 (cash)" $ callOptionCash tslaObs usd 700.0 (date (todayYear + 1) todayMonth todayDay) + + let securities = [tsla, nflx, fwd, bnd, swp, bswp, opt, opt2] + createAccountDirectory issuer ([(usd, issuerCashAccount)] <> map (\s -> (s, issuerSecAccount)) securities) $ singleton public + createAccountDirectory inv1 ([(usd, inv1CashAccount)] <> map (\s -> (s, inv1SecAccount)) securities) $ singleton public + createAccountDirectory inv2 ([(usd, inv2CashAccount)] <> map (\s -> (s, inv2SecAccount)) securities) $ singleton public + createAccountDirectory inv3 ([(usd, inv3CashAccount)] <> map (\s -> (s, inv3SecAccount)) securities) $ singleton public + + -- Holdings + inv1CashCid <- coerceContractId <$> deposit operator centralBank inv1 public (qty 1_000_000.0 usd) inv1CashAccount + inv2CashCid <- coerceContractId <$> deposit operator centralBank inv2 public (qty 1_000_000.0 usd) inv2CashAccount + inv3CashCid <- coerceContractId <$> deposit operator centralBank inv3 public (qty 1_000_000.0 usd) inv3CashAccount + + (_, issuerFwdCid) <- issue operator registry issuer public (qty 1.0 fwd) issuerSecAccount + (_, issuerBondCid) <- issue operator registry issuer public (qty 1_000_000.0 bnd) issuerSecAccount + (_, issuerSwapCid) <- issue operator registry issuer public (qty 10_000_000.0 swp) issuerSecAccount + (_, issuerBasisSwapCid) <- issue operator registry issuer public (qty 10_000_000.0 bswp) issuerSecAccount + + let + instruments = [usd, tsla, nflx, fwd, bnd, swp, bswp, opt, opt2] + accounts = [issuerCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, issuerSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount] + holdings = [inv1CashCid, inv2CashCid, inv3CashCid, issuerFwdCid, issuerBondCid, issuerSwapCid, issuerBasisSwapCid] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, centralBank, registry, exchange, agent, issuer, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Exchange", "Agent", "Issuer", "Investor1", "Investor2", "Investor3"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + +testAuction : Script () +testAuction = do + -- Fixture + parties@[operator, public, centralBank, registry, exchange, agent, issuer, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Exchange", "Agent", "Issuer", "Investor1", "Investor2", "Investor3"] + Fixture{instruments; accounts; holdings} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + -- Workflow + let + [usd, tsla, nflx, fwd, bnd, swp, bswp, opt, opt2] = instruments + [issuerCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, issuerSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount] = accounts + [inv1CashCid, inv2CashCid, inv3CashCid, issuerFwdCid, issuerBondCid, issuerSwapCid, issuerBasisSwapCid] = holdings + auctionCid <- createAuction operator agent issuer public (Id "AUCTION1") "AUCTION1" (qty 1_000_000.0 bnd) usd 0.95 (coerceContractId issuerBondCid) issuerCashAccount + inv1CollateralCid <- coerceContractId <$> getHolding inv1 (qty 500_000.0 usd) + inv2CollateralCid <- coerceContractId <$> getHolding inv2 (qty 392_000.0 usd) + inv3CollateralCid <- coerceContractId <$> getHolding inv3 (qty 297_000.0 usd) + inv1BidCid <- createAuctionBid operator agent inv1 public auctionCid 500_000.0 1.0 inv1CollateralCid inv1SecAccount + inv2BidCid <- createAuctionBid operator agent inv2 public auctionCid 400_000.0 0.98 inv2CollateralCid inv2SecAccount + inv3BidCid <- createAuctionBid operator agent inv3 public auctionCid 300_000.0 0.99 inv3CollateralCid inv3SecAccount + processAuction operator agent issuer public auctionCid [inv1BidCid, inv2BidCid, inv3BidCid] + pure () + +testTrading : Script () +testTrading = do + -- Fixture + parties@[operator, public, centralBank, registry, exchange, agent, issuer, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Exchange", "Agent", "Issuer", "Investor1", "Investor2", "Investor3"] + Fixture{instruments; accounts} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + -- Workflows + let + [usd, tsla, nflx, fwd, bnd, swp, bswp, opt, opt2] = instruments + listingId = Id "SWAP/USD" + list operator exchange issuer listingId "SWAP vs USD" swp usd $ singleton public + createAskOrder operator exchange issuer public (Id "1") (qty 250_000.0 swp) (qty 1.00 usd) $ singleton public + createAskOrder operator exchange issuer public (Id "2") (qty 250_000.0 swp) (qty 1.00 usd) $ singleton public + createBidOrder operator exchange inv1 public (Id "3") (qty 400_000.0 swp) (qty 1.00 usd) $ singleton public + pure () + diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/FundTokenization.daml b/src/daml/Daml/Finance/App/Setup/Scenario/FundTokenization.daml new file mode 100644 index 00000000..43f1fa2c --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/FundTokenization.daml @@ -0,0 +1,142 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.FundTokenization where + +import DA.Date (Month(..), date, toDateUTC) +import DA.Map (empty, fromList) +import DA.Optional (fromSome) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Distribution.Fund.Model (Fund(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (I) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Script.Workflow (createInvestmentRequest, poolInvestmentRequests, fulfillPooledInvestmentRequest) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole, createDistributorRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createFundService, createInvestmentService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createObservation, deposit, originateToken) +import Daml.Finance.Interface.Lifecycle.Observable.NumericObservable qualified as NumericObservable (I) +import Daml.Finance.Interface.Types.Common.Types (Id(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [operator, public, cashProvider, am, pm, custodian, inv1, inv2, inv3] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator cashProvider + createCustodianRole operator custodian + createCustodianRole operator am + createDistributorRole operator pm + createDistributorRole operator am + + -- Services + let + assets = ["FUND1", "FUND2", "FUND3"] + settlementPaths = [[custodian], [am], [pm], [inv1, am], [inv2, am], [inv3, am]] + cashRoute = Settlement.Hierarchy with rootCustodian = cashProvider; pathsToRootCustodian = settlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = custodian; pathsToRootCustodian = settlementPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + createCustodyService operator cashProvider am public paths + createCustodyService operator cashProvider custodian public paths + createCustodyService operator am inv1 public paths + createCustodyService operator am inv2 public paths + createCustodyService operator am inv3 public paths + createCustodyService operator custodian am public paths + createCustodyService operator custodian pm public paths + createInvestmentService operator am inv1 + createInvestmentService operator am inv2 + createInvestmentService operator am inv3 + createFundService operator pm am paths + + -- Accounts + amCashAccount <- createAccount operator cashProvider am public "AssetManager@CashProvider/Cash" $ fromList [("PM", singleton pm)] + custodianCashAccount <- createAccount operator cashProvider custodian public "Custodian@CashProvider/Cash" $ fromList [("PM", singleton pm)] + inv1CashAccount <- createAccount operator am inv1 public "Investor1@AssetManager/Cash" $ fromList [("PM", singleton pm)] + inv2CashAccount <- createAccount operator am inv2 public "Investor2@AssetManager/Cash" $ fromList [("PM", singleton pm)] + inv3CashAccount <- createAccount operator am inv3 public "Investor3@AssetManager/Cash" $ fromList [("PM", singleton pm)] + amSecAccount <- createAccount operator custodian am public "AssetManager@Custodian/Securties" $ fromList [("PM", singleton pm)] + pmSecAccount <- createAccount operator custodian pm public "PortfolioManager@Custodian/Securities" empty + inv1SecAccount <- createAccount operator am inv1 public "Investor1@AssetManager/Securities" $ fromList [("PM", singleton pm)] + inv2SecAccount <- createAccount operator am inv2 public "Investor2@AssetManager/Securities" $ fromList [("PM", singleton pm)] + inv3SecAccount <- createAccount operator am inv3 public "Investor3@AssetManager/Securities" $ fromList [("PM", singleton pm)] + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + tt d = time d 0 0 0 + epoch = tt $ date 1970 Jan 1 + pub = fromList [("Public", singleton public)] + + -- Instruments + usd <- originateToken cashProvider cashProvider pub epoch "USD" "United States Dollar" + fund1 <- originateToken custodian pm pub epoch "FUND1" "FUND1 Units" + fund2 <- originateToken custodian pm pub epoch "FUND2" "FUND2 Units" + fund3 <- originateToken custodian pm pub epoch "FUND3" "FUND3 Units" + + -- Holdings + amCashCid <- deposit operator cashProvider am public (qty 10_000_000.0 usd) amCashAccount + inv1CashCid <- deposit operator am inv1 public (qty 6_000_000.0 usd) inv1CashAccount + inv2CashCid <- deposit operator am inv2 public (qty 3_000_000.0 usd) inv2CashAccount + inv3CashCid <- deposit operator am inv3 public (qty 1_000_000.0 usd) inv3CashAccount + + -- Data + fund1Cid <- create Fund with operator; custodian; manager = pm; id = Id "FUND1"; description = "Fund 1"; instrument = fund1; currency = usd; custodianCashAccount; managerFundAccount = pmSecAccount; totalUnits = 1_000_000.0; observers = singleton public + fund2Cid <- create Fund with operator; custodian; manager = pm; id = Id "FUND2"; description = "Fund 2"; instrument = fund2; currency = usd; custodianCashAccount; managerFundAccount = pmSecAccount; totalUnits = 5_000_000.0; observers = singleton public + fund3Cid <- create Fund with operator; custodian; manager = pm; id = Id "FUND3"; description = "Fund 3"; instrument = fund3; currency = usd; custodianCashAccount; managerFundAccount = pmSecAccount; totalUnits = 15_000_000.0; observers = singleton public + navFund1Cid <- createObservation pm "NAV_FUND1_USD" [ (todayTime, 1_000_000.0) ] pub + navFund2Cid <- createObservation pm "NAV_FUND2_USD" [ (todayTime, 5_000_000.0) ] pub + navFund3Cid <- createObservation pm "NAV_FUND3_USD" [ (todayTime, 15_000_000.0) ] pub + + createAccountDirectory custodian [(usd, custodianCashAccount)] $ singleton public + createAccountDirectory am [(usd, amCashAccount), (fund1, amSecAccount), (fund2, amSecAccount), (fund3, amSecAccount)] $ singleton public + createAccountDirectory inv1 [(usd, inv1CashAccount), (fund1, inv1SecAccount), (fund2, inv1SecAccount), (fund3, inv1SecAccount)] $ singleton public + createAccountDirectory inv2 [(usd, inv2CashAccount), (fund1, inv2SecAccount), (fund2, inv2SecAccount), (fund3, inv2SecAccount)] $ singleton public + createAccountDirectory inv3 [(usd, inv3CashAccount), (fund1, inv3SecAccount), (fund2, inv3SecAccount), (fund3, inv3SecAccount)] $ singleton public + + let + instruments = [usd, fund1, fund2, fund3] + accounts = [amCashAccount, custodianCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, amSecAccount, pmSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount] + holdings = [amCashCid, inv1CashCid, inv2CashCid, inv3CashCid] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, cashProvider, am, pm, custodian, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CashProvider", "AssetManager", "PortfolioManager", "Custodian", "Investor1", "Investor2", "Investor3"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + +testInvestment : Script () +testInvestment = do + parties@[operator, public, cashProvider, am, pm, custodian, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CashProvider", "AssetManager", "PortfolioManager", "Custodian", "Investor1", "Investor2", "Investor3"] + Fixture{instruments; accounts; holdings} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + -- Workflows + t <- getTime + let + today = toDateUTC t + [amCashCid, inv1CashCid, inv2CashCid, inv3CashCid] = holdings + fund1Cid <- fst . fromSome . find (\(_, Some v) -> show v.id == "FUND1") <$> queryInterface @Fund.I pm + navFund1Cid <- fst . fromSome . find (\(_, Some v) -> show v.id == "NAV_FUND1_USD") <$> queryInterface @NumericObservable.I pm + ir1Cid <- createInvestmentRequest operator am inv1 public "REQ-FUND1-INV1" today fund1Cid (coerceContractId inv1CashCid) + ir2Cid <- createInvestmentRequest operator am inv2 public "REQ-FUND1-INV2" today fund1Cid (coerceContractId inv2CashCid) + ir3Cid <- createInvestmentRequest operator am inv3 public "REQ-FUND1-INV3" today fund1Cid (coerceContractId inv3CashCid) + pirCid <- poolInvestmentRequests operator pm am public "REQ-FUND1-POOLED" today fund1Cid (coerceContractId amCashCid) [ir1Cid, ir2Cid, ir3Cid] + fulfillPooledInvestmentRequest operator pm am public fund1Cid pirCid navFund1Cid + pure () diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/NaturalGas.daml b/src/daml/Daml/Finance/App/Setup/Scenario/NaturalGas.daml new file mode 100644 index 00000000..e352b301 --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/NaturalGas.daml @@ -0,0 +1,108 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.NaturalGas where + +import DA.Date (addDays, toDateUTC) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Finance.App.Setup.Payoff (ngMultiLocation, ngLocationPricingOption, ngCapped, ngConditionalLocation) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createIssuanceService, createLifecycleService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createClockAndEvent, createObservation, deposit, originateGeneric, originateToken) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [operator, public, cashProvider, seller, buyer] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator cashProvider + createCustodianRole operator seller + + -- Services + let + assets = ["Z4200L", "Z4GEN", "Z4300L", "NATGAS1", "NATGAS2", "NATGAS3", "NATGAS4"] + settlementPaths = [[buyer], [seller]] + cashRoute = Settlement.Hierarchy with rootCustodian = cashProvider; pathsToRootCustodian = settlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = seller; pathsToRootCustodian = settlementPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + createCustodyService operator cashProvider seller public paths + createCustodyService operator cashProvider buyer public paths + createCustodyService operator seller buyer public paths + createIssuanceService operator seller seller + createLifecycleService operator seller seller public + + -- Accounts + sellerCashAccount <- createAccount operator cashProvider seller public "Seller@CashProvider" empty + buyerCashAccount <- createAccount operator cashProvider buyer public "Buyer@CashProvider" empty + buyerSecAccount <- createAccount operator seller buyer public "Buyer@Seller" empty + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + t1 = addDays today 1 + t1t = time t1 0 0 0 + t3 = addDays today 3 + pub = fromList [("Public", singleton public)] + createClockAndEvent parties today (singleton public) + + -- Base Instruments + usd <- originateToken cashProvider cashProvider pub todayTime "USD" "United States Dollar" + z4200L <- originateToken seller seller pub todayTime "Z4200L" "Z4200L" + z4GEN <- originateToken seller seller pub todayTime "Z4GEN" "Z4GEN" + z4300L <- originateToken seller seller pub todayTime "Z4300L" "Z4300L" + + -- Structured Instruments + let + gdTgp219 = "GD TGP 24-219 + 0" + gdTgp300 = "GD TGP 24-300 + 0" + deliveries = + [ qty 2_000.0 z4200L + , qty 4_000.0 z4GEN + , qty 4_000.0 z4300L ] + ng1 <- originateGeneric seller seller pub todayTime "NATGAS1" "Multi-location Fixed-Price Daily" $ ngMultiLocation t1 t3 deliveries 5.25 usd + ng2 <- originateGeneric seller seller pub todayTime "NATGAS2" "Location/Pricing Option Daily" $ ngLocationPricingOption t1 t3 5_000.0 z4200L gdTgp219 z4GEN gdTgp300 usd + ng3 <- originateGeneric seller seller pub todayTime "NATGAS3" "Capped Pricing Daily" $ ngCapped t1 t3 10_000.0 z4200L gdTgp219 5.75 usd + ng4 <- originateGeneric seller seller pub todayTime "NATGAS4" "Price-conditional Location Daily" $ ngConditionalLocation t1 t3 10_000.0 z4200L gdTgp219 5.50 z4GEN gdTgp300 usd + + -- Holdings + buyerCashCid <- deposit operator cashProvider buyer public (qty 1_000_000.0 usd) buyerCashAccount + buyerSecCid1 <- deposit operator seller buyer public (qty 1.0 ng1) buyerSecAccount + buyerSecCid2 <- deposit operator seller buyer public (qty 1.0 ng3) buyerSecAccount + buyerSecCid2 <- deposit operator seller buyer public (qty 1.0 ng4) buyerSecAccount + + -- Data + createObservation seller gdTgp219 [ (t1t, 6.0) ] pub + createObservation seller gdTgp300 [ (t1t, 5.9) ] pub + createAccountDirectory seller [(usd, sellerCashAccount)] $ singleton public + createAccountDirectory buyer [(usd, buyerCashAccount), (ng1, buyerSecAccount), (ng3, buyerSecAccount), (ng4, buyerSecAccount)] $ singleton public + + let + instruments = [usd, z4200L, z4GEN, z4300L, ng1, ng2, ng3, ng4] + accounts = [sellerCashAccount, buyerCashAccount, buyerSecAccount] + holdings = [buyerCashCid, buyerSecCid1, buyerSecCid2, buyerSecCid2] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, cashProvider, seller, buyer] <- + mapA allocateParty ["Operator", "Public", "CashProvider", "Seller", "Buyer"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/OtcSwaps.daml b/src/daml/Daml/Finance/App/Setup/Scenario/OtcSwaps.daml new file mode 100644 index 00000000..c448865a --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/OtcSwaps.daml @@ -0,0 +1,84 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.OtcSwaps where + +import DA.Date (Month(..), date, toDateUTC, toGregorian) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createIssuanceService, createIssuanceAutoService, createLifecycleService, createStructuringService, createStructuringAutoService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createClockAndEvent, originateCreditDefaultSwap, originateToken) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum(..)) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum(..)) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum(..)) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [operator, public, centralBank, seller, buyer] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator centralBank + createCustodianRole operator seller + + -- Services + let + settlementPaths = [[buyer], [seller]] + cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = seller; pathsToRootCustodian = settlementPaths + paths = fromList [("USD", cashRoute), ("CDS1", secRoute)] + createCustodyService operator centralBank seller public paths + createCustodyService operator centralBank buyer public paths + createCustodyService operator seller buyer public paths + createIssuanceService operator seller seller + createIssuanceAutoService operator seller seller + createStructuringService operator seller seller + createStructuringAutoService operator seller seller + createLifecycleService operator seller seller public + + -- Accounts + sellerCashAccount <- createAccount operator centralBank seller public "Seller@CentralBank/Cash" empty + buyerCashAccount <- createAccount operator centralBank buyer public "Buyer@CentralBank/Cash" empty + buyerSecAccount <- createAccount operator seller buyer public "Buyer@Seller/Securties" empty + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + tt d = time d 0 0 0 + epoch = tt $ date 1970 Jan 1 + (ty, tm, td) = toGregorian today + pub = fromList [("Public", singleton public)] + createClockAndEvent parties (date 2021 tm td) (singleton public) + + -- Instruments + usd <- originateToken centralBank centralBank pub epoch "USD" "United States Dollar" + swap1 <- originateCreditDefaultSwap seller seller "CDS1" "Credit Default Swap 5Y" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] seller (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.011 M 12 usd "DefaultProbability" "RecoveryRate" True + + let + instruments = [usd, swap1] + accounts = [sellerCashAccount, buyerCashAccount, buyerSecAccount] + holdings = [] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, centralBank, seller, buyer] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Seller", "Buyer"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/SecuritiesLending.daml b/src/daml/Daml/Finance/App/Setup/Scenario/SecuritiesLending.daml new file mode 100644 index 00000000..790e4f8a --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/SecuritiesLending.daml @@ -0,0 +1,124 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.SecuritiesLending where + +import DA.Date (addDays, toDateUTC, toGregorian) +import DA.Map (empty, fromList) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Interface.Lending.BorrowAgreement qualified as BorrowAgreement (Repay(..)) +import Daml.Finance.App.Interface.Lending.Service qualified as Lending (AcceptBorrowOffer(..), CreateBorrowOffer(..), I, RequestBorrowOffer(..)) +import Daml.Finance.App.Lending.Service qualified as Lending (T) +import Daml.Finance.App.Setup.Payoff (loan) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole) +import Daml.Finance.App.Setup.Util.Update.Service (createCustodyService, createLendingService, createLifecycleService, createStructuringService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createClockAndEvent, deposit, originateEquity, originateGeneric, originateToken) +import Daml.Finance.Interface.Types.Common.Types (Id(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [operator, public, centralBank, registry, borrower, lender] = parties + + -- Roles + createOperatorRole operator + createCustodianRole operator centralBank + createCustodianRole operator registry + createCustodianRole operator lender + + -- Create custody services + let + assets = ["TSLA", "DEAL1"] + settlementPaths = [[borrower], [lender]] + cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = registry; pathsToRootCustodian = settlementPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + createCustodyService operator centralBank borrower public paths + createCustodyService operator centralBank lender public paths + createCustodyService operator registry borrower public paths + createCustodyService operator registry lender public paths + createCustodyService operator lender borrower public paths + createLendingService operator lender borrower + createStructuringService operator registry lender + createLifecycleService operator registry lender public + + -- Accounts + borrowerLenderAccount <- createAccount operator lender borrower public "Borrower@Lender" empty + borrowerCashAccount <- createAccount operator centralBank borrower public "Borrower@CentralBank" empty + lenderCashAccount <- createAccount operator centralBank lender public "Lender@CentralBank" empty + lenderSecAccount <- createAccount operator registry lender public "Lender@Registry" empty + borrowerSecAccount <- createAccount operator registry borrower public "Borrower@Registry" empty + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + (todayYear, todayMonth, todayDay) = toGregorian today + pub = fromList [("Public", singleton public)] + createClockAndEvent parties today (singleton public) + + -- Instruments + usd <- originateToken centralBank centralBank pub todayTime "USD" "United States Dollar" + tsla <- originateEquity registry registry pub todayTime "TSLA" "Tesla, Inc. Common Stock" + deal1 <- originateGeneric registry lender pub todayTime "DEAL1" "Loan of TSLA @ 0.2%" $ loan today (addDays today 28) tsla 0.002 usd [addDays today 7, addDays today 14, addDays today 21, addDays today 28] + + -- Data + createAccountDirectory lender [(usd, lenderCashAccount), (tsla, lenderSecAccount)] $ singleton public + createAccountDirectory borrower [(usd, borrowerCashAccount), (tsla, borrowerSecAccount), (deal1, borrowerLenderAccount)] $ singleton public + + -- Holdings + deal1Cid <- deposit operator lender borrower public (qty 10_000.0 deal1) borrowerLenderAccount + borrowedCid <- deposit operator registry lender public (qty 1_000.0 tsla) lenderSecAccount + collateralCid <- deposit operator centralBank borrower public (qty 1_000_000.0 usd) borrowerCashAccount + interestCid <- deposit operator centralBank borrower public (qty 1_000.0 usd) borrowerCashAccount + + let + instruments = [usd, tsla, deal1] + accounts = [borrowerLenderAccount, borrowerCashAccount, lenderCashAccount, lenderSecAccount, borrowerSecAccount] + holdings = [deal1Cid, borrowedCid, collateralCid, interestCid] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, centralBank, registry, borrower, lender] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Borrower", "Lender"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + +testBorrowing : Script () +testBorrowing = do + parties@[operator, public, centralBank, registry, borrower, lender] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Registry", "Borrower", "Lender"] + Fixture{instruments, accounts, holdings} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + -- Workflows + t <- getTime + let + [usd, tsla, deal1] = instruments + [borrowerLenderAccount, borrowerCashAccount, lenderCashAccount, lenderSecAccount, borrowerSecAccount] = accounts + [deal1Cid, borrowedCid, collateralCid, interestCid] = map coerceContractId holdings + borrowed = qty 1_000.0 tsla + interest = qty 1_000.0 usd + collateral = qty 1_000_000.0 usd + today = toDateUTC t + + Some (serviceCid, _) <- queryContractKey @Lending.T borrower (operator, lender, borrower) + borrowOfferRequestCid <- submit borrower do exerciseCmd (toInterfaceContractId @Lending.I serviceCid) Lending.RequestBorrowOffer with dealId = Id "BORROW1"; description = "Loan of 1000 TSLA until " <> show today; borrowed; maturity = today + borrowOfferCid <- submit lender do exerciseCmd (toInterfaceContractId @Lending.I serviceCid) Lending.CreateBorrowOffer with borrowOfferRequestCid; interest; collateral; borrowedCid; lenderBorrowedAccount = lenderSecAccount; lenderInterestAccount = lenderCashAccount + (borrowedCid, borrowAgreementCid) <- submitMulti [borrower] [public] do exerciseCmd (toInterfaceContractId @Lending.I serviceCid) Lending.AcceptBorrowOffer with borrowOfferCid; collateralCid; account = borrowerSecAccount + submitMulti [borrower] [public] do exerciseCmd borrowAgreementCid BorrowAgreement.Repay with borrowedCid; interestCid + pure () diff --git a/src/daml/Daml/Finance/App/Setup/Scenario/StructuredNotes.daml b/src/daml/Daml/Finance/App/Setup/Scenario/StructuredNotes.daml new file mode 100644 index 00000000..c3c353e5 --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Scenario/StructuredNotes.daml @@ -0,0 +1,210 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Scenario.StructuredNotes where + +import ContingentClaims.Core.Builders (unrollDates) +import DA.Date (Month(..), addDays, date, toDateUTC, toGregorian) +import DA.Map (empty, fromList) +import DA.Optional (fromSome) +import DA.Set (singleton) +import DA.Time (time) +import Daml.Finance.App.Distribution.Subscription.Service qualified as SubscriptionService (T) +import Daml.Finance.App.Issuance.BackToBack qualified as BackToBackService (T) +import Daml.Finance.App.Interface.Distribution.Subscription.Types (BackToBack(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Offering qualified as Offering (Subscribe(..)) +import Daml.Finance.App.Interface.Distribution.Subscription.Service qualified as SubscriptionService (CreateOffering(..), I, ProcessOffering(..)) +import Daml.Finance.App.Interface.Issuance.BackToBack qualified as BackToBackService (CreateIssuance(..), I) +import Daml.Finance.App.Setup.Payoff (bond, brc, buyWriteNote, putOptionCash, rc) +import Daml.Finance.App.Setup.Types (Fixture(..)) +import Daml.Finance.App.Setup.Util.Update.Role (createOperatorRole, createCustodianRole, createDistributorRole) +import Daml.Finance.App.Setup.Util.Update.Service (createBackToBackIssuanceService, createCustodyService, createIssuanceService, createLifecycleService, createStructuringService, createSubscriptionService) +import Daml.Finance.App.Setup.Util.Update.Workflow (createAccount, createAccountDirectory, createClockAndEvent, createObservation, deposit, originateGeneric, originateToken) +import Daml.Finance.Interface.Types.Common.Types (Id(..)) +import Daml.Finance.Interface.Util.Common (qty) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Script +import Prelude hiding (Scenario) + +template Scenario + with + parties : [Party] + where + signatory parties + + nonconsuming choice Setup : Fixture + controller parties + do + -- Parties + let [operator, public, centralBank, depository, issuer, riskTaker, inv1, inv2, inv3] = parties + + -- Factories + let + assets = ["TSLA", "FWD1", "OPT1", "BOND1", "RC1", "BRC1", "BWN1", "BWN2"] + cashSettlementPaths = [[issuer], [riskTaker], [inv1], [inv2], [inv3]] + secSettlementPaths = [[issuer], [riskTaker], [inv1, issuer], [inv2, issuer], [inv3, issuer]] + cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = cashSettlementPaths + secRoute = Settlement.Hierarchy with rootCustodian = riskTaker; pathsToRootCustodian = secSettlementPaths + paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets + + -- Roles + createOperatorRole operator + createCustodianRole operator centralBank + createCustodianRole operator issuer + createCustodianRole operator riskTaker + createDistributorRole operator issuer + + -- Services + createCustodyService operator centralBank issuer public paths + createCustodyService operator centralBank riskTaker public paths + createCustodyService operator centralBank inv1 public paths + createCustodyService operator centralBank inv2 public paths + createCustodyService operator centralBank inv3 public paths + createCustodyService operator riskTaker riskTaker public paths + createCustodyService operator riskTaker issuer public paths + createCustodyService operator issuer issuer public paths + createCustodyService operator issuer inv1 public paths + createCustodyService operator issuer inv2 public paths + createCustodyService operator issuer inv3 public paths + createStructuringService operator issuer issuer + createIssuanceService operator issuer issuer + createIssuanceService operator riskTaker riskTaker + createBackToBackIssuanceService operator riskTaker issuer paths + createLifecycleService operator riskTaker riskTaker public + createLifecycleService operator issuer issuer public + createSubscriptionService operator issuer issuer paths + + -- Accounts + riskTakerCashAccount <- createAccount operator centralBank riskTaker public "RiskTaker@CentralBank" $ fromList [("b2b", singleton issuer)] + issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank" empty + inv1CashAccount <- createAccount operator centralBank inv1 public "Investor1@CentralBank" empty + inv2CashAccount <- createAccount operator centralBank inv2 public "Investor2@CentralBank" empty + inv3CashAccount <- createAccount operator centralBank inv3 public "Investor3@CentralBank" empty + issuerSecAccount <- createAccount operator riskTaker issuer public "Issuer@RiskTaker" empty + inv1SecAccount <- createAccount operator issuer inv1 public "Investor1@Issuer" empty + inv2SecAccount <- createAccount operator issuer inv2 public "Investor2@Issuer" empty + inv3SecAccount <- createAccount operator issuer inv3 public "Investor3@Issuer" empty + issuerOwnAccount <- createAccount operator issuer issuer public "Issuer@Issuer" empty + riskTakerOwnAccount <- createAccount operator riskTaker riskTaker public "RiskTaker@RiskTaker" $ fromList [("b2b", singleton issuer)] + + -- Time + t <- getTime + let + today = toDateUTC t + todayTime = time today 0 0 0 + fixTime = time (date 2022 Jul 5) 0 0 0 + maturity = addDays today 365 + (todayYear, todayMonth, todayDay) = toGregorian today + pub = fromList [("Public", singleton public)] + createClockAndEvent parties today (singleton public) + + -- Observables + let + amd = "AMD" + qc = "QUALCOMM" + tslaO = "Close(TSLA)" + libor3M = "LIB-USD-3M" + libor6M = "LIB-USD-6M" + + -- Instruments + usd <- originateToken centralBank centralBank pub todayTime "USD" "United States Dollar" + tsla <- originateToken depository issuer pub todayTime "TSLA" "Tesla, Inc. Common Stock" + opt <- originateGeneric depository issuer pub todayTime "OPT1" "Put Option on TSLA" $ putOptionCash tslaO usd 1_000.0 maturity + bnd <- originateGeneric depository issuer pub todayTime "BOND1" "Bond 5Y/4.875%" $ bond usd 1.0 0.04875 $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay + rc <- originateGeneric depository issuer pub todayTime "RC1" "Reverse Convertible on TSLA" $ rc tslaO usd 0.02 800.0 $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay + brc <- originateGeneric depository issuer pub todayTime "BRC1" "Barrier Reverse Convertible on TSLA" $ brc tslaO usd 0.05 800.0 600.0 today $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay + bwn1 <- originateGeneric depository issuer pub todayTime "BWN1" "Synthetic Buy-Write Notes on AMD" $ buyWriteNote (date 2022 Jul 16) (date 2023 Jul 19) (date 2023 Jul 23) amd usd 0.1776 91.6300 100.7930 -- Issue size: 77'300 + bwn2 <- originateGeneric depository issuer pub todayTime "BWN2" "Synthetic Buy-Write Notes on QUALCOMM" $ buyWriteNote (date 2022 Jun 30) (date 2022 Jul 05) (date 2022 Jul 07) qc usd 0.1312 147.2566 161.9823 + let securities = [tsla, opt, bnd, rc, brc, bwn1, bwn2] + + -- Holdings + issuerCashCid <- coerceContractId <$> deposit operator centralBank issuer public (qty 5_000_000.0 usd) issuerCashAccount + inv1CashCid <- coerceContractId <$> deposit operator centralBank inv1 public (qty 950_000.0 usd) inv1CashAccount + inv2CashCid <- coerceContractId <$> deposit operator centralBank inv2 public (qty 950_000.0 usd) inv2CashAccount + inv3CashCid <- coerceContractId <$> deposit operator centralBank inv3 public (qty 950_000.0 usd) inv3CashAccount + + -- Data + createObservation issuer tslaO [(todayTime, 580.0)] pub + createObservation issuer qc [(fixTime, 170.0)] pub + createAccountDirectory riskTaker ([(usd, riskTakerCashAccount)] <> map (\s -> (s, riskTakerOwnAccount)) securities) $ singleton public + createAccountDirectory issuer ([(usd, issuerCashAccount)] <> map (\s -> (s, issuerSecAccount)) securities) $ singleton public + createAccountDirectory inv1 ([(usd, inv1CashAccount)] <> map (\s -> (s, inv1SecAccount)) securities) $ singleton public + createAccountDirectory inv2 ([(usd, inv2CashAccount)] <> map (\s -> (s, inv2SecAccount)) securities) $ singleton public + createAccountDirectory inv3 ([(usd, inv3CashAccount)] <> map (\s -> (s, inv3SecAccount)) securities) $ singleton public + + let + instruments = [usd, tsla, opt, bnd, rc, brc, bwn1, bwn2] + accounts = [riskTakerCashAccount, issuerCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, issuerSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount, issuerOwnAccount, riskTakerOwnAccount] + holdings = [issuerCashCid, inv1CashCid, inv2CashCid, inv3CashCid] + services = [] + pure Fixture with instruments; accounts; holdings; services + +run : Script Fixture +run = do + parties@[operator, public, centralBank, depository, issuer, riskTaker, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Depository", "Issuer", "RiskTaker", "Investor1", "Investor2", "Investor3"] + submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + +testBackToBackIssuance : Script () +testBackToBackIssuance = do + -- Fixture + parties@[operator, public, centralBank, depository, issuer, riskTaker, inv1, inv2, inv3] <- + mapA allocateParty ["Operator", "Public", "CentralBank", "Depository", "Issuer", "RiskTaker", "Investor1", "Investor2", "Investor3"] + Fixture{instruments; accounts, holdings} <- submitMulti parties [] do createAndExerciseCmd (Scenario with parties) Setup + + -- Workflows + let + [usd, tsla, opt, bnd, rc, brc, bwn1, bwn2] = instruments + [riskTakerCashAccount, issuerCashAccount, inv1CashAccount, inv2CashAccount, inv3CashAccount, issuerSecAccount, inv1SecAccount, inv2SecAccount, inv3SecAccount, issuerOwnAccount, riskTakerOwnAccount] = accounts + [issuerCashCid, inv1CashCid, inv2CashCid, inv3CashCid] = holdings + issuance quantity = do + b2bServiceCid <- toInterfaceContractId @BackToBackService.I . fst . fromSome <$> queryContractKey @BackToBackService.T issuer (operator, riskTaker, issuer) + submitMulti [issuer] [public] do + exerciseCmd b2bServiceCid BackToBackService.CreateIssuance + with + issuanceId = Id $ "ISSUANCE-" <> show quantity.unit.id + description = "Issuance of " <> show quantity.amount <> " " <> show quantity.unit.id + quantity + customerAccount = issuerOwnAccount + providerAccount = riskTakerOwnAccount + + subscription asset price issuerCashCid issuerAssetCid riskTakerAssetCid inv1CashCid inv2CashCid inv3CashCid = do + subscriptionServiceCid <- toInterfaceContractId @SubscriptionService.I . fst . fromSome <$> queryContractKey @SubscriptionService.T issuer (operator, issuer, issuer) + offeringCid <- submit issuer do + let + offeringId = Id $ "OFFERING-" <> show asset.unit.id + description = "Offer for " <> show asset.amount <> " " <> show asset.unit.id + backToBack = Some BackToBack + with + party = riskTaker + offeringId + issuerReceivableAccount = issuerSecAccount + issuerDeliverableCid = coerceContractId issuerCashCid + b2bReceivableAccount = riskTakerCashAccount + b2bDeliverableCid = coerceContractId riskTakerAssetCid + exerciseCmd subscriptionServiceCid SubscriptionService.CreateOffering + with + offeringId + description + asset + price + customerHoldingCid = coerceContractId issuerAssetCid + customerAccount = issuerCashAccount + backToBack + observers = singleton public + + inv1SubscriptionCid <- submitMulti [inv1] [public] do exerciseCmd offeringCid Offering.Subscribe with investor = inv1; quantity = 10_000.0; investorHoldingCid = coerceContractId inv1CashCid; investorAccount = inv1SecAccount + inv2SubscriptionCid <- submitMulti [inv2] [public] do exerciseCmd offeringCid Offering.Subscribe with investor = inv2; quantity = 10_000.0; investorHoldingCid = coerceContractId inv2CashCid; investorAccount = inv2SecAccount + inv3SubscriptionCid <- submitMulti [inv3] [public] do exerciseCmd offeringCid Offering.Subscribe with investor = inv3; quantity = 10_000.0; investorHoldingCid = coerceContractId inv3CashCid; investorAccount = inv3SecAccount + + submitMulti [issuer] [public] do + exerciseCmd subscriptionServiceCid SubscriptionService.ProcessOffering + with + offeringCid + subscriptionCids = [inv1SubscriptionCid, inv2SubscriptionCid, inv3SubscriptionCid] + pure () + + (_, bwn1IssuerHoldingCid, bwn1RiskTakerHoldingCid) <- issuance $ qty 50_000.0 bwn1 + subscription (qty 50_000.0 bwn1) (qty 95.00 usd) issuerCashCid bwn1IssuerHoldingCid bwn1RiskTakerHoldingCid inv1CashCid inv2CashCid inv3CashCid + pure () + diff --git a/src/daml/Daml/Finance/App/Setup/Types.daml b/src/daml/Daml/Finance/App/Setup/Types.daml new file mode 100644 index 00000000..60eef08c --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Types.daml @@ -0,0 +1,17 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Types where + +import Daml.Finance.App.Interface.Base.Service qualified as Service (I) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, InstrumentKey) + +data Fixture = Fixture + with + instruments : [InstrumentKey] + accounts : [AccountKey] + holdings : [ContractId Holding.I] + services : [ContractId Service.I] + deriving (Eq, Show) + diff --git a/src/daml/Daml/Finance/Setup/Util/Common.daml b/src/daml/Daml/Finance/App/Setup/Util/Script/Common.daml similarity index 86% rename from src/daml/Daml/Finance/Setup/Util/Common.daml rename to src/daml/Daml/Finance/App/Setup/Util/Script/Common.daml index e4e59059..591f36fa 100644 --- a/src/daml/Daml/Finance/Setup/Util/Common.daml +++ b/src/daml/Daml/Finance/App/Setup/Util/Script/Common.daml @@ -3,14 +3,15 @@ {-# LANGUAGE AllowAmbiguousTypes #-} -module Daml.Finance.Setup.Util.Common where +module Daml.Finance.App.Setup.Util.Script.Common where import DA.List (head) -import DA.Optional (fromOptional) +import DA.Optional (fromOptional, isNone) import Daml.Finance.Holding.Fungible qualified as Fungible (T) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I, Split(..), SplitResult(..)) import Daml.Finance.Interface.Holding.Base qualified as Holding (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (GetCid(..), K, Q, R) +import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (GetCid(..), R) +import Daml.Finance.Interface.Types.Common.Types (InstrumentKey, InstrumentQuantity) import Daml.Script data PartyInfo = PartyInfo @@ -31,9 +32,9 @@ allocateParties scenario partyNames = do parties <- mapA allocate partyNames pure $ map (\(name, id) -> PartyInfo with scenario; name; id) $ zip partyNames parties -getHolding : Party -> Instrument.Q -> Script (ContractId Holding.I) +getHolding : Party -> InstrumentQuantity -> Script (ContractId Holding.I) getHolding party quantity = do - (holdingCid, holding) <- head <$> queryFilter @Fungible.T party (\h -> h.instrument == quantity.unit && h.amount >= quantity.amount) + (holdingCid, holding) <- head <$> queryFilter @Fungible.T party (\h -> isNone h.lock && h.instrument == quantity.unit && h.amount >= quantity.amount) if holding.amount > quantity.amount then do Fungible.SplitResult{splitCids} <- submit party do exerciseCmd (toInterfaceContractId @Fungible.I holdingCid) Fungible.Split with amounts = [ quantity.amount ] @@ -52,5 +53,5 @@ submitExerciseInterfaceByKeyCmdHelper actAs readAs k arg1 arg2 = do submitMulti actAs readAs do exerciseCmd cid' arg2 -- | Utility for exercising an interface by key. -submitExerciseInterfaceByKeyCmd : forall t2 c2 b . HasTemplateTypeRep t2 => HasToAnyTemplate t2 => HasFromAnyTemplate t2 => HasFromAnyChoice t2 c2 b => HasToAnyChoice t2 c2 b => HasExercise t2 c2 b => [Party] -> [Party] -> Instrument.K -> c2 -> Script b +submitExerciseInterfaceByKeyCmd : forall t2 c2 b . HasTemplateTypeRep t2 => HasToAnyTemplate t2 => HasFromAnyTemplate t2 => HasFromAnyChoice t2 c2 b => HasToAnyChoice t2 c2 b => HasExercise t2 c2 b => [Party] -> [Party] -> InstrumentKey -> c2 -> Script b submitExerciseInterfaceByKeyCmd actAs readAs k arg = submitExerciseInterfaceByKeyCmdHelper @Instrument.R @t2 actAs readAs k (Instrument.GetCid with viewer = head actAs) arg diff --git a/src/daml/Daml/Finance/Setup/Util/Role.daml b/src/daml/Daml/Finance/App/Setup/Util/Script/Role.daml similarity index 96% rename from src/daml/Daml/Finance/Setup/Util/Role.daml rename to src/daml/Daml/Finance/App/Setup/Util/Script/Role.daml index 8a7b39f9..f2ae35c6 100644 --- a/src/daml/Daml/Finance/Setup/Util/Role.daml +++ b/src/daml/Daml/Finance/App/Setup/Util/Script/Role.daml @@ -1,7 +1,7 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.Setup.Util.Role where +module Daml.Finance.App.Setup.Util.Script.Role where import Daml.Script import Daml.Finance.App.Role.Operator qualified as Operator (OfferCustodianRole(..), OfferDistributorRole(..), OfferExchangeRole(..), Role(..)) diff --git a/src/daml/Daml/Finance/App/Setup/Util/Script/Service.daml b/src/daml/Daml/Finance/App/Setup/Util/Script/Service.daml new file mode 100644 index 00000000..ba508118 --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Util/Script/Service.daml @@ -0,0 +1,226 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Util.Script.Service where + +import DA.Map (Map, fromList) +import DA.Set (singleton) +import Daml.Finance.App.Custody.Auto qualified as CustodyAuto (Accept(..)) +import Daml.Finance.App.Custody.Service qualified as Custody (Accept(..)) +import Daml.Finance.App.Decentralized.Exchange.Service qualified as DecentralizedExchange (Service(..)) +import Daml.Finance.App.Distribution.Auction.Auto qualified as AuctionAuto (Accept(..)) +import Daml.Finance.App.Distribution.Auction.Service qualified as Auction (Accept(..)) +import Daml.Finance.App.Distribution.Bidding.Auto qualified as BiddingAuto (Accept(..)) +import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (Accept(..)) +import Daml.Finance.App.Distribution.Fund.Service qualified as Fund (Accept(..)) +import Daml.Finance.App.Distribution.Investment.Service qualified as Investment (Accept(..)) +import Daml.Finance.App.Distribution.Subscription.Service qualified as Subscription (Accept(..)) +import Daml.Finance.App.Interface.Custody.Auto qualified as CustodyAuto (I) +import Daml.Finance.App.Interface.Custody.Service qualified as Custody (I) +import Daml.Finance.App.Interface.Decentralized.Exchange.Service qualified as DecentralizedExchange (I) +import Daml.Finance.App.Interface.Decentralized.Exchange.Types (Pool(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Auto qualified as AuctionAuto (I) +import Daml.Finance.App.Interface.Distribution.Auction.Service qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Auto qualified as BiddingAuto (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as Bidding (I) +import Daml.Finance.App.Interface.Distribution.Fund.Service qualified as Fund (I) +import Daml.Finance.App.Interface.Distribution.Investment.Service qualified as Investment (I) +import Daml.Finance.App.Interface.Distribution.Subscription.Service qualified as Subscription (I) +import Daml.Finance.App.Interface.Issuance.Auto qualified as IssuanceAuto (I) +import Daml.Finance.App.Interface.Issuance.BackToBack qualified as BackToBack (I) +import Daml.Finance.App.Interface.Issuance.Service qualified as Issuance (I) +import Daml.Finance.App.Interface.Lending.Service qualified as Lending (I) +import Daml.Finance.App.Interface.Lifecycle.Service qualified as Lifecycle (I) +import Daml.Finance.App.Interface.Listing.Auto qualified as ListingAuto (I) +import Daml.Finance.App.Interface.Listing.Service qualified as Listing (I) +import Daml.Finance.App.Interface.Settlement.Service qualified as Settlement (I) +import Daml.Finance.App.Interface.Structuring.Auto qualified as StructuringAuto (I) +import Daml.Finance.App.Interface.Structuring.Service qualified as Structuring (I) +import Daml.Finance.App.Interface.Trading.Auto qualified as TradingAuto (I) +import Daml.Finance.App.Interface.Trading.Service qualified as Trading (I) +import Daml.Finance.App.Issuance.Auto qualified as IssuanceAuto (Accept(..)) +import Daml.Finance.App.Issuance.BackToBack qualified as BackToBack (Accept(..)) +import Daml.Finance.App.Issuance.Service qualified as Issuance (Accept(..)) +import Daml.Finance.App.Lending.Service qualified as Lending (Accept(..)) +import Daml.Finance.App.Lifecycle.Service qualified as Lifecycle (Accept(..)) +import Daml.Finance.App.Listing.Auto qualified as ListingAuto (Accept(..)) +import Daml.Finance.App.Listing.Service qualified as Listing (Accept(..)) +import Daml.Finance.App.Role.Custodian qualified as Custodian +import Daml.Finance.App.Role.Distributor qualified as Distributor +import Daml.Finance.App.Role.Exchange qualified as Exchange +import Daml.Finance.App.Settlement.Service qualified as Settlement (Accept(..), Offer(..)) +import Daml.Finance.App.Structuring.Auto qualified as StructuringAuto (Accept(..)) +import Daml.Finance.App.Structuring.Service qualified as Structuring (Accept(..)) +import Daml.Finance.App.Trading.Auto qualified as TradingAuto (Accept(..)) +import Daml.Finance.App.Trading.Service qualified as Trading (Accept(..)) +import Daml.Finance.Account.Account qualified as Account (Factory(..)) +import Daml.Finance.Claims.Lifecycle.Rule qualified as Dynamic (Rule(..)) +import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) +import Daml.Finance.Instrument.Bond.FixedRate.Factory qualified as FixedRateBond (Factory(..)) +import Daml.Finance.Instrument.Bond.FloatingRate.Factory qualified as FloatingRateBond (Factory(..)) +import Daml.Finance.Instrument.Bond.InflationLinked.Factory qualified as InflationLinkedBond (Factory(..)) +import Daml.Finance.Instrument.Bond.ZeroCoupon.Factory qualified as ZeroCouponBond (Factory(..)) +import Daml.Finance.Instrument.Equity.Factory qualified as Equity (Factory(..)) +import Daml.Finance.Instrument.Generic.Factory qualified as Generic (Factory(..)) +import Daml.Finance.Instrument.Generic.Lifecycle.Rule qualified as Generic (Rule(..)) +import Daml.Finance.Instrument.Swap.Fpml.Factory qualified as FpmlSwap (Factory(..)) +import Daml.Finance.Instrument.Token.Factory qualified as Token (Factory(..)) +import Daml.Finance.Interface.Account.Factory qualified as Account (F) +import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id(..), InstrumentQuantity, Parties) +import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..)) +import Daml.Finance.Lifecycle.Rule.Claim qualified as Claim (Rule(..)) +import Daml.Finance.Lifecycle.Rule.Distribution qualified as Distribution (Rule(..)) +import Daml.Finance.Lifecycle.Rule.Replacement qualified as Replacement (Rule(..)) +import Daml.Finance.Settlement.Factory qualified as Settlement (Factory(..)) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Finance.Settlement.RouteProvider.IntermediatedStatic qualified as RouteProvider (IntermediatedStatic(..)) +import Daml.Script + +createCustodyService : Party -> Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId Custody.I) +createCustodyService operator provider customer public paths = do + -- NOTE: Holding factory needs public visibility, as eg. the exchange has to fetch it to credit/debit a trade + let + publicObs = fromList [("Default", singleton public)] + observers = singleton customer + providers = singleton provider + accountFactoryCid <- toInterfaceContractId <$> submit provider do createCmd Account.Factory with provider; observers = fromList [("Default", observers)] + holdingFactoryCid <- toInterfaceContractId <$> submit provider do createCmd Fungible.Factory with provider; observers = publicObs + routeProviderCid <- toInterfaceContractId <$> submit provider do createCmd RouteProvider.IntermediatedStatic with provider; observers; paths + settlementFactoryCid <- toInterfaceContractId <$> submit provider do createCmd Settlement.Factory with provider; observers + claimRuleCid <- toInterfaceContractId <$> submit provider do createCmd Claim.Rule with providers; claimers = providers; settlers = providers; routeProviderCid; settlementFactoryCid; netInstructions = False + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferCustodyService with customer; accountFactoryCid; holdingFactoryCid; claimRuleCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Custody.Accept + +createCustodyAutoService : Party -> Party -> Party -> ContractId Account.F -> ContractId Holding.F -> Script (ContractId CustodyAuto.I) +createCustodyAutoService operator provider customer accountFactoryCid holdingFactoryCid = do + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferCustodyAutoService with customer; accountFactoryCid; holdingFactoryCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid CustodyAuto.Accept + +createIssuanceService : Party -> Party -> Party -> Script (ContractId Issuance.I) +createIssuanceService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferIssuanceService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Issuance.Accept + +createIssuanceAutoService : Party -> Party -> Party -> Script (ContractId IssuanceAuto.I) +createIssuanceAutoService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferIssuanceAutoService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid IssuanceAuto.Accept + +createStructuringService : Party -> Party -> Party -> Script (ContractId Structuring.I) +createStructuringService operator provider customer = do + let observers = fromList [("Default", singleton customer)] + token <- toInterfaceContractId <$> submit provider do createCmd Token.Factory with provider; observers + equity <- toInterfaceContractId <$> submit provider do createCmd Equity.Factory with provider; observers + generic <- toInterfaceContractId <$> submit provider do createCmd Generic.Factory with provider; observers + fixedRateBond <- toInterfaceContractId <$> submit provider do createCmd FixedRateBond.Factory with provider; observers + floatingRateBond <- toInterfaceContractId <$> submit provider do createCmd FloatingRateBond.Factory with provider; observers + inflationLinkedBond <- toInterfaceContractId <$> submit provider do createCmd InflationLinkedBond.Factory with provider; observers + zeroCouponBond <- toInterfaceContractId <$> submit provider do createCmd ZeroCouponBond.Factory with provider; observers + fpmlSwap <- toInterfaceContractId <$> submit provider do createCmd FpmlSwap.Factory with provider; observers + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferStructuringService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Structuring.Accept + +createStructuringAutoService : Party -> Party -> Party -> Script (ContractId StructuringAuto.I) +createStructuringAutoService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferStructuringAutoService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid StructuringAuto.Accept + +createBackToBackIssuanceService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId BackToBack.I) +createBackToBackIssuanceService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferBackToBackService with customer; settlementServiceCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid BackToBack.Accept + +createLifecycleService : Party -> Party -> Party -> Party -> Script (ContractId Lifecycle.I) +createLifecycleService operator provider customer public = do + let + observers = fromList [("Default", singleton public)] + providers = singleton provider + distributionRuleCid <- toInterfaceContractId <$> submit provider do createCmd Distribution.Rule with providers; lifecycler = customer; id = Id "DistributionRule"; description = ""; observers = singleton public + replacementRuleCid <- toInterfaceContractId <$> submit provider do createCmd Replacement.Rule with providers; lifecycler = customer; id = Id "ReplacementRule"; description = ""; observers = singleton public + genericRuleCid <- toInterfaceContractId <$> submit provider do createCmd Generic.Rule with providers; lifecycler = customer; id = Id "GenericRule"; description = ""; observers + dynamicRuleCid <- toInterfaceContractId <$> submit provider do createCmd Dynamic.Rule with providers; lifecycler = customer; id = Id "DynamicRule"; description = ""; observers + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferLifecycleService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Lifecycle.Accept + +createTradingService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId Trading.I) +createTradingService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- submit provider do exerciseByKeyCmd @Exchange.Role (operator, provider) Exchange.OfferTradingService with customer; settlementServiceCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Trading.Accept + +createTradingAutoService : Party -> Party -> Party -> Script (ContractId TradingAuto.I) +createTradingAutoService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Exchange.Role (operator, provider) Exchange.OfferTradingAutoService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid TradingAuto.Accept + +createListingService : Party -> Party -> Party -> Script (ContractId Listing.I) +createListingService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Exchange.Role (operator, provider) Exchange.OfferListingService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Listing.Accept + +createListingAutoService : Party -> Party -> Party -> Script (ContractId ListingAuto.I) +createListingAutoService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Exchange.Role (operator, provider) Exchange.OfferListingAutoService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid ListingAuto.Accept + +createAuctionService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId Auction.I) +createAuctionService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferAuctionService with customer; settlementServiceCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Auction.Accept + +createAuctionAutoService : Party -> Party -> Party -> Script (ContractId AuctionAuto.I) +createAuctionAutoService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferAuctionAutoService with customer + toInterfaceContractId <$> submit customer do exerciseCmd offerCid AuctionAuto.Accept + +createBiddingService : Party -> Party -> Party -> Script (ContractId Bidding.I) +createBiddingService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferBiddingService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Bidding.Accept + +createBiddingAutoService : Party -> Party -> Party -> Script (ContractId BiddingAuto.I) +createBiddingAutoService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferBiddingAutoService with .. + toInterfaceContractId <$> submit customer do exerciseCmd offerCid BiddingAuto.Accept + +createSubscriptionService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId Subscription.I) +createSubscriptionService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferSubscriptionService with customer; settlementServiceCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Subscription.Accept + +createLendingService : Party -> Party -> Party -> Script (ContractId Lending.I) +createLendingService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Custodian.Role (operator, provider) Custodian.OfferLendingService with customer + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Lending.Accept + +createSettlementService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId Settlement.I) +createSettlementService operator provider customer paths = do + routeProviderCid <- toInterfaceContractId <$> submit provider do createCmd RouteProvider.IntermediatedStatic with provider; observers = singleton customer; paths + settlementFactoryCid <- toInterfaceContractId <$> submit provider do createCmd Settlement.Factory with provider; observers = singleton customer + offerCid <- submitMulti [operator, provider] [] do createCmd Settlement.Offer with operator; provider; customer; routeProviderCid; settlementFactoryCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Settlement.Accept + +createInvestmentService : Party -> Party -> Party -> Script (ContractId Investment.I) +createInvestmentService operator provider customer = do + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferInvestmentService with customer + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Investment.Accept + +createFundService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Script (ContractId Fund.I) +createFundService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferFundService with customer; settlementServiceCid + toInterfaceContractId <$> submit customer do exerciseCmd offerCid Fund.Accept + +createDecentralizedExchangeService : Party -> Parties -> Text -> InstrumentQuantity -> InstrumentQuantity -> AccountKey -> ContractId Fungible.I -> InstrumentQuantity -> AccountKey -> ContractId Fungible.I -> Script (ContractId DecentralizedExchange.I) +createDecentralizedExchangeService consortium observers id shares quantity1 account1 fungible1Cid quantity2 account2 fungible2Cid = do + fungible1Cid <- coerceContractId <$> submit consortium do exerciseCmd (toInterfaceContractId @Disclosure.I fungible1Cid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (id, observers) + fungible2Cid <- coerceContractId <$> submit consortium do exerciseCmd (toInterfaceContractId @Disclosure.I fungible2Cid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (id, observers) + let + p1 = Pool with quantity = quantity1; account = account1; fungibleCid = fungible1Cid + p2 = Pool with quantity = quantity2; account = account2; fungibleCid = fungible2Cid + toInterfaceContractId <$> submit consortium do createCmd DecentralizedExchange.Service with consortium; id = Id id; description = id; shares; p1; p2; observers diff --git a/src/daml/Daml/Finance/Setup/Util/Workflow.daml b/src/daml/Daml/Finance/App/Setup/Util/Script/Workflow.daml similarity index 52% rename from src/daml/Daml/Finance/Setup/Util/Workflow.daml rename to src/daml/Daml/Finance/App/Setup/Util/Script/Workflow.daml index 3c1f508b..4a6fe033 100644 --- a/src/daml/Daml/Finance/Setup/Util/Workflow.daml +++ b/src/daml/Daml/Finance/App/Setup/Util/Script/Workflow.daml @@ -1,81 +1,106 @@ -- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -- SPDX-License-Identifier: Apache-2.0 -module Daml.Finance.Setup.Util.Workflow where +module Daml.Finance.App.Setup.Util.Script.Workflow where import DA.Date (DayOfWeek, toGregorian) import DA.List (head) import DA.Map qualified as M (Map, fromList) +import DA.Optional (fromSome) import DA.Set (fromList, singleton) import DA.Text (parseInt) -import Daml.Finance.App.Custody.Service qualified as Custody (Deposit(..), OpenAccount(..), RequestDeposit(..), RequestOpenAccount(..), Service) +import DA.Time (time) +import Daml.Finance.App.Custody.Service qualified as CustodyService (T) import Daml.Finance.App.Data.AccountDirectory (AccountDirectory(..)) -import Daml.Finance.App.Distribution.Auction.Model qualified as Auction (T) -import Daml.Finance.App.Distribution.Auction.Service qualified as Auction (CreateAuction(..), ProcessAuction(..), RequestCreateAuction(..), S) -import Daml.Finance.App.Distribution.Bidding.Model qualified as Bidding (Bid) -import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (CreateBid(..), RequestCreateBid(..), S) -import Daml.Finance.App.Distribution.Fund.Model qualified as Fund (PooledInvestmentRequest, T) -import Daml.Finance.App.Distribution.Fund.Service qualified as Fund (FulfillPooledInvestmentRequest(..), PoolInvestmentRequests(..), S) -import Daml.Finance.App.Distribution.Investment.Model qualified as Investment (InvestmentRequest) -import Daml.Finance.App.Distribution.Investment.Service qualified as Investment (RequestInvestment(..), S) -import Daml.Finance.App.Issuance.Model qualified as Issuance (T) -import Daml.Finance.App.Issuance.Service qualified as Issuance (CreateIssuance(..), RequestCreateIssuance(..), Service) -import Daml.Finance.App.Lifecycle.Service qualified as Lifecycle (Service, DeclareDividend(..), DeclareStockSplit(..), DeclareReplacement(..)) +import Daml.Finance.App.Distribution.Auction.Service qualified as AuctionService (T) +import Daml.Finance.App.Distribution.Bidding.Service qualified as BiddingService (T) +import Daml.Finance.App.Distribution.Fund.Service qualified as FundService (T) +import Daml.Finance.App.Distribution.Investment.Service qualified as InvestmentService (T) +import Daml.Finance.App.Interface.Custody.Service qualified as CustodyService (Deposit(..), I, OpenAccount(..), RequestDeposit(..), RequestOpenAccount(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Auction.Service qualified as AuctionService (CreateAuction(..), I, ProcessAuction(..), RequestCreateAuction(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as BiddingService (CreateBid(..), I, RequestCreateBid(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (I) +import Daml.Finance.App.Interface.Distribution.Fund.PooledInvestmentRequest qualified as PooledInvestmentRequest (I) +import Daml.Finance.App.Interface.Distribution.Fund.Service qualified as FundService (FulfillPooledInvestmentRequest(..), I, PoolInvestmentRequests(..)) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (I) +import Daml.Finance.App.Interface.Distribution.Investment.Service qualified as InvestmentService (I, RequestInvestment(..),) +import Daml.Finance.App.Interface.Issuance.Issuance qualified as Issuance (I) +import Daml.Finance.App.Interface.Issuance.Service qualified as IssuanceService (I, Issue(..), RequestIssue(..)) +import Daml.Finance.App.Interface.Lifecycle.Service qualified as LifecycleService (I, DeclareDividend(..), DeclareStockSplit(..), DeclareReplacement(..)) +import Daml.Finance.App.Interface.Listing.Listing qualified as Listing (I) +import Daml.Finance.App.Interface.Listing.Service qualified as ListingService (I, List(..), RequestListing(..)) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (I, Side(..), View) +import Daml.Finance.App.Interface.Trading.Service qualified as TradingService (CreateOrder(..), I, RequestCreateOrder(..)) +import Daml.Finance.App.Issuance.Service qualified as IssuanceService (T) +import Daml.Finance.App.Lifecycle.Service qualified as LifecycleService (T) import Daml.Finance.App.Listing.Model qualified as Listing (T) -import Daml.Finance.App.Listing.Service qualified as Listing (CreateListing(..), RequestCreateListing(..), Service) -import Daml.Finance.App.Trading.Model qualified as Trading (Order, Side(..)) -import Daml.Finance.App.Trading.Service qualified as Trading (CreateOrder(..), RequestCreateOrder(..), Service) -import Daml.Finance.Data.Observable.Observation qualified as Data (Observation(..)) +import Daml.Finance.App.Listing.Service qualified as ListingService (T) +import Daml.Finance.App.Trading.Model qualified as Trading (Order) +import Daml.Finance.App.Trading.Service qualified as TradingService (T) +import Daml.Finance.Data.Numeric.Observation qualified as Data (Observation(..)) import Daml.Finance.Data.Reference.HolidayCalendar qualified as Data (HolidayCalendar(..)) import Daml.Finance.Data.Time.DateClock qualified as Data (DateClock(..)) -import Daml.Finance.Instrument.Token.Instrument qualified as Token (Instrument(..)) -import Daml.Finance.Instrument.Equity.Instrument qualified as Equity (Instrument(..)) +import Daml.Finance.Data.Time.DateClockUpdate qualified as Data (DateClockUpdateEvent(..)) +import Daml.Finance.Data.Time.DateClock.Types (Unit(..)) import Daml.Finance.Instrument.Bond.FixedRate.Instrument qualified as FixedRate (Instrument(..)) import Daml.Finance.Instrument.Bond.FloatingRate.Instrument qualified as FloatingRate (Instrument(..)) import Daml.Finance.Instrument.Bond.InflationLinked.Instrument qualified as InflationLinked (Instrument(..)) import Daml.Finance.Instrument.Bond.ZeroCoupon.Instrument qualified as ZeroCoupon (Instrument(..)) +import Daml.Finance.Instrument.Equity.Instrument qualified as Equity (Instrument(..)) import Daml.Finance.Instrument.Generic.Instrument qualified as Generic (Instrument(..)) import Daml.Finance.Instrument.Swap.CreditDefault.Instrument qualified as CreditDefaultSwap (Instrument(..)) -import Daml.Finance.Interface.Account.Account qualified as Account (Controllers(..), K, R) +import Daml.Finance.Instrument.Token.Instrument qualified as Token (Instrument(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (Controllers(..), R) import Daml.Finance.Interface.Claims.Types (C) -import Daml.Finance.Interface.Data.NumericObservable qualified as NumericObservable (I) -import Daml.Finance.Interface.Data.TimeObservable qualified as TimeObservable (I) import Daml.Finance.Interface.Holding.Base qualified as Holding (I) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I, Transfer(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (GetView(..), I, K, Q, Reference(..)) +import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (GetView(..), I, Reference(..)) import Daml.Finance.Interface.Lifecycle.Event qualified as Event (I) import Daml.Finance.Interface.Lifecycle.Effect qualified as Effect (I) +import Daml.Finance.Interface.Lifecycle.Observable.NumericObservable qualified as NumericObservable (I) +import Daml.Finance.Interface.Lifecycle.Observable.TimeObservable qualified as TimeObservable (I) import Daml.Finance.Interface.Lifecycle.Rule.Claim qualified as Claim (ClaimEffect(..), ClaimResult(..)) import Daml.Finance.Interface.Settlement.Batch qualified as Batch (I) -import Daml.Finance.Interface.Settlement.Factory qualified as SettlementFactory (I) import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I, Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Types qualified as Settlement (Allocation, Approval) -import Daml.Finance.Interface.Types.Common (Id(..), Parties, PartiesMap) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id(..), InstrumentKey, InstrumentQuantity, Parties, PartiesMap) import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayAdjustment(..), BusinessDayConventionEnum, HolidayCalendarData(..)) import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum, RollConventionEnum(..)) import Daml.Finance.Interface.Types.Date.Schedule (Frequency(..), PeriodicSchedule(..)) -import Daml.Finance.Lifecycle.Event.DateClock qualified as DateClock (Event(..)) -import Daml.Finance.Lifecycle.Types (Unit(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (Factory) import Daml.Finance.Settlement.Instruction qualified as Instruction (T) -import Daml.Finance.Setup.Util.Common (getHolding) +import Daml.Finance.App.Setup.Util.Script.Common (getHolding) import Daml.Script -createAccount : Party -> Party -> Party -> Party -> Text -> PartiesMap -> Script Account.K -createAccount operator custodian owner public id observers = do - let controllers = Account.Controllers with instructors = singleton owner; approvers = singleton owner - openAccountRequestCid <- submit owner do exerciseByKeyCmd @Custody.Service (operator, custodian, owner) Custody.RequestOpenAccount with id = Id id; description = id; controllers; observers - submitMulti [custodian] [public] do exerciseByKeyCmd @Custody.Service (operator, custodian, owner) Custody.OpenAccount with openAccountRequestCid - -createAccountDirectory : Party -> [(Instrument.K, Account.K)] -> Parties -> Script (ContractId AccountDirectory) +-- getService : forall t k . (Template t, TemplateKey t k) => Party -> k -> Script (ContractId t) +-- getService actor k = do +-- opt <- queryContractKey @t actor k +-- case opt of +-- Some (serviceCid, service) -> pure serviceCid +-- None -> fail $ "Service not found" + +-- getServiceInterface : forall t k i . (Template t, TemplateKey t k, HasInterfaceTypeRep i) => Party -> (Party, Party, Party) -> Script (ContractId i) +-- getServiceInterface actor k = do +-- svc <- getService @t actor k +-- pure $ toInterfaceContractId @i svc + +createAccount : Party -> Party -> Party -> Party -> Text -> PartiesMap -> Script AccountKey +createAccount operator provider customer public id observers = do + let controllers = Account.Controllers with outgoing = singleton customer; incoming = singleton customer + serviceCid <- toInterfaceContractId @CustodyService.I . fst . fromSome <$> queryContractKey @CustodyService.T customer (operator, provider, customer) + openAccountRequestCid <- submit customer do exerciseCmd serviceCid CustodyService.RequestOpenAccount with id = Id id; description = id; controllers; observers + snd <$> submitMulti [provider] [public] do exerciseCmd serviceCid CustodyService.OpenAccount with openAccountRequestCid + +createAccountDirectory : Party -> [(InstrumentKey, AccountKey)] -> Parties -> Script (ContractId AccountDirectory) createAccountDirectory provider mapping observers = do submit provider do createCmd AccountDirectory with provider; accounts = M.fromList (map (\(i, a) -> (i.id, a)) mapping); observers -- | Create a `Reference` for an instrument. -- Note: This should only be called together with an instrument creation -createReference : ContractId Instrument.I -> Party -> Party -> PartiesMap -> Script Instrument.K +createReference : ContractId Instrument.I -> Party -> Party -> PartiesMap -> Script InstrumentKey createReference cid depository issuer observers = do instrumentView <- submitMulti [depository, issuer] [] do exerciseCmd cid Instrument.GetView with viewer = issuer let ref = Instrument.Reference with instrumentView; cid; observers @@ -114,7 +139,7 @@ createClockAndEvent providers today observers = do date = Unit today clock = Data.DateClock with providers = fromList providers; date; id; description; observers clockCid <- toInterfaceContractId <$> submitMulti providers [] do createCmd clock - eventCid <- toInterfaceContractId <$> submitMulti providers [] do createCmd DateClock.Event with providers = fromList providers; id; description; date; observers + eventCid <- toInterfaceContractId <$> submitMulti providers [] do createCmd Data.DateClockUpdateEvent with providers = fromList providers; id; description; eventTime = time today 0 0 0; date = today; observers pure (clockCid, eventCid) createObservation : Party -> Text -> [(Time, Decimal)] -> M.Map Text Parties -> Script (ContractId NumericObservable.I) @@ -123,29 +148,28 @@ createObservation provider id observations observers = do createCalendar : Party -> Text -> [DayOfWeek] -> [Date] -> M.Map Text Parties -> Script (ContractId Data.HolidayCalendar) createCalendar provider id weekend holidays observers = do - let - calendar = HolidayCalendarData with id; weekend; holidays - submit provider do createCmd Data.HolidayCalendar with agency = provider; entity = calendar.id; calendar; observers + let calendar = HolidayCalendarData with id; weekend; holidays + submit provider do createCmd Data.HolidayCalendar with provider; calendar; observers -originateToken : Party -> Party -> PartiesMap -> Time -> Text -> Text -> Script Instrument.K +originateToken : Party -> Party -> PartiesMap -> Time -> Text -> Text -> Script InstrumentKey originateToken depository issuer observers validAsOf id description = do cid <- coerceContractId <$> submitMulti [depository, issuer] [] do createCmd Token.Instrument with depository; issuer; id = Id id; version = "0"; observers; validAsOf; description createReference cid depository issuer observers -originateEquity : Party -> Party -> PartiesMap -> Time -> Text -> Text -> Script Instrument.K +originateEquity : Party -> Party -> PartiesMap -> Time -> Text -> Text -> Script InstrumentKey originateEquity depository issuer observers validAsOf id description = do cid <- coerceContractId <$> submitMulti [depository, issuer] [] do createCmd Equity.Instrument with depository; issuer; id = Id id; version = "0"; observers; validAsOf; description createReference cid depository issuer observers -originateGeneric : Party -> Party -> PartiesMap -> Time -> Text -> Text -> C -> Script Instrument.K +originateGeneric : Party -> Party -> PartiesMap -> Time -> Text -> Text -> C -> Script InstrumentKey originateGeneric depository issuer observers acquisitionTime id description claims = do cid <- coerceContractId <$> submitMulti [depository, issuer] [] do createCmd Generic.Instrument with depository; issuer; id = Id id; description; version = "0"; acquisitionTime; claims; observers; lastEventTimestamp = acquisitionTime createReference cid depository issuer observers -originateFixedRateBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date-> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> Instrument.K -> Script Instrument.K +originateFixedRateBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date-> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Script InstrumentKey originateFixedRateBond depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention couponRate couponPeriod couponPeriodMultiplier currency = do let periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate @@ -153,13 +177,13 @@ originateFixedRateBond depository issuer id description observers lastEventTimes createCmd FixedRate.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; couponRate; currency createReference cid depository issuer observers -originateZeroCouponBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> Date -> Instrument.K -> Script Instrument.K +originateZeroCouponBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> Date -> InstrumentKey -> Script InstrumentKey originateZeroCouponBond depository issuer id description observers lastEventTimestamp issueDate maturityDate currency = do cid <- toInterfaceContractId <$> submitMulti [depository, issuer] [] do createCmd ZeroCoupon.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; issueDate; maturityDate; currency createReference cid depository issuer observers -originateFloatingRateBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> Instrument.K -> Text -> Script Instrument.K +originateFloatingRateBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Text -> Script InstrumentKey originateFloatingRateBond depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention couponRate couponPeriod couponPeriodMultiplier currency referenceRateId = do let periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate @@ -167,7 +191,7 @@ originateFloatingRateBond depository issuer id description observers lastEventTi createCmd FloatingRate.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; couponSpread=couponRate; referenceRateId; currency createReference cid depository issuer observers -originateInflationLinkedBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> Instrument.K -> Text -> Decimal -> Script Instrument.K +originateInflationLinkedBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Text -> Decimal -> Script InstrumentKey originateInflationLinkedBond depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention couponRate couponPeriod couponPeriodMultiplier currency inflationIndexId inflationIndexBaseValue = do let periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate @@ -175,142 +199,145 @@ originateInflationLinkedBond depository issuer id description observers lastEven createCmd InflationLinked.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; couponRate; inflationIndexId; currency; inflationIndexBaseValue createReference cid depository issuer observers -originateCreditDefaultSwap : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> Instrument.K -> Text -> Text -> Bool -> Script Instrument.K -originateCreditDefaultSwap depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention fixRate couponPeriod couponPeriodMultiplier currency defaultProbabilityReferenceId recoveryRateReferenceId issuerPaysFix = do +originateCreditDefaultSwap : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Text -> Text -> Bool -> Script InstrumentKey +originateCreditDefaultSwap depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention fixRate couponPeriod couponPeriodMultiplier currency defaultProbabilityReferenceId recoveryRateReferenceId ownerReceivesFix = do let periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate cid <- toInterfaceContractId <$> submitMulti [depository, issuer] [] do - createCmd CreditDefaultSwap.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; currency; fixRate; defaultProbabilityReferenceId; recoveryRateReferenceId; issuerPaysFix + createCmd CreditDefaultSwap.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; currency; fixRate; defaultProbabilityReferenceId; recoveryRateReferenceId; ownerReceivesFix createReference cid depository issuer observers -transfer : Party -> Account.K -> Party -> ContractId Transferable.I -> Script (ContractId Transferable.I) +transfer : Party -> AccountKey -> Party -> ContractId Transferable.I -> Script (ContractId Transferable.I) transfer from toAccount public depositCid = do submitMulti [from, toAccount.owner] [public] do exerciseCmd depositCid Transferable.Transfer with actors = fromList [from, toAccount.owner]; newOwnerAccount = toAccount -deposit : Party -> Party -> Party -> Party -> Instrument.Q -> Account.K -> Script (ContractId Holding.I) +deposit : Party -> Party -> Party -> Party -> InstrumentQuantity -> AccountKey -> Script (ContractId Holding.I) deposit operator provider customer public quantity account = do - depositRequestCid <- submit customer do exerciseByKeyCmd @Custody.Service (operator, provider, customer) Custody.RequestDeposit with quantity; account - submitMulti [provider] [public] do exerciseByKeyCmd @Custody.Service (operator, provider, customer) Custody.Deposit with depositRequestCid + serviceCid <- toInterfaceContractId @CustodyService.I . fst . fromSome <$> queryContractKey @CustodyService.T customer (operator, provider, customer) + depositRequestCid <- submit customer do exerciseCmd serviceCid CustodyService.RequestDeposit with quantity; account + submitMulti [provider] [public] do exerciseCmd serviceCid CustodyService.Deposit with depositRequestCid -issue : Party -> Party -> Party -> Party -> Instrument.Q -> Account.K -> Script (ContractId Issuance.T, ContractId Holding.I) +issue : Party -> Party -> Party -> Party -> InstrumentQuantity -> AccountKey -> Script (ContractId Issuance.I, ContractId Holding.I) issue operator provider customer public quantity account = do let - id = Id $ "ISSUANCE-" <> show quantity.unit.id + issuanceId = Id $ "ISSUANCE-" <> show quantity.unit.id description = "Issuance of " <> show quantity.amount <> " " <> show quantity.unit.id - createIssuanceRequestCid <- submit customer do exerciseByKeyCmd @Issuance.Service (operator, provider, customer) Issuance.RequestCreateIssuance with id; description; quantity; account - submitMulti [provider] [public] do exerciseByKeyCmd @Issuance.Service (operator, provider, customer) Issuance.CreateIssuance with .. - -list : Party -> Party -> Party -> Text -> Instrument.K -> Instrument.K -> Parties -> Script (ContractId Listing.T) -list operator provider customer id tradedInstrument quotedInstrument observers = do - createListingRequestCid <- submit customer do exerciseByKeyCmd @Listing.Service (operator, provider, customer) Listing.RequestCreateListing with id; tradedInstrument; quotedInstrument; observers - submit provider do exerciseByKeyCmd @Listing.Service (operator, provider, customer) Listing.CreateListing with createListingRequestCid - -createOrder : Party -> Party -> Party -> Party -> Id -> Trading.Side -> Instrument.Q -> Instrument.Q -> Parties -> Script (Optional (ContractId Trading.Order, Trading.Order)) -createOrder operator provider customer public id side quantity price observers = do + serviceCid <- toInterfaceContractId @IssuanceService.I . fst . fromSome <$> queryContractKey @IssuanceService.T customer (operator, provider, customer) + issueRequestCid <- submit customer do exerciseCmd serviceCid IssuanceService.RequestIssue with issuanceId; description; quantity; account + submitMulti [provider] [public] do exerciseCmd serviceCid IssuanceService.Issue with issueRequestCid + +list : Party -> Party -> Party -> Id -> Text -> InstrumentKey -> InstrumentKey -> Parties -> Script (ContractId Listing.I) +list operator provider customer listingId description tradedInstrument quotedInstrument observers = do + serviceCid <- toInterfaceContractId @ListingService.I . fst . fromSome <$> queryContractKey @ListingService.T customer (operator, provider, customer) + listingRequestCid <- submit customer do exerciseCmd serviceCid ListingService.RequestListing with listingId; description; tradedInstrument; quotedInstrument; observers + submit provider do exerciseCmd serviceCid ListingService.List with listingRequestCid + +createOrder : Party -> Party -> Party -> Party -> Id -> Order.Side -> InstrumentQuantity -> InstrumentQuantity -> Parties -> Script (Optional (ContractId Order.I, Order.View)) +createOrder operator provider customer public orderId side quantity price observers = do listingId <- (.id) . snd . head <$> queryFilter @Listing.T observers (\l -> l.tradedInstrument == quantity.unit && l.quotedInstrument == price.unit) let - depository = if side == Trading.Buy then quantity.unit.depository else price.unit.depository - requiredQuantity = if side == Trading.Buy then price with amount = price.amount * quantity.amount else quantity + depository = if side == Order.Buy then quantity.unit.depository else price.unit.depository + requiredQuantity = if side == Order.Buy then price with amount = price.amount * quantity.amount else quantity account <- key . snd . head <$> queryFilter @Account.R customer (\a -> a.accountView.custodian == depository) holdingCid <- coerceContractId <$> getHolding customer requiredQuantity - orderCids <- map fst <$> queryFilter @Trading.Order observers (\o -> o.listingId == listingId) - createOrderRequestCid <- submit customer do exerciseByKeyCmd @Trading.Service (operator, provider, customer) Trading.RequestCreateOrder with id; listingId; quantity; price; side; collateralCid = holdingCid; account; orderCids; observers - submitMulti [provider] [public] do exerciseByKeyCmd @Trading.Service (operator, provider, customer) Trading.CreateOrder with createOrderRequestCid + orderCids <- map (toInterfaceContractId @Order.I . fst) <$> queryFilter @Trading.Order observers (\o -> o.listingId == listingId) + serviceCid <- toInterfaceContractId @TradingService.I . fst . fromSome <$> queryContractKey @TradingService.T customer (operator, provider, customer) + createOrderRequestCid <- submit customer do exerciseCmd serviceCid TradingService.RequestCreateOrder with id = orderId; listingId; quantity; price; side; collateralCid = holdingCid; account; orderCids; observers + submitMulti [provider] [public] do exerciseCmd serviceCid TradingService.CreateOrder with createOrderRequestCid -createBidOrder : Party -> Party -> Party -> Party -> Id -> Instrument.Q -> Instrument.Q -> Parties -> Script (Optional (ContractId Trading.Order, Trading.Order)) -createBidOrder operator provider customer public id = createOrder operator provider customer public id Trading.Buy +createBidOrder : Party -> Party -> Party -> Party -> Id -> InstrumentQuantity -> InstrumentQuantity -> Parties -> Script (Optional (ContractId Order.I, Order.View)) +createBidOrder operator provider customer public orderId = createOrder operator provider customer public orderId Order.Buy -createAskOrder : Party -> Party -> Party -> Party -> Id -> Instrument.Q -> Instrument.Q -> Parties -> Script (Optional (ContractId Trading.Order, Trading.Order)) -createAskOrder operator provider customer public id = createOrder operator provider customer public id Trading.Sell +createAskOrder : Party -> Party -> Party -> Party -> Id -> InstrumentQuantity -> InstrumentQuantity -> Parties -> Script (Optional (ContractId Order.I, Order.View)) +createAskOrder operator provider customer public orderId = createOrder operator provider customer public orderId Order.Sell -createAuction : Party -> Party -> Party -> Party -> Text -> Instrument.Q -> Instrument.K -> Decimal -> ContractId Fungible.I -> Account.K -> Script (ContractId Auction.T) -createAuction operator provider customer public id quantity currency floor collateralCid receivableAccount = do - createAuctionRequestCid <- submit customer do exerciseByKeyCmd @Auction.S (operator, provider, customer) Auction.RequestCreateAuction with id; quantity; currency; floor; collateralCid; receivableAccount; observers = singleton public - submit provider do exerciseByKeyCmd @Auction.S (operator, provider, customer) Auction.CreateAuction with createAuctionRequestCid +createAuction : Party -> Party -> Party -> Party -> Id -> Text -> InstrumentQuantity -> InstrumentKey -> Decimal -> ContractId Fungible.I -> AccountKey -> Script (ContractId Auction.I) +createAuction operator provider customer public auctionId description quantity currency floor collateralCid receivableAccount = do + serviceCid <- toInterfaceContractId @AuctionService.I . fst . fromSome <$> queryContractKey @AuctionService.T customer (operator, provider, customer) + createAuctionRequestCid <- submit customer do exerciseCmd serviceCid AuctionService.RequestCreateAuction with auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers = singleton public + submit provider do exerciseCmd serviceCid AuctionService.CreateAuction with createAuctionRequestCid -createAuctionBid : Party -> Party -> Party -> Party -> ContractId Auction.T -> Decimal -> Decimal -> ContractId Fungible.I -> Account.K -> Script (ContractId Bidding.Bid) +createAuctionBid : Party -> Party -> Party -> Party -> ContractId Auction.I -> Decimal -> Decimal -> ContractId Fungible.I -> AccountKey -> Script (ContractId Bid.I) createAuctionBid operator provider customer public auctionCid amount price collateralCid receivableAccount = do - createBidRequestCid <- submitMulti [customer] [public] do exerciseByKeyCmd @Bidding.S (operator, provider, customer) Bidding.RequestCreateBid with auctionCid; amount; price; collateralCid; receivableAccount - submit provider do exerciseByKeyCmd @Bidding.S (operator, provider, customer) Bidding.CreateBid with createBidRequestCid + serviceCid <- toInterfaceContractId @BiddingService.I . fst . fromSome <$> queryContractKey @BiddingService.T customer (operator, provider, customer) + createBidRequestCid <- submitMulti [customer] [public] do exerciseCmd serviceCid BiddingService.RequestCreateBid with auctionCid; amount; price; collateralCid; receivableAccount + submit provider do exerciseCmd serviceCid BiddingService.CreateBid with createBidRequestCid -processAuction : Party -> Party -> Party -> Party -> ContractId Auction.T -> [ContractId Bidding.Bid] -> Script (ContractId Auction.T) +processAuction : Party -> Party -> Party -> Party -> ContractId Auction.I -> [ContractId Bid.I] -> Script (ContractId Auction.I) processAuction operator provider customer public auctionCid bidCids = do - [(factoryCid, _)] <- query @Settlement.Factory provider - submitMulti [provider] [public] do - exerciseByKeyCmd @Auction.S (operator, provider, customer) Auction.ProcessAuction - with - settlementFactoryCid = toInterfaceContractId factoryCid - auctionCid - bidCids - -declareDividend : Party -> Party -> Party -> Party -> Instrument.K -> Date -> [Instrument.Q] -> Script (ContractId Effect.I) -declareDividend operator provider issuer public equity effectiveDate perUnitDistribution = do - [(clockCid, _)] <- query @Data.DateClock public + serviceCid <- toInterfaceContractId @AuctionService.I . fst . fromSome <$> queryContractKey @AuctionService.T provider (operator, provider, customer) + submitMulti [provider] [public] do exerciseCmd serviceCid AuctionService.ProcessAuction with auctionCid; bidCids + +declareDividend : Party -> Party -> Party -> Party -> InstrumentKey -> Time -> [InstrumentQuantity] -> Script (InstrumentKey, ContractId Effect.I) +declareDividend operator provider issuer public equity effectiveTime perUnitDistribution = do let id = "Dividend-" <> show equity.id <> "-" <> equity.version Some version = parseInt equity.version - head <$> submitMulti [issuer] [public] do - exerciseByKeyCmd @Lifecycle.Service (operator, provider, issuer) Lifecycle.DeclareDividend - with - timeObservableCid = toInterfaceContractId clockCid - equity - newVersion = show (version + 1) - id = Id id - description = id - effectiveDate - perUnitDistribution - -declareReplacement : Party -> Party -> Party -> Party -> Instrument.K -> Date -> [Instrument.Q] -> Script (ContractId Effect.I) -declareReplacement operator provider issuer public equity effectiveDate perUnitReplacement = do - [(clockCid, _)] <- query @Data.DateClock issuer + serviceCid <- toInterfaceContractId @LifecycleService.I . fst . fromSome <$> queryContractKey @LifecycleService.T provider (operator, provider, issuer) + (newInstrument, [effectCid]) <- submitMulti [issuer] [public] do + exerciseCmd serviceCid LifecycleService.DeclareDividend with + equity + newVersion = show (version + 1) + eventId = Id id + description = id + effectiveTime + perUnitDistribution + pure (newInstrument, effectCid) + +declareReplacement : Party -> Party -> Party -> Party -> InstrumentKey -> Time -> [InstrumentQuantity] -> Script (ContractId Effect.I) +declareReplacement operator provider issuer public equity effectiveTime perUnitReplacement = do let id = "Replacement-" <> show equity.id <> "-" <> equity.version + serviceCid <- toInterfaceContractId @LifecycleService.I . fst . fromSome <$> queryContractKey @LifecycleService.T provider (operator, provider, issuer) head <$> submitMulti [issuer] [public] do - exerciseByKeyCmd @Lifecycle.Service (operator, provider, issuer) Lifecycle.DeclareReplacement - with - timeObservableCid = toInterfaceContractId clockCid - equity - id = Id id - description = id - effectiveDate - perUnitReplacement - -declareStockSplit : Party -> Party -> Party -> Party -> Instrument.K -> Date -> Decimal -> Script (ContractId Effect.I) -declareStockSplit operator provider issuer public equity effectiveDate adjustmentFactor = do - [(clockCid, _)] <- query @Data.DateClock issuer + exerciseCmd serviceCid LifecycleService.DeclareReplacement with + equity + eventId = Id id + description = id + effectiveTime + perUnitReplacement + +declareStockSplit : Party -> Party -> Party -> Party -> InstrumentKey -> Time -> Decimal -> Script (InstrumentKey, ContractId Effect.I) +declareStockSplit operator provider issuer public equity effectiveTime adjustmentFactor = do let id = "StockSplit-" <> show equity.id <> "-" <> equity.version Some version = parseInt equity.version - head <$> submitMulti [issuer] [public] do - exerciseByKeyCmd @Lifecycle.Service (operator, provider, issuer) Lifecycle.DeclareStockSplit - with - timeObservableCid = toInterfaceContractId clockCid - equity - newVersion = show (version + 1) - id = Id id - description = id - effectiveDate - adjustmentFactor + serviceCid <- toInterfaceContractId @LifecycleService.I . fst . fromSome <$> queryContractKey @LifecycleService.T provider (operator, provider, issuer) + (newInstrument, [effectCid]) <- submitMulti [issuer] [public] do + exerciseCmd serviceCid LifecycleService.DeclareStockSplit with + equity + newVersion = show (version + 1) + eventId = Id id + description = id + effectiveTime + adjustmentFactor + pure (newInstrument, effectCid) claimEffect : Party -> Party -> Party -> Party -> ContractId Effect.I -> [ContractId Holding.I] -> Id -> Script (ContractId Batch.I, [ContractId Instruction.I]) claimEffect operator custodian owner public effectCid holdingCids batchId = do - Some (_, cs) <- queryContractKey @Custody.Service owner (operator, custodian, owner) - Claim.ClaimResult{batchCid; instructionCids} <- submitMulti [owner] [public] do exerciseCmd cs.claimRuleCid Claim.ClaimEffect with claimer = owner; effectCid; holdingCids; batchId + service <- snd . fromSome <$> queryContractKey @CustodyService.T owner (operator, custodian, owner) + Claim.ClaimResult{batchCid; instructionCids} <- submitMulti [owner] [public] do exerciseCmd service.claimRuleCid Claim.ClaimEffect with claimer = owner; effectCid; holdingCids; batchId pure (batchCid, instructionCids) allocateAndApprove : Party -> Party -> ContractId Instruction.I -> Settlement.Allocation -> Settlement.Approval -> Script (ContractId Instruction.I) allocateAndApprove operator settler instructionCid allocation approval = do Some i <- queryContractId @Instruction.T settler $ coerceContractId instructionCid - instructionCid <- fst <$> submit i.routedStep.sender do exerciseCmd instructionCid Instruction.Allocate with actors = singleton settler; allocation - submit i.routedStep.receiver do exerciseCmd instructionCid Instruction.Approve with actors = singleton settler; approval - -createInvestmentRequest : Party -> Party -> Party -> Party -> Text -> Date -> ContractId Fund.T -> ContractId Transferable.I -> Script (ContractId Investment.InvestmentRequest) -createInvestmentRequest operator provider customer public id asOfDate fundCid cashCid = - submitMulti [customer] [public] do exerciseByKeyCmd @Investment.S (operator, provider, customer) Investment.RequestInvestment with requestId = Id id; asOfDate; fundCid; cashCid - -poolInvestmentRequests : Party -> Party -> Party -> Party -> Text -> Date -> ContractId Fund.T -> ContractId Transferable.I -> [ContractId Investment.InvestmentRequest] -> Script (ContractId Fund.PooledInvestmentRequest) -poolInvestmentRequests operator provider customer public id asOfDate fundCid cashCid investmentRequestCids = - submitMulti [customer] [public] do exerciseByKeyCmd @Fund.S (operator, provider, customer) Fund.PoolInvestmentRequests with requestId = Id id; asOfDate; fundCid; cashCid; investmentRequestCids - -fulfillPooledInvestmentRequest : Party -> Party -> Party -> Party -> ContractId Fund.T -> ContractId Fund.PooledInvestmentRequest -> ContractId NumericObservable.I -> ContractId SettlementFactory.I -> Script [ContractId Holding.I] -fulfillPooledInvestmentRequest operator provider customer public fundCid pooledInvestmentRequestCid navObservableCid settlementFactoryCid = - submitMulti [provider] [public] do exerciseByKeyCmd @Fund.S (operator, provider, customer) Fund.FulfillPooledInvestmentRequest with fundCid; pooledInvestmentRequestCid; navObservableCid; settlementFactoryCid + debug i + debug allocation + debug approval + instructionCid <- fst <$> submit i.routedStep.sender do exerciseCmd instructionCid Instruction.Allocate with actors = singleton i.routedStep.sender; allocation + submit i.routedStep.receiver do exerciseCmd instructionCid Instruction.Approve with actors = singleton i.routedStep.receiver; approval + +createInvestmentRequest : Party -> Party -> Party -> Party -> Text -> Date -> ContractId Fund.I -> ContractId Transferable.I -> Script (ContractId InvestmentRequest.I) +createInvestmentRequest operator provider customer public id asOfDate fundCid cashCid = do + serviceCid <- toInterfaceContractId @InvestmentService.I . fst . fromSome <$> queryContractKey @InvestmentService.T customer (operator, provider, customer) + submitMulti [customer] [public] do exerciseCmd serviceCid InvestmentService.RequestInvestment with requestId = Id id; asOfDate; fundCid; cashCid + +poolInvestmentRequests : Party -> Party -> Party -> Party -> Text -> Date -> ContractId Fund.I -> ContractId Transferable.I -> [ContractId InvestmentRequest.I] -> Script (ContractId PooledInvestmentRequest.I) +poolInvestmentRequests operator provider customer public id asOfDate fundCid cashCid investmentRequestCids = do + serviceCid <- toInterfaceContractId @FundService.I . fst . fromSome <$> queryContractKey @FundService.T customer (operator, provider, customer) + submitMulti [customer] [public] do exerciseCmd serviceCid FundService.PoolInvestmentRequests with requestId = Id id; asOfDate; fundCid; cashCid; investmentRequestCids + +fulfillPooledInvestmentRequest : Party -> Party -> Party -> Party -> ContractId Fund.I -> ContractId PooledInvestmentRequest.I -> ContractId NumericObservable.I -> Script [ContractId Holding.I] +fulfillPooledInvestmentRequest operator provider customer public fundCid pooledInvestmentRequestCid navObservableCid = do + serviceCid <- toInterfaceContractId @FundService.I . fst . fromSome <$> queryContractKey @FundService.T customer (operator, provider, customer) + submitMulti [provider] [public] do exerciseCmd serviceCid FundService.FulfillPooledInvestmentRequest with fundCid; pooledInvestmentRequestCid; navObservableCid diff --git a/src/daml/Daml/Finance/App/Setup/Util/Update/Role.daml b/src/daml/Daml/Finance/App/Setup/Util/Update/Role.daml new file mode 100644 index 00000000..dfdb1a74 --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Util/Update/Role.daml @@ -0,0 +1,28 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Util.Update.Role where + +import Daml.Finance.App.Role.Operator qualified as Operator (OfferCustodianRole(..), OfferDistributorRole(..), OfferExchangeRole(..), Role(..)) +import Daml.Finance.App.Role.Custodian qualified as Custodian (Accept(..), Role) +import Daml.Finance.App.Role.Distributor qualified as Distributor (Accept(..), Role) +import Daml.Finance.App.Role.Exchange qualified as Exchange (Accept(..), Role) + +createOperatorRole : Party -> Update (ContractId Operator.Role) +createOperatorRole operator = do + create Operator.Role with operator + +createCustodianRole : Party -> Party -> Update (ContractId Custodian.Role) +createCustodianRole operator custodian = do + offerCid <- exerciseByKey @Operator.Role operator Operator.OfferCustodianRole with provider = custodian + exercise offerCid Custodian.Accept + +createExchangeRole : Party -> Party -> Update (ContractId Exchange.Role) +createExchangeRole operator exchange = do + offerCid <- exerciseByKey @Operator.Role operator Operator.OfferExchangeRole with provider = exchange + exercise offerCid Exchange.Accept + +createDistributorRole : Party -> Party -> Update (ContractId Distributor.Role) +createDistributorRole operator distributor = do + offerCid <- exerciseByKey @Operator.Role operator Operator.OfferDistributorRole with provider = distributor + exercise offerCid Distributor.Accept diff --git a/src/daml/Daml/Finance/App/Setup/Util/Update/Service.daml b/src/daml/Daml/Finance/App/Setup/Util/Update/Service.daml new file mode 100644 index 00000000..beb8428d --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Util/Update/Service.daml @@ -0,0 +1,225 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Util.Update.Service where + +import DA.Map (Map, fromList) +import DA.Set (singleton) +import Daml.Finance.App.Custody.Auto qualified as CustodyAuto (Accept(..)) +import Daml.Finance.App.Custody.Service qualified as Custody (Accept(..)) +import Daml.Finance.App.Decentralized.Exchange.Service qualified as DecentralizedExchange (Service(..)) +import Daml.Finance.App.Distribution.Auction.Auto qualified as AuctionAuto (Accept(..)) +import Daml.Finance.App.Distribution.Auction.Service qualified as Auction (Accept(..)) +import Daml.Finance.App.Distribution.Bidding.Auto qualified as BiddingAuto (Accept(..)) +import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (Accept(..)) +import Daml.Finance.App.Distribution.Fund.Service qualified as Fund (Accept(..)) +import Daml.Finance.App.Distribution.Investment.Service qualified as Investment (Accept(..)) +import Daml.Finance.App.Distribution.Subscription.Service qualified as Subscription (Accept(..)) +import Daml.Finance.App.Interface.Custody.Auto qualified as CustodyAuto (I) +import Daml.Finance.App.Interface.Custody.Service qualified as Custody (I) +import Daml.Finance.App.Interface.Decentralized.Exchange.Service qualified as DecentralizedExchange (I) +import Daml.Finance.App.Interface.Decentralized.Exchange.Types (Pool(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Auto qualified as AuctionAuto (I) +import Daml.Finance.App.Interface.Distribution.Auction.Service qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Auto qualified as BiddingAuto (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as Bidding (I) +import Daml.Finance.App.Interface.Distribution.Fund.Service qualified as Fund (I) +import Daml.Finance.App.Interface.Distribution.Investment.Service qualified as Investment (I) +import Daml.Finance.App.Interface.Distribution.Subscription.Service qualified as Subscription (I) +import Daml.Finance.App.Interface.Issuance.Auto qualified as IssuanceAuto (I) +import Daml.Finance.App.Interface.Issuance.BackToBack qualified as BackToBack (I) +import Daml.Finance.App.Interface.Issuance.Service qualified as Issuance (I) +import Daml.Finance.App.Interface.Lending.Service qualified as Lending (I) +import Daml.Finance.App.Interface.Lifecycle.Service qualified as Lifecycle (I) +import Daml.Finance.App.Interface.Listing.Auto qualified as ListingAuto (I) +import Daml.Finance.App.Interface.Listing.Service qualified as Listing (I) +import Daml.Finance.App.Interface.Settlement.Service qualified as Settlement (I) +import Daml.Finance.App.Interface.Structuring.Auto qualified as StructuringAuto (I) +import Daml.Finance.App.Interface.Structuring.Service qualified as Structuring (I) +import Daml.Finance.App.Interface.Trading.Auto qualified as TradingAuto (I) +import Daml.Finance.App.Interface.Trading.Service qualified as Trading (I) +import Daml.Finance.App.Issuance.Auto qualified as IssuanceAuto (Accept(..)) +import Daml.Finance.App.Issuance.BackToBack qualified as BackToBack (Accept(..)) +import Daml.Finance.App.Issuance.Service qualified as Issuance (Accept(..)) +import Daml.Finance.App.Lending.Service qualified as Lending (Accept(..)) +import Daml.Finance.App.Lifecycle.Service qualified as Lifecycle (Accept(..)) +import Daml.Finance.App.Listing.Auto qualified as ListingAuto (Accept(..)) +import Daml.Finance.App.Listing.Service qualified as Listing (Accept(..)) +import Daml.Finance.App.Role.Custodian qualified as Custodian +import Daml.Finance.App.Role.Distributor qualified as Distributor +import Daml.Finance.App.Role.Exchange qualified as Exchange +import Daml.Finance.App.Settlement.Service qualified as Settlement (Accept(..), Offer(..)) +import Daml.Finance.App.Structuring.Auto qualified as StructuringAuto (Accept(..)) +import Daml.Finance.App.Structuring.Service qualified as Structuring (Accept(..)) +import Daml.Finance.App.Trading.Auto qualified as TradingAuto (Accept(..)) +import Daml.Finance.App.Trading.Service qualified as Trading (Accept(..)) +import Daml.Finance.Account.Account qualified as Account (Factory(..)) +import Daml.Finance.Claims.Lifecycle.Rule qualified as Dynamic (Rule(..)) +import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) +import Daml.Finance.Instrument.Bond.FixedRate.Factory qualified as FixedRateBond (Factory(..)) +import Daml.Finance.Instrument.Bond.FloatingRate.Factory qualified as FloatingRateBond (Factory(..)) +import Daml.Finance.Instrument.Bond.InflationLinked.Factory qualified as InflationLinkedBond (Factory(..)) +import Daml.Finance.Instrument.Bond.ZeroCoupon.Factory qualified as ZeroCouponBond (Factory(..)) +import Daml.Finance.Instrument.Equity.Factory qualified as Equity (Factory(..)) +import Daml.Finance.Instrument.Generic.Factory qualified as Generic (Factory(..)) +import Daml.Finance.Instrument.Generic.Lifecycle.Rule qualified as Generic (Rule(..)) +import Daml.Finance.Instrument.Swap.Fpml.Factory qualified as FpmlSwap (Factory(..)) +import Daml.Finance.Instrument.Token.Factory qualified as Token (Factory(..)) +import Daml.Finance.Interface.Account.Factory qualified as Account (F) +import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id(..), InstrumentQuantity, Parties) +import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..)) +import Daml.Finance.Lifecycle.Rule.Claim qualified as Claim (Rule(..)) +import Daml.Finance.Lifecycle.Rule.Distribution qualified as Distribution (Rule(..)) +import Daml.Finance.Lifecycle.Rule.Replacement qualified as Replacement (Rule(..)) +import Daml.Finance.Settlement.Factory qualified as Settlement (Factory(..)) +import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) +import Daml.Finance.Settlement.RouteProvider.IntermediatedStatic qualified as RouteProvider (IntermediatedStatic(..)) + +createCustodyService : Party -> Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId Custody.I) +createCustodyService operator provider customer public paths = do + -- NOTE: Holding factory needs public visibility, as eg. the exchange has to fetch it to credit/debit a trade + let + publicObs = fromList [("Default", singleton public)] + observers = singleton customer + providers = singleton provider + accountFactoryCid <- toInterfaceContractId <$> create Account.Factory with provider; observers = fromList [("Default", observers)] + holdingFactoryCid <- toInterfaceContractId <$> create Fungible.Factory with provider; observers = publicObs + routeProviderCid <- toInterfaceContractId <$> create RouteProvider.IntermediatedStatic with provider; observers; paths + settlementFactoryCid <- toInterfaceContractId <$> create Settlement.Factory with provider; observers + claimRuleCid <- toInterfaceContractId <$> create Claim.Rule with providers; claimers = singleton customer; settlers = providers; routeProviderCid; settlementFactoryCid; netInstructions = False + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferCustodyService with customer; accountFactoryCid; holdingFactoryCid; claimRuleCid + toInterfaceContractId <$> exercise offerCid Custody.Accept + +createCustodyAutoService : Party -> Party -> Party -> ContractId Account.F -> ContractId Holding.F -> Update (ContractId CustodyAuto.I) +createCustodyAutoService operator provider customer accountFactoryCid holdingFactoryCid = do + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferCustodyAutoService with customer; accountFactoryCid; holdingFactoryCid + toInterfaceContractId <$> exercise offerCid CustodyAuto.Accept + +createIssuanceService : Party -> Party -> Party -> Update (ContractId Issuance.I) +createIssuanceService operator provider customer = do + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferIssuanceService with .. + toInterfaceContractId <$> exercise offerCid Issuance.Accept + +createIssuanceAutoService : Party -> Party -> Party -> Update (ContractId IssuanceAuto.I) +createIssuanceAutoService operator provider customer = do + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferIssuanceAutoService with .. + toInterfaceContractId <$> exercise offerCid IssuanceAuto.Accept + +createStructuringService : Party -> Party -> Party -> Update (ContractId Structuring.I) +createStructuringService operator provider customer = do + let observers = fromList [("Default", singleton customer)] + token <- toInterfaceContractId <$> create Token.Factory with provider; observers + equity <- toInterfaceContractId <$> create Equity.Factory with provider; observers + generic <- toInterfaceContractId <$> create Generic.Factory with provider; observers + fixedRateBond <- toInterfaceContractId <$> create FixedRateBond.Factory with provider; observers + floatingRateBond <- toInterfaceContractId <$> create FloatingRateBond.Factory with provider; observers + inflationLinkedBond <- toInterfaceContractId <$> create InflationLinkedBond.Factory with provider; observers + zeroCouponBond <- toInterfaceContractId <$> create ZeroCouponBond.Factory with provider; observers + fpmlSwap <- toInterfaceContractId <$> create FpmlSwap.Factory with provider; observers + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferStructuringService with .. + toInterfaceContractId <$> exercise offerCid Structuring.Accept + +createStructuringAutoService : Party -> Party -> Party -> Update (ContractId StructuringAuto.I) +createStructuringAutoService operator provider customer = do + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferStructuringAutoService with .. + toInterfaceContractId <$> exercise offerCid StructuringAuto.Accept + +createBackToBackIssuanceService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId BackToBack.I) +createBackToBackIssuanceService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferBackToBackService with customer; settlementServiceCid + toInterfaceContractId <$> exercise offerCid BackToBack.Accept + +createLifecycleService : Party -> Party -> Party -> Party -> Update (ContractId Lifecycle.I) +createLifecycleService operator provider customer public = do + let + observers = fromList [("Default", singleton public)] + providers = singleton provider + distributionRuleCid <- toInterfaceContractId <$> create Distribution.Rule with providers; lifecycler = customer; id = Id "DistributionRule"; description = ""; observers = singleton public + replacementRuleCid <- toInterfaceContractId <$> create Replacement.Rule with providers; lifecycler = customer; id = Id "ReplacementRule"; description = ""; observers = singleton public + genericRuleCid <- toInterfaceContractId <$> create Generic.Rule with providers; lifecycler = customer; id = Id "GenericRule"; description = ""; observers + dynamicRuleCid <- toInterfaceContractId <$> create Dynamic.Rule with providers; lifecycler = customer; id = Id "DynamicRule"; description = ""; observers + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferLifecycleService with .. + toInterfaceContractId <$> exercise offerCid Lifecycle.Accept + +createTradingService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId Trading.I) +createTradingService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- exerciseByKey @Exchange.Role (operator, provider) Exchange.OfferTradingService with customer; settlementServiceCid + toInterfaceContractId <$> exercise offerCid Trading.Accept + +createTradingAutoService : Party -> Party -> Party -> Update (ContractId TradingAuto.I) +createTradingAutoService operator provider customer = do + offerCid <- exerciseByKey @Exchange.Role (operator, provider) Exchange.OfferTradingAutoService with .. + toInterfaceContractId <$> exercise offerCid TradingAuto.Accept + +createListingService : Party -> Party -> Party -> Update (ContractId Listing.I) +createListingService operator provider customer = do + offerCid <- exerciseByKey @Exchange.Role (operator, provider) Exchange.OfferListingService with .. + toInterfaceContractId <$> exercise offerCid Listing.Accept + +createListingAutoService : Party -> Party -> Party -> Update (ContractId ListingAuto.I) +createListingAutoService operator provider customer = do + offerCid <- exerciseByKey @Exchange.Role (operator, provider) Exchange.OfferListingAutoService with .. + toInterfaceContractId <$> exercise offerCid ListingAuto.Accept + +createAuctionService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId Auction.I) +createAuctionService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferAuctionService with customer; settlementServiceCid + toInterfaceContractId <$> exercise offerCid Auction.Accept + +createAuctionAutoService : Party -> Party -> Party -> Update (ContractId AuctionAuto.I) +createAuctionAutoService operator provider customer = do + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferAuctionAutoService with customer + toInterfaceContractId <$> exercise offerCid AuctionAuto.Accept + +createBiddingService : Party -> Party -> Party -> Update (ContractId Bidding.I) +createBiddingService operator provider customer = do + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferBiddingService with .. + toInterfaceContractId <$> exercise offerCid Bidding.Accept + +createBiddingAutoService : Party -> Party -> Party -> Update (ContractId BiddingAuto.I) +createBiddingAutoService operator provider customer = do + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferBiddingAutoService with .. + toInterfaceContractId <$> exercise offerCid BiddingAuto.Accept + +createSubscriptionService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId Subscription.I) +createSubscriptionService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferSubscriptionService with customer; settlementServiceCid + toInterfaceContractId <$> exercise offerCid Subscription.Accept + +createLendingService : Party -> Party -> Party -> Update (ContractId Lending.I) +createLendingService operator provider customer = do + offerCid <- exerciseByKey @Custodian.Role (operator, provider) Custodian.OfferLendingService with customer + toInterfaceContractId <$> exercise offerCid Lending.Accept + +createSettlementService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId Settlement.I) +createSettlementService operator provider customer paths = do + routeProviderCid <- toInterfaceContractId <$> create RouteProvider.IntermediatedStatic with provider; observers = singleton customer; paths + settlementFactoryCid <- toInterfaceContractId <$> create Settlement.Factory with provider; observers = singleton customer + offerCid <- create Settlement.Offer with operator; provider; customer; routeProviderCid; settlementFactoryCid + toInterfaceContractId <$> exercise offerCid Settlement.Accept + +createInvestmentService : Party -> Party -> Party -> Update (ContractId Investment.I) +createInvestmentService operator provider customer = do + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferInvestmentService with customer + toInterfaceContractId <$> exercise offerCid Investment.Accept + +createFundService : Party -> Party -> Party -> Map Text Settlement.Hierarchy -> Update (ContractId Fund.I) +createFundService operator provider customer paths = do + settlementServiceCid <- createSettlementService operator provider customer paths + offerCid <- exerciseByKey @Distributor.Role (operator, provider) Distributor.OfferFundService with customer; settlementServiceCid + toInterfaceContractId <$> exercise offerCid Fund.Accept + +createDecentralizedExchangeService : Party -> Parties -> Text -> InstrumentQuantity -> InstrumentQuantity -> AccountKey -> ContractId Fungible.I -> InstrumentQuantity -> AccountKey -> ContractId Fungible.I -> Update (ContractId DecentralizedExchange.I) +createDecentralizedExchangeService consortium observers id shares quantity1 account1 fungible1Cid quantity2 account2 fungible2Cid = do + fungible1Cid <- coerceContractId <$> exercise (toInterfaceContractId @Disclosure.I fungible1Cid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (id, observers) + fungible2Cid <- coerceContractId <$> exercise (toInterfaceContractId @Disclosure.I fungible2Cid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (id, observers) + let + p1 = Pool with quantity = quantity1; account = account1; fungibleCid = fungible1Cid + p2 = Pool with quantity = quantity2; account = account2; fungibleCid = fungible2Cid + toInterfaceContractId <$> create DecentralizedExchange.Service with consortium; id = Id id; description = id; shares; p1; p2; observers diff --git a/src/daml/Daml/Finance/App/Setup/Util/Update/Workflow.daml b/src/daml/Daml/Finance/App/Setup/Util/Update/Workflow.daml new file mode 100644 index 00000000..3d410c95 --- /dev/null +++ b/src/daml/Daml/Finance/App/Setup/Util/Update/Workflow.daml @@ -0,0 +1,307 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Setup.Util.Update.Workflow where + +import DA.Date (DayOfWeek, toGregorian) +import DA.List (head) +import DA.Map qualified as M (Map, fromList) +import DA.Set (fromList, singleton) +import DA.Text (parseInt) +import DA.Time (time) +import Daml.Finance.App.Custody.Service qualified as CustodyService (T) +import Daml.Finance.App.Data.AccountDirectory (AccountDirectory(..)) +import Daml.Finance.App.Distribution.Auction.Service qualified as AuctionService (T) +import Daml.Finance.App.Distribution.Bidding.Service qualified as BiddingService (T) +import Daml.Finance.App.Distribution.Fund.Service qualified as FundService (T) +import Daml.Finance.App.Distribution.Investment.Service qualified as InvestmentService (T) +import Daml.Finance.App.Interface.Custody.Service qualified as CustodyService (Deposit(..), I, OpenAccount(..), RequestDeposit(..), RequestOpenAccount(..)) +import Daml.Finance.App.Interface.Distribution.Auction.Auction qualified as Auction (I) +import Daml.Finance.App.Interface.Distribution.Auction.Service qualified as AuctionService (CreateAuction(..), I, ProcessAuction(..), RequestCreateAuction(..)) +import Daml.Finance.App.Interface.Distribution.Bidding.Bid qualified as Bid (I) +import Daml.Finance.App.Interface.Distribution.Bidding.Service qualified as BiddingService (CreateBid(..), I, RequestCreateBid(..)) +import Daml.Finance.App.Interface.Distribution.Fund.Fund qualified as Fund (I) +import Daml.Finance.App.Interface.Distribution.Fund.PooledInvestmentRequest qualified as PooledInvestmentRequest (I) +import Daml.Finance.App.Interface.Distribution.Fund.Service qualified as FundService (FulfillPooledInvestmentRequest(..), I, PoolInvestmentRequests(..)) +import Daml.Finance.App.Interface.Distribution.Investment.InvestmentRequest qualified as InvestmentRequest (I) +import Daml.Finance.App.Interface.Distribution.Investment.Service qualified as InvestmentService (I, RequestInvestment(..),) +import Daml.Finance.App.Interface.Issuance.Issuance qualified as Issuance (I) +import Daml.Finance.App.Interface.Issuance.Service qualified as IssuanceService (I, Issue(..), RequestIssue(..)) +import Daml.Finance.App.Interface.Lifecycle.Service qualified as LifecycleService (I, DeclareDividend(..), DeclareStockSplit(..), DeclareReplacement(..)) +import Daml.Finance.App.Interface.Listing.Listing qualified as Listing (I) +import Daml.Finance.App.Interface.Listing.Service qualified as ListingService (I, List(..), RequestListing(..)) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (I, Side(..), View) +import Daml.Finance.App.Interface.Trading.Service qualified as TradingService (CreateOrder(..), I, RequestCreateOrder(..)) +import Daml.Finance.App.Issuance.Service qualified as IssuanceService (T) +import Daml.Finance.App.Lifecycle.Service qualified as LifecycleService (T) +import Daml.Finance.App.Listing.Service qualified as ListingService (T) +import Daml.Finance.App.Trading.Service qualified as TradingService (T) +import Daml.Finance.Data.Numeric.Observation qualified as Data (Observation(..)) +import Daml.Finance.Data.Reference.HolidayCalendar qualified as Data (HolidayCalendar(..)) +import Daml.Finance.Data.Time.DateClock qualified as Data (DateClock(..)) +import Daml.Finance.Data.Time.DateClockUpdate qualified as Data (DateClockUpdateEvent(..)) +import Daml.Finance.Data.Time.DateClock.Types (Unit(..)) +import Daml.Finance.Instrument.Bond.FixedRate.Instrument qualified as FixedRate (Instrument(..)) +import Daml.Finance.Instrument.Bond.FloatingRate.Instrument qualified as FloatingRate (Instrument(..)) +import Daml.Finance.Instrument.Bond.InflationLinked.Instrument qualified as InflationLinked (Instrument(..)) +import Daml.Finance.Instrument.Bond.ZeroCoupon.Instrument qualified as ZeroCoupon (Instrument(..)) +import Daml.Finance.Instrument.Equity.Instrument qualified as Equity (Instrument(..)) +import Daml.Finance.Instrument.Generic.Instrument qualified as Generic (Instrument(..)) +import Daml.Finance.Instrument.Swap.CreditDefault.Instrument qualified as CreditDefaultSwap (Instrument(..)) +import Daml.Finance.Instrument.Token.Instrument qualified as Token (Instrument(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (Controllers(..)) +import Daml.Finance.Interface.Claims.Types (C) +import Daml.Finance.Interface.Holding.Base qualified as Holding (I) +import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) +import Daml.Finance.Interface.Holding.Transferable qualified as Transferable (I, Transfer(..)) +import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (GetView(..), I, Reference(..)) +import Daml.Finance.Interface.Lifecycle.Event qualified as Event (I) +import Daml.Finance.Interface.Lifecycle.Effect qualified as Effect (I) +import Daml.Finance.Interface.Lifecycle.Observable.NumericObservable qualified as NumericObservable (I) +import Daml.Finance.Interface.Lifecycle.Observable.TimeObservable qualified as TimeObservable (I) +import Daml.Finance.Interface.Lifecycle.Rule.Claim qualified as Claim (ClaimEffect(..), ClaimResult(..)) +import Daml.Finance.Interface.Settlement.Batch qualified as Batch (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I, Allocate(..), Approve(..)) +import Daml.Finance.Interface.Settlement.Types qualified as Settlement (Allocation, Approval) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id(..), InstrumentKey, InstrumentQuantity, Parties, PartiesMap) +import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayAdjustment(..), BusinessDayConventionEnum, HolidayCalendarData(..)) +import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) +import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum, RollConventionEnum(..)) +import Daml.Finance.Interface.Types.Date.Schedule (Frequency(..), PeriodicSchedule(..)) + +createAccount : Party -> Party -> Party -> Party -> Text -> PartiesMap -> Update AccountKey +createAccount operator provider customer public id observers = do + let controllers = Account.Controllers with outgoing = singleton customer; incoming = singleton customer + serviceCid <- toInterfaceContractId @CustodyService.I . fst <$> fetchByKey @CustodyService.T (operator, provider, customer) + openAccountRequestCid <- exercise serviceCid CustodyService.RequestOpenAccount with id = Id id; description = id; controllers; observers + snd <$> exercise serviceCid CustodyService.OpenAccount with openAccountRequestCid + +createAccountDirectory : Party -> [(InstrumentKey, AccountKey)] -> Parties -> Update (ContractId AccountDirectory) +createAccountDirectory provider mapping observers = do + create AccountDirectory with provider; accounts = M.fromList (map (\(i, a) -> (i.id, a)) mapping); observers + +-- | Create a `Reference` for an instrument. +-- Note: This should only be called together with an instrument creation +createReference : ContractId Instrument.I -> Party -> Party -> PartiesMap -> Update InstrumentKey +createReference cid depository issuer observers = do + instrumentView <- exercise cid Instrument.GetView with viewer = issuer + let ref = Instrument.Reference with instrumentView; cid; observers + create ref + pure $ key ref + +-- | Create a schedule for periodic payments. +createPaymentPeriodicSchedule : Date -> [Text] -> BusinessDayConventionEnum -> PeriodEnum -> Int -> Date -> Date -> PeriodicSchedule +createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate = do + let + (y, m, d) = toGregorian firstCouponDate + periodicSchedule = PeriodicSchedule with + businessDayAdjustment = + BusinessDayAdjustment with + calendarIds = holidayCalendarIds + convention = businessDayConvention + effectiveDateBusinessDayAdjustment = None + terminationDateBusinessDayAdjustment = None + frequency = + Frequency with + rollConvention = DOM d + period = couponPeriod + periodMultiplier = couponPeriodMultiplier + effectiveDate = issueDate + firstRegularPeriodStartDate = Some firstCouponDate + lastRegularPeriodEndDate = Some maturityDate + stubPeriodType = None + terminationDate = maturityDate + periodicSchedule + +createClockAndEvent : [Party] -> Date -> Parties -> Update (ContractId TimeObservable.I, ContractId Event.I) +createClockAndEvent providers today observers = do + let + description = show today + id = Id description + date = Unit today + clock = Data.DateClock with providers = fromList providers; date; id; description; observers + clockCid <- toInterfaceContractId <$> create clock + eventCid <- toInterfaceContractId <$> create Data.DateClockUpdateEvent with providers = fromList providers; id; description; eventTime = time today 0 0 0; date = today; observers + pure (clockCid, eventCid) + +createObservation : Party -> Text -> [(Time, Decimal)] -> M.Map Text Parties -> Update (ContractId NumericObservable.I) +createObservation provider id observations observers = do + toInterfaceContractId <$> create Data.Observation with provider; id = Id id; observations = M.fromList observations; observers + +createCalendar : Party -> Text -> [DayOfWeek] -> [Date] -> M.Map Text Parties -> Update (ContractId Data.HolidayCalendar) +createCalendar provider id weekend holidays observers = do + let calendar = HolidayCalendarData with id; weekend; holidays + create Data.HolidayCalendar with provider; calendar; observers + +originateToken : Party -> Party -> PartiesMap -> Time -> Text -> Text -> Update InstrumentKey +originateToken depository issuer observers validAsOf id description = do + cid <- coerceContractId <$> create Token.Instrument with depository; issuer; id = Id id; version = "0"; observers; validAsOf; description + createReference cid depository issuer observers + +originateEquity : Party -> Party -> PartiesMap -> Time -> Text -> Text -> Update InstrumentKey +originateEquity depository issuer observers validAsOf id description = do + cid <- coerceContractId <$> create Equity.Instrument with depository; issuer; id = Id id; version = "0"; observers; validAsOf; description + createReference cid depository issuer observers + +originateGeneric : Party -> Party -> PartiesMap -> Time -> Text -> Text -> C -> Update InstrumentKey +originateGeneric depository issuer observers acquisitionTime id description claims = do + cid <- coerceContractId <$> create Generic.Instrument with depository; issuer; id = Id id; description; version = "0"; acquisitionTime; claims; observers; lastEventTimestamp = acquisitionTime + createReference cid depository issuer observers + +originateFixedRateBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date-> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Update InstrumentKey +originateFixedRateBond depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention couponRate couponPeriod couponPeriodMultiplier currency = do + let + periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate + cid <- toInterfaceContractId @Instrument.I <$> create FixedRate.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; couponRate; currency + createReference cid depository issuer observers + +originateZeroCouponBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> Date -> InstrumentKey -> Update InstrumentKey +originateZeroCouponBond depository issuer id description observers lastEventTimestamp issueDate maturityDate currency = do + cid <- toInterfaceContractId <$> create ZeroCoupon.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; issueDate; maturityDate; currency + createReference cid depository issuer observers + +originateFloatingRateBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Text -> Update InstrumentKey +originateFloatingRateBond depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention couponRate couponPeriod couponPeriodMultiplier currency referenceRateId = do + let + periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate + cid <- toInterfaceContractId <$> create FloatingRate.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; couponSpread=couponRate; referenceRateId; currency + createReference cid depository issuer observers + +originateInflationLinkedBond : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Text -> Decimal -> Update InstrumentKey +originateInflationLinkedBond depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention couponRate couponPeriod couponPeriodMultiplier currency inflationIndexId inflationIndexBaseValue = do + let + periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate + cid <- toInterfaceContractId <$> create InflationLinked.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; couponRate; inflationIndexId; currency; inflationIndexBaseValue + createReference cid depository issuer observers + +originateCreditDefaultSwap : Party -> Party -> Text -> Text -> PartiesMap -> Time -> Date -> [Text] -> Party -> Date -> Date -> DayCountConventionEnum -> BusinessDayConventionEnum -> Decimal -> PeriodEnum -> Int -> InstrumentKey -> Text -> Text -> Bool -> Update InstrumentKey +originateCreditDefaultSwap depository issuer id description observers lastEventTimestamp issueDate holidayCalendarIds calendarDataProvider firstCouponDate maturityDate dayCountConvention businessDayConvention fixRate couponPeriod couponPeriodMultiplier currency defaultProbabilityReferenceId recoveryRateReferenceId ownerReceivesFix = do + let + periodicSchedule = createPaymentPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate + cid <- toInterfaceContractId <$> create CreditDefaultSwap.Instrument with depository; issuer; id = Id id; version = "0"; description; observers; lastEventTimestamp; periodicSchedule; holidayCalendarIds; calendarDataProvider; dayCountConvention; currency; fixRate; defaultProbabilityReferenceId; recoveryRateReferenceId; ownerReceivesFix + createReference cid depository issuer observers + +transfer : Party -> AccountKey -> Party -> ContractId Transferable.I -> Update (ContractId Transferable.I) +transfer from toAccount public depositCid = do + exercise depositCid Transferable.Transfer with actors = fromList [from, toAccount.owner]; newOwnerAccount = toAccount + +deposit : Party -> Party -> Party -> Party -> InstrumentQuantity -> AccountKey -> Update (ContractId Holding.I) +deposit operator provider customer public quantity account = do + serviceCid <- toInterfaceContractId @CustodyService.I . fst <$> fetchByKey @CustodyService.T (operator, provider, customer) + depositRequestCid <- exercise serviceCid CustodyService.RequestDeposit with quantity; account + exercise serviceCid CustodyService.Deposit with depositRequestCid + +issue : Party -> Party -> Party -> Party -> InstrumentQuantity -> AccountKey -> Update (ContractId Issuance.I, ContractId Holding.I) +issue operator provider customer public quantity account = do + let + issuanceId = Id $ "ISSUANCE-" <> show quantity.unit.id + description = "Issuance of " <> show quantity.amount <> " " <> show quantity.unit.id + serviceCid <- toInterfaceContractId @IssuanceService.I . fst <$> fetchByKey @IssuanceService.T (operator, provider, customer) + issueRequestCid <- exercise serviceCid IssuanceService.RequestIssue with issuanceId; description; quantity; account + exercise serviceCid IssuanceService.Issue with issueRequestCid + +list : Party -> Party -> Party -> Id -> Text -> InstrumentKey -> InstrumentKey -> Parties -> Update (ContractId Listing.I) +list operator provider customer listingId description tradedInstrument quotedInstrument observers = do + serviceCid <- toInterfaceContractId @ListingService.I . fst <$> fetchByKey @ListingService.T (operator, provider, customer) + listingRequestCid <- exercise serviceCid ListingService.RequestListing with listingId; description; tradedInstrument; quotedInstrument; observers + exercise serviceCid ListingService.List with listingRequestCid + +createOrder : Party -> Party -> Party -> Party -> Id -> Order.Side -> InstrumentQuantity -> InstrumentQuantity -> Id -> AccountKey -> [ContractId Order.I] -> ContractId Fungible.I -> Parties -> Update (Optional (ContractId Order.I, Order.View)) +createOrder operator provider customer public id side quantity price listingId account orderCids holdingCid observers = do + let + depository = if side == Order.Buy then quantity.unit.depository else price.unit.depository + requiredQuantity = if side == Order.Buy then price with amount = price.amount * quantity.amount else quantity + serviceCid <- toInterfaceContractId @TradingService.I . fst <$> fetchByKey @TradingService.T (operator, provider, customer) + createOrderRequestCid <- exercise serviceCid TradingService.RequestCreateOrder with id; listingId; quantity; price; side; collateralCid = holdingCid; account; orderCids; observers + exercise serviceCid TradingService.CreateOrder with createOrderRequestCid + +createBidOrder : Party -> Party -> Party -> Party -> Id -> InstrumentQuantity -> InstrumentQuantity -> Id -> AccountKey -> [ContractId Order.I] -> ContractId Fungible.I -> Parties -> Update (Optional (ContractId Order.I, Order.View)) +createBidOrder operator provider customer public id = createOrder operator provider customer public id Order.Buy + +createAskOrder : Party -> Party -> Party -> Party -> Id -> InstrumentQuantity -> InstrumentQuantity -> Id -> AccountKey -> [ContractId Order.I] -> ContractId Fungible.I -> Parties -> Update (Optional (ContractId Order.I, Order.View)) +createAskOrder operator provider customer public id = createOrder operator provider customer public id Order.Sell + +createAuction : Party -> Party -> Party -> Party -> Id -> Text -> InstrumentQuantity -> InstrumentKey -> Decimal -> ContractId Fungible.I -> AccountKey -> Update (ContractId Auction.I) +createAuction operator provider customer public auctionId description quantity currency floor collateralCid receivableAccount = do + serviceCid <- toInterfaceContractId @AuctionService.I . fst <$> fetchByKey @AuctionService.T (operator, provider, customer) + createAuctionRequestCid <- exercise serviceCid AuctionService.RequestCreateAuction with auctionId; description; quantity; currency; floor; collateralCid; receivableAccount; observers = singleton public + exercise serviceCid AuctionService.CreateAuction with createAuctionRequestCid + +createAuctionBid : Party -> Party -> Party -> Party -> ContractId Auction.I -> Decimal -> Decimal -> ContractId Fungible.I -> AccountKey -> Update (ContractId Bid.I) +createAuctionBid operator provider customer public auctionCid amount price collateralCid receivableAccount = do + serviceCid <- toInterfaceContractId @BiddingService.I . fst <$> fetchByKey @BiddingService.T (operator, provider, customer) + createBidRequestCid <- exercise serviceCid BiddingService.RequestCreateBid with auctionCid; amount; price; collateralCid; receivableAccount + exercise serviceCid BiddingService.CreateBid with createBidRequestCid + +processAuction : Party -> Party -> Party -> Party -> ContractId Auction.I -> [ContractId Bid.I] -> Update (ContractId Auction.I) +processAuction operator provider customer public auctionCid bidCids = do + serviceCid <- toInterfaceContractId @AuctionService.I . fst <$> fetchByKey @AuctionService.T (operator, provider, customer) + exercise serviceCid AuctionService.ProcessAuction with auctionCid; bidCids + +declareDividend : Party -> Party -> Party -> Party -> InstrumentKey -> Time -> [InstrumentQuantity] -> Update (InstrumentKey, ContractId Effect.I) +declareDividend operator provider issuer public equity effectiveTime perUnitDistribution = do + let + id = "Dividend-" <> show equity.id <> "-" <> equity.version + Some version = parseInt equity.version + serviceCid <- toInterfaceContractId @LifecycleService.I . fst <$> fetchByKey @LifecycleService.T (operator, provider, issuer) + (newInstrument, [effectCid]) <- exercise serviceCid LifecycleService.DeclareDividend with + equity + newVersion = show (version + 1) + eventId = Id id + description = id + effectiveTime + perUnitDistribution + pure (newInstrument, effectCid) + +declareReplacement : Party -> Party -> Party -> Party -> InstrumentKey -> Time -> [InstrumentQuantity] -> Update (ContractId Effect.I) +declareReplacement operator provider issuer public equity effectiveTime perUnitReplacement = do + let id = "Replacement-" <> show equity.id <> "-" <> equity.version + serviceCid <- toInterfaceContractId @LifecycleService.I . fst <$> fetchByKey @LifecycleService.T (operator, provider, issuer) + head <$> exercise serviceCid LifecycleService.DeclareReplacement with + equity + eventId = Id id + description = id + effectiveTime + perUnitReplacement + +declareStockSplit : Party -> Party -> Party -> Party -> InstrumentKey -> Time -> Decimal -> Update (InstrumentKey, ContractId Effect.I) +declareStockSplit operator provider issuer public equity effectiveTime adjustmentFactor = do + let + id = "StockSplit-" <> show equity.id <> "-" <> equity.version + Some version = parseInt equity.version + serviceCid <- toInterfaceContractId @LifecycleService.I . fst <$> fetchByKey @LifecycleService.T (operator, provider, issuer) + (newInstrument, [effectCid]) <- exercise serviceCid LifecycleService.DeclareStockSplit with + equity + newVersion = show (version + 1) + eventId = Id id + description = id + effectiveTime + adjustmentFactor + pure (newInstrument, effectCid) + +claimEffect : Party -> Party -> Party -> Party -> ContractId Effect.I -> [ContractId Holding.I] -> Id -> Update (ContractId Batch.I, [ContractId Instruction.I]) +claimEffect operator custodian owner public effectCid holdingCids batchId = do + service <- snd <$> fetchByKey @CustodyService.T (operator, custodian, owner) + Claim.ClaimResult{batchCid; instructionCids} <- exercise service.claimRuleCid Claim.ClaimEffect with claimer = owner; effectCid; holdingCids; batchId + pure (batchCid, instructionCids) + +allocateAndApprove : Party -> Party -> ContractId Instruction.I -> Settlement.Allocation -> Settlement.Approval -> Update (ContractId Instruction.I) +allocateAndApprove operator settler instructionCid allocation approval = do + i <- view <$> fetch instructionCid + instructionCid <- fst <$> exercise instructionCid Instruction.Allocate with actors = singleton settler; allocation + exercise instructionCid Instruction.Approve with actors = singleton settler; approval + +createInvestmentRequest : Party -> Party -> Party -> Party -> Text -> Date -> ContractId Fund.I -> ContractId Transferable.I -> Update (ContractId InvestmentRequest.I) +createInvestmentRequest operator provider customer public id asOfDate fundCid cashCid = do + serviceCid <- toInterfaceContractId @InvestmentService.I . fst <$> fetchByKey @InvestmentService.T (operator, provider, customer) + exercise serviceCid InvestmentService.RequestInvestment with requestId = Id id; asOfDate; fundCid; cashCid + +poolInvestmentRequests : Party -> Party -> Party -> Party -> Text -> Date -> ContractId Fund.I -> ContractId Transferable.I -> [ContractId InvestmentRequest.I] -> Update (ContractId PooledInvestmentRequest.I) +poolInvestmentRequests operator provider customer public id asOfDate fundCid cashCid investmentRequestCids = do + serviceCid <- toInterfaceContractId @FundService.I . fst <$> fetchByKey @FundService.T (operator, provider, customer) + exercise serviceCid FundService.PoolInvestmentRequests with requestId = Id id; asOfDate; fundCid; cashCid; investmentRequestCids + +fulfillPooledInvestmentRequest : Party -> Party -> Party -> Party -> ContractId Fund.I -> ContractId PooledInvestmentRequest.I -> ContractId NumericObservable.I -> Update [ContractId Holding.I] +fulfillPooledInvestmentRequest operator provider customer public fundCid pooledInvestmentRequestCid navObservableCid = do + serviceCid <- toInterfaceContractId @FundService.I . fst <$> fetchByKey @FundService.T (operator, provider, customer) + exercise serviceCid FundService.FulfillPooledInvestmentRequest with fundCid; pooledInvestmentRequestCid; navObservableCid diff --git a/src/daml/Daml/Finance/App/Structuring/Auto.daml b/src/daml/Daml/Finance/App/Structuring/Auto.daml new file mode 100644 index 00000000..b55becf9 --- /dev/null +++ b/src/daml/Daml/Finance/App/Structuring/Auto.daml @@ -0,0 +1,118 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Structuring.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Structuring.Auto qualified as Auto +import Daml.Finance.App.Interface.Structuring.Service qualified as Service +import Daml.Finance.App.Structuring.Service qualified as Service (T) + +type T = Service + +instance Auto.HasImplementation Service + +template Service + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider, customer + + key (operator, provider, customer) : (Party, Party, Party) + maintainer key._1 + + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Auto.I for Service where + view = Auto.View + + asBase = toInterface @Base.I this + + requestAndCreateToken Auto.RequestAndCreateToken{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createTokenRequestCid <- exercise serviceCid Service.RequestCreateToken with .. + exercise serviceCid Service.CreateToken with createTokenRequestCid + + requestAndCreateEquity Auto.RequestAndCreateEquity{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createEquityRequestCid <- exercise serviceCid Service.RequestCreateEquity with .. + exercise serviceCid Service.CreateEquity with createEquityRequestCid + + requestAndCreateGeneric Auto.RequestAndCreateGeneric{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createGenericRequestCid <- exercise serviceCid Service.RequestCreateGeneric with .. + exercise serviceCid Service.CreateGeneric with createGenericRequestCid + + requestAndCreateFixedRateBond Auto.RequestAndCreateFixedRateBond{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createFixedRateBondRequestCid <- exercise serviceCid Service.RequestCreateFixedRateBond with .. + exercise serviceCid Service.CreateFixedRateBond with createFixedRateBondRequestCid + + requestAndCreateFloatingRateBond Auto.RequestAndCreateFloatingRateBond{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createFloatingRateBondRequestCid <- exercise serviceCid Service.RequestCreateFloatingRateBond with .. + exercise serviceCid Service.CreateFloatingRateBond with createFloatingRateBondRequestCid + + requestAndCreateInflationLinkedBond Auto.RequestAndCreateInflationLinkedBond{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createInflationLinkedBondRequestCid <- exercise serviceCid Service.RequestCreateInflationLinkedBond with .. + exercise serviceCid Service.CreateInflationLinkedBond with createInflationLinkedBondRequestCid + + requestAndCreateZeroCouponBond Auto.RequestAndCreateZeroCouponBond{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createZeroCouponBondRequestCid <- exercise serviceCid Service.RequestCreateZeroCouponBond with .. + exercise serviceCid Service.CreateZeroCouponBond with createZeroCouponBondRequestCid + + requestAndCreateFpmlSwap Auto.RequestAndCreateFpmlSwap{..} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createFpmlSwapRequestCid <- exercise serviceCid Service.RequestCreateFpmlSwap with .. + exercise serviceCid Service.CreateFpmlSwap with createFpmlSwapRequestCid + +template Offer + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider + observer customer + + choice Accept : ContractId Service + controller customer + do + create Service with .. + + choice Decline : () + controller customer + do pure () + + choice Withdraw : () + controller provider + do pure () + +template Request + with + customer : Party + provider : Party + where + signatory customer + observer provider + + choice Cancel : () + controller customer + do pure () + + choice Reject : () + controller provider + do pure () + + choice Approve : ContractId Service + with + operator : Party + controller operator, provider + do + create Service with .. diff --git a/src/daml/Daml/Finance/App/Structuring/Auto/Service.daml b/src/daml/Daml/Finance/App/Structuring/Auto/Service.daml deleted file mode 100644 index 0f813640..00000000 --- a/src/daml/Daml/Finance/App/Structuring/Auto/Service.daml +++ /dev/null @@ -1,195 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Structuring.Auto.Service where - -import Daml.Finance.App.Structuring.Service qualified as S -import Daml.Finance.Interface.Claims.Types (C) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I, K) -import Daml.Finance.Interface.Types.Common (Id, PartiesMap) -import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) -import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) -import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) - -template Service - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider, customer - - key (operator, provider, customer) : (Party, Party, Party) - maintainer key._1 - - nonconsuming choice RequestAndCreateToken : ContractId Instrument.I - with - id : Text - description : Text - validAsOf : Time - observers : PartiesMap - controller customer - do - createTokenRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateToken with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateToken with createTokenRequestCid - - nonconsuming choice RequestAndCreateEquity : ContractId Instrument.I - with - id : Id - description : Text - version : Text - validAsOf : Time - observers : PartiesMap - controller customer - do - createEquityRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateEquity with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateEquity with createEquityRequestCid - - nonconsuming choice RequestAndCreateGeneric : ContractId Instrument.I - with - id : Text - description : Text - claims : C - acquisitionTime : Time - lastEventTimestamp : Time - observers : PartiesMap - controller customer - do - createGenericRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateGeneric with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateGeneric with createGenericRequestCid - - nonconsuming choice RequestAndCreateFixedRateBond : ContractId Instrument.I - with - id : Text - description : Text - couponRate : Decimal - issueDate : Date - firstCouponDate : Date - maturityDate : Date - holidayCalendarIds : [Text] - calendarDataProvider : Party - dayCountConvention : DayCountConventionEnum - businessDayConvention : BusinessDayConventionEnum - couponPeriod : PeriodEnum - couponPeriodMultiplier : Int - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - createFixedRateBondRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateFixedRateBond with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateFixedRateBond with createFixedRateBondRequestCid - - nonconsuming choice RequestAndCreateFloatingRateBond : ContractId Instrument.I - with - id : Text - description : Text - referenceRateId : Text - couponSpread : Decimal - issueDate : Date - firstCouponDate : Date - maturityDate : Date - holidayCalendarIds : [Text] - calendarDataProvider : Party - dayCountConvention : DayCountConventionEnum - businessDayConvention : BusinessDayConventionEnum - couponPeriod : PeriodEnum - couponPeriodMultiplier : Int - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - createFloatingRateBondRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateFloatingRateBond with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateFloatingRateBond with createFloatingRateBondRequestCid - - nonconsuming choice RequestAndCreateInflationLinkedBond : ContractId Instrument.I - with - id : Text - description : Text - inflationIndexId : Text - inflationIndexBaseValue : Decimal - couponRate : Decimal - issueDate : Date - firstCouponDate : Date - maturityDate : Date - holidayCalendarIds : [Text] - calendarDataProvider : Party - dayCountConvention : DayCountConventionEnum - businessDayConvention : BusinessDayConventionEnum - couponPeriod : PeriodEnum - couponPeriodMultiplier : Int - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - createInflationLinkedBondRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateInflationLinkedBond with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateInflationLinkedBond with createInflationLinkedBondRequestCid - - nonconsuming choice RequestAndCreateZeroCouponBond : ContractId Instrument.I - with - id : Text - description : Text - issueDate : Date - maturityDate : Date - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - createZeroCouponBondRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateZeroCouponBond with .. - exerciseByKey @S.Service (operator, provider, customer) S.CreateZeroCouponBond with createZeroCouponBondRequestCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - -template Offer - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider - observer customer - - choice Accept : ContractId Service - controller customer - do - create Service with .. - - choice Decline : () - controller customer - do pure () - - choice Withdraw : () - controller provider - do pure () - -template Request - with - customer : Party - provider : Party - where - signatory customer - observer provider - - choice Cancel : () - controller customer - do pure () - - choice Reject : () - controller provider - do pure () - - choice Approve : ContractId Service - with - operator : Party - controller operator, provider - do - create Service with .. diff --git a/src/daml/Daml/Finance/App/Structuring/Model.daml b/src/daml/Daml/Finance/App/Structuring/Model.daml index a41bc09a..aeacf9e5 100644 --- a/src/daml/Daml/Finance/App/Structuring/Model.daml +++ b/src/daml/Daml/Finance/App/Structuring/Model.daml @@ -3,25 +3,56 @@ module Daml.Finance.App.Structuring.Model where -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (K) +import DA.Set(fromList) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateTokenRequest qualified as CreateTokenRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateEquityRequest qualified as CreateEquityRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateGenericRequest qualified as CreateGenericRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateFixedRateBondRequest qualified as CreateFixedRateBondRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateFloatingRateBondRequest qualified as CreateFloatingRateBondRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateInflationLinkedBondRequest qualified as CreateInflationLinkedBondRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateZeroCouponBondRequest qualified as CreateZeroCouponBondRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Structuring.CreateFpmlSwapRequest qualified as CreateFpmlSwapRequest (HasImplementation, I, View(..)) import Daml.Finance.Interface.Claims.Types (C) -import Daml.Finance.Interface.Types.Common (Id, PartiesMap) +import Daml.Finance.Interface.Instrument.Swap.Fpml.FpmlTypes (SwapStream) +import Daml.Finance.Interface.Types.Common.Types (Id, InstrumentKey, PartiesMap) import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum) import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum) +instance CreateTokenRequest.HasImplementation CreateTokenRequest + template CreateTokenRequest with operator : Party provider : Party customer : Party - id : Text + id : Id description : Text + version : Text observers : PartiesMap validAsOf : Time where signatory operator, provider, customer + interface instance Removable.I for CreateTokenRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateTokenRequest.I for CreateTokenRequest where + view = CreateTokenRequest.View with + operator + provider + customer + id + description + version + observers + validAsOf + + asRemovable = toInterface @Removable.I this + +instance CreateEquityRequest.HasImplementation CreateEquityRequest + template CreateEquityRequest with operator : Party @@ -35,13 +66,32 @@ template CreateEquityRequest where signatory operator, provider, customer + interface instance Removable.I for CreateEquityRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateEquityRequest.I for CreateEquityRequest where + view = CreateEquityRequest.View with + operator + provider + customer + id + description + version + observers + validAsOf + + asRemovable = toInterface @Removable.I this + +instance CreateGenericRequest.HasImplementation CreateGenericRequest + template CreateGenericRequest with operator : Party provider : Party customer : Party - id : Text + id : Id description : Text + version : Text claims : C acquisitionTime : Time observers : PartiesMap @@ -49,13 +99,34 @@ template CreateGenericRequest where signatory operator, provider, customer + interface instance Removable.I for CreateGenericRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateGenericRequest.I for CreateGenericRequest where + view = CreateGenericRequest.View with + operator + provider + customer + id + description + version + claims + acquisitionTime + observers + lastEventTimestamp + + asRemovable = toInterface @Removable.I this + +instance CreateFixedRateBondRequest.HasImplementation CreateFixedRateBondRequest + template CreateFixedRateBondRequest with operator : Party provider : Party customer : Party - id : Text + id : Id description : Text + version : Text couponRate : Decimal issueDate : Date firstCouponDate : Date @@ -66,19 +137,49 @@ template CreateFixedRateBondRequest businessDayConvention : BusinessDayConventionEnum couponPeriod : PeriodEnum couponPeriodMultiplier : Int - currency : Instrument.K + currency : InstrumentKey observers : PartiesMap lastEventTimestamp : Time where signatory operator, provider, customer + interface instance Removable.I for CreateFixedRateBondRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateFixedRateBondRequest.I for CreateFixedRateBondRequest where + view = CreateFixedRateBondRequest.View with + operator + provider + customer + id + description + version + couponRate + issueDate + firstCouponDate + maturityDate + holidayCalendarIds + calendarDataProvider + dayCountConvention + businessDayConvention + couponPeriod + couponPeriodMultiplier + currency + observers + lastEventTimestamp + + asRemovable = toInterface @Removable.I this + +instance CreateFloatingRateBondRequest.HasImplementation CreateFloatingRateBondRequest + template CreateFloatingRateBondRequest with operator : Party provider : Party customer : Party - id : Text + id : Id description : Text + version : Text referenceRateId : Text couponSpread : Decimal issueDate : Date @@ -90,19 +191,50 @@ template CreateFloatingRateBondRequest businessDayConvention : BusinessDayConventionEnum couponPeriod : PeriodEnum couponPeriodMultiplier : Int - currency : Instrument.K + currency : InstrumentKey observers : PartiesMap lastEventTimestamp : Time where signatory operator, provider, customer + interface instance Removable.I for CreateFloatingRateBondRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateFloatingRateBondRequest.I for CreateFloatingRateBondRequest where + view = CreateFloatingRateBondRequest.View with + operator + provider + customer + id + description + version + referenceRateId + couponSpread + issueDate + firstCouponDate + maturityDate + holidayCalendarIds + calendarDataProvider + dayCountConvention + businessDayConvention + couponPeriod + couponPeriodMultiplier + currency + observers + lastEventTimestamp + + asRemovable = toInterface @Removable.I this + +instance CreateInflationLinkedBondRequest.HasImplementation CreateInflationLinkedBondRequest + template CreateInflationLinkedBondRequest with operator : Party provider : Party customer : Party - id : Text + id : Id description : Text + version : Text inflationIndexId : Text inflationIndexBaseValue : Decimal couponRate : Decimal @@ -115,24 +247,114 @@ template CreateInflationLinkedBondRequest businessDayConvention : BusinessDayConventionEnum couponPeriod : PeriodEnum couponPeriodMultiplier : Int - currency : Instrument.K + currency : InstrumentKey observers : PartiesMap lastEventTimestamp : Time where signatory operator, provider, customer + interface instance Removable.I for CreateInflationLinkedBondRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateInflationLinkedBondRequest.I for CreateInflationLinkedBondRequest where + view = CreateInflationLinkedBondRequest.View with + operator + provider + customer + id + description + version + inflationIndexId + inflationIndexBaseValue + couponRate + issueDate + firstCouponDate + maturityDate + holidayCalendarIds + calendarDataProvider + dayCountConvention + businessDayConvention + couponPeriod + couponPeriodMultiplier + currency + observers + lastEventTimestamp + + asRemovable = toInterface @Removable.I this + +instance CreateZeroCouponBondRequest.HasImplementation CreateZeroCouponBondRequest + template CreateZeroCouponBondRequest with operator : Party provider : Party customer : Party - id : Text + id : Id description : Text + version : Text issueDate : Date maturityDate : Date - currency : Instrument.K + currency : InstrumentKey + observers : PartiesMap + lastEventTimestamp : Time + where + signatory operator, provider, customer + + interface instance Removable.I for CreateZeroCouponBondRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateZeroCouponBondRequest.I for CreateZeroCouponBondRequest where + view = CreateZeroCouponBondRequest.View with + operator + provider + customer + id + description + version + issueDate + maturityDate + currency + observers + lastEventTimestamp + + asRemovable = toInterface @Removable.I this + +instance CreateFpmlSwapRequest.HasImplementation CreateFpmlSwapRequest + +template CreateFpmlSwapRequest + with + operator : Party + provider : Party + customer : Party + id : Id + description : Text + version : Text + swapStreams : [SwapStream] + issuerPartyRef : Text + calendarDataProvider : Party + currencies : [InstrumentKey] observers : PartiesMap lastEventTimestamp : Time where signatory operator, provider, customer + interface instance Removable.I for CreateFpmlSwapRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateFpmlSwapRequest.I for CreateFpmlSwapRequest where + view = CreateFpmlSwapRequest.View with + operator + provider + customer + id + description + version + swapStreams + issuerPartyRef + calendarDataProvider + currencies + observers + lastEventTimestamp + + asRemovable = toInterface @Removable.I this + diff --git a/src/daml/Daml/Finance/App/Structuring/Service.daml b/src/daml/Daml/Finance/App/Structuring/Service.daml index c0e17ae2..d58e776f 100644 --- a/src/daml/Daml/Finance/App/Structuring/Service.daml +++ b/src/daml/Daml/Finance/App/Structuring/Service.daml @@ -4,10 +4,18 @@ module Daml.Finance.App.Structuring.Service where import DA.Date (toGregorian) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Structuring.CreateTokenRequest qualified as CreateTokenRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateEquityRequest qualified as CreateEquityRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateGenericRequest qualified as CreateGenericRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateFixedRateBondRequest qualified as CreateFixedRateBondRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateFloatingRateBondRequest qualified as CreateFloatingRateBondRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateInflationLinkedBondRequest qualified as CreateInflationLinkedBondRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateZeroCouponBondRequest qualified as CreateZeroCouponBondRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.CreateFpmlSwapRequest qualified as CreateFpmlSwapRequest (View(..)) +import Daml.Finance.App.Interface.Structuring.Service qualified as Service import Daml.Finance.App.Structuring.Model -import Daml.Finance.App.Util (fetchAndArchive) -import Daml.Finance.Interface.Claims.Types (C) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I, K) import Daml.Finance.Interface.Instrument.Bond.FixedRate.Factory qualified as FixedRateBond (Factory, Create(..)) import Daml.Finance.Interface.Instrument.Bond.FixedRate.Types (FixedRate(..)) import Daml.Finance.Interface.Instrument.Bond.FloatingRate.Factory qualified as FloatingRateBond (Factory, Create(..)) @@ -18,16 +26,24 @@ import Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Factory qualified as Ze import Daml.Finance.Interface.Instrument.Bond.ZeroCoupon.Types (ZeroCoupon(..)) import Daml.Finance.Interface.Instrument.Equity.Factory qualified as Equity (Factory, Create(..)) import Daml.Finance.Interface.Instrument.Generic.Factory qualified as Generic (Factory, Create(..)) +import Daml.Finance.Interface.Instrument.Swap.Fpml.Factory qualified as FpmlSwap (Factory, Create(..)) +import Daml.Finance.Interface.Instrument.Swap.Fpml.Types (Fpml(..)) import Daml.Finance.Interface.Instrument.Token.Factory qualified as Token (Factory, Create(..)) import Daml.Finance.Interface.Instrument.Token.Types (Token(..)) +import Daml.Finance.Interface.Types.Common.Types (InstrumentKey(..)) import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayAdjustment(..), BusinessDayConventionEnum) -import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum) import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum, RollConventionEnum(..)) import Daml.Finance.Interface.Types.Date.Schedule (Frequency(..), PeriodicSchedule(..)) -import Daml.Finance.Interface.Types.Common (Id(..), InstrumentKey(..), PartiesMap) -data Factories = Factories +type T = Service + +instance Service.HasImplementation Service + +template Service with + operator : Party + provider : Party + customer : Party token : ContractId Token.Factory equity : ContractId Equity.Factory generic : ContractId Generic.Factory @@ -35,224 +51,124 @@ data Factories = Factories floatingRateBond : ContractId FloatingRateBond.Factory inflationLinkedBond : ContractId InflationLinkedBond.Factory zeroCouponBond : ContractId ZeroCouponBond.Factory - deriving (Eq, Show) - -template Service - with - operator : Party - provider : Party - customer : Party - factories : Factories + fpmlSwap : ContractId FpmlSwap.Factory where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestCreateToken : ContractId CreateTokenRequest - with - id : Text - description : Text - validAsOf : Time - observers : PartiesMap - controller customer - do - create CreateTokenRequest with .. + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () - nonconsuming choice RequestCreateEquity : ContractId CreateEquityRequest - with - id : Id - description : Text - version : Text - validAsOf : Time - observers : PartiesMap - controller customer - do - create CreateEquityRequest with .. + interface instance Service.I for Service where + view = Service.View with token; equity; generic; fixedRateBond; floatingRateBond; inflationLinkedBond; zeroCouponBond; fpmlSwap - nonconsuming choice RequestCreateGeneric : ContractId CreateGenericRequest - with - id : Text - description : Text - claims : C - acquisitionTime : Time - lastEventTimestamp : Time - observers : PartiesMap - controller customer - do - create CreateGenericRequest with .. + asBase = toInterface @Base.I this - nonconsuming choice RequestCreateFixedRateBond : ContractId CreateFixedRateBondRequest - with - id : Text - description : Text - couponRate : Decimal - issueDate : Date - firstCouponDate : Date - maturityDate : Date - holidayCalendarIds : [Text] - calendarDataProvider : Party - dayCountConvention : DayCountConventionEnum - businessDayConvention : BusinessDayConventionEnum - couponPeriod : PeriodEnum - couponPeriodMultiplier : Int - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - create CreateFixedRateBondRequest with .. + requestCreateToken Service.RequestCreateToken{..} = do + toInterfaceContractId <$> create CreateTokenRequest with .. - nonconsuming choice RequestCreateFloatingRateBond : ContractId CreateFloatingRateBondRequest - with - id : Text - description : Text - referenceRateId : Text - couponSpread : Decimal - issueDate : Date - firstCouponDate : Date - maturityDate : Date - holidayCalendarIds : [Text] - calendarDataProvider : Party - dayCountConvention : DayCountConventionEnum - businessDayConvention : BusinessDayConventionEnum - couponPeriod : PeriodEnum - couponPeriodMultiplier : Int - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - create CreateFloatingRateBondRequest with .. + requestCreateEquity Service.RequestCreateEquity{..} = do + toInterfaceContractId <$> create CreateEquityRequest with .. - nonconsuming choice RequestCreateInflationLinkedBond : ContractId CreateInflationLinkedBondRequest - with - id : Text - description : Text - inflationIndexId : Text - inflationIndexBaseValue : Decimal - couponRate : Decimal - issueDate : Date - firstCouponDate : Date - maturityDate : Date - holidayCalendarIds : [Text] - calendarDataProvider : Party - dayCountConvention : DayCountConventionEnum - businessDayConvention : BusinessDayConventionEnum - couponPeriod : PeriodEnum - couponPeriodMultiplier : Int - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - create CreateInflationLinkedBondRequest with .. + requestCreateGeneric Service.RequestCreateGeneric{..} = do + toInterfaceContractId <$> create CreateGenericRequest with .. - nonconsuming choice RequestCreateZeroCouponBond : ContractId CreateZeroCouponBondRequest - with - id : Text - description : Text - issueDate : Date - maturityDate : Date - currency : Instrument.K - observers : PartiesMap - lastEventTimestamp : Time - controller customer - do - create CreateZeroCouponBondRequest with .. + requestCreateFixedRateBond Service.RequestCreateFixedRateBond{..} = do + toInterfaceContractId <$> create CreateFixedRateBondRequest with .. - nonconsuming choice CreateToken : ContractId Instrument.I - with - createTokenRequestCid : ContractId CreateTokenRequest - controller provider - do - CreateTokenRequest{..} <- fetchAndArchive createTokenRequestCid + requestCreateFloatingRateBond Service.RequestCreateFloatingRateBond{..} = do + toInterfaceContractId <$> create CreateFloatingRateBondRequest with .. + + requestCreateInflationLinkedBond Service.RequestCreateInflationLinkedBond{..} = do + toInterfaceContractId <$> create CreateInflationLinkedBondRequest with .. + + requestCreateZeroCouponBond Service.RequestCreateZeroCouponBond{..} = do + toInterfaceContractId <$> create CreateZeroCouponBondRequest with .. + + requestCreateFpmlSwap Service.RequestCreateFpmlSwap{..} = do + toInterfaceContractId <$> create CreateFpmlSwapRequest with .. + + createToken Service.CreateToken{createTokenRequestCid} = do + CreateTokenRequest.View{..} <- view <$> fetchAndRemove createTokenRequestCid let - instrument = InstrumentKey with depository = provider; issuer = customer; id = Id id; version = "0" - token = Token with .. - exercise factories.token Token.Create with token; observers + instrument = InstrumentKey with depository = provider; issuer = customer; id; version + tokenData = Token with .. + cid <- exercise token Token.Create with token = tokenData; observers + pure (cid, instrument) - nonconsuming choice CreateEquity : ContractId Instrument.I - with - createEquityRequestCid : ContractId CreateEquityRequest - controller provider - do - CreateEquityRequest{..} <- fetchAndArchive createEquityRequestCid + createEquity Service.CreateEquity{createEquityRequestCid} = do + CreateEquityRequest.View{..} <- view <$> fetchAndRemove createEquityRequestCid let instrument = InstrumentKey with depository = provider; issuer = customer; id; version - exercise factories.equity Equity.Create with .. + cid <- exercise equity Equity.Create with .. + pure (cid, instrument) - nonconsuming choice CreateGeneric : ContractId Instrument.I - with - createGenericRequestCid : ContractId CreateGenericRequest - controller provider - do - CreateGenericRequest{..} <- fetchAndArchive createGenericRequestCid + createGeneric Service.CreateGeneric{createGenericRequestCid} = do + CreateGenericRequest.View{..} <- view <$> fetchAndRemove createGenericRequestCid let - instrument = InstrumentKey with depository = provider; issuer = customer; id = Id id; version = "0" - exercise factories.generic Generic.Create with .. + instrument = InstrumentKey with depository = provider; issuer = customer; id; version + cid <- exercise generic Generic.Create with .. + pure (cid, instrument) - nonconsuming choice CreateFixedRateBond : ContractId Instrument.I - with - createFixedRateBondRequestCid : ContractId CreateFixedRateBondRequest - controller provider - do - CreateFixedRateBondRequest{..} <- fetchAndArchive createFixedRateBondRequestCid + createFixedRateBond Service.CreateFixedRateBond{createFixedRateBondRequestCid} = do + CreateFixedRateBondRequest.View{..} <- view <$> fetchAndRemove createFixedRateBondRequestCid let - instrument = InstrumentKey with depository = provider; issuer = customer; id = Id id; version = "0" + instrument = InstrumentKey with depository = provider; issuer = customer; id; version periodicSchedule = createCouponPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate fixedRate = FixedRate with .. - exercise factories.fixedRateBond FixedRateBond.Create with fixedRate; observers + cid <- exercise fixedRateBond FixedRateBond.Create with fixedRate; observers + pure (cid, instrument) - nonconsuming choice CreateFloatingRateBond : ContractId Instrument.I - with - createFloatingRateBondRequestCid : ContractId CreateFloatingRateBondRequest - controller provider - do - CreateFloatingRateBondRequest{..} <- fetchAndArchive createFloatingRateBondRequestCid + createFloatingRateBond Service.CreateFloatingRateBond{createFloatingRateBondRequestCid} = do + CreateFloatingRateBondRequest.View{..} <- view <$> fetchAndRemove createFloatingRateBondRequestCid let - instrument = InstrumentKey with depository = provider; issuer = customer; id = Id id; version = "0" + instrument = InstrumentKey with depository = provider; issuer = customer; id; version periodicSchedule = createCouponPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate floatingRate = FloatingRate with .. - exercise factories.floatingRateBond FloatingRateBond.Create with floatingRate; observers + cid <- exercise floatingRateBond FloatingRateBond.Create with floatingRate; observers + pure (cid, instrument) - nonconsuming choice CreateInflationLinkedBond : ContractId Instrument.I - with - createInflationLinkedBondRequestCid : ContractId CreateInflationLinkedBondRequest - controller provider - do - CreateInflationLinkedBondRequest{..} <- fetchAndArchive createInflationLinkedBondRequestCid + createInflationLinkedBond Service.CreateInflationLinkedBond{createInflationLinkedBondRequestCid} = do + CreateInflationLinkedBondRequest.View{..} <- view <$> fetchAndRemove createInflationLinkedBondRequestCid let - instrument = InstrumentKey with depository = provider; issuer = customer; id = Id id; version = "0" + instrument = InstrumentKey with depository = provider; issuer = customer; id; version periodicSchedule = createCouponPeriodicSchedule firstCouponDate holidayCalendarIds businessDayConvention couponPeriod couponPeriodMultiplier issueDate maturityDate inflationLinked = InflationLinked with .. - exercise factories.inflationLinkedBond InflationLinkedBond.Create with inflationLinked; observers + cid <- exercise inflationLinkedBond InflationLinkedBond.Create with inflationLinked; observers + pure (cid, instrument) - nonconsuming choice CreateZeroCouponBond : ContractId Instrument.I - with - createZeroCouponBondRequestCid : ContractId CreateZeroCouponBondRequest - controller provider - do - CreateZeroCouponBondRequest{..} <- fetchAndArchive createZeroCouponBondRequestCid + createZeroCouponBond Service.CreateZeroCouponBond{createZeroCouponBondRequestCid} = do + CreateZeroCouponBondRequest.View{..} <- view <$> fetchAndRemove createZeroCouponBondRequestCid let - instrument = InstrumentKey with depository = provider; issuer = customer; id = Id id; version = "0" + instrument = InstrumentKey with depository = provider; issuer = customer; id; version zeroCoupon = ZeroCoupon with .. - exercise factories.zeroCouponBond ZeroCouponBond.Create with zeroCoupon; observers + cid <- exercise zeroCouponBond ZeroCouponBond.Create with zeroCoupon; observers + pure (cid, instrument) - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () + createFpmlSwap Service.CreateFpmlSwap{createFpmlSwapRequestCid} = do + CreateFpmlSwapRequest.View{..} <- view <$> fetchAndRemove createFpmlSwapRequestCid + let + instrument = InstrumentKey with depository = provider; issuer = customer; id; version + fpml = Fpml with .. + cid <- exercise fpmlSwap FpmlSwap.Create with fpml; observers + pure (cid, instrument) template Offer with operator : Party provider : Party customer : Party - factories : Factories + token : ContractId Token.Factory + equity : ContractId Equity.Factory + generic : ContractId Generic.Factory + fixedRateBond : ContractId FixedRateBond.Factory + floatingRateBond : ContractId FloatingRateBond.Factory + inflationLinkedBond : ContractId InflationLinkedBond.Factory + zeroCouponBond : ContractId ZeroCouponBond.Factory + fpmlSwap : ContractId FpmlSwap.Factory where signatory operator, provider observer customer @@ -289,7 +205,14 @@ template Request choice Approve : ContractId Service with operator : Party - factories : Factories + token : ContractId Token.Factory + equity : ContractId Equity.Factory + generic : ContractId Generic.Factory + fixedRateBond : ContractId FixedRateBond.Factory + floatingRateBond : ContractId FloatingRateBond.Factory + inflationLinkedBond : ContractId InflationLinkedBond.Factory + zeroCouponBond : ContractId ZeroCouponBond.Factory + fpmlSwap : ContractId FpmlSwap.Factory controller operator, provider do create Service with .. diff --git a/src/daml/Daml/Finance/App/Trading/Auto.daml b/src/daml/Daml/Finance/App/Trading/Auto.daml new file mode 100644 index 00000000..442fa843 --- /dev/null +++ b/src/daml/Daml/Finance/App/Trading/Auto.daml @@ -0,0 +1,88 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Daml.Finance.App.Trading.Auto where + +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Trading.Auto qualified as Auto (HasImplementation, I, RequestAndCancelOrder(..), RequestAndCreateOrder(..), View(..)) +import Daml.Finance.App.Interface.Trading.Service qualified as Service (CancelOrder(..), CreateOrder(..), I, RequestCancelOrder(..), RequestCreateOrder(..)) +import Daml.Finance.App.Trading.Service qualified as Service (T) + +type T = Service + +instance Auto.HasImplementation Service + +template Service + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider, customer + + key (operator, provider, customer) : (Party, Party, Party) + maintainer key._1 + + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Auto.I for Service where + view = Auto.View + + asBase = toInterface @Base.I this + + requestAndCreateOrder Auto.RequestAndCreateOrder{id; listingId; quantity; price; side; collateralCid; account; orderCids; observers} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + createOrderRequestCid <- exercise serviceCid Service.RequestCreateOrder with id; listingId; quantity; price; side; collateralCid; account; orderCids; observers + exercise serviceCid Service.CreateOrder with createOrderRequestCid + + requestAndCancelOrder Auto.RequestAndCancelOrder{orderCid} = do + serviceCid <- toInterfaceContractId @Service.I . fst <$> fetchByKey @Service.T (operator, provider, customer) + cancelOrderRequestCid <- exercise serviceCid Service.RequestCancelOrder with orderCid + exercise serviceCid Service.CancelOrder with cancelOrderRequestCid + +template Offer + with + operator : Party + provider : Party + customer : Party + where + signatory operator, provider + observer customer + + choice Accept : ContractId Service + controller customer + do + create Service with .. + + choice Decline : () + controller customer + do + return () + + choice Withdraw : () + controller provider + do pure () + +template Request + with + customer : Party + provider : Party + where + signatory customer + + choice Cancel : () + controller customer + do pure () + + choice Reject : () + controller provider + do pure () + + choice Approve : ContractId Service + with + operator : Party + controller operator, provider + do + create Service with .. diff --git a/src/daml/Daml/Finance/App/Trading/Auto/Service.daml b/src/daml/Daml/Finance/App/Trading/Auto/Service.daml deleted file mode 100644 index 577d544f..00000000 --- a/src/daml/Daml/Finance/App/Trading/Auto/Service.daml +++ /dev/null @@ -1,99 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Trading.Auto.Service where - -import Daml.Finance.App.Trading.Model (Order, Side) -import Daml.Finance.App.Trading.Service qualified as S (CancelOrder(..), CreateOrder(..), RequestCancelOrder(..), RequestCreateOrder(..), Service) -import Daml.Finance.Interface.Account.Account qualified as Account (K) -import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Types.Common (Id, Parties) - -template Service - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider, customer - - key (operator, provider, customer) : (Party, Party, Party) - maintainer key._1 - - nonconsuming choice RequestAndCreateOrder : Optional (ContractId Order, Order) - with - id : Id - listingId : Text - quantity : Instrument.Q - price : Instrument.Q - side : Side - collateralCid : ContractId Fungible.I - account : Account.K - orderCids : [ContractId Order] - observers : Parties - controller customer - do - createOrderRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCreateOrder with id; listingId; quantity; price; side; collateralCid; account; orderCids; observers - exerciseByKey @S.Service (operator, provider, customer) S.CreateOrder with createOrderRequestCid - - nonconsuming choice RequestAndCancelOrder : () - with - orderCid : ContractId Order - controller customer - do - cancelOrderRequestCid <- exerciseByKey @S.Service (operator, provider, customer) S.RequestCancelOrder with orderCid - exerciseByKey @S.Service (operator, provider, customer) S.CancelOrder with cancelOrderRequestCid - - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - -template Offer - with - operator : Party - provider : Party - customer : Party - where - signatory operator, provider - observer customer - - choice Accept : ContractId Service - controller customer - do - create Service with .. - - choice Decline : () - controller customer - do - return () - - choice Withdraw : () - controller provider - do pure () - -template Request - with - customer : Party - provider : Party - where - signatory customer - - choice Cancel : () - controller customer - do pure () - - choice Reject : () - controller provider - do pure () - - choice Approve : ContractId Service - with - operator : Party - controller operator, provider - do - create Service with .. diff --git a/src/daml/Daml/Finance/App/Trading/Model.daml b/src/daml/Daml/Finance/App/Trading/Model.daml index b7e87d36..2d923ec4 100644 --- a/src/daml/Daml/Finance/App/Trading/Model.daml +++ b/src/daml/Daml/Finance/App/Trading/Model.daml @@ -3,27 +3,19 @@ module Daml.Finance.App.Trading.Model where -import DA.Set (singleton) -import Daml.Finance.Interface.Account.Account qualified as Account (K) +import DA.Set (fromList, singleton) +import Daml.Finance.App.Interface.Common.Removable qualified as Removable (I, View(..)) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (DiscoverAndInstruct(..)) +import Daml.Finance.App.Interface.Trading.CancelOrderRequest qualified as CancelOrderRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Trading.CreateOrderRequest qualified as CreateOrderRequest (HasImplementation, I, View(..)) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (ApproveInstruction(..), Fill(..), FillResult(..), HasImplementation, I, Side(..), View(..)) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I, Split(..), SplitResult(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q, qty) -import Daml.Finance.Interface.Settlement.Factory qualified as Factory (I, Instruct(..)) -import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (I, Allocate(..), Approve(..)) -import Daml.Finance.Interface.Settlement.Batch qualified as Batch (I) +import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Allocate(..), Approve(..)) import Daml.Finance.Interface.Settlement.Types (Allocation(Pledge), Approval(TakeDelivery), Step(..)) -import Daml.Finance.Interface.Types.Common (Id(..), Parties) +import Daml.Finance.Interface.Types.Common.Types (AccountKey, Id(..), InstrumentQuantity, Parties) +import Daml.Finance.Interface.Util.Common (qty) -data Side - = Buy - | Sell - deriving (Eq, Show) - -data FillResult = FillResult - with - orderOpt : Optional (ContractId Order, Order) - batchCid : ContractId Batch.I - instructionCid : ContractId Instruction.I - deriving (Eq, Show) +instance Order.HasImplementation Order template Order with @@ -32,12 +24,12 @@ template Order customer : Party id : Id timestamp : Time - listingId : Text - quantity : Instrument.Q - side : Side - price : Instrument.Q + listingId : Id + quantity : InstrumentQuantity + side : Order.Side + price : InstrumentQuantity collateralCid : ContractId Fungible.I - account : Account.K + account : AccountKey observers : Parties where signatory operator, provider, customer @@ -46,41 +38,61 @@ template Order key (operator, provider, id) : (Party, Party, Id) maintainer key._1 - choice Fill : FillResult - with - settlementFactoryCid : ContractId Factory.I - other : Order - isResting : Bool - controller provider - do + interface instance Removable.I for Order where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance Order.I for Order where + view = Order.View with + operator + provider + customer + id + timestamp + listingId + quantity + side + price + collateralCid + account + observers + + asRemovable = toInterface @Removable.I this + + fill Order.Fill{settlementServiceCid; other; isResting} = do let paid = if isResting then price.amount else other.price.amount delivered = min quantity.amount other.quantity.amount - amount = if side == Buy then paid * delivered else delivered + amount = if side == Order.Buy then paid * delivered else delivered remaining = quantity.amount - min quantity.amount other.quantity.amount - deliverable = if side == Buy then price.unit else quantity.unit - step = Step with sender = customer; receiver = other.customer; quantity = Instrument.qty amount deliverable - (batchCid, [instructionCid]) <- exercise settlementFactoryCid Factory.Instruct with instructors = singleton provider; id; settlers = singleton provider; steps = [step]; contextId = Some id; description = show id + deliverable = if side == Order.Buy then price.unit else quantity.unit + step = Step with sender = customer; receiver = other.customer; quantity = qty amount deliverable + actors = fromList [provider, customer] -- provider has to be part of Allocate actors due to holding being locked to them + (batchCid, [instructionCid]) <- exercise settlementServiceCid SettlementService.DiscoverAndInstruct with + actor = provider + settlers = singleton provider + id + description = show id + contextId = Some id + settlementTime = None + steps = [step] Fungible.SplitResult [splitCid] restCidOpt <- exercise collateralCid Fungible.Split with amounts = [ amount ] if remaining == 0.0 then do - instructionCid <- fst <$> exercise instructionCid Instruction.Allocate with actors = singleton provider; allocation = Pledge $ toInterfaceContractId splitCid - pure FillResult with orderOpt = None; batchCid; instructionCid + instructionCid <- fst <$> exercise instructionCid Instruction.Allocate with actors; allocation = Pledge $ toInterfaceContractId splitCid + pure Order.FillResult with orderOpt = None; batchCid; instructionCid else do - instructionCid <- fst <$> exercise instructionCid Instruction.Allocate with actors = singleton provider; allocation = Pledge $ toInterfaceContractId splitCid + instructionCid <- fst <$> exercise instructionCid Instruction.Allocate with actors; allocation = Pledge $ toInterfaceContractId splitCid case restCidOpt of Some restCid -> do let new = this with quantity.amount = remaining; collateralCid = restCid - newCid <- create new - pure FillResult with orderOpt = Some (newCid, new); batchCid; instructionCid + newCid <- toInterfaceContractId <$> create new + pure Order.FillResult with orderOpt = Some (newCid, view $ toInterface @Order.I new); batchCid; instructionCid None -> fail "Insufficient collateral - this should never happen" - nonconsuming choice ApproveInstruction : ContractId Instruction.I - with - instructionCid : ContractId Instruction.I - controller provider - do - exercise instructionCid Instruction.Approve with actors = singleton provider; approval = TakeDelivery account + approveInstruction Order.ApproveInstruction{instructionCid} = do + exercise instructionCid Instruction.Approve with actors = singleton customer; approval = TakeDelivery account + +instance CreateOrderRequest.HasImplementation CreateOrderRequest template CreateOrderRequest with @@ -89,13 +101,13 @@ template CreateOrderRequest customer : Party id : Id timestamp : Time - listingId : Text - quantity : Instrument.Q - side : Side - price : Instrument.Q + listingId : Id + quantity : InstrumentQuantity + side : Order.Side + price : InstrumentQuantity collateralCid : ContractId Fungible.I - account : Account.K - orderCids : [ContractId Order] + account : AccountKey + orderCids : [ContractId Order.I] observers : Parties where signatory operator, provider, customer @@ -103,11 +115,46 @@ template CreateOrderRequest key (operator, provider, id) : (Party, Party, Id) maintainer key._1 + interface instance Removable.I for CreateOrderRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CreateOrderRequest.I for CreateOrderRequest where + view = CreateOrderRequest.View with + operator + provider + customer + id + timestamp + listingId + quantity + side + price + collateralCid + account + orderCids + observers + + asRemovable = toInterface @Removable.I this + +instance CancelOrderRequest.HasImplementation CancelOrderRequest + template CancelOrderRequest with provider : Party customer : Party operator : Party - orderCid : ContractId Order + orderCid : ContractId Order.I where signatory provider, customer + + interface instance Removable.I for CancelOrderRequest where + view = Removable.View with removers = fromList [operator, provider, customer] + + interface instance CancelOrderRequest.I for CancelOrderRequest where + view = CancelOrderRequest.View with + operator + provider + customer + orderCid + + asRemovable = toInterface @Removable.I this diff --git a/src/daml/Daml/Finance/App/Trading/Service.daml b/src/daml/Daml/Finance/App/Trading/Service.daml index 329ef6e9..1b1e4875 100644 --- a/src/daml/Daml/Finance/App/Trading/Service.daml +++ b/src/daml/Daml/Finance/App/Trading/Service.daml @@ -6,104 +6,92 @@ module Daml.Finance.App.Trading.Service where import DA.Action (foldlA, when) import DA.Optional (isNone) import DA.Set (insert, singleton) -import Daml.Finance.App.Trading.Model (ApproveInstruction(..), CreateOrderRequest(..), CancelOrderRequest(..), Fill(..), FillResult(..), Order(..), Side(..)) -import Daml.Finance.App.Util (fetchAndArchive) -import Daml.Finance.Interface.Account.Account qualified as Account (K, exerciseInterfaceByKey) +import Daml.Finance.App.Interface.Base.Service qualified as Base (I, View(..)) +import Daml.Finance.App.Interface.Common.Util (fetchAndRemove) +import Daml.Finance.App.Interface.Settlement.Service qualified as SettlementService (I) +import Daml.Finance.App.Interface.Trading.CancelOrderRequest qualified as CancelOrderRequest (View(..)) +import Daml.Finance.App.Interface.Trading.CreateOrderRequest qualified as CreateOrderRequest (View(..)) +import Daml.Finance.App.Interface.Trading.Order qualified as Order (ApproveInstruction(..), Fill(..), FillResult(..), I, Side(..), View(..)) +import Daml.Finance.App.Interface.Trading.Service qualified as Service (CancelOrder(..), CreateOrder(..), ExecuteOrder(..), HasImplementation, I, RequestCancelOrder(..), RequestCreateOrder(..), View(..)) +import Daml.Finance.App.Trading.Model qualified as Model (CancelOrderRequest(..), CreateOrderRequest(..), Order(..)) +import Daml.Finance.Interface.Account.Account qualified as Account (exerciseInterfaceByKey) +import Daml.Finance.Interface.Account.Util (getAccount) import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) import Daml.Finance.Interface.Holding.Base qualified as Holding (Acquire(..), I, LockType(..), Release(..)) -import Daml.Finance.Interface.Account.Util (getAccount) -import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..), RemoveObservers(..)) -import Daml.Finance.Interface.Settlement.Factory qualified as Factory (I) import Daml.Finance.Interface.Settlement.Instruction qualified as Instruction (Approve(..)) import Daml.Finance.Interface.Settlement.Batch qualified as Batch (Settle(..)) import Daml.Finance.Interface.Settlement.Types (Approval(TakeDelivery)) -import Daml.Finance.Interface.Types.Common (Id, Parties) +import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..), RemoveObservers(..)) + +type T = Service + +instance Service.HasImplementation Service template Service with operator : Party provider : Party customer : Party - settlementFactoryCid : ContractId Factory.I + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider, customer key (operator, provider, customer) : (Party, Party, Party) maintainer key._1 - nonconsuming choice RequestCreateOrder : ContractId CreateOrderRequest - with - id : Id - listingId : Text - quantity : Instrument.Q - price : Instrument.Q - side : Side - collateralCid : ContractId Fungible.I - account : Account.K - observers : Parties - orderCids : [ContractId Order] - controller customer - do + interface instance Base.I for Service where + view = Base.View with operator; provider; customer + terminate = pure () + + interface instance Service.I for Service where + view = Service.View with settlementServiceCid + + asBase = toInterface @Base.I this + + requestCreateOrder Service.RequestCreateOrder{id; listingId; quantity; price; side; collateralCid; account; orderCids; observers} = do timestamp <- getTime collateral <- fetch collateralCid disclosedCollateralCid <- coerceContractId <$> exercise (coerceContractId collateralCid : ContractId Disclosure.I) Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show id, provider `insert` observers) Account.exerciseInterfaceByKey @Disclosure.I (getAccount collateral) customer Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show id, provider `insert` observers) Account.exerciseInterfaceByKey @Disclosure.I account customer Disclosure.AddObservers with disclosers = singleton customer; observersToAdd = (show id, provider `insert` observers) - create CreateOrderRequest with operator; provider; customer; id; timestamp; listingId; quantity; price; side; collateralCid = disclosedCollateralCid; account; orderCids; observers + toInterfaceContractId <$> create Model.CreateOrderRequest with operator; provider; customer; id; timestamp; listingId; quantity; price; side; collateralCid = disclosedCollateralCid; account; orderCids; observers - nonconsuming choice RequestCancelOrder : ContractId CancelOrderRequest - with - orderCid : ContractId Order - controller customer - do - create CancelOrderRequest with operator; provider; customer; orderCid + requestCancelOrder Service.RequestCancelOrder{orderCid} = do + toInterfaceContractId <$> create Model.CancelOrderRequest with operator; provider; customer; orderCid - nonconsuming choice CreateOrder : Optional (ContractId Order, Order) - with - createOrderRequestCid : ContractId CreateOrderRequest - controller provider - do - CreateOrderRequest{operator; provider; customer; id; timestamp; listingId; quantity; price; side; collateralCid; account; orderCids; observers} <- fetchAndArchive createOrderRequestCid + createOrder self Service.CreateOrder{createOrderRequestCid} = do + CreateOrderRequest.View{operator; provider; customer; id; timestamp; listingId; quantity; price; side; collateralCid; account; orderCids; observers} <- view <$> fetchAndRemove createOrderRequestCid lockedCollateralCid : ContractId Fungible.I <- coerceContractId <$> exercise (toInterfaceContractId collateralCid : ContractId Holding.I) Holding.Acquire with newLockers = singleton provider; context = show id; lockType = Holding.Semaphore - orderCid <- create Order with operator; provider; customer; id; timestamp; listingId; quantity; price; side; collateralCid = lockedCollateralCid; account; observers - exercise self ExecuteOrder with orderCid; orderCids + orderCid <- toInterfaceContractId <$> create Model.Order with operator; provider; customer; id; timestamp; listingId; quantity; price; side; collateralCid = lockedCollateralCid; account; observers + exercise self Service.ExecuteOrder with orderCid; orderCids - nonconsuming choice CancelOrder : () - with - cancelOrderRequestCid : ContractId CancelOrderRequest - controller provider - do - CancelOrderRequest{orderCid} <- fetchAndArchive cancelOrderRequestCid - order <- fetchAndArchive orderCid + cancelOrder Service.CancelOrder{cancelOrderRequestCid} = do + CancelOrderRequest.View{orderCid} <- view <$> fetchAndRemove cancelOrderRequestCid + order <- view <$> fetchAndRemove orderCid exercise (toInterfaceContractId order.collateralCid : ContractId Holding.I) Holding.Release with context = show order.id pure () - nonconsuming choice ExecuteOrder : Optional (ContractId Order, Order) - with - orderCid : ContractId Order - orderCids : [ContractId Order] - controller provider - do - order <- fetch orderCid - orders <- filter (\(_, o) -> o.customer /= customer && if order.side == Buy then o.side == Sell && o.price.amount <= order.price.amount else o.side == Buy && o.price.amount >= order.price.amount) . zip orderCids <$> mapA fetch orderCids + executeOrder Service.ExecuteOrder{orderCid; orderCids} = do + order <- view <$> fetch orderCid + orderViews <- zip orderCids <$> mapA (fmap view . fetch) orderCids let - match : Optional (ContractId Order, Order) -> (ContractId Order, Order) -> Update (Optional (ContractId Order, Order)) + orders = filter (\(_, o) -> o.customer /= customer && if order.side == Order.Buy then o.side == Order.Sell && o.price.amount <= order.price.amount else o.side == Order.Buy && o.price.amount >= order.price.amount) orderViews + match : Optional (ContractId Order.I, Order.View) -> (ContractId Order.I, Order.View) -> Update (Optional (ContractId Order.I, Order.View)) match myOpt (otherCid, other) = case myOpt of None -> do pure None - Some (myCid, my) | my.side == Buy && my.price.amount < other.price.amount || my.side == Sell && my.price.amount > other.price.amount -> do + Some (myCid, my) | my.side == Order.Buy && my.price.amount < other.price.amount || my.side == Order.Sell && my.price.amount > other.price.amount -> do pure myOpt Some (myCid, my) -> do myCollateral <- fetch my.collateralCid otherCollateral <- fetch other.collateralCid - FillResult{orderOpt; batchCid; instructionCid} <- exercise myCid Fill with settlementFactoryCid; other; isResting = False - exercise otherCid ApproveInstruction with instructionCid + Order.FillResult{orderOpt; batchCid; instructionCid} <- exercise myCid Order.Fill with settlementServiceCid; other; isResting = False + exercise otherCid Order.ApproveInstruction with instructionCid [transferableCid] <- exercise batchCid Batch.Settle with actors = singleton provider exercise (toInterfaceContractId transferableCid : ContractId Holding.I) Holding.Release with context = show my.id - FillResult{orderOpt = otherOpt; batchCid; instructionCid} <- exercise otherCid Fill with settlementFactoryCid; other = my; isResting = True - exercise instructionCid Instruction.Approve with actors = singleton provider; approval = TakeDelivery my.account + Order.FillResult{orderOpt = otherOpt; batchCid; instructionCid} <- exercise otherCid Order.Fill with settlementServiceCid; other = my; isResting = True + exercise instructionCid Instruction.Approve with actors = singleton customer; approval = TakeDelivery my.account [transferableCid] <- exercise batchCid Batch.Settle with actors = singleton provider exercise (toInterfaceContractId transferableCid : ContractId Holding.I) Holding.Release with context = show other.id when (isNone orderOpt) do @@ -117,20 +105,12 @@ template Service pure orderOpt foldlA match (Some (orderCid, order)) orders - choice Terminate : () - with - actor : Party - controller actor - do - assert $ actor == operator || actor == provider || actor == customer - pure () - template Offer with operator : Party provider : Party customer : Party - settlementFactoryCid : ContractId Factory.I + settlementServiceCid : ContractId SettlementService.I where signatory operator, provider observer customer @@ -138,7 +118,7 @@ template Offer choice Accept : ContractId Service controller customer do - create Service with operator; provider; customer; settlementFactoryCid + create Service with operator; provider; customer; settlementServiceCid choice Decline : () controller customer @@ -167,7 +147,7 @@ template Request choice Approve : ContractId Service with operator : Party - settlementFactoryCid : ContractId Factory.I + settlementServiceCid : ContractId SettlementService.I controller operator, provider do - create Service with operator; provider; customer; settlementFactoryCid + create Service with operator; provider; customer; settlementServiceCid diff --git a/src/daml/Daml/Finance/App/Util.daml b/src/daml/Daml/Finance/App/Util.daml deleted file mode 100644 index e14e91cc..00000000 --- a/src/daml/Daml/Finance/App/Util.daml +++ /dev/null @@ -1,11 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.App.Util where - --- | Fetches a contract, archives it and returns its value. -fetchAndArchive : Template a => ContractId a -> Update a -fetchAndArchive cid = do - c <- fetch cid - archive cid - return c diff --git a/src/daml/Daml/Finance/Setup/Demo.daml b/src/daml/Daml/Finance/Setup/Demo.daml deleted file mode 100644 index 0569ed44..00000000 --- a/src/daml/Daml/Finance/Setup/Demo.daml +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Demo where - -import Daml.Finance.Setup.Scenario.BondIssuance qualified as BondIssuance -import Daml.Finance.Setup.Scenario.CorporateActions qualified as CorporateActions -import Daml.Finance.Setup.Scenario.DecentralizedFinance qualified as DecentralizedFinance -import Daml.Finance.Setup.Scenario.Default qualified as Default -import Daml.Finance.Setup.Scenario.FundTokenization qualified as FundTokenization -import Daml.Finance.Setup.Scenario.NaturalGas qualified as NaturalGas -import Daml.Finance.Setup.Scenario.SecuritiesLending qualified as SecuritiesLending -import Daml.Finance.Setup.Scenario.StructuredNotes qualified as StructuredNotes -import Daml.Finance.Setup.Util.Common (PartyInfo) -import Daml.Script - -demo : Script [PartyInfo] -demo = do - p1 <- BondIssuance.run - p2 <- CorporateActions.run - p3 <- Default.run - p4 <- NaturalGas.run - p5 <- SecuritiesLending.run - p6 <- StructuredNotes.run - p7 <- FundTokenization.run - p8 <- DecentralizedFinance.run - pure $ p1 <> p2 <> p3 <> p4 <> p5 <> p6 <> p7 <> p8 diff --git a/src/daml/Daml/Finance/Setup/Scenario/BondIssuance.daml b/src/daml/Daml/Finance/Setup/Scenario/BondIssuance.daml deleted file mode 100644 index 84c201e6..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/BondIssuance.daml +++ /dev/null @@ -1,165 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.BondIssuance where - -import DA.Date (Month(..), date, toDateUTC, toGregorian) -import DA.Foldable (mapA_) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Data.Time.DateClock qualified as Data (DateClock) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Instrument.Bond.FixedRate.Instrument qualified as FixedRateBond (Instrument) -import Daml.Finance.Instrument.Bond.FloatingRate.Instrument qualified as FloatingRateBond (Instrument) -import Daml.Finance.Instrument.Bond.InflationLinked.Instrument qualified as InflationLinkedBond (Instrument) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (I, getKey, qty) -import Daml.Finance.Interface.Lifecycle.Rule.Lifecycle qualified as Lifecycle (Evolve(..), I) -import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum(..)) -import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum(..)) -import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum(..)) -import Daml.Finance.Lifecycle.Event.DateClock qualified as DateClock (Event) -import Daml.Finance.Lifecycle.Effect qualified as Lifecycle (Effect) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "Bond Issuance" - parties <- allocateParties scenario ["Operator", "Public", "CentralBank", "Registry", "Issuer", "Custodian", "Investor1", "Investor2", "Investor3"] - let - all@[operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["BOND1", "BOND2", "BOND3", "BOND4"] - settlementPaths = [[issuer], [custodian], [inv1, custodian], [inv2, custodian], [inv3, custodian]] - cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = registry; pathsToRootCustodian = settlementPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator centralBank - createCustodianRole operator registry - createCustodianRole operator custodian - - -- Services - createCustodyService operator centralBank registry settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank custodian settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry custodian settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createIssuanceService operator registry issuer - createIssuanceAutoService operator registry issuer - createStructuringService operator registry issuer - createStructuringAutoService operator registry issuer - createLifecycleService operator registry issuer public - - -- Accounts - registryCashAccount <- createAccount operator centralBank registry public "Registry@CentralBank/Cash" empty - issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank/Cash" empty - custodianCashAccount <- createAccount operator centralBank custodian public "Custodian@CentralBank/Cash" empty - inv1CashAccount <- createAccount operator custodian inv1 public "Investor1@Custodian/Cash" empty - inv2CashAccount <- createAccount operator custodian inv2 public "Investor2@Custodian/Cash" empty - inv3CashAccount <- createAccount operator custodian inv3 public "Investor3@Custodian/Cash" empty - issuerSecAccount <- createAccount operator registry issuer public "Issuer@Registry/Securties" empty - custodianSecAccount <- createAccount operator registry custodian public "Custodian@Registry/Securities" empty - inv1SecAccount <- createAccount operator custodian inv1 public "Investor1@Custodian/Securities" empty - inv2SecAccount <- createAccount operator custodian inv2 public "Investor2@Custodian/Securities" empty - inv3SecAccount <- createAccount operator custodian inv3 public "Investor3@Custodian/Securities" empty - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - tt d = time d 12 0 0 - epoch = tt $ date 1970 Jan 1 - (ty, tm, td) = toGregorian today - (timeObservableCid, eventCid) <- createClockAndEvent all (date 2021 tm td) (singleton public) - - -- Instruments - usd <- originateToken centralBank centralBank pub epoch "USD" "United States Dollar" - bond1 <- originateZeroCouponBond registry issuer "BOND1" "Zero Coupon Bond 5Y" pub (tt $ date 2022 tm td) (date 2022 tm td) (date 2027 Sep td) usd - bond2 <- originateFixedRateBond registry issuer "BOND2" "Fixed Rate Bond 5Y @ 1.1%" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] registry (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.011 M 12 usd - bond3 <- originateFloatingRateBond registry issuer "BOND3" "Floating Rate Bond 5Y @ LIBOR-12M + 0.5%" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] registry (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.005 M 12 usd "USD-LIBOR-12M" - bond4 <- originateInflationLinkedBond registry issuer "BOND4" "Inflation Linked Bond 5Y @ 0.5% * (1 + CPI)" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] registry (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.005 M 12 usd "CPI" 100.0 - let securities = [bond1, bond2, bond3, bond4] - - -- Data - let - libor = - [ (tt $ date 2020 tm td, 0.0010) - , (tt $ date 2021 tm td, 0.0015) - , (tt $ date 2022 tm td, 0.0020) ] - cpi = - [ (tt $ date 2021 tm td, 102.2500) - , (tt $ date 2022 tm td, 104.5000) ] - obsCid1 <- createObservation issuer "USD-LIBOR-12M" libor pub - obsCid2 <- createObservation issuer "CPI" cpi pub - createCalendar registry "EMPTY" [] [] pub - createAccountDirectory issuer ([(usd, issuerCashAccount)] <> map (\s -> (s, issuerSecAccount)) securities) $ singleton public - createAccountDirectory custodian ([(usd, custodianCashAccount)] <> map (\s -> (s, custodianSecAccount)) securities) $ singleton public - createAccountDirectory inv1 ([(usd, inv1CashAccount)] <> map (\s -> (s, inv1SecAccount)) securities) $ singleton public - createAccountDirectory inv2 ([(usd, inv2CashAccount)] <> map (\s -> (s, inv2SecAccount)) securities) $ singleton public - createAccountDirectory inv3 ([(usd, inv3CashAccount)] <> map (\s -> (s, inv3SecAccount)) securities) $ singleton public - - -- Lifecycle - (bond2Cid, effectCids2) <- submitExerciseInterfaceByKeyCmd @Lifecycle.I [issuer] [public] bond2 Lifecycle.Evolve with ruleName = "Time"; eventCid; timeObservableCid; observableCids = [obsCid1, obsCid2] - (bond3Cid, effectCids3) <- submitExerciseInterfaceByKeyCmd @Lifecycle.I [issuer] [public] bond3 Lifecycle.Evolve with ruleName = "Time"; eventCid; timeObservableCid; observableCids = [obsCid1, obsCid2] - (bond4Cid, effectCids4) <- submitExerciseInterfaceByKeyCmd @Lifecycle.I [issuer] [public] bond4 Lifecycle.Evolve with ruleName = "Time"; eventCid; timeObservableCid; observableCids = [obsCid1, obsCid2] - mapA_ (\eCid -> submitMulti [registry, issuer] [] do archiveCmd $ fromInterfaceContractId @Lifecycle.Effect eCid) effectCids2 - mapA_ (\eCid -> submitMulti [registry, issuer] [] do archiveCmd $ fromInterfaceContractId @Lifecycle.Effect eCid) effectCids3 - mapA_ (\eCid -> submitMulti [registry, issuer] [] do archiveCmd $ fromInterfaceContractId @Lifecycle.Effect eCid) effectCids4 - submitMulti all [] do archiveCmd $ fromInterfaceContractId @Data.DateClock timeObservableCid - submitMulti all [] do archiveCmd $ fromInterfaceContractId @DateClock.Event eventCid - - (timeObservableCid, eventCid) <- createClockAndEvent all today (singleton public) - - -- Distribution - Some bond2I <- queryContractId issuer (coerceContractId bond2Cid : ContractId FixedRateBond.Instrument) - Some bond3I <- queryContractId issuer (coerceContractId bond3Cid : ContractId FloatingRateBond.Instrument) - Some bond4I <- queryContractId issuer (coerceContractId bond4Cid : ContractId InflationLinkedBond.Instrument) - let - bond2 = Instrument.getKey $ toInterface @Instrument.I bond2I - bond3 = Instrument.getKey $ toInterface @Instrument.I bond3I - bond4 = Instrument.getKey $ toInterface @Instrument.I bond4I - (_, bond2HoldingCid) <- issue operator registry issuer public (Instrument.qty 100_000_000.0 bond2) issuerSecAccount - (_, bond3HoldingCid) <- issue operator registry issuer public (Instrument.qty 100_000_000.0 bond3) issuerSecAccount - (_, bond4HoldingCid) <- issue operator registry issuer public (Instrument.qty 100_000_000.0 bond4) issuerSecAccount - - transfer issuer custodianSecAccount public $ coerceContractId bond2HoldingCid - transfer issuer custodianSecAccount public $ coerceContractId bond3HoldingCid - transfer issuer custodianSecAccount public $ coerceContractId bond4HoldingCid - - deposit operator custodian inv1 public (Instrument.qty 50_000_000.0 bond2) inv1SecAccount - deposit operator custodian inv2 public (Instrument.qty 30_000_000.0 bond2) inv2SecAccount - deposit operator custodian inv3 public (Instrument.qty 20_000_000.0 bond2) inv3SecAccount - deposit operator custodian inv1 public (Instrument.qty 60_000_000.0 bond3) inv1SecAccount - deposit operator custodian inv2 public (Instrument.qty 30_000_000.0 bond3) inv2SecAccount - deposit operator custodian inv3 public (Instrument.qty 10_000_000.0 bond3) inv3SecAccount - deposit operator custodian inv1 public (Instrument.qty 70_000_000.0 bond4) inv1SecAccount - deposit operator custodian inv2 public (Instrument.qty 20_000_000.0 bond4) inv2SecAccount - deposit operator custodian inv3 public (Instrument.qty 10_000_000.0 bond4) inv3SecAccount - - deposit operator centralBank registry public (Instrument.qty 120_000_000.0 usd) registryCashAccount - deposit operator centralBank custodian public (Instrument.qty 120_000_000.0 usd) custodianCashAccount - deposit operator custodian inv1 public (Instrument.qty 50_000_000.0 usd) inv1CashAccount - deposit operator custodian inv2 public (Instrument.qty 40_000_000.0 usd) inv2CashAccount - deposit operator custodian inv3 public (Instrument.qty 30_000_000.0 usd) inv3CashAccount - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/CorporateActions.daml b/src/daml/Daml/Finance/Setup/Scenario/CorporateActions.daml deleted file mode 100644 index 8d9f84f0..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/CorporateActions.daml +++ /dev/null @@ -1,150 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.CorporateActions where - -import DA.Date (Month(..), date, toDateUTC, toGregorian) -import DA.List (head) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) -import Daml.Finance.Interface.Settlement.Batch qualified as Batch (Settle(..)) -import Daml.Finance.Interface.Settlement.Types (Allocation(..), Approval(..)) -import Daml.Finance.Interface.Types.Common (Id(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "Corporate Actions" - parties <- allocateParties scenario ["Operator", "Public", "CentralBank", "Registry", "Issuer", "Custodian", "Investor1", "Investor2", "Investor3"] - let - all@[operator, public, centralBank, registry, issuer, custodian, inv1, inv2, inv3] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["NewCo", "Acme"] - settlementPaths = [[issuer], [registry], [custodian], [inv1, custodian], [inv2, custodian], [inv3, custodian]] - cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = issuer; pathsToRootCustodian = settlementPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator centralBank - createCustodianRole operator registry - createCustodianRole operator issuer - createCustodianRole operator custodian - - -- Services - createCustodyService operator centralBank issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank registry settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank custodian settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator issuer registry settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry custodian settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createIssuanceService operator registry issuer - createIssuanceAutoService operator registry issuer - createStructuringService operator registry issuer - createStructuringAutoService operator registry issuer - createLifecycleService operator registry issuer public - createSettlementService operator issuer registry - createSettlementService operator registry custodian - createSettlementService operator custodian inv1 - createSettlementService operator custodian inv2 - createSettlementService operator custodian inv3 - - -- Accounts - issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank|Cash" empty - registryCashAccount <- createAccount operator centralBank registry public "Registry@CentralBank|Cash" empty - custodianCashAccount <- createAccount operator centralBank custodian public "Custodian@CentralBank|Cash" empty - inv1CashAccount <- createAccount operator custodian inv1 public "Investor1@Custodian|Cash" empty - inv2CashAccount <- createAccount operator custodian inv2 public "Investor2@Custodian|Cash" empty - inv3CashAccount <- createAccount operator custodian inv3 public "Investor3@Custodian|Cash" empty - registrySecAccount <- createAccount operator issuer registry public "Issuer@Registry|Securities" empty - issuerSecAccount <- createAccount operator registry issuer public "Registry@Issuer|Securities" empty - custodianSecAccount <- createAccount operator registry custodian public "Custodian@Registry|Securities" empty - inv1SecAccount <- createAccount operator custodian inv1 public "Investor1@Custodian|Securities" empty - inv2SecAccount <- createAccount operator custodian inv2 public "Investor2@Custodian|Securities" empty - inv3SecAccount <- createAccount operator custodian inv3 public "Investor3@Custodian|Securities" empty - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - tt d = time d 12 0 0 - epoch = tt $ date 1970 Jan 1 - (ty, tm, td) = toGregorian today - (clockCid, eventCid) <- createClockAndEvent all today (singleton public) - - -- Instruments - usd <- originateToken centralBank centralBank pub epoch "USD" "United States Dollar" - equity <- originateEquity registry issuer pub epoch "NewCo" "NewCo, Inc. Common Stock" - equity2 <- originateEquity registry issuer pub epoch "Acme" "Acme, Inc. Common Stock" - - -- Data - createAccountDirectory issuer [(usd, issuerCashAccount), (equity, issuerSecAccount)] $ singleton public - createAccountDirectory registry [(usd, registryCashAccount), (equity, registrySecAccount)] $ singleton public - createAccountDirectory custodian [(usd, custodianCashAccount), (equity, custodianSecAccount)] $ singleton public - createAccountDirectory inv1 [(usd, inv1CashAccount), (equity, inv1SecAccount)] $ singleton public - createAccountDirectory inv2 [(usd, inv2CashAccount), (equity, inv2SecAccount)] $ singleton public - createAccountDirectory inv3 [(usd, inv3CashAccount), (equity, inv3SecAccount)] $ singleton public - - -- Distribution - registryEquityCid <- deposit operator issuer registry public (Instrument.qty 1_000_000.0 equity) registrySecAccount - (_, issuerEquityCid) <- issue operator registry issuer public (Instrument.qty 1_000_000.0 equity) issuerSecAccount - custodianEquityCid <- transfer issuer custodianSecAccount public $ coerceContractId issuerEquityCid - inv1EquityCid <- deposit operator custodian inv1 public (Instrument.qty 500_000.0 equity) inv1SecAccount - inv2EquityCid <- deposit operator custodian inv2 public (Instrument.qty 300_000.0 equity) inv2SecAccount - inv3EquityCid <- deposit operator custodian inv3 public (Instrument.qty 200_000.0 equity) inv3SecAccount - - issuerCashCid <- coerceContractId <$> deposit operator centralBank issuer public (Instrument.qty 500_000.0 usd) issuerCashAccount - registryCashCid <- coerceContractId <$> deposit operator centralBank registry public (Instrument.qty 500_000.0 usd) registryCashAccount - - -- Workflows - let - processDividend = do - effectCid <- declareDividend operator registry issuer public equity today [Instrument.qty 0.5 usd] - - -- Claim registry holding - (batchCid, instructionCids) <- claimEffect operator issuer registry public effectCid [registryEquityCid] (Id "Registry-Settlement") - allocateAndApprove operator issuer (head instructionCids) (Pledge issuerCashCid) (TakeDelivery registryCashAccount) - submitMulti [issuer] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton issuer - - -- Claim custodian holding - (batchCid, instructionCids) <- claimEffect operator registry custodian public effectCid [toInterfaceContractId custodianEquityCid] (Id "Custodian-Settlement") - allocateAndApprove operator registry (head instructionCids) (Pledge registryCashCid) (TakeDelivery custodianCashAccount) - submitMulti [registry] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton registry - - -- Claim investor holdings - (batchCid, instructionCids) <- claimEffect operator custodian inv1 public effectCid [toInterfaceContractId inv1EquityCid] (Id "Investor1-Settlement") - allocateAndApprove operator custodian (head instructionCids) CreditReceiver (TakeDelivery inv1CashAccount) - submitMulti [custodian] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton custodian - (batchCid, instructionCids) <- claimEffect operator custodian inv2 public effectCid [toInterfaceContractId inv2EquityCid] (Id "Investor2-Settlement") - allocateAndApprove operator custodian (head instructionCids) CreditReceiver (TakeDelivery inv2CashAccount) - submitMulti [custodian] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton custodian - (batchCid, instructionCids) <- claimEffect operator custodian inv3 public effectCid [toInterfaceContractId inv3EquityCid] (Id "Investor3-Settlement") - allocateAndApprove operator custodian (head instructionCids) CreditReceiver (TakeDelivery inv3CashAccount) - submitMulti [custodian] [public] do exerciseCmd batchCid Batch.Settle with actors = singleton custodian - - pure () - - -- processDividend - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/DecentralizedFinance.daml b/src/daml/Daml/Finance/Setup/Scenario/DecentralizedFinance.daml deleted file mode 100644 index d08a7b10..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/DecentralizedFinance.daml +++ /dev/null @@ -1,130 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.DecentralizedFinance where - -import DA.Date (toDateUTC) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.App.Decentralized.Exchange.Service as Dex (Swap(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument (qty) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "Decentralized Finance" - parties <- allocateParties scenario ["Operator", "Public", "FED", "ECB", "SNB", "BOE", "Consortium", "Trader"] - let - all@[operator, public, fed, ecb, snb, boe, con, trd] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["USD", "EUR", "CHF", "GBP"] - pathsToRootCustodian = [[con], [trd]] - hierarchies = map (\rootCustodian -> Settlement.Hierarchy with rootCustodian; pathsToRootCustodian) [fed, ecb, snb, boe] - paths = fromList $ zip assets hierarchies - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator fed - createCustodianRole operator ecb - createCustodianRole operator snb - createCustodianRole operator boe - createExchangeRole operator con - - -- Services - createCustodyService operator fed con settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator fed trd settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator ecb con settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator ecb trd settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator snb con settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator snb trd settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator boe con settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator boe trd settlementFactoryCid accountFactoryCid holdingFactoryCid - - -- Accounts - conFedAccount <- createAccount operator fed con public "Consortium@FED" pub - conEcbAccount <- createAccount operator ecb con public "Consortium@ECB" pub - conSnbAccount <- createAccount operator snb con public "Consortium@SNB" pub - conBoeAccount <- createAccount operator boe con public "Consortium@BOE" pub - trdFedAccount <- createAccount operator fed trd public "Trader@FED" empty - trdEcbAccount <- createAccount operator ecb trd public "Trader@ECB" empty - trdSnbAccount <- createAccount operator snb trd public "Trader@SNB" empty - trdBoeAccount <- createAccount operator boe trd public "Trader@BOE" empty - let - conAccounts = [conFedAccount, conEcbAccount, conSnbAccount, conBoeAccount] - trdAccounts = [trdFedAccount, trdEcbAccount, trdSnbAccount, trdBoeAccount] - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - - -- Instruments - usd <- originateToken fed fed pub todayTime "USD" "United States Dollar" - eur <- originateToken ecb ecb pub todayTime "EUR" "Euro" - chf <- originateToken snb snb pub todayTime "CHF" "Swiss Franc" - gbp <- originateToken boe boe pub todayTime "GBP" "British Pound" - eurusd <- originateEquity con con pub todayTime "LPS-EURUSD" "Liqudity Pool Share for EURUSD" - usdchf <- originateEquity con con pub todayTime "LPS-USDCHF" "Liqudity Pool Share for USDCHF" - usdgbp <- originateEquity con con pub todayTime "LPS-USDGBP" "Liqudity Pool Share for USDGBP" - eurchf <- originateEquity con con pub todayTime "LPS-EURCHF" "Liqudity Pool Share for EURCHF" - eurgbp <- originateEquity con con pub todayTime "LPS-EURGBP" "Liqudity Pool Share for EURGBP" - gbpchf <- originateEquity con con pub todayTime "LPS-GBPCHF" "Liqudity Pool Share for GBPCHF" - let currencies = [usd, eur, chf, gbp] - - -- Distribution - conUsdCid1 <- coerceContractId <$> deposit operator fed con public (qty 105_000_000.0 usd) conFedAccount - conUsdCid2 <- coerceContractId <$> deposit operator fed con public (qty 100_000_000.0 usd) conFedAccount - conUsdCid3 <- coerceContractId <$> deposit operator fed con public (qty 100_000_000.0 usd) conFedAccount - conEurCid1 <- coerceContractId <$> deposit operator ecb con public (qty 100_000_000.0 eur) conEcbAccount - conEurCid2 <- coerceContractId <$> deposit operator ecb con public (qty 100_000_000.0 eur) conEcbAccount - conEurCid3 <- coerceContractId <$> deposit operator ecb con public (qty 100_000_000.0 eur) conEcbAccount - conChfCid1 <- coerceContractId <$> deposit operator snb con public (qty 95_000_000.0 chf) conSnbAccount - conChfCid2 <- coerceContractId <$> deposit operator snb con public (qty 100_000_000.0 chf) conSnbAccount - conChfCid3 <- coerceContractId <$> deposit operator snb con public (qty 115_000_000.0 chf) conSnbAccount - conGbpCid1 <- coerceContractId <$> deposit operator boe con public (qty 80_000_000.0 gbp) conBoeAccount - conGbpCid2 <- coerceContractId <$> deposit operator boe con public (qty 85_000_000.0 gbp) conBoeAccount - conGbpCid3 <- coerceContractId <$> deposit operator boe con public (qty 100_000_000.0 gbp) conBoeAccount - trdUsdCid <- coerceContractId <$> deposit operator fed trd public (qty 10_000_000.0 usd) trdFedAccount - -- trdEurCid <- coerceContractId <$> deposit operator ecb trd public (qty 10_000_000.0 eur) trdEcbAccount - -- trdChfCid <- coerceContractId <$> deposit operator snb trd public (qty 10_000_000.0 chf) trdSnbAccount - -- trdGbpCid <- coerceContractId <$> deposit operator boe trd public (qty 10_000_000.0 gbp) trdBoeAccount - - -- Data - createAccountDirectory con (zip currencies conAccounts) $ singleton public - createAccountDirectory trd (zip currencies trdAccounts) $ singleton public - - -- Workflows - dex1Cid <- createDecentralizedExchangeService con public "DEX-EURUSD" (qty 100_000_000.0 eurusd) (qty 100_000_000.0 eur) conEcbAccount conEurCid1 (qty 105_000_000.0 usd) conFedAccount conUsdCid1 - dex2Cid <- createDecentralizedExchangeService con public "DEX-USDCHF" (qty 100_000_000.0 usdchf) (qty 100_000_000.0 usd) conFedAccount conUsdCid2 (qty 95_000_000.0 chf) conSnbAccount conChfCid1 - dex3Cid <- createDecentralizedExchangeService con public "DEX-USDGBP" (qty 100_000_000.0 usdgbp) (qty 100_000_000.0 usd) conFedAccount conUsdCid3 (qty 80_000_000.0 gbp) conBoeAccount conGbpCid1 - dex4Cid <- createDecentralizedExchangeService con public "DEX-EURCHF" (qty 100_000_000.0 eurchf) (qty 100_000_000.0 eur) conEcbAccount conEurCid2 (qty 100_000_000.0 chf) conSnbAccount conChfCid2 - dex5Cid <- createDecentralizedExchangeService con public "DEX-EURGBP" (qty 100_000_000.0 eurgbp) (qty 100_000_000.0 eur) conEcbAccount conEurCid3 (qty 85_000_000.0 gbp) conBoeAccount conGbpCid2 - dex6Cid <- createDecentralizedExchangeService con public "DEX-GBPCHF" (qty 100_000_000.0 gbpchf) (qty 100_000_000.0 gbp) conBoeAccount conGbpCid3 (qty 115_000_000.0 chf) conSnbAccount conChfCid3 - - let - doRoundTrip = do - (dex1Cid, [trdEurCid]) <- submitMulti [trd] [public] do exerciseCmd dex1Cid Swap with actor = trd; xFungibleCid = trdUsdCid; yAccount = trdEcbAccount - (dex4Cid, [trdChfCid]) <- submitMulti [trd] [public] do exerciseCmd dex4Cid Swap with actor = trd; xFungibleCid = coerceContractId trdEurCid; yAccount = trdSnbAccount - (dex6Cid, [trdGbpCid]) <- submitMulti [trd] [public] do exerciseCmd dex6Cid Swap with actor = trd; xFungibleCid = coerceContractId trdChfCid; yAccount = trdBoeAccount - (dex3Cid, [trdUsdCid]) <- submitMulti [trd] [public] do exerciseCmd dex3Cid Swap with actor = trd; xFungibleCid = coerceContractId trdGbpCid; yAccount = trdFedAccount - pure () - - -- doRoundTrip - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/Default.daml b/src/daml/Daml/Finance/Setup/Scenario/Default.daml deleted file mode 100644 index 948828f7..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/Default.daml +++ /dev/null @@ -1,166 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.Default where - -import ContingentClaims.Core.Builders (unrollDates) -import DA.Date (DayOfWeek(Saturday, Sunday), addDays, date, toDateUTC, toGregorian) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) -import Daml.Finance.Interface.Types.Common (Id(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Payoff -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "Default" - parties <- allocateParties scenario ["Operator", "Public", "CentralBank", "Registry", "Exchange", "Agent", "Issuer", "Investor1", "Investor2", "Investor3"] - let - all@[operator, public, centralBank, registry, exchange, agent, issuer, inv1, inv2, inv3] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["TSLA", "NFLX", "FWD1", "BOND1", "SWAP1", "BSWAP1", "OPT1", "OPT2"] - custodianPaths = [[issuer], [inv1], [inv2], [inv3]] - cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = custodianPaths - secRoute = Settlement.Hierarchy with rootCustodian = registry; pathsToRootCustodian = custodianPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator centralBank - createCustodianRole operator registry - createExchangeRole operator exchange - createDistributorRole operator agent - - -- Services - createCustodyService operator centralBank issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createIssuanceService operator registry issuer - createIssuanceAutoService operator registry issuer - createStructuringService operator registry issuer - createStructuringAutoService operator registry issuer - createLifecycleService operator registry issuer public - createListingService operator exchange issuer - createListingAutoService operator exchange issuer - createTradingService operator exchange issuer settlementFactoryCid - createTradingAutoService operator exchange issuer - createTradingService operator exchange inv1 settlementFactoryCid - createTradingAutoService operator exchange inv1 - createTradingService operator exchange inv2 settlementFactoryCid - createTradingAutoService operator exchange inv2 - createTradingService operator exchange inv3 settlementFactoryCid - createTradingAutoService operator exchange inv3 - createAuctionService operator agent issuer - createAuctionAutoService operator agent issuer - createBiddingService operator agent inv1 - createBiddingAutoService operator agent inv1 - createBiddingService operator agent inv2 - createBiddingAutoService operator agent inv2 - createBiddingService operator agent inv3 - createBiddingAutoService operator agent inv3 - - -- Accounts - issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank" empty - inv1CashAccount <- createAccount operator centralBank inv1 public "Investor1@CentralBank" empty - inv2CashAccount <- createAccount operator centralBank inv2 public "Investor2@CentralBank" empty - inv3CashAccount <- createAccount operator centralBank inv3 public "Investor3@CentralBank" empty - issuerSecAccount <- createAccount operator registry issuer public "Issuer@Registry" empty - inv1SecAccount <- createAccount operator registry inv1 public "Investor1@Registry" empty - inv2SecAccount <- createAccount operator registry inv2 public "Investor2@Registry" empty - inv3SecAccount <- createAccount operator registry inv3 public "Investor3@Registry" empty - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - yday = time (addDays today (-1)) 12 0 0 - (todayYear, todayMonth, todayDay) = toGregorian today - createClockAndEvent all today (singleton public) - - -- Observables - let - libor3M = "USD-LIBOR-3M" - libor6M = "USD-LIBOR-6M" - amd = "AMD" - qc = "QUALCOMM" - tslaObs = "TSLA" - - -- Instruments - usd <- originateToken centralBank centralBank pub yday "USD" "United States Dollar" - tsla <- originateEquity registry issuer pub yday "TSLA" "Tesla, Inc. Common Stock" - nflx <- originateEquity registry issuer pub yday "NFLX" "Netflix, Inc. Common Stock" - fwd <- originateGeneric registry issuer pub yday "FWD1" "Forward on TSLA" $ futureDvp tsla 20.0 usd 10_000.0 today - bnd <- originateGeneric registry issuer pub yday "BOND1" "Bond 5Y @ 4.875%" $ bond usd 1.0 0.04875 $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay - swp <- originateGeneric registry issuer pub yday "SWAP1" "Swap LIBOR-6M vs 0.25%" $ interestRateSwap libor6M 0.0025 usd $ unrollDates todayYear (todayYear + 2) [todayMonth] todayDay - bswp <- originateGeneric registry issuer pub yday "BSWAP1" "Basis Swap LIBOR-6M vs 3M+0.15%" $ basisSwap libor3M libor6M 0.0015 usd $ unrollDates todayYear (todayYear + 2) [todayMonth] todayDay - opt <- originateGeneric registry issuer pub yday "OPT1" "Call on TSLA @ 500.0 (physical)" $ callOptionPhysical tsla 20.0 usd 10_000.0 (date (todayYear + 1) todayMonth todayDay) - opt2 <- originateGeneric registry issuer pub yday "OPT2" "Call on TSLA @ 700.0 (cash)" $ callOptionCash tslaObs usd 700.0 (date (todayYear + 1) todayMonth todayDay) - let securities = [tsla, nflx, fwd, bnd, swp, bswp, opt, opt2 ] - - -- Distribution - inv1CashCid <- coerceContractId <$> deposit operator centralBank inv1 public (Instrument.qty 1_000_000.0 usd) inv1CashAccount - inv2CashCid <- coerceContractId <$> deposit operator centralBank inv2 public (Instrument.qty 1_000_000.0 usd) inv2CashAccount - inv3CashCid <- coerceContractId <$> deposit operator centralBank inv3 public (Instrument.qty 1_000_000.0 usd) inv3CashAccount - - (_, ad1) <- issue operator registry issuer public (Instrument.qty 1.0 fwd) issuerSecAccount - (_, ad2) <- issue operator registry issuer public (Instrument.qty 1_000_000.0 bnd) issuerSecAccount - (_, ad3) <- issue operator registry issuer public (Instrument.qty 10_000_000.0 swp) issuerSecAccount - (_, ad4) <- issue operator registry issuer public (Instrument.qty 10_000_000.0 bswp) issuerSecAccount - - -- Data - createObservation issuer libor3M [(todayTime, 0.0018825)] pub - createObservation issuer libor6M [(todayTime, 0.0022363)] pub - createCalendar issuer "FED" [Saturday, Sunday] [] pub - createAccountDirectory issuer ([(usd, issuerCashAccount)] <> map (\s -> (s, issuerSecAccount)) securities) $ singleton public - createAccountDirectory inv1 ([(usd, inv1CashAccount)] <> map (\s -> (s, inv1SecAccount)) securities) $ singleton public - createAccountDirectory inv2 ([(usd, inv2CashAccount)] <> map (\s -> (s, inv2SecAccount)) securities) $ singleton public - createAccountDirectory inv3 ([(usd, inv3CashAccount)] <> map (\s -> (s, inv3SecAccount)) securities) $ singleton public - - -- Workflows - let - doAuction = do - let quantity = Instrument.qty 1_000_000.0 bnd - auctionCid <- createAuction operator agent issuer public "AUCTION1" quantity usd 0.95 (coerceContractId ad2) issuerCashAccount - inv1CollateralCid <- coerceContractId <$> getHolding inv1 (Instrument.qty 500_000.0 usd) - inv2CollateralCid <- coerceContractId <$> getHolding inv2 (Instrument.qty 392_000.0 usd) - inv3CollateralCid <- coerceContractId <$> getHolding inv3 (Instrument.qty 297_000.0 usd) - inv1BidCid <- createAuctionBid operator agent inv1 public auctionCid 500_000.0 1.0 inv1CollateralCid inv1SecAccount - inv2BidCid <- createAuctionBid operator agent inv2 public auctionCid 400_000.0 0.98 inv2CollateralCid inv2SecAccount - inv3BidCid <- createAuctionBid operator agent inv3 public auctionCid 300_000.0 0.99 inv3CollateralCid inv3SecAccount - processAuction operator agent issuer public auctionCid [inv1BidCid, inv2BidCid, inv3BidCid] - - doTrade = do - list operator exchange issuer "SWAP/USD" swp usd $ singleton public - createAskOrder operator exchange issuer public (Id "1") (Instrument.qty 250_000.0 swp) (Instrument.qty 1.00 usd) $ singleton public - createAskOrder operator exchange issuer public (Id "2") (Instrument.qty 250_000.0 swp) (Instrument.qty 1.00 usd) $ singleton public - createBidOrder operator exchange inv1 public (Id "3") (Instrument.qty 400_000.0 swp) (Instrument.qty 1.00 usd) $ singleton public - -- createAskOrder operator exchange issuer public "1" (Instrument.qty 250_000.0 swp) (Instrument.qty 0.80 usd) $ singleton public - -- createAskOrder operator exchange issuer public "2" (Instrument.qty 250_000.0 swp) (Instrument.qty 0.90 usd) $ singleton public - -- createBidOrder operator exchange inv1 public "3" (Instrument.qty 500_000.0 swp) (Instrument.qty 0.90 usd) $ singleton public - - --doAuction - --doTrade - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/FundTokenization.daml b/src/daml/Daml/Finance/Setup/Scenario/FundTokenization.daml deleted file mode 100644 index 17448fd9..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/FundTokenization.daml +++ /dev/null @@ -1,123 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.FundTokenization where - -import DA.Date (Month(..), date, toDateUTC) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.App.Distribution.Fund.Model (Fund(..)) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) -import Daml.Finance.Interface.Types.Common (Id(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "Fund Tokenization" - parties <- allocateParties scenario ["Operator", "Public", "CashProvider", "AssetManager", "PortfolioManager", "Custodian", "Investor1", "Investor2", "Investor3"] - let - all@[operator, public, cashProvider, am, pm, custodian, inv1, inv2, inv3] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["FUND1", "FUND2", "FUND3"] - settlementPaths = [[am], [pm], [inv1, am], [inv2, am], [inv3, am]] - cashRoute = Settlement.Hierarchy with rootCustodian = cashProvider; pathsToRootCustodian = settlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = custodian; pathsToRootCustodian = settlementPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator cashProvider - createCustodianRole operator custodian - createCustodianRole operator am - createDistributorRole operator pm - createDistributorRole operator am - - -- Services - createCustodyService operator cashProvider am settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator cashProvider custodian settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator am inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator am inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator am inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian am settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator custodian pm settlementFactoryCid accountFactoryCid holdingFactoryCid - createIssuanceService operator custodian pm - createIssuanceAutoService operator custodian pm - createStructuringService operator custodian pm - createStructuringAutoService operator custodian pm - createInvestmentService operator am inv1 - createInvestmentService operator am inv2 - createInvestmentService operator am inv3 - createFundService operator pm am - - -- Accounts - amCashAccount <- createAccount operator cashProvider am public "AssetManager@CashProvider/Cash" $ fromList [("PM", singleton pm)] - custodianCashAccount <- createAccount operator cashProvider custodian public "Custodian@CashProvider/Cash" $ fromList [("PM", singleton pm)] - inv1CashAccount <- createAccount operator am inv1 public "Investor1@AssetManager/Cash" $ fromList [("PM", singleton pm)] - inv2CashAccount <- createAccount operator am inv2 public "Investor2@AssetManager/Cash" $ fromList [("PM", singleton pm)] - inv3CashAccount <- createAccount operator am inv3 public "Investor3@AssetManager/Cash" $ fromList [("PM", singleton pm)] - amSecAccount <- createAccount operator custodian am public "AssetManager@Custodian/Securties" $ fromList [("PM", singleton pm)] - pmSecAccount <- createAccount operator custodian pm public "PortfolioManager@Custodian/Securities" empty - inv1SecAccount <- createAccount operator am inv1 public "Investor1@AssetManager/Securities" $ fromList [("PM", singleton pm)] - inv2SecAccount <- createAccount operator am inv2 public "Investor2@AssetManager/Securities" $ fromList [("PM", singleton pm)] - inv3SecAccount <- createAccount operator am inv3 public "Investor3@AssetManager/Securities" $ fromList [("PM", singleton pm)] - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - tt d = time d 12 0 0 - epoch = tt $ date 1970 Jan 1 - - -- Instruments - usd <- originateToken cashProvider cashProvider pub epoch "USD" "United States Dollar" - fund1 <- originateToken custodian pm pub epoch "FUND1" "FUND1 Units" - fund2 <- originateToken custodian pm pub epoch "FUND2" "FUND2 Units" - fund3 <- originateToken custodian pm pub epoch "FUND3" "FUND3 Units" - - -- Holdings - amCashCid <- deposit operator cashProvider am public (Instrument.qty 10_000_000.0 usd) amCashAccount - inv1CashCid <- deposit operator am inv1 public (Instrument.qty 6_000_000.0 usd) inv1CashAccount - inv2CashCid <- deposit operator am inv2 public (Instrument.qty 3_000_000.0 usd) inv2CashAccount - inv3CashCid <- deposit operator am inv3 public (Instrument.qty 1_000_000.0 usd) inv3CashAccount - - -- Data - fund1Cid <- submitMulti [operator, custodian, pm] [] do createCmd Fund with operator; custodian; manager = pm; id = Id "FUND1"; description = "Fund 1"; instrument = fund1; currency = usd; custodianCashAccount; managerFundAccount = pmSecAccount; totalUnits = 1_000_000.0; observers = singleton public - fund2Cid <- submitMulti [operator, custodian, pm] [] do createCmd Fund with operator; custodian; manager = pm; id = Id "FUND2"; description = "Fund 2"; instrument = fund2; currency = usd; custodianCashAccount; managerFundAccount = pmSecAccount; totalUnits = 5_000_000.0; observers = singleton public - fund3Cid <- submitMulti [operator, custodian, pm] [] do createCmd Fund with operator; custodian; manager = pm; id = Id "FUND3"; description = "Fund 3"; instrument = fund3; currency = usd; custodianCashAccount; managerFundAccount = pmSecAccount; totalUnits = 15_000_000.0; observers = singleton public - navFund1Cid <- createObservation pm "NAV_FUND1_USD" [ (todayTime, 1_000_000.0) ] pub - navFund2Cid <- createObservation pm "NAV_FUND2_USD" [ (todayTime, 5_000_000.0) ] pub - navFund3Cid <- createObservation pm "NAV_FUND3_USD" [ (todayTime, 15_000_000.0) ] pub - - createAccountDirectory custodian [(usd, custodianCashAccount)] $ singleton public - createAccountDirectory am [(usd, amCashAccount), (fund1, amSecAccount), (fund2, amSecAccount), (fund3, amSecAccount)] $ singleton public - createAccountDirectory inv1 [(usd, inv1CashAccount), (fund1, inv1SecAccount), (fund2, inv1SecAccount), (fund3, inv1SecAccount)] $ singleton public - createAccountDirectory inv2 [(usd, inv2CashAccount), (fund1, inv2SecAccount), (fund2, inv2SecAccount), (fund3, inv2SecAccount)] $ singleton public - createAccountDirectory inv3 [(usd, inv3CashAccount), (fund1, inv3SecAccount), (fund2, inv3SecAccount), (fund3, inv3SecAccount)] $ singleton public - - -- Workflows - let - doDistribution = do - ir1Cid <- createInvestmentRequest operator am inv1 public "REQ-FUND1-INV1" today fund1Cid (coerceContractId inv1CashCid) - ir2Cid <- createInvestmentRequest operator am inv2 public "REQ-FUND1-INV2" today fund1Cid (coerceContractId inv2CashCid) - ir3Cid <- createInvestmentRequest operator am inv3 public "REQ-FUND1-INV3" today fund1Cid (coerceContractId inv3CashCid) - pirCid <- poolInvestmentRequests operator pm am public "REQ-FUND1-POOLED" today fund1Cid (coerceContractId amCashCid) [ir1Cid, ir2Cid, ir3Cid] - fulfillPooledInvestmentRequest operator pm am public fund1Cid pirCid navFund1Cid settlementFactoryCid - -- doDistribution - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/NaturalGas.daml b/src/daml/Daml/Finance/Setup/Scenario/NaturalGas.daml deleted file mode 100644 index 7ad97f7b..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/NaturalGas.daml +++ /dev/null @@ -1,105 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.NaturalGas where - -import DA.Date (addDays, toDateUTC) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.Data.Observable.Observation (Observation(..)) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) -import Daml.Finance.Interface.Types.Common (Id(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Payoff -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - parties <- allocateParties "Natural Gas" ["Operator", "Public", "CashProvider", "Seller", "Buyer"] - let - all@[operator, public, cashProvider, seller, buyer] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["Z4200L", "Z4GEN", "Z4300L", "NATGAS1", "NATGAS2", "NATGAS3", "NATGAS4"] - settlementPaths = [[buyer], [seller]] - cashRoute = Settlement.Hierarchy with rootCustodian = cashProvider; pathsToRootCustodian = settlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = seller; pathsToRootCustodian = settlementPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator cashProvider - createCustodianRole operator seller - - -- Services - createCustodyService operator cashProvider seller settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator cashProvider buyer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator seller buyer settlementFactoryCid accountFactoryCid holdingFactoryCid - createIssuanceService operator seller seller - createLifecycleService operator seller seller public - - -- Accounts - sellerCashAccount <- createAccount operator cashProvider seller public "Seller@CashProvider" empty - buyerCashAccount <- createAccount operator cashProvider buyer public "Buyer@CashProvider" empty - buyerSecAccount <- createAccount operator seller buyer public "Buyer@Seller" empty - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - t1 = addDays today 1 - t1t = time t1 12 0 0 - t3 = addDays today 3 - createClockAndEvent all today (singleton public) - - -- Base Instruments - usd <- originateToken cashProvider cashProvider pub todayTime "USD" "United States Dollar" - z4200L <- originateToken seller seller pub todayTime "Z4200L" "Z4200L" - z4GEN <- originateToken seller seller pub todayTime "Z4GEN" "Z4GEN" - z4300L <- originateToken seller seller pub todayTime "Z4300L" "Z4300L" - - -- Structured Instruments - let - gdTgp219 = "GD TGP 24-219 + 0" - gdTgp300 = "GD TGP 24-300 + 0" - deliveries = - [ Instrument.qty 2_000.0 z4200L - , Instrument.qty 4_000.0 z4GEN - , Instrument.qty 4_000.0 z4300L ] - ng1 <- originateGeneric seller seller pub todayTime "NATGAS1" "Multi-location Fixed-Price Daily" $ ngMultiLocation t1 t3 deliveries 5.25 usd - ng2 <- originateGeneric seller seller pub todayTime "NATGAS2" "Location/Pricing Option Daily" $ ngLocationPricingOption t1 t3 5_000.0 z4200L gdTgp219 z4GEN gdTgp300 usd - ng3 <- originateGeneric seller seller pub todayTime "NATGAS3" "Capped Pricing Daily" $ ngCapped t1 t3 10_000.0 z4200L gdTgp219 5.75 usd - ng4 <- originateGeneric seller seller pub todayTime "NATGAS4" "Price-conditional Location Daily" $ ngConditionalLocation t1 t3 10_000.0 z4200L gdTgp219 5.50 z4GEN gdTgp300 usd - - -- Data - createAccountDirectory seller [(usd, sellerCashAccount)] $ singleton public - createAccountDirectory buyer [(usd, buyerCashAccount), (ng1, buyerSecAccount), (ng3, buyerSecAccount), (ng4, buyerSecAccount)] $ singleton public - - -- Distribution - buyerCashCid <- deposit operator cashProvider buyer public (Instrument.qty 1_000_000.0 usd) buyerCashAccount - buyerSecCid1 <- deposit operator seller buyer public (Instrument.qty 1.0 ng1) buyerSecAccount - buyerSecCid2 <- deposit operator seller buyer public (Instrument.qty 1.0 ng3) buyerSecAccount - buyerSecCid2 <- deposit operator seller buyer public (Instrument.qty 1.0 ng4) buyerSecAccount - - -- Data - let - obs = - [ Observation with provider = seller; id = Id gdTgp219; observations = fromList [(t1t, 6.00)]; observers = pub - , Observation with provider = seller; id = Id gdTgp300; observations = fromList [(t1t, 5.90)]; observers = pub ] - obsCids <- mapA (\f -> submitMulti [seller] [] do createCmd f) obs - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/OtcSwaps.daml b/src/daml/Daml/Finance/Setup/Scenario/OtcSwaps.daml deleted file mode 100644 index ad65a64a..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/OtcSwaps.daml +++ /dev/null @@ -1,75 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.OtcSwaps where - -import DA.Date (Month(..), date, toDateUTC, toGregorian) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Types.Date.Calendar (BusinessDayConventionEnum(..)) -import Daml.Finance.Interface.Types.Date.DayCount (DayCountConventionEnum(..)) -import Daml.Finance.Interface.Types.Date.RollConvention (PeriodEnum(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "OTC Swaps" - parties <- allocateParties scenario ["Operator", "Public", "CentralBank", "Seller", "Buyer"] - let - all@[operator, public, centralBank, seller, buyer] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - settlementPaths = [[buyer], [seller]] - cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = seller; pathsToRootCustodian = settlementPaths - paths = fromList [("USD", cashRoute), ("CDS1", secRoute)] - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator centralBank - createCustodianRole operator seller - - -- Services - createCustodyService operator centralBank seller settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank buyer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator seller buyer settlementFactoryCid accountFactoryCid holdingFactoryCid - createIssuanceService operator seller seller - createIssuanceAutoService operator seller seller - createStructuringService operator seller seller - createStructuringAutoService operator seller seller - createLifecycleService operator seller seller public - - -- Accounts - sellerCashAccount <- createAccount operator centralBank seller public "Seller@CentralBank/Cash" empty - buyerCashAccount <- createAccount operator centralBank buyer public "Buyer@CentralBank/Cash" empty - buyerSecAccount <- createAccount operator seller buyer public "Buyer@Seller/Securties" empty - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - tt d = time d 12 0 0 - epoch = tt $ date 1970 Jan 1 - (ty, tm, td) = toGregorian today - (clockCid, eventCid) <- createClockAndEvent all (date 2021 tm td) (singleton public) - - -- Instruments - usd <- originateToken centralBank centralBank pub epoch "USD" "United States Dollar" - swap1 <- originateCreditDefaultSwap seller seller "CDS1" "Credit Default Swap 5Y" pub (tt $ date 2020 tm td) (date 2020 tm td) ["EMPTY"] seller (date 2021 tm td) (date 2025 tm td) Act365Fixed Following 0.011 M 12 usd "DefaultProbability" "RecoveryRate" True - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/SecuritiesLending.daml b/src/daml/Daml/Finance/Setup/Scenario/SecuritiesLending.daml deleted file mode 100644 index 3e75382e..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/SecuritiesLending.daml +++ /dev/null @@ -1,104 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.SecuritiesLending where - -import DA.Date (Month(..), addDays, date, toDateUTC, toGregorian) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.App.Lending.Model qualified as Lending (Repay(..)) -import Daml.Finance.App.Lending.Service qualified as Lending (AcceptBorrowOffer(..), CreateBorrowOffer(..), RequestBorrowOffer(..), Service) -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Payoff -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - let scenario = "Securities Lending" - parties <- allocateParties scenario ["Operator", "Public", "CentralBank", "Registry", "Borrower", "Lender"] - let - all@[operator, public, centralBank, registry, borrower, lender] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["TSLA", "DEAL1"] - settlementPaths = [[borrower], [lender]] - cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = settlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = registry; pathsToRootCustodian = settlementPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator centralBank - createCustodianRole operator registry - createCustodianRole operator lender - - -- Create custody services - createCustodyService operator centralBank borrower settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank lender settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry borrower settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator registry lender settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator lender borrower settlementFactoryCid accountFactoryCid holdingFactoryCid - createLendingService operator lender borrower - createStructuringService operator registry lender - createLifecycleService operator registry lender public - - -- Accounts - borrowerLenderAccount <- createAccount operator lender borrower public "Borrower@Lender" empty - borrowerCashAccount <- createAccount operator centralBank borrower public "Borrower@CentralBank" empty - lenderCashAccount <- createAccount operator centralBank lender public "Lender@CentralBank" empty - lenderSecAccount <- createAccount operator registry lender public "Lender@Registry" empty - borrowerSecAccount <- createAccount operator registry borrower public "Borrower@Registry" empty - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - (todayYear, todayMonth, todayDay) = toGregorian today - createClockAndEvent all today (singleton public) - - -- Instruments - usd <- originateToken centralBank centralBank pub todayTime "USD" "United States Dollar" - tsla <- originateEquity registry registry pub todayTime "TSLA" "Tesla, Inc. Common Stock" - deal1 <- originateGeneric registry lender pub todayTime "DEAL1" "Loan of TSLA @ 0.2%" $ loan today (addDays today 28) tsla 0.002 usd [addDays today 7, addDays today 14, addDays today 21, addDays today 28] - - -- Data - createAccountDirectory lender [(usd, lenderCashAccount), (tsla, lenderSecAccount)] $ singleton public - createAccountDirectory borrower [(usd, borrowerCashAccount), (tsla, borrowerSecAccount), (deal1, borrowerLenderAccount)] $ singleton public - - -- Distribution - deposit operator lender borrower public (Instrument.qty 10_000.0 deal1) borrowerLenderAccount - borrowedCid <- coerceContractId <$> deposit operator registry lender public (Instrument.qty 1_000.0 tsla) lenderSecAccount - collateralCid <- coerceContractId <$> deposit operator centralBank borrower public (Instrument.qty 1_000_000.0 usd) borrowerCashAccount - interestCid <- coerceContractId <$> deposit operator centralBank borrower public (Instrument.qty 1_000.0 usd) borrowerCashAccount - - -- Workflows - let - doLoan = do - let - borrowed = Instrument.qty 1_000.0 tsla - interest = Instrument.qty 1_000.0 usd - collateral = Instrument.qty 1_000_000.0 usd - - borrowOfferRequestCid <- submit borrower do exerciseByKeyCmd @Lending.Service (operator, lender, borrower) Lending.RequestBorrowOffer with id = "BORROW"; borrowed; maturity = date 2022 Sep 14 - borrowOfferCid <- submit lender do exerciseByKeyCmd @Lending.Service (operator, lender, borrower) Lending.CreateBorrowOffer with borrowOfferRequestCid; interest; collateral; borrowedCid; lenderBorrowedAccount = lenderSecAccount; lenderInterestAccount = lenderCashAccount - (borrowedCid, borrowAgreementCid) <- submitMulti [borrower] [public] do exerciseByKeyCmd @Lending.Service (operator, lender, borrower) Lending.AcceptBorrowOffer with borrowOfferCid; collateralCid; account = borrowerSecAccount - submitMulti [borrower] [public] do exerciseCmd borrowAgreementCid Lending.Repay with borrowedCid; interestCid - - -- doLoan - - pure parties diff --git a/src/daml/Daml/Finance/Setup/Scenario/StructuredNotes.daml b/src/daml/Daml/Finance/Setup/Scenario/StructuredNotes.daml deleted file mode 100644 index 2f65c1ff..00000000 --- a/src/daml/Daml/Finance/Setup/Scenario/StructuredNotes.daml +++ /dev/null @@ -1,191 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Scenario.StructuredNotes where - -import ContingentClaims.Core.Builders (unrollDates) -import DA.Date (Month(..), addDays, date, toDateUTC, toGregorian) -import DA.Map (empty, fromList) -import DA.Set (singleton) -import DA.Time (time) -import Daml.Finance.App.BackToBack.Service qualified as BackToBack -import Daml.Finance.App.Distribution.Subscription.Model qualified as Subscription -import Daml.Finance.App.Distribution.Subscription.Service qualified as Subscription -import Daml.Finance.Account.Account qualified as Account (Factory(..)) -import Daml.Finance.Holding.Fungible qualified as Fungible (Factory(..)) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (qty) -import Daml.Finance.Interface.Types.Common (Id(..)) -import Daml.Finance.Settlement.Factory qualified as Settlement (FactoryWithIntermediaries(..)) -import Daml.Finance.Settlement.Hierarchy qualified as Settlement (Hierarchy(..)) -import Daml.Finance.Setup.Payoff -import Daml.Finance.Setup.Util.Common -import Daml.Finance.Setup.Util.Role -import Daml.Finance.Setup.Util.Service -import Daml.Finance.Setup.Util.Workflow -import Daml.Script - -run : Script [PartyInfo] -run = do - parties <- allocateParties "Structured Notes" ["Operator", "Public", "CentralBank", "Depository", "Issuer", "RiskTaker", "Investor1", "Investor2", "Investor3"] - let - all@[operator, public, centralBank, depository, issuer, riskTaker, inv1, inv2, inv3] = map (.id) parties - pub = fromList [("Public", singleton public)] - - -- Factories - let - assets = ["TSLA", "FWD1", "OPT1", "BOND1", "RC1", "BRC1", "BWN1", "BWN2"] - cashSettlementPaths = [[issuer], [riskTaker], [inv1], [inv2], [inv3]] - secSettlementPaths = [[issuer], [riskTaker], [inv1, issuer], [inv2, issuer], [inv3, issuer]] - cashRoute = Settlement.Hierarchy with rootCustodian = centralBank; pathsToRootCustodian = cashSettlementPaths - secRoute = Settlement.Hierarchy with rootCustodian = riskTaker; pathsToRootCustodian = secSettlementPaths - paths = fromList $ ("USD", cashRoute) :: map (\a -> (a, secRoute)) assets - accountFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Account.Factory with provider = operator; observers = pub - holdingFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Fungible.Factory with provider = operator; observers = pub - settlementFactoryCid <- toInterfaceContractId <$> submit operator do createCmd Settlement.FactoryWithIntermediaries with provider = operator; paths; observers = singleton public - - -- Roles - createOperatorRole operator - createCustodianRole operator centralBank - createCustodianRole operator issuer - createCustodianRole operator riskTaker - createDistributorRole operator issuer - - -- Services - createCustodyService operator centralBank issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank riskTaker settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator centralBank inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator riskTaker riskTaker settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator riskTaker issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator issuer issuer settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator issuer inv1 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator issuer inv2 settlementFactoryCid accountFactoryCid holdingFactoryCid - createCustodyService operator issuer inv3 settlementFactoryCid accountFactoryCid holdingFactoryCid - createStructuringService operator issuer issuer - createIssuanceService operator issuer issuer - createIssuanceService operator riskTaker riskTaker - createBackToBackIssuanceService operator riskTaker issuer public - createLifecycleService operator riskTaker riskTaker public - createLifecycleService operator issuer issuer public - createSubscriptionService operator issuer issuer public - - -- Accounts - riskTakerCashAccount <- createAccount operator centralBank riskTaker public "RiskTaker@CentralBank" $ fromList [("b2b", singleton issuer)] - issuerCashAccount <- createAccount operator centralBank issuer public "Issuer@CentralBank" empty - inv1CashAccount <- createAccount operator centralBank inv1 public "Investor1@CentralBank" empty - inv2CashAccount <- createAccount operator centralBank inv2 public "Investor2@CentralBank" empty - inv3CashAccount <- createAccount operator centralBank inv3 public "Investor3@CentralBank" empty - issuerSecAccount <- createAccount operator riskTaker issuer public "Issuer@RiskTaker" empty - inv1SecAccount <- createAccount operator issuer inv1 public "Investor1@Issuer" empty - inv2SecAccount <- createAccount operator issuer inv2 public "Investor2@Issuer" empty - inv3SecAccount <- createAccount operator issuer inv3 public "Investor3@Issuer" empty - issuerOwnAccount <- createAccount operator issuer issuer public "Issuer@Issuer" empty - riskTakerOwnAccount <- createAccount operator riskTaker riskTaker public "RiskTaker@RiskTaker" $ fromList [("b2b", singleton issuer)] - - -- Time - t <- getTime - let - today = toDateUTC t - todayTime = time today 12 0 0 - fixTime = time (date 2022 Jul 5) 12 0 0 - maturity = addDays today 365 - (todayYear, todayMonth, todayDay) = toGregorian today - createClockAndEvent all today (singleton public) - - -- Observables - let - amd = "AMD" - qc = "QUALCOMM" - tslaO = "Close(TSLA)" - libor3M = "LIB-USD-3M" - libor6M = "LIB-USD-6M" - - -- Instruments - usd <- originateToken centralBank centralBank pub todayTime "USD" "United States Dollar" - tsla <- originateToken depository issuer pub todayTime "TSLA" "Tesla, Inc. Common Stock" - fwd <- originateGeneric depository issuer pub todayTime "FWD1" "Forward on TSLA" $ futureDvp tsla 200.0 usd 100_000.0 today - opt <- originateGeneric depository issuer pub todayTime "OPT1" "Put Option on TSLA" $ putOptionCash tslaO usd 1_000.0 maturity - bnd <- originateGeneric depository issuer pub todayTime "BOND1" "Bond 5Y/4.875%" $ bond usd 1.0 0.04875 $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay - rc <- originateGeneric depository issuer pub todayTime "RC1" "Reverse Convertible on TSLA" $ rc tslaO usd 0.02 800.0 $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay - brc <- originateGeneric depository issuer pub todayTime "BRC1" "Barrier Reverse Convertible on TSLA" $ brc tslaO usd 0.05 800.0 600.0 today $ unrollDates todayYear (todayYear + 4) [todayMonth] todayDay - bwn1 <- originateGeneric depository issuer pub todayTime "BWN1" "Synthetic Buy-Write Notes on AMD" $ buyWriteNote (date 2022 Jul 16) (date 2023 Jul 19) (date 2023 Jul 23) amd usd 0.1776 91.6300 100.7930 -- Issue size: 77'300 - bwn2 <- originateGeneric depository issuer pub todayTime "BWN2" "Synthetic Buy-Write Notes on QUALCOMM" $ buyWriteNote (date 2022 Jun 30) (date 2022 Jul 05) (date 2022 Jul 07) qc usd 0.1312 147.2566 161.9823 - let securities = [tsla, fwd, opt, bnd, rc, brc, bwn1, bwn2] - - -- Distribution - -- issuerCashCid1 <- coerceContractId <$> deposit operator centralBank issuer public (Instrument.qty 4_417_698.0 usd) issuerCashAccount - -- inv1CashCid1 <- coerceContractId <$> deposit operator centralBank inv1 public (Instrument.qty 1_472_566.0 usd) inv1CashAccount - -- inv2CashCid1 <- coerceContractId <$> deposit operator centralBank inv2 public (Instrument.qty 1_472_566.0 usd) inv2CashAccount - -- inv3CashCid1 <- coerceContractId <$> deposit operator centralBank inv3 public (Instrument.qty 1_472_566.0 usd) inv3CashAccount - - issuerCashCid2 <- coerceContractId <$> deposit operator centralBank issuer public (Instrument.qty 5_000_000.0 usd) issuerCashAccount - inv1CashCid2 <- coerceContractId <$> deposit operator centralBank inv1 public (Instrument.qty 950_000.0 usd) inv1CashAccount - inv2CashCid2 <- coerceContractId <$> deposit operator centralBank inv2 public (Instrument.qty 950_000.0 usd) inv2CashAccount - inv3CashCid2 <- coerceContractId <$> deposit operator centralBank inv3 public (Instrument.qty 950_000.0 usd) inv3CashAccount - - -- Data - createObservation issuer tslaO [(todayTime, 580.0)] pub - createObservation issuer qc [(fixTime, 170.0)] pub - createAccountDirectory riskTaker ([(usd, riskTakerCashAccount)] <> map (\s -> (s, riskTakerOwnAccount)) securities) $ singleton public - createAccountDirectory issuer ([(usd, issuerCashAccount)] <> map (\s -> (s, issuerSecAccount)) securities) $ singleton public - createAccountDirectory inv1 ([(usd, inv1CashAccount)] <> map (\s -> (s, inv1SecAccount)) securities) $ singleton public - createAccountDirectory inv2 ([(usd, inv2CashAccount)] <> map (\s -> (s, inv2SecAccount)) securities) $ singleton public - createAccountDirectory inv3 ([(usd, inv3CashAccount)] <> map (\s -> (s, inv3SecAccount)) securities) $ singleton public - - -- Workflows - let - issuance quantity = do - submitMulti [issuer] [public] do - exerciseByKeyCmd @BackToBack.Service (operator, riskTaker, issuer) BackToBack.CreateIssuance - with - id = Id $ "ISSUANCE-" <> show quantity.unit.id - description = "Issuance of " <> show quantity.amount <> " " <> show quantity.unit.id - quantity - customerAccount = issuerOwnAccount - providerAccount = riskTakerOwnAccount - - subscription asset price issuerCashCid issuerAssetCid riskTakerAssetCid inv1CashCid inv2CashCid inv3CashCid = do - offeringCid <- submit issuer do - let - offeringId = "OFFERING-" <> show asset.unit.id - backToBack = Some Subscription.BackToBack - with - party = riskTaker - offeringId - issuerReceivableAccount = issuerSecAccount - issuerDeliverableCid = issuerCashCid - b2bReceivableAccount = riskTakerCashAccount - b2bDeliverableCid = coerceContractId riskTakerAssetCid - exerciseByKeyCmd @Subscription.Service (operator, issuer, issuer) Subscription.CreateOffering - with - offeringId - asset - price - customerHoldingCid = coerceContractId issuerAssetCid - customerAccount = issuerCashAccount - backToBack - - inv1SubscriptionCid <- submitMulti [inv1] [public] do exerciseCmd offeringCid Subscription.Subscribe with investor = inv1; quantity = 10_000.0; investorHoldingCid = inv1CashCid; investorAccount = inv1SecAccount - inv2SubscriptionCid <- submitMulti [inv2] [public] do exerciseCmd offeringCid Subscription.Subscribe with investor = inv2; quantity = 10_000.0; investorHoldingCid = inv2CashCid; investorAccount = inv2SecAccount - inv3SubscriptionCid <- submitMulti [inv3] [public] do exerciseCmd offeringCid Subscription.Subscribe with investor = inv3; quantity = 10_000.0; investorHoldingCid = inv3CashCid; investorAccount = inv3SecAccount - - submitMulti [issuer] [public] do - exerciseByKeyCmd @Subscription.Service (operator, issuer, issuer) Subscription.ProcessOffering - with - settlementFactoryCid - offeringCid - subscriptionCids = [inv1SubscriptionCid, inv2SubscriptionCid, inv3SubscriptionCid] - pure () - - -- (_, rcIssuerHoldingCid, rcRiskTakerHoldingCid) <- issuance $ Instrument.qty 3_000_000.0 rc - -- subscription (Instrument.qty 3_000_000.0 rc) (Instrument.qty 1.0 usd) issuerCashCid1 rcIssuerHoldingCid rcRiskTakerHoldingCid inv1CashCid1 inv2CashCid1 inv3CashCid1 - -- (_, brcIssuerHoldingCid, brcRiskTakerHoldingCid) <- issuance $ Instrument.qty 3_000_000.0 brc - -- subscription (Instrument.qty 3_000_000.0 brc) (Instrument.qty 1.0 usd) issuerCashCid2 brcIssuerHoldingCid brcRiskTakerHoldingCid inv1CashCid2 inv2CashCid2 inv3CashCid2 - -- (_, bwn1IssuerHoldingCid, bwn1RiskTakerHoldingCid) <- issuance $ Instrument.qty 50_000.0 bwn1 - -- subscription (Instrument.qty 50_000.0 bwn1) (Instrument.qty 95.00 usd) issuerCashCid2 bwn1IssuerHoldingCid bwn1RiskTakerHoldingCid inv1CashCid2 inv2CashCid2 inv3CashCid2 - -- (_, bwn2IssuerHoldingCid, bwn2RiskTakerHoldingCid) <- issuance $ Instrument.qty 44_000.0 bwn2 - -- subscription (Instrument.qty 44_000.0 bwn2) (Instrument.qty 147.2566 usd) issuerCashCid1 bwn2IssuerHoldingCid bwn2RiskTakerHoldingCid inv1CashCid1 inv2CashCid1 inv3CashCid1 - - pure parties - diff --git a/src/daml/Daml/Finance/Setup/Util/Service.daml b/src/daml/Daml/Finance/Setup/Util/Service.daml deleted file mode 100644 index a04e3fef..00000000 --- a/src/daml/Daml/Finance/Setup/Util/Service.daml +++ /dev/null @@ -1,173 +0,0 @@ --- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. --- SPDX-License-Identifier: Apache-2.0 - -module Daml.Finance.Setup.Util.Service where - -import DA.Map qualified as M (fromList) -import DA.Set (fromList, singleton) -import Daml.Finance.App.Custody.Service qualified as Custody (Accept(..), Service) -import Daml.Finance.App.Decentralized.Exchange.Model qualified as DecentralizedExchange (Pool(..)) -import Daml.Finance.App.Decentralized.Exchange.Service qualified as DecentralizedExchange (Service(..)) -import Daml.Finance.App.Issuance.Auto.Service qualified as IssuanceAuto (Accept(..), Service) -import Daml.Finance.App.Issuance.Service qualified as Issuance (Accept(..), Service) -import Daml.Finance.App.BackToBack.Service qualified as BackToBack (Accept(..), Service) -import Daml.Finance.App.Lifecycle.Service qualified as Lifecycle (Accept(..), Service) -import Daml.Finance.App.Trading.Auto.Service qualified as TradingAuto (Accept(..), Service) -import Daml.Finance.App.Trading.Service qualified as Trading (Accept(..), Service) -import Daml.Finance.App.Lending.Service qualified as Lending (Accept(..), Service) -import Daml.Finance.App.Listing.Auto.Service qualified as ListingAuto (Accept(..), Service) -import Daml.Finance.App.Listing.Service qualified as Listing (Accept(..), Service) -import Daml.Finance.App.Distribution.Auction.Auto.Service qualified as AuctionAuto (Accept(..), Service) -import Daml.Finance.App.Distribution.Auction.Service qualified as Auction (Accept(..), Service) -import Daml.Finance.App.Distribution.Bidding.Auto.Service qualified as BiddingAuto (Accept(..), Service) -import Daml.Finance.App.Distribution.Bidding.Service qualified as Bidding (Accept(..), Service) -import Daml.Finance.App.Distribution.Fund.Service qualified as Fund (Accept(..), Service) -import Daml.Finance.App.Distribution.Investment.Service qualified as Investment (Accept(..), Service) -import Daml.Finance.App.Distribution.Subscription.Service qualified as Subscription (Accept(..), Service) -import Daml.Finance.App.Role.Custodian qualified as Custodian -import Daml.Finance.App.Role.Distributor qualified as Distributor -import Daml.Finance.App.Role.Exchange qualified as Exchange -import Daml.Finance.App.Settlement.Service qualified as Settlement (Accept(..), Service) -import Daml.Finance.App.Structuring.Auto.Service qualified as StructuringAuto (Accept(..), Service) -import Daml.Finance.App.Structuring.Service qualified as Structuring (Accept(..), Factories(..), Service) -import Daml.Finance.Instrument.Bond.FixedRate.Factory qualified as FixedRateBond (Factory(..)) -import Daml.Finance.Instrument.Bond.FloatingRate.Factory qualified as FloatingRateBond (Factory(..)) -import Daml.Finance.Instrument.Bond.InflationLinked.Factory qualified as InflationLinkedBond (Factory(..)) -import Daml.Finance.Instrument.Bond.ZeroCoupon.Factory qualified as ZeroCouponBond (Factory(..)) -import Daml.Finance.Instrument.Equity.Factory qualified as Equity (Factory(..)) -import Daml.Finance.Instrument.Generic.Factory qualified as Generic (Factory(..)) -import Daml.Finance.Instrument.Token.Factory qualified as Token (Factory(..)) -import Daml.Finance.Interface.Account.Account qualified as Account (K) -import Daml.Finance.Interface.Account.Factory qualified as Account (F) -import Daml.Finance.Interface.Holding.Factory qualified as Holding (F) -import Daml.Finance.Interface.Holding.Fungible qualified as Fungible (I) -import Daml.Finance.Interface.Instrument.Base.Instrument qualified as Instrument (Q) -import Daml.Finance.Interface.Settlement.Factory qualified as Settlement (Factory) -import Daml.Finance.Interface.Types.Common (Id(..)) -import Daml.Finance.Interface.Util.Disclosure qualified as Disclosure (I, AddObservers(..)) -import Daml.Finance.Lifecycle.Rule.Claim qualified as Claim (Rule(..)) -import Daml.Finance.Lifecycle.Rule.Distribution qualified as Distribution (Rule(..)) -import Daml.Finance.Lifecycle.Rule.Replacement qualified as Replacement (Rule(..)) -import Daml.Script - -createCustodyService : Party -> Party -> Party -> ContractId Settlement.Factory -> ContractId Account.F -> ContractId Holding.F -> Script (ContractId Custody.Service) -createCustodyService operator custodian customer settlementFactoryCid accountFactoryCid holdingFactoryCid = do - let providers = fromList [custodian, customer] - claimRuleCid <- toInterfaceContractId <$> submitMulti [custodian, customer] [] do createCmd Claim.Rule with providers = fromList [custodian, customer]; claimers = providers; settlers = providers; settlementFactoryCid; netInstructions = False - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferCustodyService with customer; claimRuleCid; accountFactoryCid; holdingFactoryCid - submit customer do exerciseCmd offerCid Custody.Accept - -createIssuanceService : Party -> Party -> Party -> Script (ContractId Issuance.Service) -createIssuanceService operator custodian customer = do - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferIssuanceService with .. - submit customer do exerciseCmd offerCid Issuance.Accept - -createIssuanceAutoService : Party -> Party -> Party -> Script (ContractId IssuanceAuto.Service) -createIssuanceAutoService operator custodian customer = do - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferIssuanceAutoService with .. - submit customer do exerciseCmd offerCid IssuanceAuto.Accept - -createStructuringService : Party -> Party -> Party -> Script (ContractId Structuring.Service) -createStructuringService operator custodian customer = do - token <- toInterfaceContractId <$> submit custodian do createCmd Token.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - equity <- toInterfaceContractId <$> submit custodian do createCmd Equity.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - generic <- toInterfaceContractId <$> submit custodian do createCmd Generic.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - fixedRateBond <- toInterfaceContractId <$> submit custodian do createCmd FixedRateBond.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - floatingRateBond <- toInterfaceContractId <$> submit custodian do createCmd FloatingRateBond.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - inflationLinkedBond <- toInterfaceContractId <$> submit custodian do createCmd InflationLinkedBond.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - zeroCouponBond <- toInterfaceContractId <$> submit custodian do createCmd ZeroCouponBond.Factory with provider = custodian; observers = M.fromList [("Default", singleton customer)] - let factories = Structuring.Factories with token; equity; generic; fixedRateBond; floatingRateBond; inflationLinkedBond; zeroCouponBond - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferStructuringService with .. - submit customer do exerciseCmd offerCid Structuring.Accept - -createStructuringAutoService : Party -> Party -> Party -> Script (ContractId StructuringAuto.Service) -createStructuringAutoService operator custodian customer = do - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferStructuringAutoService with .. - submit customer do exerciseCmd offerCid StructuringAuto.Accept - -createBackToBackIssuanceService : Party -> Party -> Party -> Party -> Script (ContractId BackToBack.Service) -createBackToBackIssuanceService operator custodian customer public = do - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferBackToBackService with .. - submit customer do exerciseCmd offerCid BackToBack.Accept - -createLifecycleService : Party -> Party -> Party -> Party -> Script (ContractId Lifecycle.Service) -createLifecycleService operator custodian customer public = do - distributionRuleCid <- toInterfaceContractId <$> submit custodian do createCmd Distribution.Rule with providers = singleton custodian; lifecycler = customer; observers = singleton public - replacementRuleCid <- toInterfaceContractId <$> submit custodian do createCmd Replacement.Rule with providers = singleton custodian; lifecycler = customer; observers = singleton public - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferLifecycleService with .. - submit customer do exerciseCmd offerCid Lifecycle.Accept - -createTradingService : Party -> Party -> Party -> ContractId Settlement.Factory -> Script (ContractId Trading.Service) -createTradingService operator exchange customer settlementFactoryCid = do - offerCid <- submit exchange do exerciseByKeyCmd @Exchange.Role (operator, exchange) Exchange.OfferTradingService with customer; settlementFactoryCid - submit customer do exerciseCmd offerCid Trading.Accept - -createTradingAutoService : Party -> Party -> Party -> Script (ContractId TradingAuto.Service) -createTradingAutoService operator exchange customer = do - offerCid <- submit exchange do exerciseByKeyCmd @Exchange.Role (operator, exchange) Exchange.OfferTradingAutoService with .. - submit customer do exerciseCmd offerCid TradingAuto.Accept - -createListingService : Party -> Party -> Party -> Script (ContractId Listing.Service) -createListingService operator exchange customer = do - offerCid <- submit exchange do exerciseByKeyCmd @Exchange.Role (operator, exchange) Exchange.OfferListingService with .. - submit customer do exerciseCmd offerCid Listing.Accept - -createListingAutoService : Party -> Party -> Party -> Script (ContractId ListingAuto.Service) -createListingAutoService operator exchange customer = do - offerCid <- submit exchange do exerciseByKeyCmd @Exchange.Role (operator, exchange) Exchange.OfferListingAutoService with .. - submit customer do exerciseCmd offerCid ListingAuto.Accept - -createAuctionService : Party -> Party -> Party -> Script (ContractId Auction.Service) -createAuctionService operator distributor customer = do - offerCid <- submit distributor do exerciseByKeyCmd @Distributor.Role (operator, distributor) Distributor.OfferAuctionService with customer - submit customer do exerciseCmd offerCid Auction.Accept - -createAuctionAutoService : Party -> Party -> Party -> Script (ContractId AuctionAuto.Service) -createAuctionAutoService operator distributor customer = do - offerCid <- submit distributor do exerciseByKeyCmd @Distributor.Role (operator, distributor) Distributor.OfferAuctionAutoService with customer - submit customer do exerciseCmd offerCid AuctionAuto.Accept - -createBiddingService : Party -> Party -> Party -> Script (ContractId Bidding.Service) -createBiddingService operator distributor customer = do - offerCid <- submit distributor do exerciseByKeyCmd @Distributor.Role (operator, distributor) Distributor.OfferBiddingService with .. - submit customer do exerciseCmd offerCid Bidding.Accept - -createBiddingAutoService : Party -> Party -> Party -> Script (ContractId BiddingAuto.Service) -createBiddingAutoService operator distributor customer = do - offerCid <- submit distributor do exerciseByKeyCmd @Distributor.Role (operator, distributor) Distributor.OfferBiddingAutoService with .. - submit customer do exerciseCmd offerCid BiddingAuto.Accept - -createSubscriptionService : Party -> Party -> Party -> Party -> Script (ContractId Subscription.Service) -createSubscriptionService operator distributor customer public = do - offerCid <- submit distributor do exerciseByKeyCmd @Distributor.Role (operator, distributor) Distributor.OfferSubscriptionService with customer; public - submit customer do exerciseCmd offerCid Subscription.Accept - -createLendingService : Party -> Party -> Party -> Script (ContractId Lending.Service) -createLendingService operator lender borrower = do - offerCid <- submit lender do exerciseByKeyCmd @Custodian.Role (operator, lender) Custodian.OfferLendingService with customer = borrower - submit borrower do exerciseCmd offerCid Lending.Accept - -createSettlementService : Party -> Party -> Party -> Script (ContractId Settlement.Service) -createSettlementService operator custodian customer = do - offerCid <- submit custodian do exerciseByKeyCmd @Custodian.Role (operator, custodian) Custodian.OfferSettlementService with customer - submit customer do exerciseCmd offerCid Settlement.Accept - -createInvestmentService : Party -> Party -> Party -> Script (ContractId Investment.Service) -createInvestmentService operator provider customer = do - offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferInvestmentService with customer - submit customer do exerciseCmd offerCid Investment.Accept - -createFundService : Party -> Party -> Party -> Script (ContractId Fund.Service) -createFundService operator provider customer = do - offerCid <- submit provider do exerciseByKeyCmd @Distributor.Role (operator, provider) Distributor.OfferFundService with customer - submit customer do exerciseCmd offerCid Fund.Accept - -createDecentralizedExchangeService : Party -> Party -> Text -> Instrument.Q -> Instrument.Q -> Account.K -> ContractId Fungible.I -> Instrument.Q -> Account.K -> ContractId Fungible.I -> Script (ContractId DecentralizedExchange.Service) -createDecentralizedExchangeService consortium public id shares quantity1 account1 fungible1Cid quantity2 account2 fungible2Cid = do - fungible1Cid <- coerceContractId <$> submit consortium do exerciseCmd (toInterfaceContractId @Disclosure.I fungible1Cid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (id, singleton public) - fungible2Cid <- coerceContractId <$> submit consortium do exerciseCmd (toInterfaceContractId @Disclosure.I fungible2Cid) Disclosure.AddObservers with disclosers = singleton consortium; observersToAdd = (id, singleton public) - let - p1 = DecentralizedExchange.Pool with quantity = quantity1; account = account1; fungibleCid = fungible1Cid - p2 = DecentralizedExchange.Pool with quantity = quantity2; account = account2; fungibleCid = fungible2Cid - submit consortium do createCmd DecentralizedExchange.Service with consortium; public; id = Id id; description = id; shares; p1; p2 - diff --git a/ui/.env b/ui/.env new file mode 100644 index 00000000..cf3017c8 --- /dev/null +++ b/ui/.env @@ -0,0 +1,2 @@ +REACT_APP_NAME=$npm_package_name +REACT_APP_VERSION=$npm_package_version diff --git a/ui/package-lock.json b/ui/package-lock.json index 7c15fd7e..a938a5a6 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1,32 +1,45 @@ { "name": "daml-finance-app-ui", - "version": "0.1.5", + "version": "0.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "daml-finance-app-ui", - "version": "0.1.5", - "dependencies": { - "@daml.js/contingent-claims-core": "file:daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", - "@daml.js/daml-finance-app": "file:daml.js/daml-finance-app-0.1.5", - "@daml.js/daml-finance-interface-account": "file:daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", - "@daml.js/daml-finance-interface-claims": "file:daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", - "@daml.js/daml-finance-interface-data": "file:daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "@daml.js/daml-finance-interface-holding": "file:daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/daml-finance-interface-instrument-base": "file:daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/daml-finance-interface-instrument-bond": "file:daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", - "@daml.js/daml-finance-interface-instrument-equity": "file:daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", - "@daml.js/daml-finance-interface-instrument-generic": "file:daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", - "@daml.js/daml-finance-interface-instrument-swap": "file:daml.js/086db20b6f52db9260ca9d87c2092e8fa21619f62c7687a63bcdfb9c7a6bd670", - "@daml.js/daml-finance-interface-instrument-token": "file:daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", - "@daml.js/daml-finance-interface-lifecycle": "file:daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", - "@daml.js/daml-finance-interface-settlement": "file:daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", - "@daml.js/daml-finance-interface-types": "file:daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/daml-finance-interface-util": "file:daml.js/200ca261e5eb1d239e728fc65421e5b2f693c6f738d5ccb8c6a5a40966a27ac5", - "@daml/ledger": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "@daml/react": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "@daml/types": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "version": "0.0.2", + "dependencies": { + "@daml.js/contingent-claims-core": "file:daml.js/contingent-claims-core-1.0.0", + "@daml.js/daml-finance-app-data": "file:daml.js/daml-finance-app-data-0.0.2", + "@daml.js/daml-finance-app-interface-base": "file:daml.js/daml-finance-app-interface-base-0.0.2", + "@daml.js/daml-finance-app-interface-custody": "file:daml.js/daml-finance-app-interface-custody-0.0.2", + "@daml.js/daml-finance-app-interface-decentralized": "file:daml.js/daml-finance-app-interface-decentralized-0.0.2", + "@daml.js/daml-finance-app-interface-distribution": "file:daml.js/daml-finance-app-interface-distribution-0.0.2", + "@daml.js/daml-finance-app-interface-issuance": "file:daml.js/daml-finance-app-interface-issuance-0.0.2", + "@daml.js/daml-finance-app-interface-lending": "file:daml.js/daml-finance-app-interface-lending-0.0.2", + "@daml.js/daml-finance-app-interface-lifecycle": "file:daml.js/daml-finance-app-interface-lifecycle-0.0.2", + "@daml.js/daml-finance-app-interface-listing": "file:daml.js/daml-finance-app-interface-listing-0.0.2", + "@daml.js/daml-finance-app-interface-settlement": "file:daml.js/daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-app-interface-structuring": "file:daml.js/daml-finance-app-interface-structuring-0.0.2", + "@daml.js/daml-finance-app-interface-trading": "file:daml.js/daml-finance-app-interface-trading-0.0.2", + "@daml.js/daml-finance-app-setup": "file:daml.js/daml-finance-app-setup-0.0.2", + "@daml.js/daml-finance-interface-account": "file:daml.js/daml-finance-interface-account-1.0.0", + "@daml.js/daml-finance-interface-claims": "file:daml.js/daml-finance-interface-claims-1.0.0", + "@daml.js/daml-finance-interface-data": "file:daml.js/daml-finance-interface-data-1.0.0", + "@daml.js/daml-finance-interface-holding": "file:daml.js/daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-instrument-base": "file:daml.js/daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-instrument-bond": "file:daml.js/daml-finance-interface-instrument-bond-0.2.0", + "@daml.js/daml-finance-interface-instrument-equity": "file:daml.js/daml-finance-interface-instrument-equity-0.2.0", + "@daml.js/daml-finance-interface-instrument-generic": "file:daml.js/daml-finance-interface-instrument-generic-1.0.0", + "@daml.js/daml-finance-interface-instrument-swap": "file:daml.js/daml-finance-interface-instrument-swap-0.2.0", + "@daml.js/daml-finance-interface-instrument-token": "file:daml.js/daml-finance-interface-instrument-token-1.0.0", + "@daml.js/daml-finance-interface-lifecycle": "file:daml.js/daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-settlement": "file:daml.js/daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common": "file:daml.js/daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date": "file:daml.js/daml-finance-interface-types-date-1.0.0", + "@daml.js/daml-finance-interface-util": "file:daml.js/daml-finance-interface-util-1.0.0", + "@daml/ledger": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "@daml/react": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "@daml/types": "2.6.0-snapshot.20221218.11169.0.9d007b31", "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@mui/icons-material": "^5.0.5", @@ -34,12 +47,14 @@ "@mui/material": "^5.0.6", "@mui/styles": "^5.0.2", "@mui/x-date-pickers": "^5.0.4", + "axios": "^1.2.2", "buffer": "^6.0.3", "classnames": "^2.3.1", "crypto-browserify": "^3.12.0", "d3": "^7.1.1", "date-fns": "^2.25.0", "jwt-simple": "^0.5.6", + "preval.macro": "^5.0.0", "react": "^17.0.2", "react-d3-tree": "^3.3.2", "react-dom": "^17.0.2", @@ -52,6 +67,7 @@ "devDependencies": { "@types/d3": "^7.1.0", "@types/jwt-simple": "^0.5.33", + "@types/preval.macro": "^3.0.0", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.2", "@types/uuid": "^8.3.1", @@ -61,424 +77,615 @@ "typescript": "^4.4.4" } }, - "daml.js/086db20b6f52db9260ca9d87c2092e8fa21619f62c7687a63bcdfb9c7a6bd670": { - "name": "@daml.js/086db20b6f52db9260ca9d87c2092e8fa21619f62c7687a63bcdfb9c7a6bd670", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": { + "name": "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49": { - "name": "@daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "extraneous": true, + "daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": { + "name": "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", - "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/200ca261e5eb1d239e728fc65421e5b2f693c6f738d5ccb8c6a5a40966a27ac5": { - "name": "@daml.js/200ca261e5eb1d239e728fc65421e5b2f693c6f738d5ccb8c6a5a40966a27ac5", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": { + "name": "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/contingent-claims-core-1.0.0": { + "name": "@daml.js/contingent-claims-core-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6": { - "name": "@daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/contingent-claims-lifecycle-1.0.0": { + "name": "@daml.js/contingent-claims-lifecycle-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": { - "name": "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/contingent-claims-valuation-0.2.0": { + "name": "@daml.js/contingent-claims-valuation-0.2.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": { + "name": "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-app-data-0.0.1": { + "name": "@daml.js/daml-finance-app-data-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2": { - "name": "@daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-data-0.0.2": { + "name": "@daml.js/daml-finance-app-data-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1": { - "name": "@daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-base-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-base-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36": { - "name": "@daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-base-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-base-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164": { - "name": "@daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-custody-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-custody-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-account-1.0.0": "file:../daml-finance-interface-account-1.0.0", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": { - "name": "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-custody-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-custody-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-account-1.0.0": "file:../daml-finance-interface-account-1.0.0", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/43766a6db23a1a25428994d0b7b628c921e951e18186265b776639a642846e73": { - "name": "@daml.js/43766a6db23a1a25428994d0b7b628c921e951e18186265b776639a642846e73", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-decentralized-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-decentralized-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/4ad76bc137d2a40a27af1631f7f4db4710e7b961619d2ab737acd8f471a4d822": { - "name": "@daml.js/4ad76bc137d2a40a27af1631f7f4db4710e7b961619d2ab737acd8f471a4d822", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "extraneous": true, + "daml.js/daml-finance-app-interface-decentralized-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-decentralized-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9": { - "name": "@daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-distribution-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-distribution-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.1": "file:../daml-finance-app-interface-settlement-0.0.1", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/640abf5ad8b207da02873d5b75308ea6cf21226906a4a4c7cb7439cbbcf0b148": { - "name": "@daml.js/640abf5ad8b207da02873d5b75308ea6cf21226906a4a4c7cb7439cbbcf0b148", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "extraneous": true, + "daml.js/daml-finance-app-interface-distribution-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-distribution-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49": "file:../1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/717fb8b9bf56f806b9f48212481608d8239faf90c023fb4df5f4960ef1bc0bfb": { - "name": "@daml.js/717fb8b9bf56f806b9f48212481608d8239faf90c023fb4df5f4960ef1bc0bfb", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-issuance-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-issuance-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-distribution-0.0.1": "file:../daml-finance-app-interface-distribution-0.0.1", + "@daml.js/daml-finance-app-interface-settlement-0.0.1": "file:../daml-finance-app-interface-settlement-0.0.1", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": { - "name": "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-issuance-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-issuance-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-distribution-0.0.2": "file:../daml-finance-app-interface-distribution-0.0.2", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/83760e1459a5dbba4a4c913d0c8319926434ce51c630936cbf441d552341729c": { - "name": "@daml.js/83760e1459a5dbba4a4c913d0c8319926434ce51c630936cbf441d552341729c", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-lending-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-lending-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/4ad76bc137d2a40a27af1631f7f4db4710e7b961619d2ab737acd8f471a4d822": "file:../4ad76bc137d2a40a27af1631f7f4db4710e7b961619d2ab737acd8f471a4d822", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": { - "name": "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-lending-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-lending-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": { - "name": "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-lifecycle-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-lifecycle-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": "file:../bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/contingent-claims-lifecycle-1.0.0": "file:../contingent-claims-lifecycle-1.0.0", + "@daml.js/contingent-claims-valuation-0.2.0": "file:../contingent-claims-valuation-0.2.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-claims-1.0.0": "file:../daml-finance-interface-claims-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": { - "name": "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-lifecycle-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-lifecycle-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": "file:../eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/contingent-claims-lifecycle-1.0.0": "file:../contingent-claims-lifecycle-1.0.0", + "@daml.js/contingent-claims-valuation-0.2.0": "file:../contingent-claims-valuation-0.2.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-claims-1.0.0": "file:../daml-finance-interface-claims-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/8c0760bb7d7542ff32700f6faecbcb132258b192662d3b378248087e1f79bbe3": { - "name": "@daml.js/8c0760bb7d7542ff32700f6faecbcb132258b192662d3b378248087e1f79bbe3", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-listing-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-listing-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": { - "name": "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-listing-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-listing-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": { - "name": "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-settlement-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-settlement-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": "file:../bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/a029347f8b59a3dad2ac901def9767a608c88ede4fce7bcd67da406784f50975": { - "name": "@daml.js/a029347f8b59a3dad2ac901def9767a608c88ede4fce7bcd67da406784f50975", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-settlement-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-settlement-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-app-interface-structuring-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-structuring-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49": "file:../1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-instrument-bond-0.2.0": "file:../daml-finance-interface-instrument-bond-0.2.0", + "@daml.js/daml-finance-interface-instrument-equity-0.2.0": "file:../daml-finance-interface-instrument-equity-0.2.0", + "@daml.js/daml-finance-interface-instrument-generic-1.0.0": "file:../daml-finance-interface-instrument-generic-1.0.0", + "@daml.js/daml-finance-interface-instrument-swap-0.2.0": "file:../daml-finance-interface-instrument-swap-0.2.0", + "@daml.js/daml-finance-interface-instrument-token-1.0.0": "file:../daml-finance-interface-instrument-token-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b": { - "name": "@daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-structuring-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-structuring-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-instrument-bond-0.2.0": "file:../daml-finance-interface-instrument-bond-0.2.0", + "@daml.js/daml-finance-interface-instrument-equity-0.2.0": "file:../daml-finance-interface-instrument-equity-0.2.0", + "@daml.js/daml-finance-interface-instrument-generic-1.0.0": "file:../daml-finance-interface-instrument-generic-1.0.0", + "@daml.js/daml-finance-interface-instrument-swap-0.2.0": "file:../daml-finance-interface-instrument-swap-0.2.0", + "@daml.js/daml-finance-interface-instrument-token-1.0.0": "file:../daml-finance-interface-instrument-token-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/a54ec161ba3a433ae6c6db57a0b32a367c1c418a642eb8109e858dd1740cb615": { - "name": "@daml.js/a54ec161ba3a433ae6c6db57a0b32a367c1c418a642eb8109e858dd1740cb615", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-trading-0.0.1": { + "name": "@daml.js/daml-finance-app-interface-trading-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49": "file:../1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", - "@daml.js/f0789e1fc62ba42365e93f7a7a048ec5c3009a0c42c9d7a7716e1c29674c8ad3": "file:../f0789e1fc62ba42365e93f7a7a048ec5c3009a0c42c9d7a7716e1c29674c8ad3", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.1": "file:../daml-finance-app-interface-settlement-0.0.1", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826": { - "name": "@daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-interface-trading-0.0.2": { + "name": "@daml.js/daml-finance-app-interface-trading-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/b2510971b84513b195bd1c0c1c2795de02f9617502f34f51a2134e6b4fec7dc9": { - "name": "@daml.js/b2510971b84513b195bd1c0c1c2795de02f9617502f34f51a2134e6b4fec7dc9", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-app-setup-0.0.1": { + "name": "@daml.js/daml-finance-app-setup-0.0.1", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "extraneous": true, "license": "UNLICENSED", "dependencies": { - "@daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49": "file:../1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-base-0.0.1": "file:../daml-finance-app-interface-base-0.0.1", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-app-setup-0.0.2": { + "name": "@daml.js/daml-finance-app-setup-0.0.2", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-base-0.0.2": "file:../daml-finance-app-interface-base-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-account-1.0.0": { + "name": "@daml.js/daml-finance-interface-account-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-claims-1.0.0": { + "name": "@daml.js/daml-finance-interface-claims-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-data-1.0.0": { + "name": "@daml.js/daml-finance-interface-data-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/717fb8b9bf56f806b9f48212481608d8239faf90c023fb4df5f4960ef1bc0bfb": "file:../717fb8b9bf56f806b9f48212481608d8239faf90c023fb4df5f4960ef1bc0bfb", - "@daml.js/8c0760bb7d7542ff32700f6faecbcb132258b192662d3b378248087e1f79bbe3": "file:../8c0760bb7d7542ff32700f6faecbcb132258b192662d3b378248087e1f79bbe3", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", - "@daml.js/f0789e1fc62ba42365e93f7a7a048ec5c3009a0c42c9d7a7716e1c29674c8ad3": "file:../f0789e1fc62ba42365e93f7a7a048ec5c3009a0c42c9d7a7716e1c29674c8ad3", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/bd27295b88fcfe7f437fc36b0dfd636ff071cbcb259f564d11803241642af979": { - "name": "@daml.js/bd27295b88fcfe7f437fc36b0dfd636ff071cbcb259f564d11803241642af979", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "extraneous": true, + "daml.js/daml-finance-interface-holding-1.0.0": { + "name": "@daml.js/daml-finance-interface-holding-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49": "file:../1ffc484f012553b89cdbe4b809d95451340d83d3ccdab9761acfc7d0c8d80b49", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": { - "name": "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-interface-instrument-base-1.0.0": { + "name": "@daml.js/daml-finance-interface-instrument-base-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": { - "name": "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-interface-instrument-bond-0.2.0": { + "name": "@daml.js/daml-finance-interface-instrument-bond-0.2.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": { - "name": "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-interface-instrument-equity-0.2.0": { + "name": "@daml.js/daml-finance-interface-instrument-equity-0.2.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/daml-finance-app-0.1.5": { - "name": "@daml.js/daml-finance-app-0.1.5", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-interface-instrument-generic-1.0.0": { + "name": "@daml.js/daml-finance-interface-instrument-generic-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { - "@daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6": "file:../238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6", - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "@daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2": "file:../37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", - "@daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1": "file:../3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", - "@daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36": "file:../3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36", - "@daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164": "file:../3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9": "file:../5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b": "file:../a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", - "@daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826": "file:../a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-instrument-swap-0.2.0": { + "name": "@daml.js/daml-finance-interface-instrument-swap-0.2.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-instrument-token-1.0.0": { + "name": "@daml.js/daml-finance-interface-instrument-token-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", - "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": "file:../eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": { - "name": "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "daml.js/daml-finance-interface-lifecycle-1.0.0": { + "name": "@daml.js/daml-finance-interface-lifecycle-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/f0789e1fc62ba42365e93f7a7a048ec5c3009a0c42c9d7a7716e1c29674c8ad3": { - "name": "@daml.js/f0789e1fc62ba42365e93f7a7a048ec5c3009a0c42c9d7a7716e1c29674c8ad3", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "extraneous": true, + "daml.js/daml-finance-interface-settlement-1.0.0": { + "name": "@daml.js/daml-finance-interface-settlement-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/4ad76bc137d2a40a27af1631f7f4db4710e7b961619d2ab737acd8f471a4d822": "file:../4ad76bc137d2a40a27af1631f7f4db4710e7b961619d2ab737acd8f471a4d822", - "@daml.js/83760e1459a5dbba4a4c913d0c8319926434ce51c630936cbf441d552341729c": "file:../83760e1459a5dbba4a4c913d0c8319926434ce51c630936cbf441d552341729c", - "@daml.js/8c0760bb7d7542ff32700f6faecbcb132258b192662d3b378248087e1f79bbe3": "file:../8c0760bb7d7542ff32700f6faecbcb132258b192662d3b378248087e1f79bbe3", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "daml.js/f2f29dcb345ac64031dcf0c5eba474899b27cf2334dd21e7cb246be350072e4b": { - "name": "@daml.js/f2f29dcb345ac64031dcf0c5eba474899b27cf2334dd21e7cb246be350072e4b", - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "extraneous": true, + "daml.js/daml-finance-interface-types-common-1.0.0": { + "name": "@daml.js/daml-finance-interface-types-common-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-types-date-1.0.0": { + "name": "@daml.js/daml-finance-interface-types-date-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "UNLICENSED", + "dependencies": { + "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": "file:../bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "daml.js/daml-finance-interface-util-1.0.0": { + "name": "@daml.js/daml-finance-interface-util-1.0.0", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "license": "UNLICENSED", "dependencies": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/717fb8b9bf56f806b9f48212481608d8239faf90c023fb4df5f4960ef1bc0bfb": "file:../717fb8b9bf56f806b9f48212481608d8239faf90c023fb4df5f4960ef1bc0bfb", - "@daml.js/9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7": "file:../9e601027463038ed3146ac103b118d7a6ade8c67d3f618e764011d3a85bd46f7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", "@mojotech/json-type-validation": "^3.1.0" } }, "node_modules/@ampproject/remapping": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -489,8 +696,7 @@ }, "node_modules/@babel/code-frame": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "license": "MIT", "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -500,16 +706,14 @@ }, "node_modules/@babel/compat-data": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -537,9 +741,8 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -555,17 +758,15 @@ }, "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, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/@babel/generator": { "version": "7.19.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", - "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", + "license": "MIT", "dependencies": { "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", @@ -577,8 +778,7 @@ }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -590,9 +790,8 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -602,9 +801,8 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-explode-assignable-expression": "^7.18.6", "@babel/types": "^7.18.9" @@ -615,8 +813,7 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", @@ -632,9 +829,8 @@ }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -653,9 +849,8 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "regexpu-core": "^5.1.0" @@ -669,9 +864,8 @@ }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-plugin-utils": "^7.16.7", @@ -686,17 +880,15 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -706,8 +898,7 @@ }, "node_modules/@babel/helper-function-name": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "license": "MIT", "dependencies": { "@babel/template": "^7.18.10", "@babel/types": "^7.19.0" @@ -718,8 +909,7 @@ }, "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==", + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -729,9 +919,8 @@ }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.9" }, @@ -741,8 +930,7 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -752,8 +940,7 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -770,9 +957,8 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -782,17 +968,15 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", @@ -808,9 +992,8 @@ }, "node_modules/@babel/helper-replace-supers": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", @@ -824,8 +1007,7 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "license": "MIT", "dependencies": { "@babel/types": "^7.19.4" }, @@ -835,9 +1017,8 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.9" }, @@ -847,8 +1028,7 @@ }, "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==", + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -858,33 +1038,29 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", @@ -897,8 +1073,7 @@ }, "node_modules/@babel/helpers": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", - "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", + "license": "MIT", "dependencies": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.19.4", @@ -910,8 +1085,7 @@ }, "node_modules/@babel/highlight": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -923,8 +1097,7 @@ }, "node_modules/@babel/parser": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -934,9 +1107,8 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -949,9 +1121,8 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", @@ -966,9 +1137,8 @@ }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.19.0", @@ -984,9 +1154,8 @@ }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1000,9 +1169,8 @@ }, "node_modules/@babel/plugin-proposal-class-static-block": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1017,9 +1185,8 @@ }, "node_modules/@babel/plugin-proposal-decorators": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", - "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -1036,9 +1203,8 @@ }, "node_modules/@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1052,9 +1218,8 @@ }, "node_modules/@babel/plugin-proposal-export-namespace-from": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1068,9 +1233,8 @@ }, "node_modules/@babel/plugin-proposal-json-strings": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1084,9 +1248,8 @@ }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1100,9 +1263,8 @@ }, "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, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1116,9 +1278,8 @@ }, "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, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1132,9 +1293,8 @@ }, "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.19.4", "@babel/helper-compilation-targets": "^7.19.3", @@ -1151,9 +1311,8 @@ }, "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, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1167,9 +1326,8 @@ }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", @@ -1184,9 +1342,8 @@ }, "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, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1200,9 +1357,8 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -1218,9 +1374,8 @@ }, "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, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1234,9 +1389,8 @@ }, "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" }, @@ -1246,9 +1400,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1258,9 +1411,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1270,9 +1422,8 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1285,9 +1436,8 @@ }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" }, @@ -1300,9 +1450,8 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1312,9 +1461,8 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1324,9 +1472,8 @@ }, "node_modules/@babel/plugin-syntax-flow": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1339,9 +1486,8 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1354,9 +1500,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1366,9 +1511,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1378,8 +1522,7 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1392,9 +1535,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1404,9 +1546,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1416,9 +1557,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1428,9 +1568,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1440,9 +1579,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1452,9 +1590,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1464,9 +1601,8 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1479,9 +1615,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1494,9 +1629,8 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1509,9 +1643,8 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1524,9 +1657,8 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1541,9 +1673,8 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1556,9 +1687,8 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" }, @@ -1571,9 +1701,8 @@ }, "node_modules/@babel/plugin-transform-classes": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-compilation-targets": "^7.19.0", @@ -1594,9 +1723,8 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1609,9 +1737,8 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" }, @@ -1624,9 +1751,8 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1640,9 +1766,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1655,9 +1780,8 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1671,9 +1795,8 @@ }, "node_modules/@babel/plugin-transform-flow-strip-types": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", - "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-flow": "^7.18.6" @@ -1687,9 +1810,8 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1702,9 +1824,8 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-function-name": "^7.18.9", @@ -1719,9 +1840,8 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1734,9 +1854,8 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1749,9 +1868,8 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1766,9 +1884,8 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6", @@ -1784,9 +1901,8 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-module-transforms": "^7.19.0", @@ -1803,9 +1919,8 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1819,9 +1934,8 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0" @@ -1835,9 +1949,8 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1850,9 +1963,8 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-replace-supers": "^7.18.6" @@ -1866,9 +1978,8 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1881,9 +1992,8 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1896,9 +2006,8 @@ }, "node_modules/@babel/plugin-transform-react-constant-elements": { "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz", - "integrity": "sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -1911,9 +2020,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -1926,9 +2034,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -1945,9 +2052,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-transform-react-jsx": "^7.18.6" }, @@ -1960,9 +2066,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1976,9 +2081,8 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" @@ -1992,9 +2096,8 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2007,9 +2110,8 @@ }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@babel/helper-plugin-utils": "^7.19.0", @@ -2027,9 +2129,8 @@ }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2042,9 +2143,8 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" @@ -2058,9 +2158,8 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6" }, @@ -2073,9 +2172,8 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2088,9 +2186,8 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2103,9 +2200,8 @@ }, "node_modules/@babel/plugin-transform-typescript": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", - "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -2120,9 +2216,8 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" }, @@ -2135,9 +2230,8 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -2151,9 +2245,8 @@ }, "node_modules/@babel/preset-env": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.19.4", "@babel/helper-compilation-targets": "^7.19.3", @@ -2240,9 +2333,8 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2256,9 +2348,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-validator-option": "^7.18.6", @@ -2276,9 +2367,8 @@ }, "node_modules/@babel/preset-typescript": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/helper-validator-option": "^7.18.6", @@ -2293,8 +2383,7 @@ }, "node_modules/@babel/runtime": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -2304,9 +2393,8 @@ }, "node_modules/@babel/runtime-corejs3": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", - "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", "dev": true, + "license": "MIT", "dependencies": { "core-js-pure": "^3.25.1", "regenerator-runtime": "^0.13.4" @@ -2317,8 +2405,7 @@ }, "node_modules/@babel/template": { "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -2330,8 +2417,7 @@ }, "node_modules/@babel/traverse": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", - "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.19.4", @@ -2350,8 +2436,7 @@ }, "node_modules/@babel/types": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -2363,14 +2448,12 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/@bkrem/react-transition-group": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@bkrem/react-transition-group/-/react-transition-group-1.3.3.tgz", - "integrity": "sha512-nUZaumHu/MMolELv+MhEEQzQtKsnfpbKBHtam/NK53tGICwU19tuffEXW8BLhm9HhQfN1H3+C0bsJv8Z7vzwEA==", + "license": "BSD-3-Clause", "dependencies": { "chain-function": "^1.0.0", "dom-helpers": "^3.3.1", @@ -2386,15 +2469,13 @@ }, "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 + "dev": true, + "license": "CC0-1.0" }, "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, + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" @@ -2412,9 +2493,8 @@ }, "node_modules/@csstools/postcss-color-function": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2432,9 +2512,8 @@ }, "node_modules/@csstools/postcss-font-format-keywords": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2451,9 +2530,8 @@ }, "node_modules/@csstools/postcss-hwb-function": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2470,9 +2548,8 @@ }, "node_modules/@csstools/postcss-ic-unit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2490,9 +2567,8 @@ }, "node_modules/@csstools/postcss-is-pseudo-class": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -2510,9 +2586,8 @@ }, "node_modules/@csstools/postcss-nested-calc": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2529,9 +2604,8 @@ }, "node_modules/@csstools/postcss-normalize-display-values": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2548,9 +2622,8 @@ }, "node_modules/@csstools/postcss-oklab-function": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -2568,9 +2641,8 @@ }, "node_modules/@csstools/postcss-progressive-custom-properties": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2583,9 +2655,8 @@ }, "node_modules/@csstools/postcss-stepped-value-functions": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2602,9 +2673,8 @@ }, "node_modules/@csstools/postcss-text-decoration-shorthand": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2621,9 +2691,8 @@ }, "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, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2640,9 +2709,8 @@ }, "node_modules/@csstools/postcss-unset-value": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -2656,9 +2724,8 @@ }, "node_modules/@csstools/selector-specificity": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -2671,152 +2738,219 @@ "postcss-selector-parser": "^6.0.10" } }, - "node_modules/@daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6": { - "resolved": "daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6", + "node_modules/@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": { + "resolved": "daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "link": true }, - "node_modules/@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": { - "resolved": "daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", + "node_modules/@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": { + "resolved": "daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "link": true }, - "node_modules/@daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2": { - "resolved": "daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", + "node_modules/@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": { + "resolved": "daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", "link": true }, - "node_modules/@daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1": { - "resolved": "daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", + "node_modules/@daml.js/contingent-claims-core": { + "resolved": "daml.js/contingent-claims-core-1.0.0", "link": true }, - "node_modules/@daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36": { - "resolved": "daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36", + "node_modules/@daml.js/contingent-claims-core-1.0.0": { + "resolved": "daml.js/contingent-claims-core-1.0.0", "link": true }, - "node_modules/@daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164": { - "resolved": "daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", + "node_modules/@daml.js/contingent-claims-lifecycle-1.0.0": { + "resolved": "daml.js/contingent-claims-lifecycle-1.0.0", "link": true }, - "node_modules/@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": { - "resolved": "daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "node_modules/@daml.js/contingent-claims-valuation-0.2.0": { + "resolved": "daml.js/contingent-claims-valuation-0.2.0", "link": true }, - "node_modules/@daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9": { - "resolved": "daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", + "node_modules/@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": { + "resolved": "daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", "link": true }, - "node_modules/@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": { - "resolved": "daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", + "node_modules/@daml.js/daml-finance-app-data": { + "resolved": "daml.js/daml-finance-app-data-0.0.2", "link": true }, - "node_modules/@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": { - "resolved": "daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", + "node_modules/@daml.js/daml-finance-app-interface-base": { + "resolved": "daml.js/daml-finance-app-interface-base-0.0.2", "link": true }, - "node_modules/@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": { - "resolved": "daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "node_modules/@daml.js/daml-finance-app-interface-base-0.0.2": { + "resolved": "daml.js/daml-finance-app-interface-base-0.0.2", "link": true }, - "node_modules/@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": { - "resolved": "daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "node_modules/@daml.js/daml-finance-app-interface-custody": { + "resolved": "daml.js/daml-finance-app-interface-custody-0.0.2", "link": true }, - "node_modules/@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": { - "resolved": "daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "node_modules/@daml.js/daml-finance-app-interface-decentralized": { + "resolved": "daml.js/daml-finance-app-interface-decentralized-0.0.2", "link": true }, - "node_modules/@daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b": { - "resolved": "daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", + "node_modules/@daml.js/daml-finance-app-interface-distribution": { + "resolved": "daml.js/daml-finance-app-interface-distribution-0.0.2", "link": true }, - "node_modules/@daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826": { - "resolved": "daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", + "node_modules/@daml.js/daml-finance-app-interface-distribution-0.0.2": { + "resolved": "daml.js/daml-finance-app-interface-distribution-0.0.2", "link": true }, - "node_modules/@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": { - "resolved": "daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "node_modules/@daml.js/daml-finance-app-interface-issuance": { + "resolved": "daml.js/daml-finance-app-interface-issuance-0.0.2", "link": true }, - "node_modules/@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": { - "resolved": "daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "node_modules/@daml.js/daml-finance-app-interface-lending": { + "resolved": "daml.js/daml-finance-app-interface-lending-0.0.2", "link": true }, - "node_modules/@daml.js/contingent-claims-core": { - "resolved": "daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "node_modules/@daml.js/daml-finance-app-interface-lifecycle": { + "resolved": "daml.js/daml-finance-app-interface-lifecycle-0.0.2", "link": true }, - "node_modules/@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": { - "resolved": "daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "node_modules/@daml.js/daml-finance-app-interface-listing": { + "resolved": "daml.js/daml-finance-app-interface-listing-0.0.2", + "link": true + }, + "node_modules/@daml.js/daml-finance-app-interface-settlement": { + "resolved": "daml.js/daml-finance-app-interface-settlement-0.0.2", + "link": true + }, + "node_modules/@daml.js/daml-finance-app-interface-settlement-0.0.2": { + "resolved": "daml.js/daml-finance-app-interface-settlement-0.0.2", + "link": true + }, + "node_modules/@daml.js/daml-finance-app-interface-structuring": { + "resolved": "daml.js/daml-finance-app-interface-structuring-0.0.2", + "link": true + }, + "node_modules/@daml.js/daml-finance-app-interface-trading": { + "resolved": "daml.js/daml-finance-app-interface-trading-0.0.2", "link": true }, - "node_modules/@daml.js/daml-finance-app": { - "resolved": "daml.js/daml-finance-app-0.1.5", + "node_modules/@daml.js/daml-finance-app-setup": { + "resolved": "daml.js/daml-finance-app-setup-0.0.2", "link": true }, "node_modules/@daml.js/daml-finance-interface-account": { - "resolved": "daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", + "resolved": "daml.js/daml-finance-interface-account-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-account-1.0.0": { + "resolved": "daml.js/daml-finance-interface-account-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-claims": { - "resolved": "daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", + "resolved": "daml.js/daml-finance-interface-claims-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-claims-1.0.0": { + "resolved": "daml.js/daml-finance-interface-claims-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-data": { - "resolved": "daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", + "resolved": "daml.js/daml-finance-interface-data-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-holding": { - "resolved": "daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", + "resolved": "daml.js/daml-finance-interface-holding-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-holding-1.0.0": { + "resolved": "daml.js/daml-finance-interface-holding-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-instrument-base": { - "resolved": "daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", + "resolved": "daml.js/daml-finance-interface-instrument-base-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-instrument-base-1.0.0": { + "resolved": "daml.js/daml-finance-interface-instrument-base-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-instrument-bond": { - "resolved": "daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", + "resolved": "daml.js/daml-finance-interface-instrument-bond-0.2.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-instrument-bond-0.2.0": { + "resolved": "daml.js/daml-finance-interface-instrument-bond-0.2.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-instrument-equity": { - "resolved": "daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", + "resolved": "daml.js/daml-finance-interface-instrument-equity-0.2.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-instrument-equity-0.2.0": { + "resolved": "daml.js/daml-finance-interface-instrument-equity-0.2.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-instrument-generic": { - "resolved": "daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", + "resolved": "daml.js/daml-finance-interface-instrument-generic-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-instrument-generic-1.0.0": { + "resolved": "daml.js/daml-finance-interface-instrument-generic-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-instrument-swap": { - "resolved": "daml.js/086db20b6f52db9260ca9d87c2092e8fa21619f62c7687a63bcdfb9c7a6bd670", + "resolved": "daml.js/daml-finance-interface-instrument-swap-0.2.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-instrument-swap-0.2.0": { + "resolved": "daml.js/daml-finance-interface-instrument-swap-0.2.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-instrument-token": { - "resolved": "daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", + "resolved": "daml.js/daml-finance-interface-instrument-token-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-instrument-token-1.0.0": { + "resolved": "daml.js/daml-finance-interface-instrument-token-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-lifecycle": { - "resolved": "daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "resolved": "daml.js/daml-finance-interface-lifecycle-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-lifecycle-1.0.0": { + "resolved": "daml.js/daml-finance-interface-lifecycle-1.0.0", "link": true }, "node_modules/@daml.js/daml-finance-interface-settlement": { - "resolved": "daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "resolved": "daml.js/daml-finance-interface-settlement-1.0.0", "link": true }, - "node_modules/@daml.js/daml-finance-interface-types": { - "resolved": "daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "node_modules/@daml.js/daml-finance-interface-settlement-1.0.0": { + "resolved": "daml.js/daml-finance-interface-settlement-1.0.0", "link": true }, - "node_modules/@daml.js/daml-finance-interface-util": { - "resolved": "daml.js/200ca261e5eb1d239e728fc65421e5b2f693c6f738d5ccb8c6a5a40966a27ac5", + "node_modules/@daml.js/daml-finance-interface-types-common": { + "resolved": "daml.js/daml-finance-interface-types-common-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-types-common-1.0.0": { + "resolved": "daml.js/daml-finance-interface-types-common-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-types-date": { + "resolved": "daml.js/daml-finance-interface-types-date-1.0.0", "link": true }, - "node_modules/@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": { - "resolved": "daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "node_modules/@daml.js/daml-finance-interface-types-date-1.0.0": { + "resolved": "daml.js/daml-finance-interface-types-date-1.0.0", + "link": true + }, + "node_modules/@daml.js/daml-finance-interface-util": { + "resolved": "daml.js/daml-finance-interface-util-1.0.0", "link": true }, "node_modules/@daml/ledger": { - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "resolved": "https://registry.npmjs.org/@daml/ledger/-/ledger-2.5.0-snapshot.20221010.10736.0.2f453a14.tgz", - "integrity": "sha512-eB0Z7Md8huD7L/c1DE7AuOVDtUaH90oNa7uAvd2UH9WnN3H+oRtV2xYOR6ZceZQhgKar4/S5nXat/aRcgH3k3Q==", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "Apache-2.0", "dependencies": { - "@daml/types": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "@daml/types": "2.6.0-snapshot.20221218.11169.0.9d007b31", "@mojotech/json-type-validation": "^3.1.0", "cross-fetch": "^3.0.4", "events": "^3.1.0", @@ -2825,34 +2959,30 @@ } }, "node_modules/@daml/react": { - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "resolved": "https://registry.npmjs.org/@daml/react/-/react-2.5.0-snapshot.20221010.10736.0.2f453a14.tgz", - "integrity": "sha512-Y5L9QBr1Iyfjp4SJvQ094Xd6uZDC00PRuP1RoqwyaakAA9n+AmPdg0gM8NCIX/Z8efurcojx6p3GOMEHRYKQmA==", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "Apache-2.0", "dependencies": { - "@daml/ledger": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "@daml/types": "2.5.0-snapshot.20221010.10736.0.2f453a14" + "@daml/ledger": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "@daml/types": "2.6.0-snapshot.20221218.11169.0.9d007b31" }, "peerDependencies": { "react": "^16.12.0 || ^17.0.0" } }, "node_modules/@daml/types": { - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "resolved": "https://registry.npmjs.org/@daml/types/-/types-2.5.0-snapshot.20221010.10736.0.2f453a14.tgz", - "integrity": "sha512-bBdGuTtr1ZhFBpb/paqk5jeNK0nV2/v+UBbNwA6M6aLzm6ze9PTtdAn4wz5+oe8wp1D6jv6zllwrjSrBNRM5/A==", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "license": "Apache-2.0", "dependencies": { "@mojotech/json-type-validation": "^3.1.0" } }, "node_modules/@date-io/core": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", - "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" + "license": "MIT" }, "node_modules/@date-io/date-fns": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz", - "integrity": "sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA==", + "license": "MIT", "dependencies": { "@date-io/core": "^2.16.0" }, @@ -2867,8 +2997,7 @@ }, "node_modules/@date-io/dayjs": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz", - "integrity": "sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw==", + "license": "MIT", "dependencies": { "@date-io/core": "^2.16.0" }, @@ -2883,8 +3012,7 @@ }, "node_modules/@date-io/luxon": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.0.tgz", - "integrity": "sha512-L8UXHa/9VbfRqP4KB7JUZwFgOVxo22rONVod1o7GMN2Oku4PzJ0k1kXc+nLP9lRlF1UAA28oQsQqn85Y/PdBZw==", + "license": "MIT", "dependencies": { "@date-io/core": "^2.16.0" }, @@ -2899,8 +3027,7 @@ }, "node_modules/@date-io/moment": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.0.tgz", - "integrity": "sha512-wvu/40k128kF6P0jPbiyZcPR14VjJAgYEs+mYtsXz/AyWpC2DEJKly7ub+dpevUywbTzzpZysyCxCdzLzxD/uw==", + "license": "MIT", "dependencies": { "@date-io/core": "^2.16.0" }, @@ -2915,8 +3042,7 @@ }, "node_modules/@emotion/babel-plugin": { "version": "11.10.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", - "integrity": "sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==", + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/plugin-syntax-jsx": "^7.17.12", @@ -2937,8 +3063,7 @@ }, "node_modules/@emotion/cache": { "version": "11.10.3", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", - "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", + "license": "MIT", "dependencies": { "@emotion/memoize": "^0.8.0", "@emotion/sheet": "^1.2.0", @@ -2949,26 +3074,22 @@ }, "node_modules/@emotion/hash": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + "license": "MIT" }, "node_modules/@emotion/is-prop-valid": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "license": "MIT", "dependencies": { "@emotion/memoize": "^0.8.0" } }, "node_modules/@emotion/memoize": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + "license": "MIT" }, "node_modules/@emotion/react": { "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", - "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.10.0", @@ -2994,8 +3115,7 @@ }, "node_modules/@emotion/serialize": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", - "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", + "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.0", "@emotion/memoize": "^0.8.0", @@ -3006,13 +3126,11 @@ }, "node_modules/@emotion/sheet": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", - "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + "license": "MIT" }, "node_modules/@emotion/styled": { "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", - "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.10.0", @@ -3037,32 +3155,27 @@ }, "node_modules/@emotion/unitless": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + "license": "MIT" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "license": "MIT" }, "node_modules/@emotion/weak-memoize": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "license": "MIT" }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3083,15 +3196,13 @@ }, "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 + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3104,9 +3215,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3116,9 +3226,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3128,9 +3237,8 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -3142,9 +3250,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -3155,15 +3262,13 @@ }, "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 + "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": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -3177,18 +3282,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3199,9 +3302,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -3211,9 +3313,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -3226,9 +3327,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -3238,27 +3338,24 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "27.5.1", - "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": "*", @@ -3273,9 +3370,8 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3288,9 +3384,8 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3304,9 +3399,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3316,24 +3410,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3343,9 +3434,8 @@ }, "node_modules/@jest/core": { "version": "27.5.1", - "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", @@ -3390,9 +3480,8 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3405,9 +3494,8 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3421,9 +3509,8 @@ }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3433,24 +3520,21 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3460,9 +3544,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", @@ -3475,9 +3558,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", @@ -3492,9 +3574,8 @@ }, "node_modules/@jest/globals": { "version": "27.5.1", - "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", @@ -3506,9 +3587,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", @@ -3550,9 +3630,8 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3565,9 +3644,8 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3581,9 +3659,8 @@ }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3593,33 +3670,29 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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": ">=0.10.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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3629,9 +3702,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.24.1" }, @@ -3641,9 +3713,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.9", @@ -3655,18 +3726,16 @@ }, "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": ">=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", @@ -3679,9 +3748,8 @@ }, "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", @@ -3694,9 +3762,8 @@ }, "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", @@ -3720,9 +3787,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3735,9 +3801,8 @@ }, "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": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3751,9 +3816,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3763,33 +3827,29 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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.10.0" } }, "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3799,9 +3859,8 @@ }, "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", @@ -3815,9 +3874,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3830,9 +3888,8 @@ }, "node_modules/@jest/types/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" @@ -3846,9 +3903,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3858,24 +3914,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3885,8 +3938,7 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -3897,25 +3949,22 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -3923,9 +3972,8 @@ }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3937,13 +3985,11 @@ }, "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==" + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -3951,14 +3997,12 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/@mojotech/json-type-validation": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mojotech/json-type-validation/-/json-type-validation-3.1.0.tgz", - "integrity": "sha512-ThH2EbHEUCPMHhXAtmYcDi0gmV+PZak4uvuWBMiBDqUuz7gGQUrsE5o1J6kKNLDX5cXAPqsfJ7uTfTcNdCDXxA==", + "license": "MIT", "dependencies": { "lodash.isequal": "^4.5.0" }, @@ -3968,8 +4012,7 @@ }, "node_modules/@mui/base": { "version": "5.0.0-alpha.101", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.101.tgz", - "integrity": "sha512-a54BcXvArGOKUZ2zyS/7B9GNhAGgfomEQSkfEZ88Nc9jKvXA+Mppenfz5o4JCAnD8c4VlePmz9rKOYvvum1bZw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@emotion/is-prop-valid": "^1.2.0", @@ -4000,8 +4043,7 @@ }, "node_modules/@mui/core-downloads-tracker": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.9.tgz", - "integrity": "sha512-rqoFu4qww6KJBbXYhyRd9YXjwBHa3ylnBPSWbGf1bdfG0AYMKmVzg8zxkWvxAWOp97kvx3M2kNPb0xMIDZiogQ==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" @@ -4009,8 +4051,7 @@ }, "node_modules/@mui/icons-material": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.9.tgz", - "integrity": "sha512-sqClXdEM39WKQJOQ0ZCPTptaZgqwibhj2EFV9N0v7BU1PO8y4OcX/a2wIQHn4fNuDjIZktJIBrmU23h7aqlGgg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0" }, @@ -4034,8 +4075,7 @@ }, "node_modules/@mui/lab": { "version": "5.0.0-alpha.103", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.103.tgz", - "integrity": "sha512-cYfkgSXZH/cG8BM4UGtPK0Vr9P79wfvF4S5VGiEbEsScU7yROylLZW1l11yg5nZEIVUJ7jQmcaLdlwVSTSbjzg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@mui/base": "5.0.0-alpha.101", @@ -4075,8 +4115,7 @@ }, "node_modules/@mui/material": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.9.tgz", - "integrity": "sha512-sdOzlgpCmyw48je+E7o9UGGJpgBaF+60FlTRpVpcd/z+LUhnuzzuis891yPI5dPPXLBDL/bO4SsGg51lgNeLBw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@mui/base": "5.0.0-alpha.101", @@ -4119,8 +4158,7 @@ }, "node_modules/@mui/private-theming": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz", - "integrity": "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@mui/utils": "^5.10.9", @@ -4145,8 +4183,7 @@ }, "node_modules/@mui/styled-engine": { "version": "5.10.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz", - "integrity": "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@emotion/cache": "^11.10.3", @@ -4176,8 +4213,7 @@ }, "node_modules/@mui/styles": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.10.9.tgz", - "integrity": "sha512-dK6tsHkEp88MkwEDCxbqscj4Fa2aYBkfwy1MXMCexzx9TqxuahC0KSxBHfMMWZ0zV7xW5Suzwu8vveCp4uFN5A==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@emotion/hash": "^0.9.0", @@ -4216,8 +4252,7 @@ }, "node_modules/@mui/system": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.9.tgz", - "integrity": "sha512-B6fFC0sK06hNmqY7fAUfwShQv594+u/DT1YEFHPtK4laouTu7V4vSGQWi1WJT9Bjs9Db5D1bRDJ+Yy+tc3QOYA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@mui/private-theming": "^5.10.9", @@ -4255,8 +4290,7 @@ }, "node_modules/@mui/types": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", - "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==", + "license": "MIT", "peerDependencies": { "@types/react": "*" }, @@ -4268,8 +4302,7 @@ }, "node_modules/@mui/utils": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz", - "integrity": "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "@types/prop-types": "^15.7.5", @@ -4290,8 +4323,7 @@ }, "node_modules/@mui/x-date-pickers": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.4.tgz", - "integrity": "sha512-Co4tbwqXSdHfR8UoZSHQpDZqnFdikzQr0lQPG2AjGh9BdB4EdY3YE2+sZyAltjk/AXxp5JzIWDZ2Kj83ClzjwA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.9", "@date-io/core": "^2.15.0", @@ -4348,18 +4380,16 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } }, "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==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -4370,18 +4400,16 @@ }, "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, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -4392,18 +4420,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4414,9 +4440,8 @@ }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.8.tgz", - "integrity": "sha512-wxXRwf+IQ6zvHSJZ+5T2RQNEsq+kx4jKRXfFvdt3nBIUzJUAvXEFsUeoaohDe/Kr84MTjGwcuIUPNcstNJORsA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-html-community": "^0.0.8", "common-path-prefix": "^3.0.0", @@ -4464,17 +4489,15 @@ }, "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/@popperjs/core": { "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -4482,17 +4505,15 @@ }, "node_modules/@remix-run/router": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz", - "integrity": "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==", + "license": "MIT", "engines": { "node": ">=14" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" @@ -4513,9 +4534,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -4533,9 +4553,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -4546,9 +4565,8 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", - "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", @@ -4563,45 +4581,39 @@ }, "node_modules/@rollup/pluginutils/node_modules/@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 + "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 + "dev": true, + "license": "MIT" }, "node_modules/@sinclair/typebox": { "version": "0.24.46", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.46.tgz", - "integrity": "sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@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==", "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==", "dev": true, + "license": "Apache-2.0", "dependencies": { "ejs": "^3.1.6", "json5": "^2.2.0", @@ -4611,9 +4623,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4624,9 +4635,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4637,9 +4647,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4650,9 +4659,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4663,9 +4671,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4676,9 +4683,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4689,9 +4695,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4702,9 +4707,8 @@ }, "node_modules/@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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4715,9 +4719,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", @@ -4738,9 +4741,8 @@ }, "node_modules/@svgr/core": { "version": "5.5.0", - "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", @@ -4756,9 +4758,8 @@ }, "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" }, @@ -4772,9 +4773,8 @@ }, "node_modules/@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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.12.3", "@svgr/babel-preset": "^5.5.0", @@ -4791,9 +4791,8 @@ }, "node_modules/@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, + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "deepmerge": "^4.2.2", @@ -4809,9 +4808,8 @@ }, "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", @@ -4832,27 +4830,23 @@ }, "node_modules/@tootallnate/once": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@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, + "license": "ISC", "engines": { "node": ">=10.13.0" } }, "node_modules/@types/babel__core": { "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -4863,18 +4857,14 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, + "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==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -4882,18 +4872,15 @@ }, "node_modules/@types/babel__traverse": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.3.0" } }, "node_modules/@types/body-parser": { "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -4901,27 +4888,24 @@ }, "node_modules/@types/bonjour": { "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -4929,8 +4913,7 @@ }, "node_modules/@types/d3": { "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", - "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -4966,39 +4949,33 @@ }, "node_modules/@types/d3-array": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.3.tgz", - "integrity": "sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==" + "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.1.tgz", - "integrity": "sha512-zji/iIbdd49g9WN0aIsGcwcTBUkgLsCSwB+uH+LPVDAiKWENMtI3cJEWt+7/YYwelMoZmbBfzA3qCdrZ2XFNnw==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-brush": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.1.tgz", - "integrity": "sha512-B532DozsiTuQMHu2YChdZU0qsFJSio3Q6jmBYGYNp3gMDzBmuFFgPt9qKA4VYuLZMp4qc6eX7IUFUEsvHiXZAw==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-chord": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-eQfcxIHrg7V++W8Qxn6QkqBNBokyhdWSAS73AbkbMzvLQmVVBviknoz2SRS/ZJdIOmhcmmdCRE/NFOm28Z1AMw==" + "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-C3zfBrhHZvrpAAK3YXqLWVAGo87A4SvJ83Q/zVJ8rFWJdKejUnDYaWZPkA8K84kb2vDA/g90LTQAz7etXcgoQQ==", + "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -5006,144 +4983,120 @@ }, "node_modules/@types/d3-delaunay": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", - "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" + "license": "MIT" }, "node_modules/@types/d3-dispatch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-NhxMn3bAkqhjoxabVJWKryhnZXXYYVQxaBnbANu0O94+O/nX9qSjrA1P1jbAQJxJf+VC72TxDX/YJcKue5bRqw==" + "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.1.tgz", - "integrity": "sha512-o1Va7bLwwk6h03+nSM8dpaGEYnoIG19P0lKqlic8Un36ymh9NSkNFX1yiXMKNMx8rJ0Kfnn2eovuFaL6Jvj0zA==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-dsv": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.0.tgz", - "integrity": "sha512-o0/7RlMl9p5n6FQDptuJVMxDf/7EDEv2SYEO/CwdG2tr1hTfUVi0Iavkk2ax+VpaQ/1jVhpnj5rq1nj8vwhn2A==" + "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", - "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-toZJNOwrOIqz7Oh6Q7l2zkaNfXkfR7mFSJvGvlD/Ciq/+SQ39d5gynHJZ/0fjt83ec3WL7+u3ssqIijQtBISsw==", + "license": "MIT", "dependencies": { "@types/d3-dsv": "*" } }, "node_modules/@types/d3-force": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.3.tgz", - "integrity": "sha512-z8GteGVfkWJMKsx6hwC3SiTSLspL98VNpmvLpEFJQpZPq6xpA1I8HNBDNSpukfK0Vb0l64zGFhzunLgEAcBWSA==" + "license": "MIT" }, "node_modules/@types/d3-format": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", - "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" + "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.2.tgz", - "integrity": "sha512-DbqK7MLYA8LpyHQfv6Klz0426bQEf7bRTvhMy44sNGVyZoWn//B0c+Qbeg8Osi2Obdc9BLLXYAKpyWege2/7LQ==", + "license": "MIT", "dependencies": { "@types/geojson": "*" } }, "node_modules/@types/d3-hierarchy": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz", - "integrity": "sha512-g+sey7qrCa3UbsQlMZZBOHROkFqx7KZKvUpRzI/tAp/8erZWpYq7FgNKvYwebi2LaEiVs1klhUfd3WCThxmmWQ==" + "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "license": "MIT", "dependencies": { "@types/d3-color": "*" } }, "node_modules/@types/d3-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", - "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", - "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" + "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", - "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" + "license": "MIT" }, "node_modules/@types/d3-random": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" + "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-Yk4htunhPAwN0XGlIwArRomOjdoBFXC3+kCxK2Ubg7I9shQlVSJy/pG/Ht5ASN+gdMIalpk8TJ5xV74jFsetLA==", + "license": "MIT", "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + "license": "MIT" }, "node_modules/@types/d3-selection": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.3.tgz", - "integrity": "sha512-Mw5cf6nlW1MlefpD9zrshZ+DAWL4IQ5LnWfRheW6xwsdaWOb6IRRu2H7XPAQcyXEx1D7XQWgdoKR83ui1/HlEA==" + "license": "MIT" }, "node_modules/@types/d3-shape": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-jYIYxFFA9vrJ8Hd4Se83YI6XF+gzDL1aC5DCsldai4XYYiVNdhtpGbA/GM6iyQ8ayhSp3a148LY34hy7A4TxZA==", + "license": "MIT", "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", - "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" + "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", - "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + "license": "MIT" }, "node_modules/@types/d3-transition": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.2.tgz", - "integrity": "sha512-jo5o/Rf+/u6uerJ/963Dc39NI16FQzqwOc54bwvksGAdVfvDrqDpVeq95bEvPtBwLCVZutAEyAtmSyEMxN7vxQ==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-zoom": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.1.tgz", - "integrity": "sha512-7s5L9TjfqIYQmQQEUcpMAcBOahem7TRoSO/+Gkz02GbMVuULiZzjF2BOdw291dbO2aNon4m2OdFsRGaCq2caLQ==", + "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" @@ -5151,9 +5104,8 @@ }, "node_modules/@types/eslint": { "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5161,9 +5113,8 @@ }, "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, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -5171,15 +5122,13 @@ }, "node_modules/@types/estree": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.18", @@ -5189,9 +5138,8 @@ }, "node_modules/@types/express-serve-static-core": { "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -5200,125 +5148,112 @@ }, "node_modules/@types/geojson": { "version": "7946.0.10", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + "license": "MIT" }, "node_modules/@types/graceful-fs": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, + "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "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 + "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==", "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "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 + "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/jwt-simple": { "version": "0.5.33", - "resolved": "https://registry.npmjs.org/@types/jwt-simple/-/jwt-simple-0.5.33.tgz", - "integrity": "sha512-RcVbKkbUP6u5yFd9HuLhCkAYlT1FQVZylNsxxgaVMZxMajwrVTmQei7C6yMXSoAkXJXpGOUtbsY6Q9kq3+p93g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "18.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", - "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", - "dev": true + "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==" + "license": "MIT" }, "node_modules/@types/prettier": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/preval.macro": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/preval.macro/-/preval.macro-3.0.0.tgz", + "integrity": "sha512-mm7qx+Aj9bhMcK9Y3UHNy6zCQneRj+GBFlCi+cxtx66iLU4yarOupVLrFadlG+Cd4TEsdo4og0REhzUQQ7m3fg==", "dev": true }, "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==" + "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/react": { "version": "17.0.50", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz", - "integrity": "sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -5327,74 +5262,64 @@ }, "node_modules/@types/react-dom": { "version": "17.0.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", - "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "^17" } }, "node_modules/@types/react-is": { "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/resize-observer-browser": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz", - "integrity": "sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg==" + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/scheduler": { "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.3.12", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", - "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", - "dev": true + "dev": true, + "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "*", "@types/node": "*" @@ -5402,60 +5327,52 @@ }, "node_modules/@types/sockjs": { "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/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 + "dev": true, + "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/uuid": { "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ws": { "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "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 + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", - "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/scope-manager": "5.40.1", "@typescript-eslint/type-utils": "5.40.1", @@ -5485,9 +5402,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5500,9 +5416,8 @@ }, "node_modules/@typescript-eslint/experimental-utils": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.40.1.tgz", - "integrity": "sha512-lynjgnQuoCgxtYgYWjoQqijk0kYQNiztnVhoqha3N0kMYFVPURidzCq2vn9XvUUu2XxP130ZRKVDKyeGa2bhbw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "5.40.1" }, @@ -5519,9 +5434,8 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz", - "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.40.1", "@typescript-eslint/types": "5.40.1", @@ -5546,9 +5460,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.40.1", "@typescript-eslint/visitor-keys": "5.40.1" @@ -5563,9 +5476,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", - "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.40.1", "@typescript-eslint/utils": "5.40.1", @@ -5590,9 +5502,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5603,9 +5514,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.40.1", "@typescript-eslint/visitor-keys": "5.40.1", @@ -5630,9 +5540,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5645,9 +5554,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", - "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", @@ -5671,9 +5579,8 @@ }, "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, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5684,18 +5591,16 @@ }, "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, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5708,9 +5613,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" @@ -5725,9 +5629,8 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -5735,27 +5638,23 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -5764,15 +5663,13 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5782,33 +5679,29 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5822,9 +5715,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -5835,9 +5727,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5847,9 +5738,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -5861,9 +5751,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -5871,27 +5760,23 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "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 + "dev": true, + "license": "BSD-3-Clause" }, "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" @@ -5902,9 +5787,8 @@ }, "node_modules/acorn": { "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5914,9 +5798,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" @@ -5924,9 +5807,8 @@ }, "node_modules/acorn-globals/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" }, @@ -5936,27 +5818,24 @@ }, "node_modules/acorn-import-assertions": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-node": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -5965,9 +5844,8 @@ }, "node_modules/acorn-node/node_modules/acorn": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5977,27 +5855,24 @@ }, "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.1", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", - "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -6008,9 +5883,8 @@ }, "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -6020,9 +5894,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", @@ -6036,9 +5909,8 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -6053,9 +5925,8 @@ }, "node_modules/ajv-formats/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -6069,24 +5940,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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/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" }, @@ -6099,29 +5967,26 @@ }, "node_modules/ansi-html-community": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "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==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -6131,9 +5996,8 @@ }, "node_modules/anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6144,24 +6008,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -6172,15 +6033,13 @@ }, "node_modules/array-flatten": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6197,18 +6056,16 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.flat": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6224,9 +6081,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6242,9 +6098,8 @@ }, "node_modules/array.prototype.reduce": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6261,14 +6116,12 @@ }, "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": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6278,40 +6131,32 @@ }, "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "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 + "dev": true, + "license": "ISC" }, "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 + "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 + "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/autoprefixer": { "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", "dev": true, "funding": [ { @@ -6323,6 +6168,7 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.21.4", "caniuse-lite": "^1.0.30001407", @@ -6343,8 +6189,7 @@ }, "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==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6352,26 +6197,46 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", - "dev": true, + "node_modules/axe-core": { + "version": "4.4.3", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=4" + "node": ">= 6" } }, "node_modules/axobject-query": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", @@ -6391,9 +6256,8 @@ }, "node_modules/babel-jest/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6406,9 +6270,8 @@ }, "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": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6422,9 +6285,8 @@ }, "node_modules/babel-jest/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6434,24 +6296,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/babel-jest/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/babel-jest/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6461,9 +6320,8 @@ }, "node_modules/babel-loader": { "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^3.3.1", "loader-utils": "^2.0.0", @@ -6480,9 +6338,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.5", "ajv": "^6.12.4", @@ -6498,18 +6355,16 @@ }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, + "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -6523,9 +6378,8 @@ }, "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": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6538,8 +6392,7 @@ }, "node_modules/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==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -6552,18 +6405,16 @@ }, "node_modules/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, + "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.7", "@babel/helper-define-polyfill-provider": "^0.3.3", @@ -6575,9 +6426,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3", "core-js-compat": "^3.25.1" @@ -6588,9 +6438,8 @@ }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.3" }, @@ -6598,17 +6447,30 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/babel-plugin-preval": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-5.1.0.tgz", + "integrity": "sha512-G5R+xmo5LS41A4UyZjOjV0mp9AvkuCyUOAJ6TOv/jTZS+VKh7L7HUDRcCSOb0YCM/u0fFarh7Diz0wjY8rFNFg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/babel__core": "^7.1.12", + "babel-plugin-macros": "^3.0.1", + "require-from-string": "^2.0.2" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -6629,9 +6491,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" @@ -6645,9 +6506,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/plugin-proposal-class-properties": "^7.16.0", @@ -6669,14 +6529,11 @@ }, "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/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -6690,19 +6547,18 @@ "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==", "dev": true, + "license": "MIT", "dependencies": { "bluebird": "^3.5.5", "check-types": "^11.1.1", @@ -6715,38 +6571,33 @@ }, "node_modules/big.js": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/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==" + "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==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -6768,27 +6619,24 @@ }, "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, + "license": "MIT", "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==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -6798,15 +6646,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, + "license": "MIT", "dependencies": { "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", @@ -6816,15 +6662,13 @@ }, "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" @@ -6832,9 +6676,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -6844,19 +6687,16 @@ }, "node_modules/brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "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==", + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -6868,8 +6708,7 @@ }, "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==", + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -6878,8 +6717,7 @@ }, "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==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -6889,8 +6727,7 @@ }, "node_modules/browserify-rsa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "license": "MIT", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -6898,8 +6735,7 @@ }, "node_modules/browserify-sign": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "license": "ISC", "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -6914,8 +6750,6 @@ }, "node_modules/browserslist": { "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "funding": [ { "type": "opencollective", @@ -6926,6 +6760,7 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001400", "electron-to-chromium": "^1.4.251", @@ -6941,17 +6776,14 @@ }, "node_modules/bser": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -6966,6 +6798,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -6973,20 +6806,17 @@ }, "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-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "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" }, @@ -6996,17 +6826,15 @@ }, "node_modules/bytes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/call-bind": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -7017,17 +6845,15 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camel-case": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -7035,9 +6861,8 @@ }, "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" }, @@ -7047,18 +6872,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-api": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -7068,8 +6891,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001421", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", - "integrity": "sha512-Sw4eLbgUJAEhjLs1Fa+mk45sidp1wRn5y6GtDpHGBaNJ9OCDJaVh2tIaWWUnGfuXfKf1JCBaIarak3FkVAvEeA==", "funding": [ { "type": "opencollective", @@ -7079,26 +6900,24 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ] + ], + "license": "CC-BY-4.0" }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/chain-function": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz", - "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7110,31 +6929,26 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/char-regex": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/check-types": { "version": "11.1.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", - "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==", - "dev": true + "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==", "dev": true, "funding": [ { @@ -7142,6 +6956,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -7160,9 +6975,8 @@ }, "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==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -7172,23 +6986,20 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7196,25 +7007,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/classcat": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.4.tgz", - "integrity": "sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==" + "license": "MIT" }, "node_modules/classnames": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "license": "MIT" }, "node_modules/clean-css": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -7224,18 +7031,16 @@ }, "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==", "dev": true, + "license": "BSD-3-Clause", "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==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -7244,25 +7049,22 @@ }, "node_modules/clone": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/clsx": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -7270,9 +7072,8 @@ }, "node_modules/coa": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "dev": true, + "license": "MIT", "dependencies": { "@types/q": "^1.5.1", "chalk": "^2.4.1", @@ -7284,40 +7085,33 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "license": "MIT" }, "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.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "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" }, @@ -7327,38 +7121,33 @@ }, "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==", + "license": "MIT", "engines": { "node": ">= 10" } }, "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 + "dev": true, + "license": "ISC" }, "node_modules/common-tags": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "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/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" }, @@ -7368,9 +7157,8 @@ }, "node_modules/compression": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -7386,51 +7174,44 @@ }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "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/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==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, "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" }, @@ -7440,39 +7221,34 @@ }, "node_modules/content-type": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-js": { "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", - "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7480,9 +7256,8 @@ }, "node_modules/core-js-compat": { "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.21.4" }, @@ -7493,10 +7268,9 @@ }, "node_modules/core-js-pure": { "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", - "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7504,14 +7278,12 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -7525,8 +7297,7 @@ }, "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==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -7534,13 +7305,11 @@ }, "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "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==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -7551,8 +7320,7 @@ }, "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==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -7564,17 +7332,15 @@ }, "node_modules/cross-fetch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "license": "MIT", "dependencies": { "node-fetch": "2.6.7" } }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7586,8 +7352,7 @@ }, "node_modules/crypto-browserify": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -7607,18 +7372,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/css-blank-pseudo": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -7634,9 +7397,8 @@ }, "node_modules/css-declaration-sorter": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >=14" }, @@ -7646,9 +7408,8 @@ }, "node_modules/css-has-pseudo": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -7664,9 +7425,8 @@ }, "node_modules/css-loader": { "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.7", @@ -7690,9 +7450,8 @@ }, "node_modules/css-loader/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7705,9 +7464,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "cssnano": "^5.0.6", "jest-worker": "^27.0.2", @@ -7743,9 +7501,8 @@ }, "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -7759,9 +7516,8 @@ }, "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, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -7771,15 +7527,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -7796,18 +7550,16 @@ }, "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==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/css-prefers-color-scheme": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, + "license": "CC0-1.0", "bin": { "css-prefers-color-scheme": "dist/cli.cjs" }, @@ -7820,9 +7572,8 @@ }, "node_modules/css-select": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -7836,15 +7587,13 @@ }, "node_modules/css-select-base-adapter": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true + "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" @@ -7855,17 +7604,15 @@ }, "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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/css-vendor": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.3", "is-in-browser": "^1.0.2" @@ -7873,9 +7620,8 @@ }, "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" }, @@ -7885,9 +7631,8 @@ }, "node_modules/cssdb": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", - "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "dev": true, + "license": "CC0-1.0", "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" @@ -7895,9 +7640,8 @@ }, "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" }, @@ -7907,9 +7651,8 @@ }, "node_modules/cssnano": { "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", "dev": true, + "license": "MIT", "dependencies": { "cssnano-preset-default": "^5.2.12", "lilconfig": "^2.0.3", @@ -7928,9 +7671,8 @@ }, "node_modules/cssnano-preset-default": { "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", "dev": true, + "license": "MIT", "dependencies": { "css-declaration-sorter": "^6.3.0", "cssnano-utils": "^3.1.0", @@ -7971,9 +7713,8 @@ }, "node_modules/cssnano-utils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", "dev": true, + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -7983,9 +7724,8 @@ }, "node_modules/csso": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, + "license": "MIT", "dependencies": { "css-tree": "^1.1.2" }, @@ -7995,9 +7735,8 @@ }, "node_modules/csso/node_modules/css-tree": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -8008,30 +7747,26 @@ }, "node_modules/csso/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 + "dev": true, + "license": "CC0-1.0" }, "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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.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" }, @@ -8041,19 +7776,16 @@ }, "node_modules/cssstyle/node_modules/cssom": { "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.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "license": "MIT" }, "node_modules/d3": { "version": "7.6.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz", - "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -8092,8 +7824,7 @@ }, "node_modules/d3-array": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", - "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -8103,16 +7834,14 @@ }, "node_modules/d3-axis": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-brush": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -8126,8 +7855,7 @@ }, "node_modules/d3-chord": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -8137,16 +7865,14 @@ }, "node_modules/d3-color": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-contour": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -8156,8 +7882,7 @@ }, "node_modules/d3-delaunay": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -8167,16 +7892,14 @@ }, "node_modules/d3-dispatch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-drag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -8187,8 +7910,7 @@ }, "node_modules/d3-dsv": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -8211,16 +7933,14 @@ }, "node_modules/d3-ease": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } }, "node_modules/d3-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -8230,8 +7950,7 @@ }, "node_modules/d3-force": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -8243,16 +7962,14 @@ }, "node_modules/d3-format": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-geo": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -8262,16 +7979,14 @@ }, "node_modules/d3-hierarchy": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -8281,40 +7996,35 @@ }, "node_modules/d3-path": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-polygon": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-quadtree": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-random": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-scale": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -8328,8 +8038,7 @@ }, "node_modules/d3-scale-chromatic": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -8340,16 +8049,14 @@ }, "node_modules/d3-selection": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-shape": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -8359,8 +8066,7 @@ }, "node_modules/d3-time": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -8370,8 +8076,7 @@ }, "node_modules/d3-time-format": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -8381,16 +8086,14 @@ }, "node_modules/d3-timer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/d3-transition": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -8407,8 +8110,7 @@ }, "node_modules/d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -8422,15 +8124,13 @@ }, "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", @@ -8442,9 +8142,8 @@ }, "node_modules/data-urls/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, + "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -8454,9 +8153,8 @@ }, "node_modules/data-urls/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, + "license": "MIT", "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -8468,8 +8166,7 @@ }, "node_modules/date-fns": { "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "license": "MIT", "engines": { "node": ">=0.11" }, @@ -8480,8 +8177,7 @@ }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -8496,36 +8192,31 @@ }, "node_modules/decimal.js": { "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dedent": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, + "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==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -8535,17 +8226,15 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/define-properties": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "license": "MIT", "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -8559,51 +8248,44 @@ }, "node_modules/defined": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delaunator": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.0" } }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/des.js": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -8611,9 +8293,8 @@ }, "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" @@ -8621,24 +8302,21 @@ }, "node_modules/detect-newline": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "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" @@ -8653,24 +8331,21 @@ }, "node_modules/detect-port-alt/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/detect-port-alt/node_modules/ms": { "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/detective": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.8.2", "defined": "^1.0.0", @@ -8685,23 +8360,20 @@ }, "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": "Apache-2.0" }, "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" } }, "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==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -8710,14 +8382,12 @@ }, "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "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" }, @@ -8727,21 +8397,18 @@ }, "node_modules/dlv": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "dev": true, + "license": "MIT" }, "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.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -8751,9 +8418,8 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -8763,26 +8429,23 @@ }, "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" } }, "node_modules/dom-helpers": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" } }, "node_modules/dom-serializer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -8794,21 +8457,19 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -8818,18 +8479,16 @@ }, "node_modules/domexception/node_modules/webidl-conversions": { "version": "5.0.0", - "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" } }, "node_modules/domhandler": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -8842,9 +8501,8 @@ }, "node_modules/domutils": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -8856,9 +8514,8 @@ }, "node_modules/dot-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -8866,36 +8523,31 @@ }, "node_modules/dotenv": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=10" } }, "node_modules/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/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/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.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -8908,13 +8560,11 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "license": "ISC" }, "node_modules/elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -8927,14 +8577,12 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "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" }, @@ -8944,33 +8592,29 @@ }, "node_modules/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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/enhanced-resolve": { "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -8981,34 +8625,30 @@ }, "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/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==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/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, + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -9044,29 +8684,25 @@ }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/es-module-lexer": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" } }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -9081,22 +8717,19 @@ }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -9106,9 +8739,8 @@ }, "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==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -9128,9 +8760,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -9141,9 +8772,8 @@ }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -9158,8 +8788,6 @@ }, "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" @@ -9167,9 +8795,8 @@ }, "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, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -9177,9 +8804,8 @@ }, "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, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -9189,9 +8815,8 @@ }, "node_modules/eslint": { "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, + "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.10.5", @@ -9244,9 +8869,8 @@ }, "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, + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/eslint-parser": "^7.16.3", @@ -9272,9 +8896,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "resolve": "^1.20.0" @@ -9282,18 +8905,16 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -9308,18 +8929,16 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "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==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "lodash": "^4.17.21", "string-natural-compare": "^3.0.1" @@ -9335,9 +8954,8 @@ }, "node_modules/eslint-plugin-import": { "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.4", "array.prototype.flat": "^1.2.5", @@ -9362,18 +8980,16 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -9383,15 +8999,13 @@ }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "^5.0.0" }, @@ -9413,9 +9027,8 @@ }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.9", "aria-query": "^4.2.2", @@ -9440,9 +9053,8 @@ }, "node_modules/eslint-plugin-react": { "version": "7.31.10", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.5", "array.prototype.flatmap": "^1.3.0", @@ -9468,9 +9080,8 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9480,9 +9091,8 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "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" }, @@ -9492,9 +9102,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -9509,9 +9118,8 @@ }, "node_modules/eslint-plugin-testing-library": { "version": "5.7.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.7.3.tgz", - "integrity": "sha512-uLMVBkBI3rNOrV3mbtjLsm76X0cPac+cBNYn8ZwwvsYiDKKBXHAjZGtbjvRHEwNxwrsJm+rx4RtGWDjFRTWNuw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.13.0" }, @@ -9525,9 +9133,8 @@ }, "node_modules/eslint-scope": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -9538,9 +9145,8 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -9556,27 +9162,24 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint-visitor-keys": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint-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, + "license": "MIT", "dependencies": { "@types/eslint": "^7.29.0 || ^8.4.1", "jest-worker": "^28.0.2", @@ -9598,9 +9201,8 @@ }, "node_modules/eslint-webpack-plugin/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -9614,9 +9216,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -9626,18 +9227,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -9649,15 +9248,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -9674,9 +9271,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9689,9 +9285,8 @@ }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9704,15 +9299,13 @@ }, "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 + "dev": true, + "license": "Python-2.0" }, "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" @@ -9726,9 +9319,8 @@ }, "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9738,15 +9330,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/globals": { "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -9759,18 +9349,16 @@ }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -9780,9 +9368,8 @@ }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9792,9 +9379,8 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -9804,9 +9390,8 @@ }, "node_modules/espree": { "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", @@ -9821,9 +9406,8 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -9834,9 +9418,8 @@ }, "node_modules/esquery": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -9846,9 +9429,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -9858,55 +9440,48 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/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 + "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" } }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/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==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -9914,9 +9489,8 @@ }, "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", @@ -9937,8 +9511,6 @@ }, "node_modules/exit": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -9946,9 +9518,8 @@ }, "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", @@ -9961,9 +9532,8 @@ }, "node_modules/express": { "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -10003,36 +9573,31 @@ }, "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" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -10046,9 +9611,8 @@ }, "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==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -10058,30 +9622,26 @@ }, "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/fastq": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -10091,18 +9651,16 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "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" }, @@ -10112,9 +9670,8 @@ }, "node_modules/file-loader": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -10132,27 +9689,24 @@ }, "node_modules/filelist": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/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==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10162,18 +9716,16 @@ }, "node_modules/filesize": { "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", "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==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -10183,9 +9735,8 @@ }, "node_modules/finalhandler": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -10201,24 +9752,21 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "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==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -10233,14 +9781,12 @@ }, "node_modules/find-root": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -10254,9 +9800,8 @@ }, "node_modules/flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -10267,21 +9812,18 @@ }, "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 + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -10293,17 +9835,15 @@ }, "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==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", - "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.8.3", "@types/json-schema": "^7.0.5", @@ -10340,9 +9880,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10355,9 +9894,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10371,9 +9909,8 @@ }, "node_modules/fork-ts-checker-webpack-plugin/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" }, @@ -10383,15 +9920,13 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -10405,9 +9940,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -10420,18 +9954,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", @@ -10447,9 +9979,8 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10462,9 +9993,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10474,18 +10004,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10497,18 +10025,16 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fraction.js": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -10519,18 +10045,16 @@ }, "node_modules/fresh": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10542,39 +10066,21 @@ }, "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 + "dev": true, + "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "license": "MIT" }, "node_modules/function.prototype.name": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -10590,33 +10096,29 @@ }, "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==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -10628,24 +10130,21 @@ }, "node_modules/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 + "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-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" }, @@ -10655,8 +10154,7 @@ }, "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -10670,9 +10168,8 @@ }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10690,9 +10187,8 @@ }, "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" }, @@ -10702,15 +10198,13 @@ }, "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 + "dev": true, + "license": "BSD-2-Clause" }, "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" }, @@ -10720,9 +10214,8 @@ }, "node_modules/global-prefix": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -10734,9 +10227,8 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10746,17 +10238,15 @@ }, "node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -10774,21 +10264,18 @@ }, "node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "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 + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "duplexer": "^0.1.2" }, @@ -10801,20 +10288,17 @@ }, "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==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -10824,24 +10308,21 @@ }, "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==", + "license": "MIT", "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==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -10851,8 +10332,7 @@ }, "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==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10862,8 +10342,7 @@ }, "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==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -10876,8 +10355,7 @@ }, "node_modules/hash-base": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -10889,8 +10367,7 @@ }, "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==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -10898,17 +10375,15 @@ }, "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/hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -10917,31 +10392,27 @@ }, "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==", + "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==" + "license": "MIT" }, "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/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", @@ -10951,9 +10422,8 @@ }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10966,24 +10436,21 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "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" }, @@ -10993,21 +10460,18 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -11026,18 +10490,16 @@ }, "node_modules/html-minifier-terser/node_modules/commander": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/html-webpack-plugin": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "dev": true, + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -11058,8 +10520,6 @@ }, "node_modules/htmlparser2": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -11068,6 +10528,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -11077,15 +10538,13 @@ }, "node_modules/http-deceiver": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "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", @@ -11099,15 +10558,13 @@ }, "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 + "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", @@ -11119,9 +10576,8 @@ }, "node_modules/http-proxy-agent": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -11133,9 +10589,8 @@ }, "node_modules/http-proxy-middleware": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -11157,9 +10612,8 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -11170,22 +10624,19 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/hyphenate-style-name": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + "license": "BSD-3-Clause" }, "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==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -11195,9 +10646,8 @@ }, "node_modules/icss-utils": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -11207,15 +10657,13 @@ }, "node_modules/idb": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.0.tgz", - "integrity": "sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==", - "dev": true + "dev": true, + "license": "ISC" }, "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" }, @@ -11225,8 +10673,6 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -11240,22 +10686,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immer": { "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -11263,8 +10708,7 @@ }, "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==", + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -11278,9 +10722,8 @@ }, "node_modules/import-local": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -11297,18 +10740,16 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -11316,19 +10757,16 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "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 + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -11340,25 +10778,22 @@ }, "node_modules/internmap": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/ipaddr.js": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/is-arguments": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11372,13 +10807,11 @@ }, "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==" + "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -11388,9 +10821,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -11400,8 +10832,7 @@ }, "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11415,8 +10846,7 @@ }, "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==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11426,8 +10856,7 @@ }, "node_modules/is-core-module": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -11437,8 +10866,7 @@ }, "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==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11451,9 +10879,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -11466,35 +10893,31 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-generator-function": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11507,9 +10930,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -11519,19 +10941,16 @@ }, "node_modules/is-in-browser": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11541,17 +10960,15 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11564,18 +10981,16 @@ }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -11585,14 +11000,12 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11606,26 +11019,23 @@ }, "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": ">=0.10.0" } }, "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": ">=6" } }, "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -11635,9 +11045,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -11647,8 +11056,7 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11661,8 +11069,7 @@ }, "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==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -11675,8 +11082,7 @@ }, "node_modules/is-typed-array": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -11693,14 +11099,12 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -11710,9 +11114,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -11722,38 +11125,33 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isomorphic-ws": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", "peerDependencies": { "ws": "*" } }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "5.2.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": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -11767,9 +11165,8 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -11781,18 +11178,16 @@ }, "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11802,9 +11197,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -11816,18 +11210,16 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -11838,9 +11230,8 @@ }, "node_modules/jake": { "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -11856,9 +11247,8 @@ }, "node_modules/jake/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11871,9 +11261,8 @@ }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11887,9 +11276,8 @@ }, "node_modules/jake/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11899,24 +11287,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/node_modules/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" }, @@ -11926,9 +11311,8 @@ }, "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": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -11951,9 +11335,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "execa": "^5.0.0", @@ -11965,9 +11348,8 @@ }, "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": { "@jest/environment": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -11995,9 +11377,8 @@ }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12010,9 +11391,8 @@ }, "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" @@ -12026,9 +11406,8 @@ }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12038,24 +11417,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12065,9 +11441,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -12099,9 +11474,8 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12114,9 +11488,8 @@ }, "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" @@ -12130,9 +11503,8 @@ }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12142,24 +11514,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12169,9 +11538,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.8.0", "@jest/test-sequencer": "^27.5.1", @@ -12212,9 +11580,8 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12227,9 +11594,8 @@ }, "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" @@ -12243,9 +11609,8 @@ }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12255,24 +11620,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12282,9 +11644,8 @@ }, "node_modules/jest-diff": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.5.1", @@ -12297,9 +11658,8 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12312,9 +11672,8 @@ }, "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" @@ -12328,9 +11687,8 @@ }, "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12340,24 +11698,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12367,9 +11722,8 @@ }, "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": { "detect-newline": "^3.0.0" }, @@ -12379,9 +11733,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -12395,9 +11748,8 @@ }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12410,9 +11762,8 @@ }, "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" @@ -12426,9 +11777,8 @@ }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12438,24 +11788,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12465,9 +11812,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -12483,9 +11829,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -12500,18 +11845,16 @@ }, "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": { "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", @@ -12535,9 +11878,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/source-map": "^27.5.1", @@ -12563,9 +11905,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12578,9 +11919,8 @@ }, "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" @@ -12594,9 +11934,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12606,24 +11945,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12633,9 +11969,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" @@ -12646,9 +11981,8 @@ }, "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", @@ -12661,9 +11995,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12676,9 +12009,8 @@ }, "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" @@ -12692,9 +12024,8 @@ }, "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12704,24 +12035,21 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12731,9 +12059,8 @@ }, "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", @@ -12751,9 +12078,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12766,9 +12092,8 @@ }, "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": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12782,9 +12107,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12794,24 +12118,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12821,9 +12142,8 @@ }, "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": { "@jest/types": "^27.5.1", "@types/node": "*" @@ -12834,9 +12154,8 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -12851,18 +12170,16 @@ }, "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": "^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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -12881,9 +12198,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-regex-util": "^27.5.1", @@ -12895,9 +12211,8 @@ }, "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12910,9 +12225,8 @@ }, "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-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12926,9 +12240,8 @@ }, "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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12938,24 +12251,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12965,9 +12275,8 @@ }, "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": "^27.5.1", "@jest/environment": "^27.5.1", @@ -12997,9 +12306,8 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13012,9 +12320,8 @@ }, "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" @@ -13028,9 +12335,8 @@ }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13040,24 +12346,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13067,9 +12370,8 @@ }, "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": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -13100,9 +12402,8 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13115,9 +12416,8 @@ }, "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" @@ -13131,9 +12431,8 @@ }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13143,24 +12442,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13170,9 +12466,8 @@ }, "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": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -13183,9 +12478,8 @@ }, "node_modules/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, + "license": "MIT", "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", @@ -13216,9 +12510,8 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13231,9 +12524,8 @@ }, "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" @@ -13247,9 +12539,8 @@ }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13259,24 +12550,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13289,9 +12577,8 @@ }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13301,9 +12588,8 @@ }, "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": "*", @@ -13318,9 +12604,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13333,9 +12618,8 @@ }, "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" @@ -13349,9 +12633,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13361,24 +12644,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13388,9 +12668,8 @@ }, "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", @@ -13405,9 +12684,8 @@ }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13420,9 +12698,8 @@ }, "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": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13436,9 +12713,8 @@ }, "node_modules/jest-validate/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13448,24 +12724,21 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13475,9 +12748,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.1", "chalk": "^4.0.0", @@ -13496,9 +12768,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^28.1.3", "@types/node": "*", @@ -13513,18 +12784,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^28.1.3", "@jest/types": "^28.1.3", @@ -13537,9 +12806,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -13554,18 +12822,16 @@ }, "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", - "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", "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, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13578,9 +12844,8 @@ }, "node_modules/jest-watch-typeahead/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" @@ -13594,9 +12859,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13606,15 +12870,13 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -13624,18 +12886,16 @@ }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^28.1.3", @@ -13653,27 +12913,24 @@ }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^28.1.3", "@types/node": "*", @@ -13688,9 +12945,8 @@ }, "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, + "license": "MIT", "dependencies": { "@jest/test-result": "^28.1.3", "@jest/types": "^28.1.3", @@ -13707,9 +12963,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -13720,9 +12975,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13732,9 +12986,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", @@ -13747,9 +13000,8 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -13759,9 +13011,8 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -13771,9 +13022,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^2.0.0", "strip-ansi": "^7.0.1" @@ -13787,18 +13037,16 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -13811,9 +13059,8 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -13823,9 +13070,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13835,9 +13081,8 @@ }, "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", @@ -13853,9 +13098,8 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13868,9 +13112,8 @@ }, "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": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13884,9 +13127,8 @@ }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13896,24 +13138,21 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13923,9 +13162,8 @@ }, "node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -13937,18 +13175,16 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13961,20 +13197,17 @@ }, "node_modules/js-sdsl": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "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==" + "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": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -13985,9 +13218,8 @@ }, "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": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -14031,9 +13263,8 @@ }, "node_modules/jsdom/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, + "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -14043,9 +13274,8 @@ }, "node_modules/jsdom/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, + "license": "MIT", "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -14057,8 +13287,7 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -14068,31 +13297,26 @@ }, "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==" + "license": "MIT" }, "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 + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -14102,9 +13326,8 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -14114,17 +13337,15 @@ }, "node_modules/jsonpointer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jss": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz", - "integrity": "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -14138,8 +13359,7 @@ }, "node_modules/jss-plugin-camel-case": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz", - "integrity": "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", @@ -14148,8 +13368,7 @@ }, "node_modules/jss-plugin-default-unit": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz", - "integrity": "sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" @@ -14157,8 +13376,7 @@ }, "node_modules/jss-plugin-global": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz", - "integrity": "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" @@ -14166,8 +13384,7 @@ }, "node_modules/jss-plugin-nested": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz", - "integrity": "sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "jss": "10.9.2", @@ -14176,8 +13393,7 @@ }, "node_modules/jss-plugin-props-sort": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz", - "integrity": "sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" @@ -14185,8 +13401,7 @@ }, "node_modules/jss-plugin-rule-value-function": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz", - "integrity": "sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "jss": "10.9.2", @@ -14195,8 +13410,7 @@ }, "node_modules/jss-plugin-vendor-prefixer": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz", - "integrity": "sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", @@ -14205,9 +13419,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.5", "object.assign": "^4.1.3" @@ -14218,68 +13431,60 @@ }, "node_modules/jwt-simple": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/jwt-simple/-/jwt-simple-0.5.6.tgz", - "integrity": "sha512-40aUybvhH9t2h71ncA1/1SbtTNCVZHgsTsTgqPUxGWDmUDrXyDf2wMNQKEbdBjbf4AI+fQhbECNTV6lWxQKUzg==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/klona": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "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 + "dev": true, + "license": "CC0-1.0" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "language-subtag-registry": "~0.3.2" } }, "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/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -14290,32 +13495,28 @@ }, "node_modules/lilconfig": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "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==" + "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "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": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -14327,9 +13528,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -14342,49 +13542,41 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -14394,18 +13586,16 @@ }, "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": { "tslib": "^2.0.3" } }, "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" }, @@ -14415,18 +13605,16 @@ }, "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": { "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -14439,17 +13627,15 @@ }, "node_modules/makeerror": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "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==", + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -14458,24 +13644,21 @@ }, "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 + "dev": true, + "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": ">= 0.6" } }, "node_modules/memfs": { "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.3" }, @@ -14485,39 +13668,34 @@ }, "node_modules/merge-descriptors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -14528,8 +13706,7 @@ }, "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==", + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -14540,14 +13717,12 @@ }, "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/mime": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -14557,18 +13732,14 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -14578,18 +13749,16 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mini-css-extract-plugin": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" }, @@ -14606,9 +13775,8 @@ }, "node_modules/mini-css-extract-plugin/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -14622,9 +13790,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -14634,15 +13801,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -14659,19 +13824,16 @@ }, "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==" + "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==" + "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": { "brace-expansion": "^1.1.7" }, @@ -14681,18 +13843,16 @@ }, "node_modules/minimist": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -14702,14 +13862,12 @@ }, "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==" + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -14720,9 +13878,8 @@ }, "node_modules/nanoid": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -14732,30 +13889,26 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "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": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -14763,8 +13916,7 @@ }, "node_modules/node-fetch": { "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -14782,47 +13934,41 @@ }, "node_modules/node-forge": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-range": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-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, + "license": "MIT", "engines": { "node": ">=10" }, @@ -14832,9 +13978,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -14844,9 +13989,8 @@ }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -14856,47 +14000,41 @@ }, "node_modules/nwsapi": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true + "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==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -14912,9 +14050,8 @@ }, "node_modules/object.entries": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -14926,9 +14063,8 @@ }, "node_modules/object.fromentries": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -14943,9 +14079,8 @@ }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", "dev": true, + "license": "MIT", "dependencies": { "array.prototype.reduce": "^1.0.4", "call-bind": "^1.0.2", @@ -14961,9 +14096,8 @@ }, "node_modules/object.hasown": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.4", "es-abstract": "^1.19.5" @@ -14974,9 +14108,8 @@ }, "node_modules/object.values": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -14991,15 +14124,13 @@ }, "node_modules/obuf": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -15009,27 +14140,24 @@ }, "node_modules/on-headers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -15042,9 +14170,8 @@ }, "node_modules/open": { "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -15059,9 +14186,8 @@ }, "node_modules/optionator": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -15076,9 +14202,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -15091,9 +14216,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -15106,9 +14230,8 @@ }, "node_modules/p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -15119,18 +14242,16 @@ }, "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, + "license": "MIT", "engines": { "node": ">=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==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -15138,8 +14259,7 @@ }, "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==", + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -15149,8 +14269,7 @@ }, "node_modules/parse-asn1": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "license": "ISC", "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -15161,8 +14280,7 @@ }, "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==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -15178,24 +14296,21 @@ }, "node_modules/parse5": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/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": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -15203,54 +14318,47 @@ }, "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" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "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==", + "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==", + "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -15264,20 +14372,17 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "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": ">=8.6" }, @@ -15287,27 +14392,24 @@ }, "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/pirates": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, + "license": "MIT", "engines": { "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" }, @@ -15317,9 +14419,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -15330,9 +14431,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -15342,9 +14442,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==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15357,9 +14456,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==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -15369,9 +14467,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==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -15381,9 +14478,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==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -15393,9 +14489,8 @@ }, "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": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -15406,9 +14501,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15421,9 +14515,8 @@ }, "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": { "p-limit": "^2.0.0" }, @@ -15433,17 +14526,14 @@ }, "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/postcss": { "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", "dev": true, "funding": [ { @@ -15455,6 +14545,7 @@ "url": "https://tidelift.com/funding/github/npm/postcss" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -15466,9 +14557,8 @@ }, "node_modules/postcss-attribute-case-insensitive": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -15485,9 +14575,8 @@ }, "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==", "dev": true, + "license": "CC0-1.0", "engines": { "node": ">=8" }, @@ -15498,9 +14587,8 @@ }, "node_modules/postcss-calc": { "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.9", "postcss-value-parser": "^4.2.0" @@ -15511,9 +14599,8 @@ }, "node_modules/postcss-clamp": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15526,9 +14613,8 @@ }, "node_modules/postcss-color-functional-notation": { "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15545,9 +14631,8 @@ }, "node_modules/postcss-color-hex-alpha": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15564,9 +14649,8 @@ }, "node_modules/postcss-color-rebeccapurple": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15583,9 +14667,8 @@ }, "node_modules/postcss-colormin": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", @@ -15601,9 +14684,8 @@ }, "node_modules/postcss-convert-values": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.20.3", "postcss-value-parser": "^4.2.0" @@ -15617,9 +14699,8 @@ }, "node_modules/postcss-custom-media": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15636,9 +14717,8 @@ }, "node_modules/postcss-custom-properties": { "version": "12.1.9", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", - "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15655,9 +14735,8 @@ }, "node_modules/postcss-custom-selectors": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -15674,9 +14753,8 @@ }, "node_modules/postcss-dir-pseudo-class": { "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -15693,9 +14771,8 @@ }, "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==", "dev": true, + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -15705,9 +14782,8 @@ }, "node_modules/postcss-discard-duplicates": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", "dev": true, + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -15717,9 +14793,8 @@ }, "node_modules/postcss-discard-empty": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", "dev": true, + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -15729,9 +14804,8 @@ }, "node_modules/postcss-discard-overridden": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", "dev": true, + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -15741,9 +14815,8 @@ }, "node_modules/postcss-double-position-gradients": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -15761,9 +14834,8 @@ }, "node_modules/postcss-env-function": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15776,18 +14848,16 @@ }, "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==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.1.4" } }, "node_modules/postcss-focus-visible": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -15800,9 +14870,8 @@ }, "node_modules/postcss-focus-within": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.9" }, @@ -15815,18 +14884,16 @@ }, "node_modules/postcss-font-variant": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } }, "node_modules/postcss-gap-properties": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -15840,9 +14907,8 @@ }, "node_modules/postcss-image-set-function": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -15859,9 +14925,8 @@ }, "node_modules/postcss-import": { "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -15876,18 +14941,16 @@ }, "node_modules/postcss-initial": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/postcss-js": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", "dev": true, + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -15904,9 +14967,8 @@ }, "node_modules/postcss-lab-function": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", "postcss-value-parser": "^4.2.0" @@ -15924,9 +14986,8 @@ }, "node_modules/postcss-load-config": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", "dev": true, + "license": "MIT", "dependencies": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" @@ -15953,9 +15014,8 @@ }, "node_modules/postcss-loader": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -15975,9 +15035,8 @@ }, "node_modules/postcss-loader/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -15990,9 +15049,8 @@ }, "node_modules/postcss-logical": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "dev": true, + "license": "CC0-1.0", "engines": { "node": "^12 || ^14 || >=16" }, @@ -16002,9 +15060,8 @@ }, "node_modules/postcss-media-minmax": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -16014,9 +15071,8 @@ }, "node_modules/postcss-merge-longhand": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^5.1.0" @@ -16030,9 +15086,8 @@ }, "node_modules/postcss-merge-rules": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", @@ -16048,9 +15103,8 @@ }, "node_modules/postcss-minify-font-values": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16063,9 +15117,8 @@ }, "node_modules/postcss-minify-gradients": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", "dev": true, + "license": "MIT", "dependencies": { "colord": "^2.9.1", "cssnano-utils": "^3.1.0", @@ -16080,9 +15133,8 @@ }, "node_modules/postcss-minify-params": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.16.6", "cssnano-utils": "^3.1.0", @@ -16097,9 +15149,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.5" }, @@ -16112,9 +15163,8 @@ }, "node_modules/postcss-modules-extract-imports": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -16124,9 +15174,8 @@ }, "node_modules/postcss-modules-local-by-default": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -16141,9 +15190,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==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -16156,9 +15204,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==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -16171,9 +15218,8 @@ }, "node_modules/postcss-nested": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.6" }, @@ -16190,9 +15236,8 @@ }, "node_modules/postcss-nesting": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -16210,9 +15255,8 @@ }, "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==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/normalize.css": "*", "postcss-browser-comments": "^4", @@ -16228,9 +15272,8 @@ }, "node_modules/postcss-normalize-charset": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", "dev": true, + "license": "MIT", "engines": { "node": "^10 || ^12 || >=14.0" }, @@ -16240,9 +15283,8 @@ }, "node_modules/postcss-normalize-display-values": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16255,9 +15297,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16270,9 +15311,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16285,9 +15325,8 @@ }, "node_modules/postcss-normalize-string": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16300,9 +15339,8 @@ }, "node_modules/postcss-normalize-timing-functions": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16315,9 +15353,8 @@ }, "node_modules/postcss-normalize-unicode": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.16.6", "postcss-value-parser": "^4.2.0" @@ -16331,9 +15368,8 @@ }, "node_modules/postcss-normalize-url": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", "dev": true, + "license": "MIT", "dependencies": { "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" @@ -16347,9 +15383,8 @@ }, "node_modules/postcss-normalize-whitespace": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16362,8 +15397,6 @@ }, "node_modules/postcss-opacity-percentage": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", "dev": true, "funding": [ { @@ -16375,15 +15408,15 @@ "url": "https://liberapay.com/mrcgrtz" } ], + "license": "MIT", "engines": { "node": "^12 || ^14 || >=16" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "cssnano-utils": "^3.1.0", "postcss-value-parser": "^4.2.0" @@ -16397,9 +15430,8 @@ }, "node_modules/postcss-overflow-shorthand": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16416,18 +15448,16 @@ }, "node_modules/postcss-page-break": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8" } }, "node_modules/postcss-place": { "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16444,9 +15474,8 @@ }, "node_modules/postcss-preset-env": { "version": "7.8.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.2.tgz", - "integrity": "sha512-rSMUEaOCnovKnwc5LvBDHUDzpGP+nrUeWZGWt9M72fBvckCi45JmnJigUr4QG4zZeOHmOCNCZnd2LKDvP++ZuQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-cascade-layers": "^1.1.0", "@csstools/postcss-color-function": "^1.1.1", @@ -16511,9 +15540,8 @@ }, "node_modules/postcss-pseudo-class-any-link": { "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", "dev": true, + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -16530,9 +15558,8 @@ }, "node_modules/postcss-reduce-initial": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0" @@ -16546,9 +15573,8 @@ }, "node_modules/postcss-reduce-transforms": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -16561,18 +15587,16 @@ }, "node_modules/postcss-replace-overflow-wrap": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } }, "node_modules/postcss-selector-not": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -16589,9 +15613,8 @@ }, "node_modules/postcss-selector-parser": { "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16602,9 +15625,8 @@ }, "node_modules/postcss-svgo": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^2.7.0" @@ -16618,9 +15640,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -16631,24 +15652,21 @@ }, "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 + "dev": true, + "license": "CC0-1.0" }, "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==", "dev": true, + "license": "BSD-3-Clause", "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==", "dev": true, + "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -16667,9 +15685,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==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.5" }, @@ -16682,24 +15699,21 @@ }, "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 + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/pretty-bytes": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -16709,9 +15723,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -16719,9 +15732,8 @@ }, "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": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -16733,9 +15745,8 @@ }, "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" }, @@ -16745,30 +15756,37 @@ }, "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 + "dev": true, + "license": "MIT" + }, + "node_modules/preval.macro": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/preval.macro/-/preval.macro-5.0.0.tgz", + "integrity": "sha512-+OZRqZYx1pjZ7H5Jis8bPFXkiT7lwA46UzAT4IjuzFVKwkJK+TwIx1TCqrqNCf8U3e5O12mEJEz1BXslkCLWfQ==", + "dependencies": { + "babel-plugin-preval": "^5.0.0" + }, + "engines": { + "node": ">=10" + } }, "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 + "dev": true, + "license": "MIT" }, "node_modules/promise": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", - "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", "dev": true, + "license": "MIT", "dependencies": { "asap": "~2.0.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==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -16779,8 +15797,7 @@ }, "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==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -16789,14 +15806,12 @@ }, "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==" + "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -16807,23 +15822,25 @@ }, "node_modules/proxy-addr/node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "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 + "dev": true, + "license": "MIT" }, "node_modules/public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -16835,23 +15852,20 @@ }, "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/q": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -16859,9 +15873,8 @@ }, "node_modules/qs": { "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -16874,14 +15887,11 @@ }, "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 + "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": [ { @@ -16896,13 +15906,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -16912,25 +15922,22 @@ }, "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": { "performance-now": "^2.1.0" } }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/randomfill": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -16938,18 +15945,16 @@ }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -16962,18 +15967,16 @@ }, "node_modules/raw-body/node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -16983,8 +15986,7 @@ }, "node_modules/react": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -16995,9 +15997,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "core-js": "^3.19.2", "object-assign": "^4.1.1", @@ -17012,9 +16013,8 @@ }, "node_modules/react-app-rewired": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-app-rewired/-/react-app-rewired-2.2.1.tgz", - "integrity": "sha512-uFQWTErXeLDrMzOJHKp0h8P1z0LV9HzPGsJ6adOtGlA/B9WfT6Shh4j2tLTTGlXOfiVx6w6iWpp7SOC5pvk+gA==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^5.6.0" }, @@ -17027,17 +16027,15 @@ }, "node_modules/react-app-rewired/node_modules/semver": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/react-d3-tree": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/react-d3-tree/-/react-d3-tree-3.3.4.tgz", - "integrity": "sha512-VjbPMsnLQnPsybiHGIiNdBlsBxeOz3We214Sno08rAhEhn3tf6leaM6dFCdWaS0Ek3UYNIAIetZVzRBL+0oD3Q==", + "license": "MIT", "dependencies": { "@bkrem/react-transition-group": "^1.3.3", "@types/d3-hierarchy": "^1.1.8", @@ -17056,23 +16054,19 @@ }, "node_modules/react-d3-tree/node_modules/@types/d3-hierarchy": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz", - "integrity": "sha512-AbStKxNyWiMDQPGDguG2Kuhlq1Sv539pZSxYbx4UZeYkutpPwXCcgyiRrlV4YH64nIOsKx7XVnOMy9O7rJsXkg==" + "license": "MIT" }, "node_modules/react-d3-tree/node_modules/d3-color": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-dispatch": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-drag": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-selection": "1" @@ -17080,49 +16074,41 @@ }, "node_modules/react-d3-tree/node_modules/d3-ease": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-hierarchy": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-interpolate": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1" } }, "node_modules/react-d3-tree/node_modules/d3-path": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-selection": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-shape": { "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } }, "node_modules/react-d3-tree/node_modules/d3-timer": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + "license": "BSD-3-Clause" }, "node_modules/react-d3-tree/node_modules/d3-transition": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1", "d3-dispatch": "1", @@ -17134,8 +16120,7 @@ }, "node_modules/react-d3-tree/node_modules/d3-zoom": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-drag": "1", @@ -17146,9 +16131,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", @@ -17181,9 +16165,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -17196,9 +16179,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17212,9 +16194,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -17224,33 +16205,29 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -17260,8 +16237,7 @@ }, "node_modules/react-dom": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -17273,14 +16249,12 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/react-flow-renderer": { "version": "10.3.17", - "resolved": "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-10.3.17.tgz", - "integrity": "sha512-bywiqVErlh5kCDqw3x0an5Ur3mT9j9CwJsDwmhmz4i1IgYM1a0SPqqEhClvjX+s5pU4nHjmVaGXWK96pwsiGcQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.9", "@types/d3": "^7.4.0", @@ -17301,27 +16275,23 @@ }, "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==" + "license": "MIT" }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { "version": "6.4.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz", - "integrity": "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==", + "license": "MIT", "dependencies": { "@remix-run/router": "1.0.2" }, @@ -17334,8 +16304,7 @@ }, "node_modules/react-router-dom": { "version": "6.4.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz", - "integrity": "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==", + "license": "MIT", "dependencies": { "@remix-run/router": "1.0.2", "react-router": "6.4.2" @@ -17350,9 +16319,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", @@ -17423,9 +16391,8 @@ }, "node_modules/react-scripts/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -17438,8 +16405,7 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -17453,8 +16419,7 @@ }, "node_modules/react-transition-group/node_modules/dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -17462,17 +16427,15 @@ }, "node_modules/read-cache": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } }, "node_modules/readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -17484,9 +16447,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -17496,9 +16458,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.5" }, @@ -17508,15 +16469,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -17526,28 +16485,24 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regex-parser": { "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -17562,9 +16517,8 @@ }, "node_modules/regexpp": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -17574,9 +16528,8 @@ }, "node_modules/regexpu-core": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", @@ -17591,15 +16544,13 @@ }, "node_modules/regjsgen": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regjsparser": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -17609,8 +16560,6 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -17618,18 +16567,16 @@ }, "node_modules/relateurl": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -17640,32 +16587,27 @@ }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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 + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -17680,9 +16622,8 @@ }, "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, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -17692,26 +16633,23 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/resolve-url-loader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", "dev": true, + "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -17737,15 +16675,13 @@ }, "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 + "dev": true, + "license": "ISC" }, "node_modules/resolve-url-loader/node_modules/postcss": { "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -17760,36 +16696,32 @@ }, "node_modules/resolve-url-loader/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve.exports": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -17797,17 +16729,15 @@ }, "node_modules/rifm": { "version": "0.12.1", - "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", - "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "license": "MIT", "peerDependencies": { "react": ">=16.8" } }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -17820,8 +16750,7 @@ }, "node_modules/ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -17829,14 +16758,12 @@ }, "node_modules/robust-predicates": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + "license": "Unlicense" }, "node_modules/rollup": { "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -17849,9 +16776,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "jest-worker": "^26.2.1", @@ -17864,18 +16790,16 @@ }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -17887,18 +16811,16 @@ }, "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, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -17908,8 +16830,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -17925,19 +16845,17 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rw": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "license": "BSD-3-Clause" }, "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==", "funding": [ { "type": "github", @@ -17951,12 +16869,12 @@ "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -17968,20 +16886,17 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "license": "MIT" }, "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 + "dev": true, + "license": "CC0-1.0" }, "node_modules/sass-loader": { "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -18017,15 +16932,13 @@ }, "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 + "dev": true, + "license": "ISC" }, "node_modules/saxes": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -18035,8 +16948,7 @@ }, "node_modules/scheduler": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -18044,9 +16956,8 @@ }, "node_modules/schema-utils": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -18062,15 +16973,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, + "license": "MIT", "dependencies": { "node-forge": "^1" }, @@ -18080,17 +16989,15 @@ }, "node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/send": { "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -18112,39 +17019,34 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -18160,27 +17062,24 @@ }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -18193,36 +17092,31 @@ }, "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 + "dev": true, + "license": "ISC" }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "ISC" }, "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" } }, "node_modules/serve-static": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -18235,14 +17129,12 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "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==", + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -18253,9 +17145,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -18265,26 +17156,23 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -18296,30 +17184,26 @@ }, "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 + "dev": true, + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "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" } }, "node_modules/sockjs": { "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -18328,32 +17212,28 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-loader": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.5", "iconv-lite": "^0.6.3", @@ -18372,9 +17252,8 @@ }, "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" @@ -18382,24 +17261,21 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spdy": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -18413,9 +17289,8 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -18427,22 +17302,18 @@ }, "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 + "dev": true, + "license": "BSD-3-Clause" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/stack-utils": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -18452,32 +17323,28 @@ }, "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, + "license": "MIT", "engines": { "node": ">=8" } }, "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 + "dev": true, + "license": "MIT" }, "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/stream-browserify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -18485,17 +17352,15 @@ }, "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==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -18506,15 +17371,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -18526,15 +17389,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/string.prototype.matchall": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -18551,8 +17412,7 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -18564,8 +17424,7 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -18577,9 +17436,8 @@ }, "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", @@ -18591,9 +17449,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -18603,36 +17460,32 @@ }, "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" } }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "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-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -18642,9 +17495,8 @@ }, "node_modules/style-loader": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -18658,9 +17510,8 @@ }, "node_modules/stylehacks": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.16.6", "postcss-selector-parser": "^6.0.4" @@ -18674,13 +17525,11 @@ }, "node_modules/stylis": { "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -18690,9 +17539,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": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -18703,18 +17551,16 @@ }, "node_modules/supports-hyperlinks/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/supports-hyperlinks/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -18724,8 +17570,7 @@ }, "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==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -18735,16 +17580,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "dependencies": { "chalk": "^2.4.1", "coa": "^2.0.2", @@ -18769,9 +17611,8 @@ }, "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", @@ -18781,9 +17622,8 @@ }, "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, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -18793,9 +17633,8 @@ }, "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" @@ -18803,9 +17642,8 @@ }, "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, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "0", "domelementtype": "1" @@ -18813,30 +17651,26 @@ }, "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 + "dev": true, + "license": "BSD-2-Clause" }, "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, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "~1.0.0" } }, "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 + "dev": true, + "license": "MIT" }, "node_modules/tailwindcss": { "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", "dev": true, + "license": "MIT", "dependencies": { "arg": "^5.0.2", "chokidar": "^3.5.3", @@ -18874,33 +17708,29 @@ }, "node_modules/tailwindcss/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 + "dev": true, + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/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, + "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==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^2.0.0", "temp-dir": "^2.0.0", @@ -18916,9 +17746,8 @@ }, "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==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -18928,9 +17757,8 @@ }, "node_modules/terminal-link": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -18944,9 +17772,8 @@ }, "node_modules/terser": { "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -18962,9 +17789,8 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", @@ -18996,15 +17822,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -19016,46 +17840,39 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/throat": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "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==" + "license": "MIT" }, "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 + "dev": true, + "license": "BSD-3-Clause" }, "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==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -19065,18 +17882,16 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tough-cookie": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -19089,29 +17904,25 @@ }, "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, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/tsconfig-paths": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -19121,9 +17932,8 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -19133,24 +17943,21 @@ }, "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tslib": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -19163,15 +17970,13 @@ }, "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 + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -19181,18 +17986,16 @@ }, "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -19202,9 +18005,8 @@ }, "node_modules/type-is": { "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -19215,18 +18017,16 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19237,8 +18037,7 @@ }, "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==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -19251,18 +18050,16 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -19273,27 +18070,24 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.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, + "license": "MIT", "engines": { "node": ">=4" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -19303,33 +18097,29 @@ }, "node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/unquote": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true + "dev": true, + "license": "MIT" }, "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, + "license": "MIT", "engines": { "node": ">=4", "yarn": "*" @@ -19337,8 +18127,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "funding": [ { "type": "opencollective", @@ -19349,6 +18137,7 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -19362,18 +18151,16 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/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, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -19381,8 +18168,7 @@ }, "node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -19393,14 +18179,12 @@ }, "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==" + "license": "MIT" }, "node_modules/util.promisify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.2", @@ -19413,32 +18197,28 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "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, + "license": "ISC", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -19450,37 +18230,32 @@ }, "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/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, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "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, + "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" } }, "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" }, @@ -19490,26 +18265,23 @@ }, "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, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/warning": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "license": "BSD-3-Clause", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/watchpack": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -19520,27 +18292,24 @@ }, "node_modules/wbuf": { "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/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, + "license": "BSD-2-Clause", "engines": { "node": ">=10.4" } }, "node_modules/webpack": { "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -19585,9 +18354,8 @@ }, "node_modules/webpack-dev-middleware": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -19608,9 +18376,8 @@ }, "node_modules/webpack-dev-middleware/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -19624,9 +18391,8 @@ }, "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -19636,15 +18402,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -19661,9 +18425,8 @@ }, "node_modules/webpack-dev-server": { "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -19716,9 +18479,8 @@ }, "node_modules/webpack-dev-server/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -19732,9 +18494,8 @@ }, "node_modules/webpack-dev-server/node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -19744,15 +18505,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.8.0", @@ -19769,9 +18528,8 @@ }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -19790,9 +18548,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "tapable": "^2.0.0", "webpack-sources": "^2.2.0" @@ -19806,18 +18563,16 @@ }, "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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" @@ -19828,24 +18583,21 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/@types/estree": { "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -19856,18 +18608,16 @@ }, "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, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/websocket-driver": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -19879,27 +18629,24 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-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, + "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -19909,20 +18656,17 @@ }, "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 + "dev": true, + "license": "MIT" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -19930,14 +18674,12 @@ }, "node_modules/whatwg-url/node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "license": "BSD-2-Clause" }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -19950,8 +18692,7 @@ }, "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==", + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -19965,8 +18706,7 @@ }, "node_modules/which-typed-array": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -19984,18 +18724,16 @@ }, "node_modules/word-wrap": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/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==", "dev": true, + "license": "MIT", "dependencies": { "idb": "^7.0.1", "workbox-core": "6.5.4" @@ -20003,18 +18741,16 @@ }, "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==", "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, + "license": "MIT", "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", "@babel/core": "^7.11.1", @@ -20060,9 +18796,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", @@ -20077,9 +18812,8 @@ }, "node_modules/workbox-build/node_modules/ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -20093,9 +18827,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -20108,15 +18841,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "whatwg-url": "^7.0.0" }, @@ -20126,24 +18857,21 @@ }, "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==", "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 + "dev": true, + "license": "BSD-2-Clause" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -20152,24 +18880,21 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4" } }, "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 + "dev": true, + "license": "MIT" }, "node_modules/workbox-expiration": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", "dev": true, + "license": "MIT", "dependencies": { "idb": "^7.0.1", "workbox-core": "6.5.4" @@ -20177,9 +18902,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-background-sync": "6.5.4", "workbox-core": "6.5.4", @@ -20189,18 +18913,16 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4", "workbox-routing": "6.5.4", @@ -20209,18 +18931,16 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-cacheable-response": "6.5.4", "workbox-core": "6.5.4", @@ -20232,27 +18952,24 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4" } }, "node_modules/workbox-strategies": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4" } }, "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==", "dev": true, + "license": "MIT", "dependencies": { "workbox-core": "6.5.4", "workbox-routing": "6.5.4" @@ -20260,15 +18977,13 @@ }, "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 + "dev": true, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "dependencies": { "fast-json-stable-stringify": "^2.1.0", "pretty-bytes": "^5.4.1", @@ -20285,18 +19000,16 @@ }, "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==", "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==", "dev": true, + "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -20304,9 +19017,8 @@ }, "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==", "dev": true, + "license": "MIT", "dependencies": { "@types/trusted-types": "^2.0.2", "workbox-core": "6.5.4" @@ -20314,9 +19026,8 @@ }, "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, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -20331,9 +19042,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==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -20346,9 +19056,8 @@ }, "node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -20358,21 +19067,18 @@ }, "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 + "dev": true, + "license": "MIT" }, "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" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -20382,8 +19088,7 @@ }, "node_modules/ws": { "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -20402,53 +19107,46 @@ }, "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" }, "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" } }, "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, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", "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==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -20464,18 +19162,16 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -20485,8 +19181,7 @@ }, "node_modules/zustand": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", - "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "license": "MIT", "engines": { "node": ">=12.7.0" }, @@ -20503,8 +19198,6 @@ "dependencies": { "@ampproject/remapping": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "requires": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -20512,21 +19205,15 @@ }, "@babel/code-frame": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + "version": "7.19.4" }, "@babel/core": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -20547,8 +19234,6 @@ }, "@babel/eslint-parser": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -20558,16 +19243,12 @@ "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 } } }, "@babel/generator": { "version": "7.19.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", - "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "requires": { "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", @@ -20576,8 +19257,6 @@ "dependencies": { "@jridgewell/gen-mapping": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -20588,8 +19267,6 @@ }, "@babel/helper-annotate-as-pure": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -20597,8 +19274,6 @@ }, "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.18.6", @@ -20607,8 +19282,6 @@ }, "@babel/helper-compilation-targets": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "requires": { "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", @@ -20618,8 +19291,6 @@ }, "@babel/helper-create-class-features-plugin": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -20633,8 +19304,6 @@ }, "@babel/helper-create-regexp-features-plugin": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -20643,8 +19312,6 @@ }, "@babel/helper-define-polyfill-provider": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", @@ -20656,14 +19323,10 @@ } }, "@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==" + "version": "7.18.9" }, "@babel/helper-explode-assignable-expression": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -20671,8 +19334,6 @@ }, "@babel/helper-function-name": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "requires": { "@babel/template": "^7.18.10", "@babel/types": "^7.19.0" @@ -20680,16 +19341,12 @@ }, "@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==", "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { "@babel/types": "^7.18.9" @@ -20697,16 +19354,12 @@ }, "@babel/helper-module-imports": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -20720,22 +19373,16 @@ }, "@babel/helper-optimise-call-expression": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "version": "7.19.0" }, "@babel/helper-remap-async-to-generator": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -20746,8 +19393,6 @@ }, "@babel/helper-replace-supers": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -20759,16 +19404,12 @@ }, "@babel/helper-simple-access": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "requires": { "@babel/types": "^7.19.4" } }, "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { "@babel/types": "^7.18.9" @@ -20776,31 +19417,21 @@ }, "@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==", "requires": { "@babel/types": "^7.18.6" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "version": "7.19.4" }, "@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==" + "version": "7.19.1" }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "version": "7.18.6" }, "@babel/helper-wrap-function": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { "@babel/helper-function-name": "^7.19.0", @@ -20811,8 +19442,6 @@ }, "@babel/helpers": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", - "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "requires": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.19.4", @@ -20821,8 +19450,6 @@ }, "@babel/highlight": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -20830,14 +19457,10 @@ } }, "@babel/parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" + "version": "7.19.4" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -20845,8 +19468,6 @@ }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", @@ -20856,8 +19477,6 @@ }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -20868,8 +19487,6 @@ }, "@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -20878,8 +19495,6 @@ }, "@babel/plugin-proposal-class-static-block": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -20889,8 +19504,6 @@ }, "@babel/plugin-proposal-decorators": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz", - "integrity": "sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", @@ -20902,8 +19515,6 @@ }, "@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -20912,8 +19523,6 @@ }, "@babel/plugin-proposal-export-namespace-from": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", @@ -20922,8 +19531,6 @@ }, "@babel/plugin-proposal-json-strings": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -20932,8 +19539,6 @@ }, "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", @@ -20942,8 +19547,6 @@ }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -20952,8 +19555,6 @@ }, "@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -20962,8 +19563,6 @@ }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "requires": { "@babel/compat-data": "^7.19.4", @@ -20975,8 +19574,6 @@ }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -20985,8 +19582,6 @@ }, "@babel/plugin-proposal-optional-chaining": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", @@ -20996,8 +19591,6 @@ }, "@babel/plugin-proposal-private-methods": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -21006,8 +19599,6 @@ }, "@babel/plugin-proposal-private-property-in-object": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -21018,8 +19609,6 @@ }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -21028,8 +19617,6 @@ }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21037,8 +19624,6 @@ }, "@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==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21046,8 +19631,6 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" @@ -21055,8 +19638,6 @@ }, "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -21064,8 +19645,6 @@ }, "@babel/plugin-syntax-decorators": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0" @@ -21073,8 +19652,6 @@ }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21082,8 +19659,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==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -21091,8 +19666,6 @@ }, "@babel/plugin-syntax-flow": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21100,8 +19673,6 @@ }, "@babel/plugin-syntax-import-assertions": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21109,8 +19680,6 @@ }, "@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==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -21118,8 +19687,6 @@ }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21127,16 +19694,12 @@ }, "@babel/plugin-syntax-jsx": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "requires": { "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -21144,8 +19707,6 @@ }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21153,8 +19714,6 @@ }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -21162,8 +19721,6 @@ }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21171,8 +19728,6 @@ }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21180,8 +19735,6 @@ }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -21189,8 +19742,6 @@ }, "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -21198,8 +19749,6 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -21207,8 +19756,6 @@ }, "@babel/plugin-syntax-typescript": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", - "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21216,8 +19763,6 @@ }, "@babel/plugin-transform-arrow-functions": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21225,8 +19770,6 @@ }, "@babel/plugin-transform-async-to-generator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", @@ -21236,8 +19779,6 @@ }, "@babel/plugin-transform-block-scoped-functions": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21245,8 +19786,6 @@ }, "@babel/plugin-transform-block-scoping": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0" @@ -21254,8 +19793,6 @@ }, "@babel/plugin-transform-classes": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -21271,8 +19808,6 @@ }, "@babel/plugin-transform-computed-properties": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21280,8 +19815,6 @@ }, "@babel/plugin-transform-destructuring": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0" @@ -21289,8 +19822,6 @@ }, "@babel/plugin-transform-dotall-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -21299,8 +19830,6 @@ }, "@babel/plugin-transform-duplicate-keys": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21308,8 +19837,6 @@ }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", @@ -21318,8 +19845,6 @@ }, "@babel/plugin-transform-flow-strip-types": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", - "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0", @@ -21328,8 +19853,6 @@ }, "@babel/plugin-transform-for-of": { "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21337,8 +19860,6 @@ }, "@babel/plugin-transform-function-name": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.18.9", @@ -21348,8 +19869,6 @@ }, "@babel/plugin-transform-literals": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21357,8 +19876,6 @@ }, "@babel/plugin-transform-member-expression-literals": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21366,8 +19883,6 @@ }, "@babel/plugin-transform-modules-amd": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", @@ -21377,8 +19892,6 @@ }, "@babel/plugin-transform-modules-commonjs": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", @@ -21389,8 +19902,6 @@ }, "@babel/plugin-transform-modules-systemjs": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", @@ -21402,8 +19913,6 @@ }, "@babel/plugin-transform-modules-umd": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.18.6", @@ -21412,8 +19921,6 @@ }, "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.19.0", @@ -21422,8 +19929,6 @@ }, "@babel/plugin-transform-new-target": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21431,8 +19936,6 @@ }, "@babel/plugin-transform-object-super": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -21441,8 +19944,6 @@ }, "@babel/plugin-transform-parameters": { "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21450,8 +19951,6 @@ }, "@babel/plugin-transform-property-literals": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21459,8 +19958,6 @@ }, "@babel/plugin-transform-react-constant-elements": { "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz", - "integrity": "sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21468,8 +19965,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==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21477,8 +19972,6 @@ }, "@babel/plugin-transform-react-jsx": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -21490,8 +19983,6 @@ }, "@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==", "dev": true, "requires": { "@babel/plugin-transform-react-jsx": "^7.18.6" @@ -21499,8 +19990,6 @@ }, "@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==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -21509,8 +19998,6 @@ }, "@babel/plugin-transform-regenerator": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -21519,8 +20006,6 @@ }, "@babel/plugin-transform-reserved-words": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21528,8 +20013,6 @@ }, "@babel/plugin-transform-runtime": { "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz", - "integrity": "sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", @@ -21542,8 +20025,6 @@ }, "@babel/plugin-transform-shorthand-properties": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21551,8 +20032,6 @@ }, "@babel/plugin-transform-spread": { "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0", @@ -21561,8 +20040,6 @@ }, "@babel/plugin-transform-sticky-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6" @@ -21570,8 +20047,6 @@ }, "@babel/plugin-transform-template-literals": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21579,8 +20054,6 @@ }, "@babel/plugin-transform-typeof-symbol": { "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21588,8 +20061,6 @@ }, "@babel/plugin-transform-typescript": { "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", - "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", @@ -21599,8 +20070,6 @@ }, "@babel/plugin-transform-unicode-escapes": { "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -21608,8 +20077,6 @@ }, "@babel/plugin-transform-unicode-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -21618,8 +20085,6 @@ }, "@babel/preset-env": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", "dev": true, "requires": { "@babel/compat-data": "^7.19.4", @@ -21701,8 +20166,6 @@ }, "@babel/preset-modules": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -21714,8 +20177,6 @@ }, "@babel/preset-react": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", - "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -21728,8 +20189,6 @@ }, "@babel/preset-typescript": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.6", @@ -21739,16 +20198,12 @@ }, "@babel/runtime": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", - "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.19.4.tgz", - "integrity": "sha512-HzjQ8+dzdx7dmZy4DQ8KV8aHi/74AjEbBGTFutBmg/pd3dY5/q1sfuOGPTFGEytlQhWoeVXqcK5BwMgIkRkNDQ==", "dev": true, "requires": { "core-js-pure": "^3.25.1", @@ -21757,8 +20212,6 @@ }, "@babel/template": { "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -21767,8 +20220,6 @@ }, "@babel/traverse": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", - "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", "requires": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.19.4", @@ -21784,8 +20235,6 @@ }, "@babel/types": { "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", - "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "requires": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -21794,14 +20243,10 @@ }, "@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 }, "@bkrem/react-transition-group": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@bkrem/react-transition-group/-/react-transition-group-1.3.3.tgz", - "integrity": "sha512-nUZaumHu/MMolELv+MhEEQzQtKsnfpbKBHtam/NK53tGICwU19tuffEXW8BLhm9HhQfN1H3+C0bsJv8Z7vzwEA==", "requires": { "chain-function": "^1.0.0", "dom-helpers": "^3.3.1", @@ -21813,14 +20258,10 @@ }, "@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==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.2", @@ -21829,8 +20270,6 @@ }, "@csstools/postcss-color-function": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -21839,8 +20278,6 @@ }, "@csstools/postcss-font-format-keywords": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21848,8 +20285,6 @@ }, "@csstools/postcss-hwb-function": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21857,8 +20292,6 @@ }, "@csstools/postcss-ic-unit": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -21867,8 +20300,6 @@ }, "@csstools/postcss-is-pseudo-class": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -21877,8 +20308,6 @@ }, "@csstools/postcss-nested-calc": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21886,8 +20315,6 @@ }, "@csstools/postcss-normalize-display-values": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21895,8 +20322,6 @@ }, "@csstools/postcss-oklab-function": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -21905,8 +20330,6 @@ }, "@csstools/postcss-progressive-custom-properties": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21914,8 +20337,6 @@ }, "@csstools/postcss-stepped-value-functions": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21923,8 +20344,6 @@ }, "@csstools/postcss-text-decoration-shorthand": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21932,8 +20351,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==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -21941,343 +20358,532 @@ }, "@csstools/postcss-unset-value": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", "dev": true, "requires": {} }, "@csstools/selector-specificity": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", "dev": true, "requires": {} }, - "@daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6": { - "version": "file:daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": { + "version": "file:daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "requires": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": { + "version": "file:daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "requires": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": { + "version": "file:daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "requires": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/contingent-claims-core": { + "version": "file:daml.js/contingent-claims-core-1.0.0", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/contingent-claims-core-1.0.0": { + "version": "file:daml.js/contingent-claims-core-1.0.0", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/contingent-claims-lifecycle-1.0.0": { + "version": "file:daml.js/contingent-claims-lifecycle-1.0.0", + "requires": { + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/contingent-claims-valuation-0.2.0": { + "version": "file:daml.js/contingent-claims-valuation-0.2.0", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": { + "version": "file:daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "requires": { + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-data": { + "version": "file:daml.js/daml-finance-app-data-0.0.2", + "requires": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-base": { + "version": "file:daml.js/daml-finance-app-interface-base-0.0.2", + "requires": { + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-base-0.0.2": { + "version": "file:daml.js/daml-finance-app-interface-base-0.0.2", + "requires": { + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-custody": { + "version": "file:daml.js/daml-finance-app-interface-custody-0.0.2", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-account-1.0.0": "file:../daml-finance-interface-account-1.0.0", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-decentralized": { + "version": "file:daml.js/daml-finance-app-interface-decentralized-0.0.2", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-distribution": { + "version": "file:daml.js/daml-finance-app-interface-distribution-0.0.2", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-distribution-0.0.2": { + "version": "file:daml.js/daml-finance-app-interface-distribution-0.0.2", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-issuance": { + "version": "file:daml.js/daml-finance-app-interface-issuance-0.0.2", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-distribution-0.0.2": "file:../daml-finance-app-interface-distribution-0.0.2", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-lending": { + "version": "file:daml.js/daml-finance-app-interface-lending-0.0.2", + "requires": { + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@mojotech/json-type-validation": "^3.1.0" + } + }, + "@daml.js/daml-finance-app-interface-lifecycle": { + "version": "file:daml.js/daml-finance-app-interface-lifecycle-0.0.2", "requires": { - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/contingent-claims-lifecycle-1.0.0": "file:../contingent-claims-lifecycle-1.0.0", + "@daml.js/contingent-claims-valuation-0.2.0": "file:../contingent-claims-valuation-0.2.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-claims-1.0.0": "file:../daml-finance-interface-claims-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": { - "version": "file:daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", + "@daml.js/daml-finance-app-interface-listing": { + "version": "file:daml.js/daml-finance-app-interface-listing-0.0.2", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2": { - "version": "file:daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", + "@daml.js/daml-finance-app-interface-settlement": { + "version": "file:daml.js/daml-finance-app-interface-settlement-0.0.2", "requires": { - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1": { - "version": "file:daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": { + "version": "file:daml.js/daml-finance-app-interface-settlement-0.0.2", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36": { - "version": "file:daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36", + "@daml.js/daml-finance-app-interface-structuring": { + "version": "file:daml.js/daml-finance-app-interface-structuring-0.0.2", "requires": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-instrument-bond-0.2.0": "file:../daml-finance-interface-instrument-bond-0.2.0", + "@daml.js/daml-finance-interface-instrument-equity-0.2.0": "file:../daml-finance-interface-instrument-equity-0.2.0", + "@daml.js/daml-finance-interface-instrument-generic-1.0.0": "file:../daml-finance-interface-instrument-generic-1.0.0", + "@daml.js/daml-finance-interface-instrument-swap-0.2.0": "file:../daml-finance-interface-instrument-swap-0.2.0", + "@daml.js/daml-finance-interface-instrument-token-1.0.0": "file:../daml-finance-interface-instrument-token-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164": { - "version": "file:daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", + "@daml.js/daml-finance-app-interface-trading": { + "version": "file:daml.js/daml-finance-app-interface-trading-0.0.2", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-settlement-0.0.2": "file:../daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": { - "version": "file:daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/daml-finance-app-setup": { + "version": "file:daml.js/daml-finance-app-setup-0.0.2", "requires": { + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-app-interface-base-0.0.2": "file:../daml-finance-app-interface-base-0.0.2", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9": { - "version": "file:daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", + "@daml.js/daml-finance-interface-account": { + "version": "file:daml.js/daml-finance-interface-account-1.0.0", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": { - "version": "file:daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", + "@daml.js/daml-finance-interface-account-1.0.0": { + "version": "file:daml.js/daml-finance-interface-account-1.0.0", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": { - "version": "file:daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", + "@daml.js/daml-finance-interface-claims": { + "version": "file:daml.js/daml-finance-interface-claims-1.0.0", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": { - "version": "file:daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/daml-finance-interface-claims-1.0.0": { + "version": "file:daml.js/daml-finance-interface-claims-1.0.0", "requires": { - "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": "file:../bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": { - "version": "file:daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "@daml.js/daml-finance-interface-data": { + "version": "file:daml.js/daml-finance-interface-data-1.0.0", "requires": { - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": "file:../eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": { - "version": "file:daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/daml-finance-interface-holding": { + "version": "file:daml.js/daml-finance-interface-holding-1.0.0", "requires": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b": { - "version": "file:daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", + "@daml.js/daml-finance-interface-holding-1.0.0": { + "version": "file:daml.js/daml-finance-interface-holding-1.0.0", "requires": { - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826": { - "version": "file:daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", + "@daml.js/daml-finance-interface-instrument-base": { + "version": "file:daml.js/daml-finance-interface-instrument-base-1.0.0", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": { - "version": "file:daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": { + "version": "file:daml.js/daml-finance-interface-instrument-base-1.0.0", "requires": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": { - "version": "file:daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/daml-finance-interface-instrument-bond": { + "version": "file:daml.js/daml-finance-interface-instrument-bond-0.2.0", "requires": { - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/contingent-claims-core": { - "version": "file:daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/daml-finance-interface-instrument-bond-0.2.0": { + "version": "file:daml.js/daml-finance-interface-instrument-bond-0.2.0", "requires": { - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": { - "version": "file:daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-equity": { + "version": "file:daml.js/daml-finance-interface-instrument-equity-0.2.0", "requires": { + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-app": { - "version": "file:daml.js/daml-finance-app-0.1.5", + "@daml.js/daml-finance-interface-instrument-equity-0.2.0": { + "version": "file:daml.js/daml-finance-interface-instrument-equity-0.2.0", "requires": { - "@daml.js/238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6": "file:../238c34f053632bfb2a4c53c730b7074dc169521d642c3d4abb3ae1d10c5653a6", - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "@daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2": "file:../37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", - "@daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1": "file:../3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", - "@daml.js/3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36": "file:../3c84d16a44aec5940e513f7d84a99507b2d05c9583afa8c91347e0a6e3e55d36", - "@daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164": "file:../3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9": "file:../5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b": "file:../a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", - "@daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826": "file:../a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", - "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": "file:../eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-account": { - "version": "file:daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", + "@daml.js/daml-finance-interface-instrument-generic": { + "version": "file:daml.js/daml-finance-interface-instrument-generic-1.0.0", "requires": { - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-claims": { - "version": "file:daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", + "@daml.js/daml-finance-interface-instrument-generic-1.0.0": { + "version": "file:daml.js/daml-finance-interface-instrument-generic-1.0.0", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", + "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/contingent-claims-core-1.0.0": "file:../contingent-claims-core-1.0.0", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": "file:../daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-data": { - "version": "file:daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", + "@daml.js/daml-finance-interface-instrument-swap": { + "version": "file:daml.js/daml-finance-interface-instrument-swap-0.2.0", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-holding": { - "version": "file:daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", + "@daml.js/daml-finance-interface-instrument-swap-0.2.0": { + "version": "file:daml.js/daml-finance-interface-instrument-swap-0.2.0", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date-1.0.0": "file:../daml-finance-interface-types-date-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-instrument-base": { - "version": "file:daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", + "@daml.js/daml-finance-interface-instrument-token": { + "version": "file:daml.js/daml-finance-interface-instrument-token-1.0.0", "requires": { - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-instrument-bond": { - "version": "file:daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", + "@daml.js/daml-finance-interface-instrument-token-1.0.0": { + "version": "file:daml.js/daml-finance-interface-instrument-token-1.0.0", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-instrument-base-1.0.0": "file:../daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-instrument-equity": { - "version": "file:daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", + "@daml.js/daml-finance-interface-lifecycle": { + "version": "file:daml.js/daml-finance-interface-lifecycle-1.0.0", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-instrument-generic": { - "version": "file:daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", + "@daml.js/daml-finance-interface-lifecycle-1.0.0": { + "version": "file:daml.js/daml-finance-interface-lifecycle-1.0.0", "requires": { - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008": "file:../880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841": "file:../c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-settlement-1.0.0": "file:../daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-instrument-swap": { - "version": "file:daml.js/086db20b6f52db9260ca9d87c2092e8fa21619f62c7687a63bcdfb9c7a6bd670", + "@daml.js/daml-finance-interface-settlement": { + "version": "file:daml.js/daml-finance-interface-settlement-1.0.0", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-instrument-token": { - "version": "file:daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", + "@daml.js/daml-finance-interface-settlement-1.0.0": { + "version": "file:daml.js/daml-finance-interface-settlement-1.0.0", "requires": { - "@daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a": "file:../87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", + "@daml.js/daml-finance-interface-holding-1.0.0": "file:../daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-types-common-1.0.0": "file:../daml-finance-interface-types-common-1.0.0", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-lifecycle": { - "version": "file:daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", + "@daml.js/daml-finance-interface-types-common": { + "version": "file:daml.js/daml-finance-interface-types-common-1.0.0", "requires": { - "@daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54": "file:../2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", - "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": "file:../eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-settlement": { - "version": "file:daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "@daml.js/daml-finance-interface-types-common-1.0.0": { + "version": "file:daml.js/daml-finance-interface-types-common-1.0.0", "requires": { - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-types": { - "version": "file:daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", + "@daml.js/daml-finance-interface-types-date": { + "version": "file:daml.js/daml-finance-interface-types-date-1.0.0", "requires": { "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": "file:../bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/daml-finance-interface-util": { - "version": "file:daml.js/200ca261e5eb1d239e728fc65421e5b2f693c6f738d5ccb8c6a5a40966a27ac5", + "@daml.js/daml-finance-interface-types-date-1.0.0": { + "version": "file:daml.js/daml-finance-interface-types-date-1.0.0", "requires": { - "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f": "file:../bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f", "@mojotech/json-type-validation": "^3.1.0" } }, - "@daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64": { - "version": "file:daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", + "@daml.js/daml-finance-interface-util": { + "version": "file:daml.js/daml-finance-interface-util-1.0.0", "requires": { "@daml.js/40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7": "file:../40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7", - "@daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3": "file:../7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f": "file:../87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657": "file:../97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657", + "@daml.js/d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662": "file:../d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662", "@mojotech/json-type-validation": "^3.1.0" } }, "@daml/ledger": { - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "resolved": "https://registry.npmjs.org/@daml/ledger/-/ledger-2.5.0-snapshot.20221010.10736.0.2f453a14.tgz", - "integrity": "sha512-eB0Z7Md8huD7L/c1DE7AuOVDtUaH90oNa7uAvd2UH9WnN3H+oRtV2xYOR6ZceZQhgKar4/S5nXat/aRcgH3k3Q==", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "requires": { - "@daml/types": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "@daml/types": "2.6.0-snapshot.20221218.11169.0.9d007b31", "@mojotech/json-type-validation": "^3.1.0", "cross-fetch": "^3.0.4", "events": "^3.1.0", @@ -22286,63 +20892,47 @@ } }, "@daml/react": { - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "resolved": "https://registry.npmjs.org/@daml/react/-/react-2.5.0-snapshot.20221010.10736.0.2f453a14.tgz", - "integrity": "sha512-Y5L9QBr1Iyfjp4SJvQ094Xd6uZDC00PRuP1RoqwyaakAA9n+AmPdg0gM8NCIX/Z8efurcojx6p3GOMEHRYKQmA==", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "requires": { - "@daml/ledger": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "@daml/types": "2.5.0-snapshot.20221010.10736.0.2f453a14" + "@daml/ledger": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "@daml/types": "2.6.0-snapshot.20221218.11169.0.9d007b31" } }, "@daml/types": { - "version": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "resolved": "https://registry.npmjs.org/@daml/types/-/types-2.5.0-snapshot.20221010.10736.0.2f453a14.tgz", - "integrity": "sha512-bBdGuTtr1ZhFBpb/paqk5jeNK0nV2/v+UBbNwA6M6aLzm6ze9PTtdAn4wz5+oe8wp1D6jv6zllwrjSrBNRM5/A==", + "version": "2.6.0-snapshot.20221218.11169.0.9d007b31", "requires": { "@mojotech/json-type-validation": "^3.1.0" } }, "@date-io/core": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", - "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" + "version": "2.16.0" }, "@date-io/date-fns": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz", - "integrity": "sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA==", "requires": { "@date-io/core": "^2.16.0" } }, "@date-io/dayjs": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz", - "integrity": "sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw==", "requires": { "@date-io/core": "^2.16.0" } }, "@date-io/luxon": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.0.tgz", - "integrity": "sha512-L8UXHa/9VbfRqP4KB7JUZwFgOVxo22rONVod1o7GMN2Oku4PzJ0k1kXc+nLP9lRlF1UAA28oQsQqn85Y/PdBZw==", "requires": { "@date-io/core": "^2.16.0" } }, "@date-io/moment": { "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.0.tgz", - "integrity": "sha512-wvu/40k128kF6P0jPbiyZcPR14VjJAgYEs+mYtsXz/AyWpC2DEJKly7ub+dpevUywbTzzpZysyCxCdzLzxD/uw==", "requires": { "@date-io/core": "^2.16.0" } }, "@emotion/babel-plugin": { "version": "11.10.2", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", - "integrity": "sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==", "requires": { "@babel/helper-module-imports": "^7.16.7", "@babel/plugin-syntax-jsx": "^7.17.12", @@ -22360,8 +20950,6 @@ }, "@emotion/cache": { "version": "11.10.3", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", - "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", "requires": { "@emotion/memoize": "^0.8.0", "@emotion/sheet": "^1.2.0", @@ -22371,27 +20959,19 @@ } }, "@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + "version": "0.9.0" }, "@emotion/is-prop-valid": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", "requires": { "@emotion/memoize": "^0.8.0" } }, "@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + "version": "0.8.0" }, "@emotion/react": { "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", - "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.10.0", @@ -22405,8 +20985,6 @@ }, "@emotion/serialize": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", - "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", "requires": { "@emotion/hash": "^0.9.0", "@emotion/memoize": "^0.8.0", @@ -22416,14 +20994,10 @@ } }, "@emotion/sheet": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", - "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + "version": "1.2.0" }, "@emotion/styled": { "version": "11.10.4", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", - "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.10.0", @@ -22434,30 +21008,20 @@ } }, "@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + "version": "0.8.0" }, "@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", "requires": {} }, "@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "version": "1.2.0" }, "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "version": "0.3.0" }, "@eslint/eslintrc": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -22473,14 +21037,10 @@ "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.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -22488,8 +21048,6 @@ }, "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" @@ -22497,16 +21055,12 @@ }, "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 } } }, "@humanwhocodes/config-array": { "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -22516,20 +21070,14 @@ }, "@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, "@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -22541,14 +21089,10 @@ "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", @@ -22557,8 +21101,6 @@ }, "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" @@ -22566,8 +21108,6 @@ }, "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" @@ -22575,8 +21115,6 @@ }, "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" @@ -22584,22 +21122,16 @@ }, "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 } } }, "@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 }, "@jest/console": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "requires": { "@jest/types": "^27.5.1", @@ -22612,8 +21144,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22621,8 +21151,6 @@ }, "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", @@ -22631,8 +21159,6 @@ }, "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" @@ -22640,20 +21166,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -22663,8 +21183,6 @@ }, "@jest/core": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "requires": { "@jest/console": "^27.5.1", @@ -22699,8 +21217,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22708,8 +21224,6 @@ }, "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", @@ -22718,8 +21232,6 @@ }, "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" @@ -22727,20 +21239,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -22750,8 +21256,6 @@ }, "@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==", "dev": true, "requires": { "@jest/fake-timers": "^27.5.1", @@ -22762,8 +21266,6 @@ }, "@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==", "dev": true, "requires": { "@jest/types": "^27.5.1", @@ -22776,8 +21278,6 @@ }, "@jest/globals": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "requires": { "@jest/environment": "^27.5.1", @@ -22787,8 +21287,6 @@ }, "@jest/reporters": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", @@ -22820,8 +21318,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22829,8 +21325,6 @@ }, "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", @@ -22839,8 +21333,6 @@ }, "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" @@ -22848,26 +21340,18 @@ }, "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" @@ -22877,8 +21361,6 @@ }, "@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" @@ -22886,8 +21368,6 @@ }, "@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==", "dev": true, "requires": { "callsites": "^3.0.0", @@ -22897,16 +21377,12 @@ "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 } } }, "@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, "requires": { "@jest/console": "^27.5.1", @@ -22917,8 +21393,6 @@ }, "@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, "requires": { "@jest/test-result": "^27.5.1", @@ -22929,8 +21403,6 @@ }, "@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", @@ -22952,8 +21424,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -22961,8 +21431,6 @@ }, "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", @@ -22971,8 +21439,6 @@ }, "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" @@ -22980,26 +21446,18 @@ }, "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" @@ -23009,8 +21467,6 @@ }, "@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, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -23022,8 +21478,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -23031,8 +21485,6 @@ }, "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", @@ -23041,8 +21493,6 @@ }, "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" @@ -23050,20 +21500,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -23073,27 +21517,19 @@ }, "@jridgewell/gen-mapping": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + "version": "3.1.0" }, "@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.1.2" }, "@jridgewell/source-map": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -23102,8 +21538,6 @@ "dependencies": { "@jridgewell/gen-mapping": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -23114,14 +21548,10 @@ } }, "@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==" + "version": "1.4.14" }, "@jridgewell/trace-mapping": { "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -23129,22 +21559,16 @@ }, "@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 }, "@mojotech/json-type-validation": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mojotech/json-type-validation/-/json-type-validation-3.1.0.tgz", - "integrity": "sha512-ThH2EbHEUCPMHhXAtmYcDi0gmV+PZak4uvuWBMiBDqUuz7gGQUrsE5o1J6kKNLDX5cXAPqsfJ7uTfTcNdCDXxA==", "requires": { "lodash.isequal": "^4.5.0" } }, "@mui/base": { "version": "5.0.0-alpha.101", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.101.tgz", - "integrity": "sha512-a54BcXvArGOKUZ2zyS/7B9GNhAGgfomEQSkfEZ88Nc9jKvXA+Mppenfz5o4JCAnD8c4VlePmz9rKOYvvum1bZw==", "requires": { "@babel/runtime": "^7.19.0", "@emotion/is-prop-valid": "^1.2.0", @@ -23157,22 +21581,16 @@ } }, "@mui/core-downloads-tracker": { - "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.9.tgz", - "integrity": "sha512-rqoFu4qww6KJBbXYhyRd9YXjwBHa3ylnBPSWbGf1bdfG0AYMKmVzg8zxkWvxAWOp97kvx3M2kNPb0xMIDZiogQ==" + "version": "5.10.9" }, "@mui/icons-material": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.9.tgz", - "integrity": "sha512-sqClXdEM39WKQJOQ0ZCPTptaZgqwibhj2EFV9N0v7BU1PO8y4OcX/a2wIQHn4fNuDjIZktJIBrmU23h7aqlGgg==", "requires": { "@babel/runtime": "^7.19.0" } }, "@mui/lab": { "version": "5.0.0-alpha.103", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.103.tgz", - "integrity": "sha512-cYfkgSXZH/cG8BM4UGtPK0Vr9P79wfvF4S5VGiEbEsScU7yROylLZW1l11yg5nZEIVUJ7jQmcaLdlwVSTSbjzg==", "requires": { "@babel/runtime": "^7.19.0", "@mui/base": "5.0.0-alpha.101", @@ -23186,8 +21604,6 @@ }, "@mui/material": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.9.tgz", - "integrity": "sha512-sdOzlgpCmyw48je+E7o9UGGJpgBaF+60FlTRpVpcd/z+LUhnuzzuis891yPI5dPPXLBDL/bO4SsGg51lgNeLBw==", "requires": { "@babel/runtime": "^7.19.0", "@mui/base": "5.0.0-alpha.101", @@ -23205,8 +21621,6 @@ }, "@mui/private-theming": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz", - "integrity": "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==", "requires": { "@babel/runtime": "^7.19.0", "@mui/utils": "^5.10.9", @@ -23215,8 +21629,6 @@ }, "@mui/styled-engine": { "version": "5.10.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz", - "integrity": "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==", "requires": { "@babel/runtime": "^7.19.0", "@emotion/cache": "^11.10.3", @@ -23226,8 +21638,6 @@ }, "@mui/styles": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.10.9.tgz", - "integrity": "sha512-dK6tsHkEp88MkwEDCxbqscj4Fa2aYBkfwy1MXMCexzx9TqxuahC0KSxBHfMMWZ0zV7xW5Suzwu8vveCp4uFN5A==", "requires": { "@babel/runtime": "^7.19.0", "@emotion/hash": "^0.9.0", @@ -23250,8 +21660,6 @@ }, "@mui/system": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.9.tgz", - "integrity": "sha512-B6fFC0sK06hNmqY7fAUfwShQv594+u/DT1YEFHPtK4laouTu7V4vSGQWi1WJT9Bjs9Db5D1bRDJ+Yy+tc3QOYA==", "requires": { "@babel/runtime": "^7.19.0", "@mui/private-theming": "^5.10.9", @@ -23265,14 +21673,10 @@ }, "@mui/types": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", - "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==", "requires": {} }, "@mui/utils": { "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz", - "integrity": "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==", "requires": { "@babel/runtime": "^7.19.0", "@types/prop-types": "^15.7.5", @@ -23283,8 +21687,6 @@ }, "@mui/x-date-pickers": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.4.tgz", - "integrity": "sha512-Co4tbwqXSdHfR8UoZSHQpDZqnFdikzQr0lQPG2AjGh9BdB4EdY3YE2+sZyAltjk/AXxp5JzIWDZ2Kj83ClzjwA==", "requires": { "@babel/runtime": "^7.18.9", "@date-io/core": "^2.15.0", @@ -23302,8 +21704,6 @@ }, "@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==", "dev": true, "requires": { "eslint-scope": "5.1.1" @@ -23311,8 +21711,6 @@ "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", @@ -23321,16 +21719,12 @@ }, "estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true } } }, "@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", @@ -23339,14 +21733,10 @@ }, "@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", @@ -23355,8 +21745,6 @@ }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.8.tgz", - "integrity": "sha512-wxXRwf+IQ6zvHSJZ+5T2RQNEsq+kx4jKRXfFvdt3nBIUzJUAvXEFsUeoaohDe/Kr84MTjGwcuIUPNcstNJORsA==", "dev": true, "requires": { "ansi-html-community": "^0.0.8", @@ -23372,26 +21760,18 @@ "dependencies": { "source-map": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } }, "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + "version": "2.11.6" }, "@remix-run/router": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz", - "integrity": "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==" + "version": "1.0.2" }, "@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==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.10.4", @@ -23400,8 +21780,6 @@ }, "@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==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -23414,8 +21792,6 @@ }, "@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==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -23424,8 +21800,6 @@ }, "@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -23435,28 +21809,20 @@ "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 } } }, "@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 }, "@sinclair/typebox": { "version": "0.24.46", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.46.tgz", - "integrity": "sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw==", "dev": true }, "@sinonjs/commons": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -23464,8 +21830,6 @@ }, "@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==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -23473,8 +21837,6 @@ }, "@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==", "dev": true, "requires": { "ejs": "^3.1.6", @@ -23485,56 +21847,38 @@ }, "@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 }, "@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 }, "@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 }, "@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==", "dev": true, "requires": { "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", @@ -23549,8 +21893,6 @@ }, "@svgr/core": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", "dev": true, "requires": { "@svgr/plugin-jsx": "^5.5.0", @@ -23560,8 +21902,6 @@ }, "@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, "requires": { "@babel/types": "^7.12.6" @@ -23569,8 +21909,6 @@ }, "@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==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -23581,8 +21919,6 @@ }, "@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", @@ -23592,8 +21928,6 @@ }, "@svgr/webpack": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -23608,21 +21942,14 @@ }, "@tootallnate/once": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, "@trysound/sax": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, "@types/babel__core": { "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -23633,18 +21960,12 @@ }, "@types/babel__generator": { "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -23652,17 +21973,12 @@ }, "@types/babel__traverse": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", - "dev": true, "requires": { "@babel/types": "^7.3.0" } }, "@types/body-parser": { "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, "requires": { "@types/connect": "*", @@ -23671,8 +21987,6 @@ }, "@types/bonjour": { "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", "dev": true, "requires": { "@types/node": "*" @@ -23680,8 +21994,6 @@ }, "@types/connect": { "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dev": true, "requires": { "@types/node": "*" @@ -23689,8 +22001,6 @@ }, "@types/connect-history-api-fallback": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", "dev": true, "requires": { "@types/express-serve-static-core": "*", @@ -23699,8 +22009,6 @@ }, "@types/d3": { "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", - "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", "requires": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -23735,185 +22043,125 @@ } }, "@types/d3-array": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.3.tgz", - "integrity": "sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==" + "version": "3.0.3" }, "@types/d3-axis": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.1.tgz", - "integrity": "sha512-zji/iIbdd49g9WN0aIsGcwcTBUkgLsCSwB+uH+LPVDAiKWENMtI3cJEWt+7/YYwelMoZmbBfzA3qCdrZ2XFNnw==", "requires": { "@types/d3-selection": "*" } }, "@types/d3-brush": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.1.tgz", - "integrity": "sha512-B532DozsiTuQMHu2YChdZU0qsFJSio3Q6jmBYGYNp3gMDzBmuFFgPt9qKA4VYuLZMp4qc6eX7IUFUEsvHiXZAw==", "requires": { "@types/d3-selection": "*" } }, "@types/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-eQfcxIHrg7V++W8Qxn6QkqBNBokyhdWSAS73AbkbMzvLQmVVBviknoz2SRS/ZJdIOmhcmmdCRE/NFOm28Z1AMw==" + "version": "3.0.1" }, "@types/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + "version": "3.1.0" }, "@types/d3-contour": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.1.tgz", - "integrity": "sha512-C3zfBrhHZvrpAAK3YXqLWVAGo87A4SvJ83Q/zVJ8rFWJdKejUnDYaWZPkA8K84kb2vDA/g90LTQAz7etXcgoQQ==", "requires": { "@types/d3-array": "*", "@types/geojson": "*" } }, "@types/d3-delaunay": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", - "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" + "version": "6.0.1" }, "@types/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-NhxMn3bAkqhjoxabVJWKryhnZXXYYVQxaBnbANu0O94+O/nX9qSjrA1P1jbAQJxJf+VC72TxDX/YJcKue5bRqw==" + "version": "3.0.1" }, "@types/d3-drag": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.1.tgz", - "integrity": "sha512-o1Va7bLwwk6h03+nSM8dpaGEYnoIG19P0lKqlic8Un36ymh9NSkNFX1yiXMKNMx8rJ0Kfnn2eovuFaL6Jvj0zA==", "requires": { "@types/d3-selection": "*" } }, "@types/d3-dsv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.0.tgz", - "integrity": "sha512-o0/7RlMl9p5n6FQDptuJVMxDf/7EDEv2SYEO/CwdG2tr1hTfUVi0Iavkk2ax+VpaQ/1jVhpnj5rq1nj8vwhn2A==" + "version": "3.0.0" }, "@types/d3-ease": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", - "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + "version": "3.0.0" }, "@types/d3-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-toZJNOwrOIqz7Oh6Q7l2zkaNfXkfR7mFSJvGvlD/Ciq/+SQ39d5gynHJZ/0fjt83ec3WL7+u3ssqIijQtBISsw==", "requires": { "@types/d3-dsv": "*" } }, "@types/d3-force": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.3.tgz", - "integrity": "sha512-z8GteGVfkWJMKsx6hwC3SiTSLspL98VNpmvLpEFJQpZPq6xpA1I8HNBDNSpukfK0Vb0l64zGFhzunLgEAcBWSA==" + "version": "3.0.3" }, "@types/d3-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", - "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" + "version": "3.0.1" }, "@types/d3-geo": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.2.tgz", - "integrity": "sha512-DbqK7MLYA8LpyHQfv6Klz0426bQEf7bRTvhMy44sNGVyZoWn//B0c+Qbeg8Osi2Obdc9BLLXYAKpyWege2/7LQ==", "requires": { "@types/geojson": "*" } }, "@types/d3-hierarchy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.0.tgz", - "integrity": "sha512-g+sey7qrCa3UbsQlMZZBOHROkFqx7KZKvUpRzI/tAp/8erZWpYq7FgNKvYwebi2LaEiVs1klhUfd3WCThxmmWQ==" + "version": "3.1.0" }, "@types/d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", "requires": { "@types/d3-color": "*" } }, "@types/d3-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", - "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + "version": "3.0.0" }, "@types/d3-polygon": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", - "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" + "version": "3.0.0" }, "@types/d3-quadtree": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", - "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" + "version": "3.0.2" }, "@types/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" + "version": "3.0.1" }, "@types/d3-scale": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-Yk4htunhPAwN0XGlIwArRomOjdoBFXC3+kCxK2Ubg7I9shQlVSJy/pG/Ht5ASN+gdMIalpk8TJ5xV74jFsetLA==", "requires": { "@types/d3-time": "*" } }, "@types/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + "version": "3.0.0" }, "@types/d3-selection": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.3.tgz", - "integrity": "sha512-Mw5cf6nlW1MlefpD9zrshZ+DAWL4IQ5LnWfRheW6xwsdaWOb6IRRu2H7XPAQcyXEx1D7XQWgdoKR83ui1/HlEA==" + "version": "3.0.3" }, "@types/d3-shape": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-jYIYxFFA9vrJ8Hd4Se83YI6XF+gzDL1aC5DCsldai4XYYiVNdhtpGbA/GM6iyQ8ayhSp3a148LY34hy7A4TxZA==", "requires": { "@types/d3-path": "*" } }, "@types/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + "version": "3.0.0" }, "@types/d3-time-format": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", - "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" + "version": "4.0.0" }, "@types/d3-timer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", - "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + "version": "3.0.0" }, "@types/d3-transition": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.2.tgz", - "integrity": "sha512-jo5o/Rf+/u6uerJ/963Dc39NI16FQzqwOc54bwvksGAdVfvDrqDpVeq95bEvPtBwLCVZutAEyAtmSyEMxN7vxQ==", "requires": { "@types/d3-selection": "*" } }, "@types/d3-zoom": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.1.tgz", - "integrity": "sha512-7s5L9TjfqIYQmQQEUcpMAcBOahem7TRoSO/+Gkz02GbMVuULiZzjF2BOdw291dbO2aNon4m2OdFsRGaCq2caLQ==", "requires": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" @@ -23921,8 +22169,6 @@ }, "@types/eslint": { "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", "dev": true, "requires": { "@types/estree": "*", @@ -23931,8 +22177,6 @@ }, "@types/eslint-scope": { "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -23941,14 +22185,10 @@ }, "@types/estree": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, "@types/express": { "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "dev": true, "requires": { "@types/body-parser": "*", @@ -23959,8 +22199,6 @@ }, "@types/express-serve-static-core": { "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "dev": true, "requires": { "@types/node": "*", @@ -23969,14 +22207,10 @@ } }, "@types/geojson": { - "version": "7946.0.10", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + "version": "7946.0.10" }, "@types/graceful-fs": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, "requires": { "@types/node": "*" @@ -23984,14 +22218,10 @@ }, "@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.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "requires": { "@types/node": "*" @@ -23999,14 +22229,10 @@ }, "@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==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" @@ -24014,8 +22240,6 @@ }, "@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==", "dev": true, "requires": { "@types/istanbul-lib-report": "*" @@ -24023,72 +22247,54 @@ }, "@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/jwt-simple": { "version": "0.5.33", - "resolved": "https://registry.npmjs.org/@types/jwt-simple/-/jwt-simple-0.5.33.tgz", - "integrity": "sha512-RcVbKkbUP6u5yFd9HuLhCkAYlT1FQVZylNsxxgaVMZxMajwrVTmQei7C6yMXSoAkXJXpGOUtbsY6Q9kq3+p93g==", "dev": true }, "@types/mime": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/node": { "version": "18.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", - "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", "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==" + "version": "4.0.0" }, "@types/prettier": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true + }, + "@types/preval.macro": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/preval.macro/-/preval.macro-3.0.0.tgz", + "integrity": "sha512-mm7qx+Aj9bhMcK9Y3UHNy6zCQneRj+GBFlCi+cxtx66iLU4yarOupVLrFadlG+Cd4TEsdo4og0REhzUQQ7m3fg==", "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==" + "version": "15.7.5" }, "@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": "17.0.50", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz", - "integrity": "sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -24097,8 +22303,6 @@ }, "@types/react-dom": { "version": "17.0.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz", - "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==", "dev": true, "requires": { "@types/react": "^17" @@ -24106,29 +22310,21 @@ }, "@types/react-is": { "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", "requires": { "@types/react": "*" } }, "@types/react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", "requires": { "@types/react": "*" } }, "@types/resize-observer-browser": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz", - "integrity": "sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg==" + "version": "0.1.7" }, "@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": "*" @@ -24136,25 +22332,17 @@ }, "@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.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "version": "0.16.2" }, "@types/semver": { "version": "7.3.12", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", - "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", "dev": true }, "@types/serve-index": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", "dev": true, "requires": { "@types/express": "*" @@ -24162,8 +22350,6 @@ }, "@types/serve-static": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { "@types/mime": "*", @@ -24172,8 +22358,6 @@ }, "@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": "*" @@ -24181,26 +22365,18 @@ }, "@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 }, "@types/trusted-types": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", - "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", "dev": true }, "@types/uuid": { "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", "dev": true }, "@types/ws": { "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, "requires": { "@types/node": "*" @@ -24208,8 +22384,6 @@ }, "@types/yargs": { "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -24217,14 +22391,10 @@ }, "@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.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", - "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", "dev": true, "requires": { "@typescript-eslint/scope-manager": "5.40.1", @@ -24239,8 +22409,6 @@ "dependencies": { "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24250,8 +22418,6 @@ }, "@typescript-eslint/experimental-utils": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.40.1.tgz", - "integrity": "sha512-lynjgnQuoCgxtYgYWjoQqijk0kYQNiztnVhoqha3N0kMYFVPURidzCq2vn9XvUUu2XxP130ZRKVDKyeGa2bhbw==", "dev": true, "requires": { "@typescript-eslint/utils": "5.40.1" @@ -24259,8 +22425,6 @@ }, "@typescript-eslint/parser": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz", - "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==", "dev": true, "requires": { "@typescript-eslint/scope-manager": "5.40.1", @@ -24271,8 +22435,6 @@ }, "@typescript-eslint/scope-manager": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "requires": { "@typescript-eslint/types": "5.40.1", @@ -24281,8 +22443,6 @@ }, "@typescript-eslint/type-utils": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", - "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", "dev": true, "requires": { "@typescript-eslint/typescript-estree": "5.40.1", @@ -24293,14 +22453,10 @@ }, "@typescript-eslint/types": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "requires": { "@typescript-eslint/types": "5.40.1", @@ -24314,8 +22470,6 @@ "dependencies": { "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24325,8 +22479,6 @@ }, "@typescript-eslint/utils": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", - "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -24341,8 +22493,6 @@ "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", @@ -24351,14 +22501,10 @@ }, "estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24368,8 +22514,6 @@ }, "@typescript-eslint/visitor-keys": { "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "requires": { "@typescript-eslint/types": "5.40.1", @@ -24378,8 +22522,6 @@ }, "@webassemblyjs/ast": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", @@ -24388,26 +22530,18 @@ }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", @@ -24417,14 +22551,10 @@ }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -24435,8 +22565,6 @@ }, "@webassemblyjs/ieee754": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" @@ -24444,8 +22572,6 @@ }, "@webassemblyjs/leb128": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" @@ -24453,14 +22579,10 @@ }, "@webassemblyjs/utf8": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -24475,8 +22597,6 @@ }, "@webassemblyjs/wasm-gen": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -24488,8 +22608,6 @@ }, "@webassemblyjs/wasm-opt": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -24500,8 +22618,6 @@ }, "@webassemblyjs/wasm-parser": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -24514,8 +22630,6 @@ }, "@webassemblyjs/wast-printer": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", @@ -24524,26 +22638,18 @@ }, "@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", @@ -24552,14 +22658,10 @@ }, "acorn": { "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-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", @@ -24568,30 +22670,22 @@ "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-node": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", "dev": true, "requires": { "acorn": "^7.0.0", @@ -24601,28 +22695,20 @@ "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-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.1", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", - "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "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", @@ -24631,8 +22717,6 @@ }, "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" @@ -24640,8 +22724,6 @@ }, "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", @@ -24652,8 +22734,6 @@ }, "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" @@ -24661,8 +22741,6 @@ "dependencies": { "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -24673,23 +22751,17 @@ }, "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" @@ -24697,28 +22769,20 @@ }, "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==", "requires": { "color-convert": "^1.9.0" } }, "anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -24727,14 +22791,10 @@ }, "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" @@ -24742,8 +22802,6 @@ }, "aria-query": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, "requires": { "@babel/runtime": "^7.10.2", @@ -24752,14 +22810,10 @@ }, "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.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -24771,14 +22825,10 @@ }, "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.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -24789,8 +22839,6 @@ }, "array.prototype.flatmap": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -24801,8 +22849,6 @@ }, "array.prototype.reduce": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -24814,14 +22860,10 @@ }, "asap": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "asn1.js": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -24830,40 +22872,27 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "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 + "version": "0.4.0" }, "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.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", "dev": true, "requires": { "browserslist": "^4.21.4", @@ -24875,26 +22904,40 @@ } }, "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.5" }, "axe-core": { "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", "dev": true }, + "axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "axobject-query": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, "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", @@ -24909,8 +22952,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -24918,8 +22959,6 @@ }, "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", @@ -24928,8 +22967,6 @@ }, "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" @@ -24937,20 +22974,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -24960,8 +22991,6 @@ }, "babel-loader": { "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", @@ -24972,8 +23001,6 @@ "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", @@ -24985,8 +23012,6 @@ }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -24994,8 +23019,6 @@ }, "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", @@ -25007,8 +23030,6 @@ }, "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", @@ -25019,8 +23040,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==", "requires": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -25029,15 +23048,11 @@ }, "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", @@ -25047,8 +23062,6 @@ }, "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", @@ -25057,23 +23070,28 @@ }, "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-preval": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-preval/-/babel-plugin-preval-5.1.0.tgz", + "integrity": "sha512-G5R+xmo5LS41A4UyZjOjV0mp9AvkuCyUOAJ6TOv/jTZS+VKh7L7HUDRcCSOb0YCM/u0fFarh7Diz0wjY8rFNFg==", + "requires": { + "@babel/runtime": "^7.12.5", + "@types/babel__core": "^7.1.12", + "babel-plugin-macros": "^3.0.1", + "require-from-string": "^2.0.2" + } + }, "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", @@ -25092,8 +23110,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", @@ -25102,8 +23118,6 @@ }, "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", @@ -25126,25 +23140,17 @@ }, "balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "version": "1.5.1" }, "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", @@ -25155,31 +23161,21 @@ }, "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 }, "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==" + "version": "5.2.1" }, "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", @@ -25198,14 +23194,10 @@ "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" @@ -25213,8 +23205,6 @@ }, "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" @@ -25222,16 +23212,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "bonjour-service": { "version": "1.0.14", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", - "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", "dev": true, "requires": { "array-flatten": "^2.1.2", @@ -25242,14 +23228,10 @@ }, "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", @@ -25258,28 +23240,20 @@ }, "braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" } }, "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "version": "1.1.0" }, "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 }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -25291,8 +23265,6 @@ }, "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==", "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -25301,8 +23273,6 @@ }, "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==", "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -25312,8 +23282,6 @@ }, "browserify-rsa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -25321,8 +23289,6 @@ }, "browserify-sign": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -25337,8 +23303,6 @@ }, "browserslist": { "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "requires": { "caniuse-lite": "^1.0.30001400", "electron-to-chromium": "^1.4.251", @@ -25348,8 +23312,6 @@ }, "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" @@ -25357,8 +23319,6 @@ }, "buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -25366,45 +23326,31 @@ }, "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 }, "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "version": "1.0.3" }, "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==", "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==" + "version": "3.1.0" }, "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", @@ -25413,20 +23359,14 @@ }, "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", @@ -25436,25 +23376,17 @@ } }, "caniuse-lite": { - "version": "1.0.30001421", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", - "integrity": "sha512-Sw4eLbgUJAEhjLs1Fa+mk45sidp1wRn5y6GtDpHGBaNJ9OCDJaVh2tIaWWUnGfuXfKf1JCBaIarak3FkVAvEeA==" + "version": "1.0.30001421" }, "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 }, "chain-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz", - "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" + "version": "1.0.1" }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -25462,28 +23394,20 @@ }, "dependencies": { "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": "1.0.5" } } }, "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.1.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", - "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==", "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", @@ -25498,8 +23422,6 @@ "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" @@ -25509,20 +23431,14 @@ }, "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.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==", "dev": true }, "cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -25530,24 +23446,16 @@ }, "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 }, "classcat": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.4.tgz", - "integrity": "sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==" + "version": "5.0.4" }, "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.3.2" }, "clean-css": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -25555,16 +23463,12 @@ "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", @@ -25573,25 +23477,17 @@ } }, "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + "version": "2.1.2" }, "clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + "version": "1.2.1" }, "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", @@ -25601,71 +23497,48 @@ }, "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==", "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==" + "version": "1.1.3" }, "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.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "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": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "version": "7.2.0" }, "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" @@ -25673,8 +23546,6 @@ }, "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", @@ -25688,8 +23559,6 @@ "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" @@ -25697,40 +23566,28 @@ }, "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" @@ -25738,37 +23595,25 @@ }, "content-type": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "version": "1.9.0" }, "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.25.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", - "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==", "dev": true }, "core-js-compat": { "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, "requires": { "browserslist": "^4.21.4" @@ -25776,20 +23621,14 @@ }, "core-js-pure": { "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz", - "integrity": "sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg==", "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.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -25800,24 +23639,18 @@ }, "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==", "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "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==", "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -25828,8 +23661,6 @@ }, "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==", "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -25841,16 +23672,12 @@ }, "cross-fetch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "requires": { "node-fetch": "2.6.7" } }, "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", @@ -25860,8 +23687,6 @@ }, "crypto-browserify": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -25878,14 +23703,10 @@ }, "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" @@ -25893,15 +23714,11 @@ }, "css-declaration-sorter": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", "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" @@ -25909,8 +23726,6 @@ }, "css-loader": { "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "requires": { "icss-utils": "^5.1.0", @@ -25925,8 +23740,6 @@ "dependencies": { "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -25936,8 +23749,6 @@ }, "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", @@ -25950,8 +23761,6 @@ "dependencies": { "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -25962,8 +23771,6 @@ }, "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" @@ -25971,14 +23778,10 @@ }, "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -25989,23 +23792,17 @@ }, "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", @@ -26017,14 +23814,10 @@ }, "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", @@ -26033,16 +23826,12 @@ "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-vendor": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", "requires": { "@babel/runtime": "^7.8.3", "is-in-browser": "^1.0.2" @@ -26050,26 +23839,18 @@ }, "css-what": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "cssdb": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", - "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "dev": true }, "cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssnano": { "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", "dev": true, "requires": { "cssnano-preset-default": "^5.2.12", @@ -26079,8 +23860,6 @@ }, "cssnano-preset-default": { "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", "dev": true, "requires": { "css-declaration-sorter": "^6.3.0", @@ -26116,15 +23895,11 @@ }, "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" @@ -26132,8 +23907,6 @@ "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", @@ -26142,28 +23915,20 @@ }, "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" @@ -26171,21 +23936,15 @@ "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.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "version": "3.1.1" }, "d3": { "version": "7.6.1", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz", - "integrity": "sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==", "requires": { "d3-array": "3", "d3-axis": "3", @@ -26221,21 +23980,15 @@ }, "d3-array": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz", - "integrity": "sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==", "requires": { "internmap": "1 - 2" } }, "d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + "version": "3.0.0" }, "d3-brush": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "requires": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -26246,42 +23999,30 @@ }, "d3-chord": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "requires": { "d3-path": "1 - 3" } }, "d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + "version": "3.1.0" }, "d3-contour": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz", - "integrity": "sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==", "requires": { "d3-array": "^3.2.0" } }, "d3-delaunay": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", - "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", "requires": { "delaunator": "5" } }, "d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + "version": "3.0.1" }, "d3-drag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "requires": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -26289,8 +24030,6 @@ }, "d3-dsv": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "requires": { "commander": "7", "iconv-lite": "0.6", @@ -26298,22 +24037,16 @@ } }, "d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + "version": "3.0.1" }, "d3-fetch": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "requires": { "d3-dsv": "1 - 3" } }, "d3-force": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "requires": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -26321,55 +24054,37 @@ } }, "d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + "version": "3.1.0" }, "d3-geo": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", - "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", "requires": { "d3-array": "2.5.0 - 3" } }, "d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + "version": "3.1.2" }, "d3-interpolate": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "requires": { "d3-color": "1 - 3" } }, "d3-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", - "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" + "version": "3.0.1" }, "d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + "version": "3.0.1" }, "d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + "version": "3.0.1" }, "d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + "version": "3.0.1" }, "d3-scale": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "requires": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -26380,51 +24095,37 @@ }, "d3-scale-chromatic": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", "requires": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + "version": "3.0.0" }, "d3-shape": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", - "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", "requires": { "d3-path": "1 - 3" } }, "d3-time": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", "requires": { "d3-array": "2 - 3" } }, "d3-time-format": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "requires": { "d3-time": "1 - 3" } }, "d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + "version": "3.0.1" }, "d3-transition": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "requires": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -26435,8 +24136,6 @@ }, "d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "requires": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -26447,14 +24146,10 @@ }, "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", @@ -26464,8 +24159,6 @@ "dependencies": { "tr46": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "requires": { "punycode": "^2.1.1" @@ -26473,8 +24166,6 @@ }, "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", @@ -26485,46 +24176,32 @@ } }, "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + "version": "2.29.3" }, "debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } }, "decimal.js": { "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", "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-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.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, "default-gateway": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { "execa": "^5.0.0" @@ -26532,14 +24209,10 @@ }, "define-lazy-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, "define-properties": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -26547,39 +24220,26 @@ }, "defined": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", "dev": true }, "delaunator": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", "requires": { "robust-predicates": "^3.0.0" } }, "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true + "version": "1.0.0" }, "depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + "version": "2.0.3" }, "des.js": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -26587,26 +24247,18 @@ }, "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", @@ -26615,8 +24267,6 @@ "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" @@ -26624,16 +24274,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "detective": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", "dev": true, "requires": { "acorn-node": "^1.8.2", @@ -26643,20 +24289,14 @@ }, "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": "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 }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -26664,16 +24304,12 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "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" @@ -26681,20 +24317,14 @@ }, "dlv": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, "dns-equal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, "requires": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -26702,8 +24332,6 @@ }, "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" @@ -26711,8 +24339,6 @@ }, "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" @@ -26720,16 +24346,12 @@ }, "dom-helpers": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", "requires": { "@babel/runtime": "^7.1.2" } }, "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", @@ -26739,14 +24361,10 @@ }, "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" @@ -26754,16 +24372,12 @@ "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" @@ -26771,8 +24385,6 @@ }, "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", @@ -26782,8 +24394,6 @@ }, "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", @@ -26792,46 +24402,32 @@ }, "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.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dev": true, "requires": { "jake": "^10.8.5" } }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "version": "1.4.284" }, "elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -26843,40 +24439,28 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "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.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -26885,22 +24469,16 @@ }, "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==", "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" @@ -26908,8 +24486,6 @@ }, "es-abstract": { "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -26939,20 +24515,14 @@ }, "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-module-lexer": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, "es-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" @@ -26960,8 +24530,6 @@ }, "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==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -26969,25 +24537,17 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "version": "3.1.1" }, "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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "version": "4.0.0" }, "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", @@ -26999,8 +24559,6 @@ "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", @@ -27009,8 +24567,6 @@ }, "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", @@ -27023,21 +24579,15 @@ }, "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" @@ -27047,8 +24597,6 @@ }, "eslint": { "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.3", @@ -27093,8 +24641,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -27102,14 +24648,10 @@ }, "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", @@ -27118,8 +24660,6 @@ }, "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" @@ -27127,14 +24667,10 @@ }, "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 }, "globals": { "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -27142,14 +24678,10 @@ }, "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" @@ -27157,8 +24689,6 @@ }, "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" @@ -27166,16 +24696,12 @@ }, "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", @@ -27196,8 +24722,6 @@ }, "eslint-import-resolver-node": { "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, "requires": { "debug": "^3.2.7", @@ -27206,8 +24730,6 @@ "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" @@ -27217,8 +24739,6 @@ }, "eslint-module-utils": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "requires": { "debug": "^3.2.7" @@ -27226,8 +24746,6 @@ "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" @@ -27237,8 +24755,6 @@ }, "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", @@ -27247,8 +24763,6 @@ }, "eslint-plugin-import": { "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -27268,8 +24782,6 @@ "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" @@ -27277,8 +24789,6 @@ }, "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" @@ -27286,16 +24796,12 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "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" @@ -27303,8 +24809,6 @@ }, "eslint-plugin-jsx-a11y": { "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", "dev": true, "requires": { "@babel/runtime": "^7.18.9", @@ -27324,8 +24828,6 @@ }, "eslint-plugin-react": { "version": "7.31.10", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz", - "integrity": "sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA==", "dev": true, "requires": { "array-includes": "^3.1.5", @@ -27346,8 +24848,6 @@ "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" @@ -27355,8 +24855,6 @@ }, "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", @@ -27368,15 +24866,11 @@ }, "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.7.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.7.3.tgz", - "integrity": "sha512-uLMVBkBI3rNOrV3mbtjLsm76X0cPac+cBNYn8ZwwvsYiDKKBXHAjZGtbjvRHEwNxwrsJm+rx4RtGWDjFRTWNuw==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.13.0" @@ -27384,8 +24878,6 @@ }, "eslint-scope": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -27394,8 +24886,6 @@ }, "eslint-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { "eslint-visitor-keys": "^2.0.0" @@ -27403,22 +24893,16 @@ "dependencies": { "eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, "eslint-visitor-keys": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "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", @@ -27430,8 +24914,6 @@ "dependencies": { "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -27442,8 +24924,6 @@ }, "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" @@ -27451,14 +24931,10 @@ }, "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": "*", @@ -27468,14 +24944,10 @@ }, "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -27486,8 +24958,6 @@ }, "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" @@ -27497,8 +24967,6 @@ }, "espree": { "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -27508,14 +24976,10 @@ }, "esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -27523,8 +24987,6 @@ }, "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" @@ -27532,43 +24994,29 @@ }, "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==" + "version": "3.3.0" }, "evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -27576,8 +25024,6 @@ }, "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", @@ -27593,14 +25039,10 @@ }, "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": "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", @@ -27611,8 +25053,6 @@ }, "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", @@ -27650,14 +25090,10 @@ "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" @@ -27665,22 +25101,16 @@ }, "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", @@ -27692,8 +25122,6 @@ "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" @@ -27703,20 +25131,14 @@ }, "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.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -27724,8 +25146,6 @@ }, "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" @@ -27733,8 +25153,6 @@ }, "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" @@ -27742,8 +25160,6 @@ }, "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" @@ -27751,8 +25167,6 @@ }, "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", @@ -27761,8 +25175,6 @@ }, "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" @@ -27770,8 +25182,6 @@ "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" @@ -27779,8 +25189,6 @@ }, "minimatch": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -27790,14 +25198,10 @@ }, "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" @@ -27805,8 +25209,6 @@ }, "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", @@ -27820,8 +25222,6 @@ "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" @@ -27829,16 +25229,12 @@ }, "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", @@ -27847,14 +25243,10 @@ } }, "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "version": "1.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", @@ -27863,8 +25255,6 @@ }, "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", @@ -27873,28 +25263,19 @@ }, "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 + "version": "1.15.2" }, "for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { "is-callable": "^1.1.3" } }, "fork-ts-checker-webpack-plugin": { "version": "6.5.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", - "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", @@ -27914,8 +25295,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -27923,8 +25302,6 @@ }, "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", @@ -27933,8 +25310,6 @@ }, "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" @@ -27942,14 +25317,10 @@ }, "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", @@ -27961,8 +25332,6 @@ }, "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", @@ -27973,14 +25342,10 @@ }, "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", @@ -27990,8 +25355,6 @@ }, "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -27999,8 +25362,6 @@ }, "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" @@ -28008,16 +25369,12 @@ }, "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", @@ -28027,26 +25384,18 @@ }, "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", @@ -28056,32 +25405,17 @@ }, "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==" + "version": "1.1.1" }, "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==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -28090,25 +25424,17 @@ } }, "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==" + "version": "1.2.3" }, "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==" + "version": "1.0.0-beta.2" }, "get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-intrinsic": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -28117,26 +25443,18 @@ }, "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==", "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -28144,8 +25462,6 @@ }, "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", @@ -28158,8 +25474,6 @@ }, "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" @@ -28167,14 +25481,10 @@ }, "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" @@ -28182,8 +25492,6 @@ }, "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", @@ -28193,8 +25501,6 @@ "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" @@ -28203,14 +25509,10 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "version": "11.12.0" }, "globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -28223,20 +25525,14 @@ }, "graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "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" @@ -28244,59 +25540,41 @@ }, "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==", "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==" + "version": "1.0.2" }, "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": "3.0.0" }, "has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "requires": { "get-intrinsic": "^1.1.1" } }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.0.3" }, "has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "requires": { "has-symbols": "^1.0.2" } }, "hash-base": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -28305,8 +25583,6 @@ }, "hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -28314,14 +25590,10 @@ }, "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 }, "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -28330,29 +25602,21 @@ }, "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==", "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==" + "version": "16.13.1" } } }, "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", @@ -28363,8 +25627,6 @@ "dependencies": { "readable-stream": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -28378,14 +25640,10 @@ }, "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" @@ -28395,8 +25653,6 @@ }, "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" @@ -28404,20 +25660,14 @@ }, "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", @@ -28431,16 +25681,12 @@ "dependencies": { "commander": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true } } }, "html-webpack-plugin": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", @@ -28452,8 +25698,6 @@ }, "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", @@ -28464,14 +25708,10 @@ }, "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", @@ -28483,14 +25723,10 @@ }, "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", @@ -28500,8 +25736,6 @@ }, "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", @@ -28511,8 +25745,6 @@ }, "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", @@ -28524,8 +25756,6 @@ }, "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", @@ -28534,66 +25764,46 @@ }, "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 }, "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + "version": "1.0.4" }, "iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "icss-utils": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "requires": {} }, "idb": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.0.tgz", - "integrity": "sha512-Wsk07aAxDsntgYJY4h0knZJuTxM73eQ4reRAO+Z1liOh8eMCJ/MoDS8fCui1vGT9mnjtl1sOu3I2i/W1swPYZg==", "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" } }, "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "version": "1.2.1" }, "ignore": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "immer": { "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", "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==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -28601,8 +25811,6 @@ }, "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", @@ -28611,14 +25819,10 @@ }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "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", @@ -28626,20 +25830,14 @@ } }, "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "version": "2.0.4" }, "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.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -28647,42 +25845,30 @@ } }, "internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + "version": "2.0.3" }, "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==", "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "version": "0.2.1" }, "is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "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" @@ -28690,127 +25876,89 @@ }, "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==", "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==" + "version": "1.2.7" }, "is-core-module": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "requires": { "has": "^1.0.3" } }, "is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "requires": { "has-tostringtag": "^1.0.0" } }, "is-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-generator-function": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "requires": { "has-tostringtag": "^1.0.0" } }, "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-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + "version": "1.1.3" }, "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==" + "version": "2.0.2" }, "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==", "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-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==", "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -28818,50 +25966,36 @@ }, "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-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==", "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==", "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==", "requires": { "has-symbols": "^1.0.2" } }, "is-typed-array": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -28872,22 +26006,16 @@ }, "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-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==", "requires": { "call-bind": "^1.0.2" } }, "is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { "is-docker": "^2.0.0" @@ -28895,32 +26023,22 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isomorphic-ws": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "requires": {} }, "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", @@ -28932,8 +26050,6 @@ }, "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", @@ -28943,14 +26059,10 @@ "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" @@ -28960,8 +26072,6 @@ }, "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", @@ -28971,16 +26081,12 @@ "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", @@ -28989,8 +26095,6 @@ }, "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", @@ -29001,8 +26105,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29010,8 +26112,6 @@ }, "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", @@ -29020,8 +26120,6 @@ }, "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" @@ -29029,20 +26127,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29052,8 +26144,6 @@ }, "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", @@ -29063,8 +26153,6 @@ }, "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", @@ -29074,8 +26162,6 @@ }, "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", @@ -29101,8 +26187,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29110,8 +26194,6 @@ }, "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", @@ -29120,8 +26202,6 @@ }, "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" @@ -29129,20 +26209,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29152,8 +26226,6 @@ }, "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", @@ -29172,8 +26244,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29181,8 +26251,6 @@ }, "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", @@ -29191,8 +26259,6 @@ }, "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" @@ -29200,20 +26266,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29223,8 +26283,6 @@ }, "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", @@ -29255,8 +26313,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29264,8 +26320,6 @@ }, "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", @@ -29274,8 +26328,6 @@ }, "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" @@ -29283,20 +26335,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29306,8 +26352,6 @@ }, "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", @@ -29318,8 +26362,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29327,8 +26369,6 @@ }, "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", @@ -29337,8 +26377,6 @@ }, "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" @@ -29346,20 +26384,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29369,8 +26401,6 @@ }, "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" @@ -29378,8 +26408,6 @@ }, "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", @@ -29391,8 +26419,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29400,8 +26426,6 @@ }, "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", @@ -29410,8 +26434,6 @@ }, "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" @@ -29419,20 +26441,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29442,8 +26458,6 @@ }, "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", @@ -29457,8 +26471,6 @@ }, "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", @@ -29471,14 +26483,10 @@ }, "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", @@ -29498,8 +26506,6 @@ }, "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", @@ -29523,8 +26529,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29532,8 +26536,6 @@ }, "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", @@ -29542,8 +26544,6 @@ }, "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" @@ -29551,20 +26551,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29574,8 +26568,6 @@ }, "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", @@ -29584,8 +26576,6 @@ }, "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", @@ -29596,8 +26586,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29605,8 +26593,6 @@ }, "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", @@ -29615,8 +26601,6 @@ }, "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" @@ -29624,20 +26608,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29647,8 +26625,6 @@ }, "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", @@ -29664,8 +26640,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29673,8 +26647,6 @@ }, "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", @@ -29683,8 +26655,6 @@ }, "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" @@ -29692,20 +26662,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29715,8 +26679,6 @@ }, "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", @@ -29725,21 +26687,15 @@ }, "jest-pnp-resolver": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "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", @@ -29756,8 +26712,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29765,8 +26719,6 @@ }, "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", @@ -29775,8 +26727,6 @@ }, "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" @@ -29784,20 +26734,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29807,8 +26751,6 @@ }, "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", @@ -29818,8 +26760,6 @@ }, "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", @@ -29847,8 +26787,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29856,8 +26794,6 @@ }, "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", @@ -29866,8 +26802,6 @@ }, "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" @@ -29875,20 +26809,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29898,8 +26826,6 @@ }, "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", @@ -29928,8 +26854,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -29937,8 +26861,6 @@ }, "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", @@ -29947,8 +26869,6 @@ }, "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" @@ -29956,20 +26876,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -29979,8 +26893,6 @@ }, "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": "*", @@ -29989,8 +26901,6 @@ }, "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", @@ -30019,8 +26929,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -30028,8 +26936,6 @@ }, "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", @@ -30038,8 +26944,6 @@ }, "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" @@ -30047,20 +26951,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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 }, "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -30068,8 +26966,6 @@ }, "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" @@ -30079,8 +26975,6 @@ }, "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", @@ -30093,8 +26987,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -30102,8 +26994,6 @@ }, "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", @@ -30112,8 +27002,6 @@ }, "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" @@ -30121,20 +27009,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -30144,8 +27026,6 @@ }, "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", @@ -30158,8 +27038,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -30167,8 +27045,6 @@ }, "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", @@ -30177,8 +27053,6 @@ }, "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" @@ -30186,20 +27060,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -30209,8 +27077,6 @@ }, "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", @@ -30224,8 +27090,6 @@ "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", @@ -30238,16 +27102,12 @@ "dependencies": { "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true } } }, "@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", @@ -30258,8 +27118,6 @@ }, "@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", @@ -30272,8 +27130,6 @@ }, "@types/yargs": { "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", - "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -30281,8 +27137,6 @@ }, "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" @@ -30290,8 +27144,6 @@ }, "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", @@ -30300,8 +27152,6 @@ }, "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" @@ -30309,26 +27159,18 @@ }, "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", @@ -30344,22 +27186,16 @@ "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", @@ -30372,8 +27208,6 @@ }, "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", @@ -30388,8 +27222,6 @@ "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", @@ -30398,8 +27230,6 @@ }, "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" @@ -30409,8 +27239,6 @@ }, "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", @@ -30421,22 +27249,16 @@ "dependencies": { "ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true } } }, "slash": { "version": "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", @@ -30445,16 +27267,12 @@ "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" @@ -30462,16 +27280,12 @@ "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" @@ -30481,8 +27295,6 @@ }, "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", @@ -30496,8 +27308,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -30505,8 +27315,6 @@ }, "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", @@ -30515,8 +27323,6 @@ }, "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" @@ -30524,20 +27330,14 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "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" @@ -30547,8 +27347,6 @@ }, "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": "*", @@ -30558,14 +27356,10 @@ "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" @@ -30575,19 +27369,13 @@ }, "js-sdsl": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", "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==" + "version": "4.0.0" }, "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", @@ -30596,8 +27384,6 @@ }, "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", @@ -30631,8 +27417,6 @@ "dependencies": { "tr46": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "requires": { "punycode": "^2.1.1" @@ -30640,8 +27424,6 @@ }, "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", @@ -30652,42 +27434,28 @@ } }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "version": "2.5.2" }, "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==" + "version": "2.3.1" }, "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.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.1" }, "jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", @@ -30696,14 +27464,10 @@ }, "jsonpointer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true }, "jss": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz", - "integrity": "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==", "requires": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", @@ -30713,8 +27477,6 @@ }, "jss-plugin-camel-case": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz", - "integrity": "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==", "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", @@ -30723,8 +27485,6 @@ }, "jss-plugin-default-unit": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz", - "integrity": "sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" @@ -30732,8 +27492,6 @@ }, "jss-plugin-global": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz", - "integrity": "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" @@ -30741,8 +27499,6 @@ }, "jss-plugin-nested": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz", - "integrity": "sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.9.2", @@ -30751,8 +27507,6 @@ }, "jss-plugin-props-sort": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz", - "integrity": "sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.9.2" @@ -30760,8 +27514,6 @@ }, "jss-plugin-rule-value-function": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz", - "integrity": "sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==", "requires": { "@babel/runtime": "^7.3.1", "jss": "10.9.2", @@ -30770,8 +27522,6 @@ }, "jss-plugin-vendor-prefixer": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz", - "integrity": "sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==", "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", @@ -30780,8 +27530,6 @@ }, "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==", "dev": true, "requires": { "array-includes": "^3.1.5", @@ -30789,38 +27537,26 @@ } }, "jwt-simple": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/jwt-simple/-/jwt-simple-0.5.6.tgz", - "integrity": "sha512-40aUybvhH9t2h71ncA1/1SbtTNCVZHgsTsTgqPUxGWDmUDrXyDf2wMNQKEbdBjbf4AI+fQhbECNTV6lWxQKUzg==" + "version": "0.5.6" }, "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 }, "kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, "klona": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, "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 }, "language-tags": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", "dev": true, "requires": { "language-subtag-registry": "~0.3.2" @@ -30828,14 +27564,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 }, "levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -30844,25 +27576,17 @@ }, "lilconfig": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true }, "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==" + "version": "1.2.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 }, "loader-utils": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -30872,8 +27596,6 @@ }, "locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { "p-locate": "^5.0.0" @@ -30881,57 +27603,39 @@ }, "lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "version": "4.5.0" }, "lodash.memoize": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, "lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "lodash.sortby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, "lodash.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 }, "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==", "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, "lower-case": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, "requires": { "tslib": "^2.0.3" @@ -30939,8 +27643,6 @@ }, "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" @@ -30948,8 +27650,6 @@ }, "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, "requires": { "sourcemap-codec": "^1.4.8" @@ -30957,8 +27657,6 @@ }, "make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -30966,8 +27664,6 @@ }, "makeerror": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { "tmpl": "1.0.5" @@ -30975,8 +27671,6 @@ }, "md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -30985,20 +27679,14 @@ }, "mdn-data": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", "dev": true }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memfs": { "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "requires": { "fs-monkey": "^1.0.3" @@ -31006,32 +27694,22 @@ }, "merge-descriptors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { "braces": "^3.0.2", @@ -31040,51 +27718,35 @@ }, "miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "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 + "version": "1.52.0" }, "mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } }, "mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mini-css-extract-plugin": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", "dev": true, "requires": { "schema-utils": "^4.0.0" @@ -31092,8 +27754,6 @@ "dependencies": { "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -31104,8 +27764,6 @@ }, "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" @@ -31113,14 +27771,10 @@ }, "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -31132,19 +27786,13 @@ } }, "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==" + "version": "1.0.1" }, "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==" + "version": "1.0.1" }, "minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -31152,28 +27800,20 @@ }, "minimist": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { "minimist": "^1.2.6" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.2" }, "multicast-dns": { "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "requires": { "dns-packet": "^5.2.2", @@ -31182,32 +27822,22 @@ }, "nanoid": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "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 }, "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==", "dev": true, "requires": { "lower-case": "^2.0.2", @@ -31216,51 +27846,35 @@ }, "node-fetch": { "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.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.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "version": "2.0.6" }, "normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "normalize-range": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-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 }, "npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { "path-key": "^3.0.0" @@ -31268,8 +27882,6 @@ }, "nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -31277,35 +27889,23 @@ }, "nwsapi": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", "dev": true }, "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==" + "version": "4.1.1" }, "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 }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + "version": "1.12.2" }, "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "version": "1.1.1" }, "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==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -31315,8 +27915,6 @@ }, "object.entries": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -31326,8 +27924,6 @@ }, "object.fromentries": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -31337,8 +27933,6 @@ }, "object.getownpropertydescriptors": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", "dev": true, "requires": { "array.prototype.reduce": "^1.0.4", @@ -31349,8 +27943,6 @@ }, "object.hasown": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", "dev": true, "requires": { "define-properties": "^1.1.4", @@ -31359,8 +27951,6 @@ }, "object.values": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -31370,14 +27960,10 @@ }, "obuf": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -31385,14 +27971,10 @@ }, "on-headers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "requires": { "wrappy": "1" @@ -31400,8 +27982,6 @@ }, "onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -31409,8 +27989,6 @@ }, "open": { "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -31420,8 +27998,6 @@ }, "optionator": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -31434,8 +28010,6 @@ }, "p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" @@ -31443,8 +28017,6 @@ }, "p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { "p-limit": "^3.0.2" @@ -31452,8 +28024,6 @@ }, "p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "requires": { "@types/retry": "0.12.0", @@ -31462,14 +28032,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==", "dev": true, "requires": { "dot-case": "^3.0.4", @@ -31478,16 +28044,12 @@ }, "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==", "requires": { "callsites": "^3.0.0" } }, "parse-asn1": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -31498,8 +28060,6 @@ }, "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==", "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -31509,20 +28069,14 @@ }, "parse5": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, "pascal-case": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, "requires": { "no-case": "^3.0.4", @@ -31531,42 +28085,28 @@ }, "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==" + "version": "1.0.7" }, "path-to-regexp": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "version": "4.0.0" }, "pbkdf2": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -31577,37 +28117,25 @@ }, "performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.0" }, "picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "pirates": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, "pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -31615,8 +28143,6 @@ "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", @@ -31625,8 +28151,6 @@ }, "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" @@ -31634,8 +28158,6 @@ }, "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" @@ -31643,8 +28165,6 @@ }, "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" @@ -31654,8 +28174,6 @@ }, "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, "requires": { "find-up": "^3.0.0" @@ -31663,8 +28181,6 @@ "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" @@ -31672,8 +28188,6 @@ }, "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", @@ -31682,8 +28196,6 @@ }, "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" @@ -31691,8 +28203,6 @@ }, "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" @@ -31700,16 +28210,12 @@ }, "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 } } }, "postcss": { "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -31719,8 +28225,6 @@ }, "postcss-attribute-case-insensitive": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -31728,15 +28232,11 @@ }, "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==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9", @@ -31745,8 +28245,6 @@ }, "postcss-clamp": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31754,8 +28252,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==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31763,8 +28259,6 @@ }, "postcss-color-hex-alpha": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31772,8 +28266,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==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31781,8 +28273,6 @@ }, "postcss-colormin": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -31793,8 +28283,6 @@ }, "postcss-convert-values": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", "dev": true, "requires": { "browserslist": "^4.20.3", @@ -31803,8 +28291,6 @@ }, "postcss-custom-media": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31812,8 +28298,6 @@ }, "postcss-custom-properties": { "version": "12.1.9", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", - "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31821,8 +28305,6 @@ }, "postcss-custom-selectors": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -31830,8 +28312,6 @@ }, "postcss-dir-pseudo-class": { "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -31839,36 +28319,26 @@ }, "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==", "dev": true, "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", "dev": true, "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", "dev": true, "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", "dev": true, "requires": {} }, "postcss-double-position-gradients": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -31877,8 +28347,6 @@ }, "postcss-env-function": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31886,15 +28354,11 @@ }, "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==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -31902,8 +28366,6 @@ }, "postcss-focus-within": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.9" @@ -31911,22 +28373,16 @@ }, "postcss-font-variant": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", "dev": true, "requires": {} }, "postcss-gap-properties": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", "dev": true, "requires": {} }, "postcss-image-set-function": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -31934,8 +28390,6 @@ }, "postcss-import": { "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, "requires": { "postcss-value-parser": "^4.0.0", @@ -31945,15 +28399,11 @@ }, "postcss-initial": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", "dev": true, "requires": {} }, "postcss-js": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", "dev": true, "requires": { "camelcase-css": "^2.0.1" @@ -31961,8 +28411,6 @@ }, "postcss-lab-function": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", "dev": true, "requires": { "@csstools/postcss-progressive-custom-properties": "^1.1.0", @@ -31971,8 +28419,6 @@ }, "postcss-load-config": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", "dev": true, "requires": { "lilconfig": "^2.0.5", @@ -31981,8 +28427,6 @@ }, "postcss-loader": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, "requires": { "cosmiconfig": "^7.0.0", @@ -31992,8 +28436,6 @@ "dependencies": { "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -32003,22 +28445,16 @@ }, "postcss-logical": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", "dev": true, "requires": {} }, "postcss-media-minmax": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", "dev": true, "requires": {} }, "postcss-merge-longhand": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0", @@ -32027,8 +28463,6 @@ }, "postcss-merge-rules": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -32039,8 +28473,6 @@ }, "postcss-minify-font-values": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32048,8 +28480,6 @@ }, "postcss-minify-gradients": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", "dev": true, "requires": { "colord": "^2.9.1", @@ -32059,8 +28489,6 @@ }, "postcss-minify-params": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -32070,8 +28498,6 @@ }, "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==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.5" @@ -32079,15 +28505,11 @@ }, "postcss-modules-extract-imports": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { "icss-utils": "^5.0.0", @@ -32097,8 +28519,6 @@ }, "postcss-modules-scope": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -32106,8 +28526,6 @@ }, "postcss-modules-values": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { "icss-utils": "^5.0.0" @@ -32115,8 +28533,6 @@ }, "postcss-nested": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.6" @@ -32124,8 +28540,6 @@ }, "postcss-nesting": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -32134,8 +28548,6 @@ }, "postcss-normalize": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", "dev": true, "requires": { "@csstools/normalize.css": "*", @@ -32145,15 +28557,11 @@ }, "postcss-normalize-charset": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", "dev": true, "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32161,8 +28569,6 @@ }, "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==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32170,8 +28576,6 @@ }, "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==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32179,8 +28583,6 @@ }, "postcss-normalize-string": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32188,8 +28590,6 @@ }, "postcss-normalize-timing-functions": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32197,8 +28597,6 @@ }, "postcss-normalize-unicode": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -32207,8 +28605,6 @@ }, "postcss-normalize-url": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", "dev": true, "requires": { "normalize-url": "^6.0.1", @@ -32217,8 +28613,6 @@ }, "postcss-normalize-whitespace": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32226,14 +28620,10 @@ }, "postcss-opacity-percentage": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", "dev": true }, "postcss-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==", "dev": true, "requires": { "cssnano-utils": "^3.1.0", @@ -32242,8 +28632,6 @@ }, "postcss-overflow-shorthand": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32251,15 +28639,11 @@ }, "postcss-page-break": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", "dev": true, "requires": {} }, "postcss-place": { "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32267,8 +28651,6 @@ }, "postcss-preset-env": { "version": "7.8.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.2.tgz", - "integrity": "sha512-rSMUEaOCnovKnwc5LvBDHUDzpGP+nrUeWZGWt9M72fBvckCi45JmnJigUr4QG4zZeOHmOCNCZnd2LKDvP++ZuQ==", "dev": true, "requires": { "@csstools/postcss-cascade-layers": "^1.1.0", @@ -32324,8 +28706,6 @@ }, "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" @@ -32333,8 +28713,6 @@ }, "postcss-reduce-initial": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -32343,8 +28721,6 @@ }, "postcss-reduce-transforms": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -32352,15 +28728,11 @@ }, "postcss-replace-overflow-wrap": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", "dev": true, "requires": {} }, "postcss-selector-not": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -32368,8 +28740,6 @@ }, "postcss-selector-parser": { "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -32378,8 +28748,6 @@ }, "postcss-svgo": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0", @@ -32388,8 +28756,6 @@ "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", @@ -32398,20 +28764,14 @@ }, "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", @@ -32427,8 +28787,6 @@ }, "postcss-unique-selectors": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.5" @@ -32436,26 +28794,18 @@ }, "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==", "dev": true, "requires": { "lodash": "^4.17.20", @@ -32464,8 +28814,6 @@ }, "pretty-format": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "requires": { "ansi-regex": "^5.0.1", @@ -32475,28 +28823,28 @@ "dependencies": { "ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true }, "react-is": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true } } }, + "preval.macro": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/preval.macro/-/preval.macro-5.0.0.tgz", + "integrity": "sha512-+OZRqZYx1pjZ7H5Jis8bPFXkiT7lwA46UzAT4IjuzFVKwkJK+TwIx1TCqrqNCf8U3e5O12mEJEz1BXslkCLWfQ==", + "requires": { + "babel-plugin-preval": "^5.0.0" + } + }, "process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "promise": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.2.0.tgz", - "integrity": "sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg==", "dev": true, "requires": { "asap": "~2.0.6" @@ -32504,8 +28852,6 @@ }, "prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -32514,8 +28860,6 @@ }, "prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -32523,16 +28867,12 @@ }, "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==" + "version": "16.13.1" } } }, "proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { "forwarded": "0.2.0", @@ -32541,22 +28881,21 @@ "dependencies": { "ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "psl": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -32567,28 +28906,20 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } }, "punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "q": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, "qs": { "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -32596,26 +28927,18 @@ }, "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 }, "quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, "raf": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", "dev": true, "requires": { "performance-now": "^2.1.0" @@ -32623,16 +28946,12 @@ }, "randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { "safe-buffer": "^5.1.0" } }, "randomfill": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -32640,14 +28959,10 @@ }, "range-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { "bytes": "3.1.2", @@ -32658,14 +28973,10 @@ "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" @@ -32675,8 +28986,6 @@ }, "react": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -32684,8 +28993,6 @@ }, "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==", "dev": true, "requires": { "core-js": "^3.19.2", @@ -32698,8 +29005,6 @@ }, "react-app-rewired": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-app-rewired/-/react-app-rewired-2.2.1.tgz", - "integrity": "sha512-uFQWTErXeLDrMzOJHKp0h8P1z0LV9HzPGsJ6adOtGlA/B9WfT6Shh4j2tLTTGlXOfiVx6w6iWpp7SOC5pvk+gA==", "dev": true, "requires": { "semver": "^5.6.0" @@ -32707,16 +29012,12 @@ "dependencies": { "semver": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "react-d3-tree": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/react-d3-tree/-/react-d3-tree-3.3.4.tgz", - "integrity": "sha512-VjbPMsnLQnPsybiHGIiNdBlsBxeOz3We214Sno08rAhEhn3tf6leaM6dFCdWaS0Ek3UYNIAIetZVzRBL+0oD3Q==", "requires": { "@bkrem/react-transition-group": "^1.3.3", "@types/d3-hierarchy": "^1.1.8", @@ -32730,74 +29031,50 @@ }, "dependencies": { "@types/d3-hierarchy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz", - "integrity": "sha512-AbStKxNyWiMDQPGDguG2Kuhlq1Sv539pZSxYbx4UZeYkutpPwXCcgyiRrlV4YH64nIOsKx7XVnOMy9O7rJsXkg==" + "version": "1.1.8" }, "d3-color": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + "version": "1.4.1" }, "d3-dispatch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + "version": "1.0.6" }, "d3-drag": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", "requires": { "d3-dispatch": "1", "d3-selection": "1" } }, "d3-ease": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + "version": "1.0.7" }, "d3-hierarchy": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + "version": "1.1.9" }, "d3-interpolate": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", "requires": { "d3-color": "1" } }, "d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "version": "1.0.9" }, "d3-selection": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + "version": "1.4.2" }, "d3-shape": { "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", "requires": { "d3-path": "1" } }, "d3-timer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + "version": "1.0.10" }, "d3-transition": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", "requires": { "d3-color": "1", "d3-dispatch": "1", @@ -32809,8 +29086,6 @@ }, "d3-zoom": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", "requires": { "d3-dispatch": "1", "d3-drag": "1", @@ -32823,8 +29098,6 @@ }, "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==", "dev": true, "requires": { "@babel/code-frame": "^7.16.0", @@ -32855,8 +29128,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -32864,8 +29135,6 @@ }, "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", @@ -32874,8 +29143,6 @@ }, "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" @@ -32883,26 +29150,18 @@ }, "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 }, "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" @@ -32912,8 +29171,6 @@ }, "react-dom": { "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -32922,14 +29179,10 @@ }, "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-flow-renderer": { "version": "10.3.17", - "resolved": "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-10.3.17.tgz", - "integrity": "sha512-bywiqVErlh5kCDqw3x0an5Ur3mT9j9CwJsDwmhmz4i1IgYM1a0SPqqEhClvjX+s5pU4nHjmVaGXWK96pwsiGcQ==", "requires": { "@babel/runtime": "^7.18.9", "@types/d3": "^7.4.0", @@ -32942,33 +29195,23 @@ } }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.2.0" }, "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "version": "3.0.4" }, "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 }, "react-router": { "version": "6.4.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz", - "integrity": "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==", "requires": { "@remix-run/router": "1.0.2" } }, "react-router-dom": { "version": "6.4.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz", - "integrity": "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==", "requires": { "@remix-run/router": "1.0.2", "react-router": "6.4.2" @@ -32976,8 +29219,6 @@ }, "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==", "dev": true, "requires": { "@babel/core": "^7.16.0", @@ -33032,8 +29273,6 @@ "dependencies": { "semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -33043,8 +29282,6 @@ }, "react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "requires": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -33054,8 +29291,6 @@ "dependencies": { "dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "requires": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -33065,8 +29300,6 @@ }, "read-cache": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "requires": { "pify": "^2.3.0" @@ -33074,8 +29307,6 @@ }, "readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -33084,8 +29315,6 @@ }, "readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -33093,8 +29322,6 @@ }, "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==", "dev": true, "requires": { "minimatch": "^3.0.5" @@ -33102,28 +29329,20 @@ }, "regenerate": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + "version": "0.13.10" }, "regenerator-transform": { "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -33131,14 +29350,10 @@ }, "regex-parser": { "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, "regexp.prototype.flags": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -33147,14 +29362,10 @@ }, "regexpp": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "requires": { "regenerate": "^1.4.2", @@ -33167,14 +29378,10 @@ }, "regjsgen": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -33182,22 +29389,16 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } }, "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==", "dev": true, "requires": { "css-select": "^4.1.3", @@ -33209,26 +29410,17 @@ }, "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 + "version": "2.0.2" }, "requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "requires": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -33237,8 +29429,6 @@ }, "resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { "resolve-from": "^5.0.0" @@ -33246,21 +29436,15 @@ "dependencies": { "resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "version": "4.0.0" }, "resolve-url-loader": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", "dev": true, "requires": { "adjust-sourcemap-loader": "^4.0.0", @@ -33272,14 +29456,10 @@ "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", @@ -33288,40 +29468,28 @@ }, "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 } } }, "resolve.exports": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, "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 }, "rifm": { "version": "0.12.1", - "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", - "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", "requires": {} }, "rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -33329,22 +29497,16 @@ }, "ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, "robust-predicates": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", - "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + "version": "3.0.1" }, "rollup": { "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -33352,8 +29514,6 @@ }, "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==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", @@ -33364,14 +29524,10 @@ "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": "*", @@ -33381,8 +29537,6 @@ }, "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" @@ -33390,8 +29544,6 @@ }, "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" @@ -33401,27 +29553,19 @@ }, "run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { "queue-microtask": "^1.2.2" } }, "rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "version": "1.3.3" }, "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==" + "version": "5.2.1" }, "safe-regex-test": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -33429,20 +29573,14 @@ } }, "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "version": "2.1.2" }, "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==", "dev": true, "requires": { "klona": "^2.0.4", @@ -33451,14 +29589,10 @@ }, "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==", "dev": true, "requires": { "xmlchars": "^2.2.0" @@ -33466,8 +29600,6 @@ }, "scheduler": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -33475,8 +29607,6 @@ }, "schema-utils": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -33486,28 +29616,20 @@ }, "select-hose": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.0" }, "send": { "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", @@ -33527,8 +29649,6 @@ "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" @@ -33536,24 +29656,18 @@ "dependencies": { "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, "serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -33561,8 +29675,6 @@ }, "serve-index": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -33576,8 +29688,6 @@ "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" @@ -33585,14 +29695,10 @@ }, "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", @@ -33603,34 +29709,24 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, "statuses": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } }, "serve-static": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", @@ -33641,14 +29737,10 @@ }, "setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -33656,8 +29748,6 @@ }, "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -33665,20 +29755,14 @@ }, "shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "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==", "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -33687,26 +29771,18 @@ }, "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": { "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==", "dev": true, "requires": { "faye-websocket": "^0.11.3", @@ -33716,25 +29792,17 @@ }, "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.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "version": "0.5.7" }, "source-map-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-loader": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", "dev": true, "requires": { "abab": "^2.0.5", @@ -33744,8 +29812,6 @@ }, "source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -33754,22 +29820,16 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, "sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, "spdy": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -33781,8 +29841,6 @@ }, "spdy-transport": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { "debug": "^4.1.0", @@ -33795,20 +29853,14 @@ }, "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.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -33816,28 +29868,20 @@ "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 } } }, "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 }, "stream-browserify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "requires": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -33845,16 +29889,12 @@ }, "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==", "requires": { "safe-buffer": "~5.2.0" } }, "string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "requires": { "char-regex": "^1.0.2", @@ -33863,14 +29903,10 @@ }, "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 }, "string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -33880,16 +29916,12 @@ "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 } } }, "string.prototype.matchall": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -33904,8 +29936,6 @@ }, "string.prototype.trimend": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -33914,8 +29944,6 @@ }, "string.prototype.trimstart": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -33924,8 +29952,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==", "dev": true, "requires": { "get-own-enumerable-property-symbols": "^3.0.0", @@ -33935,8 +29961,6 @@ }, "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" @@ -33944,39 +29968,27 @@ }, "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 }, "strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "style-loader": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, "requires": {} }, "stylehacks": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -33984,22 +29996,16 @@ } }, "stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "version": "4.0.13" }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } }, "supports-hyperlinks": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -34008,14 +30014,10 @@ "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" @@ -34024,20 +30026,14 @@ } }, "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==" + "version": "1.0.0" }, "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==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -34057,8 +30053,6 @@ "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", @@ -34069,14 +30063,10 @@ }, "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", @@ -34085,8 +30075,6 @@ }, "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", @@ -34095,16 +30083,12 @@ "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" @@ -34114,14 +30098,10 @@ }, "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.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", "dev": true, "requires": { "arg": "^5.0.2", @@ -34150,28 +30130,20 @@ "dependencies": { "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 } } }, "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 }, "tempy": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", "dev": true, "requires": { "is-stream": "^2.0.0", @@ -34182,16 +30154,12 @@ "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 } } }, "terminal-link": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -34200,8 +30168,6 @@ }, "terser": { "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -34212,16 +30178,12 @@ "dependencies": { "commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true } } }, "terser-webpack-plugin": { "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.14", @@ -34233,8 +30195,6 @@ }, "test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", @@ -34244,42 +30204,28 @@ }, "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 }, "throat": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "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==" + "version": "1.0.3" }, "tmpl": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "version": "2.0.0" }, "to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -34287,14 +30233,10 @@ }, "toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "tough-cookie": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "requires": { "psl": "^1.1.33", @@ -34305,27 +30247,19 @@ "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 } } }, "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "version": "0.0.3" }, "tryer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, "tsconfig-paths": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -34336,8 +30270,6 @@ "dependencies": { "json5": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -34345,22 +30277,16 @@ }, "strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } }, "tslib": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, "tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -34368,16 +30294,12 @@ "dependencies": { "tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true } } }, "type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -34385,20 +30307,14 @@ }, "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 }, "type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "type-is": { "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { "media-typer": "0.3.0", @@ -34407,8 +30323,6 @@ }, "typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "requires": { "is-typedarray": "^1.0.0" @@ -34416,14 +30330,10 @@ }, "typescript": { "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, "unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -34433,14 +30343,10 @@ }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -34449,20 +30355,14 @@ }, "unicode-match-property-value-ecmascript": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unique-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "requires": { "crypto-random-string": "^2.0.0" @@ -34470,32 +30370,22 @@ }, "universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "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.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -34503,8 +30393,6 @@ }, "uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -34512,8 +30400,6 @@ }, "url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -34522,8 +30408,6 @@ }, "util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -34533,14 +30417,10 @@ } }, "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "version": "1.0.2" }, "util.promisify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -34551,25 +30431,17 @@ }, "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==" + "version": "8.3.2" }, "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": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -34579,22 +30451,16 @@ "dependencies": { "source-map": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } }, "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 }, "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==", "dev": true, "requires": { "browser-process-hrtime": "^1.0.0" @@ -34602,8 +30468,6 @@ }, "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, "requires": { "xml-name-validator": "^3.0.0" @@ -34611,8 +30475,6 @@ }, "walker": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { "makeerror": "1.0.12" @@ -34620,16 +30482,12 @@ }, "warning": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", "requires": { "loose-envify": "^1.0.0" } }, "watchpack": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -34638,8 +30496,6 @@ }, "wbuf": { "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { "minimalistic-assert": "^1.0.0" @@ -34647,14 +30503,10 @@ }, "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 }, "webpack": { "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -34685,14 +30537,10 @@ "dependencies": { "@types/estree": { "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "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", @@ -34701,16 +30549,12 @@ }, "estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true } } }, "webpack-dev-middleware": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, "requires": { "colorette": "^2.0.10", @@ -34722,8 +30566,6 @@ "dependencies": { "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -34734,8 +30576,6 @@ }, "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" @@ -34743,14 +30583,10 @@ }, "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -34763,8 +30599,6 @@ }, "webpack-dev-server": { "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -34800,8 +30634,6 @@ "dependencies": { "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -34812,8 +30644,6 @@ }, "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" @@ -34821,14 +30651,10 @@ }, "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "schema-utils": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -34839,8 +30665,6 @@ }, "ws": { "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", - "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "dev": true, "requires": {} } @@ -34848,8 +30672,6 @@ }, "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==", "dev": true, "requires": { "tapable": "^2.0.0", @@ -34858,14 +30680,10 @@ "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", @@ -34876,14 +30694,10 @@ }, "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==", "dev": true, "requires": { "http-parser-js": ">=0.5.1", @@ -34893,14 +30707,10 @@ }, "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==", "dev": true, "requires": { "iconv-lite": "0.4.24" @@ -34908,8 +30718,6 @@ "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" @@ -34919,36 +30727,26 @@ }, "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": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" }, "dependencies": { "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "version": "3.0.1" } } }, "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -34956,8 +30754,6 @@ }, "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==", "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -34968,8 +30764,6 @@ }, "which-typed-array": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -34981,14 +30775,10 @@ }, "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==", "dev": true, "requires": { "idb": "^7.0.1", @@ -34997,8 +30787,6 @@ }, "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==", "dev": true, "requires": { "workbox-core": "6.5.4" @@ -35006,8 +30794,6 @@ }, "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, "requires": { "@apideck/better-ajv-errors": "^0.3.1", @@ -35051,8 +30837,6 @@ "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", @@ -35062,8 +30846,6 @@ }, "ajv": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -35074,8 +30856,6 @@ }, "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", @@ -35086,14 +30866,10 @@ }, "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" @@ -35101,8 +30877,6 @@ }, "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" @@ -35110,14 +30884,10 @@ }, "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", @@ -35129,8 +30899,6 @@ }, "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==", "dev": true, "requires": { "workbox-core": "6.5.4" @@ -35138,14 +30906,10 @@ }, "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==", "dev": true, "requires": { "idb": "^7.0.1", @@ -35154,8 +30918,6 @@ }, "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==", "dev": true, "requires": { "workbox-background-sync": "6.5.4", @@ -35166,8 +30928,6 @@ }, "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==", "dev": true, "requires": { "workbox-core": "6.5.4" @@ -35175,8 +30935,6 @@ }, "workbox-precaching": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", "dev": true, "requires": { "workbox-core": "6.5.4", @@ -35186,8 +30944,6 @@ }, "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==", "dev": true, "requires": { "workbox-core": "6.5.4" @@ -35195,8 +30951,6 @@ }, "workbox-recipes": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", "dev": true, "requires": { "workbox-cacheable-response": "6.5.4", @@ -35209,8 +30963,6 @@ }, "workbox-routing": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", "dev": true, "requires": { "workbox-core": "6.5.4" @@ -35218,8 +30970,6 @@ }, "workbox-strategies": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", "dev": true, "requires": { "workbox-core": "6.5.4" @@ -35227,8 +30977,6 @@ }, "workbox-streams": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", "dev": true, "requires": { "workbox-core": "6.5.4", @@ -35237,14 +30985,10 @@ }, "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==", "dev": true, "requires": { "fast-json-stable-stringify": "^2.1.0", @@ -35256,14 +31000,10 @@ "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", @@ -35274,8 +31014,6 @@ }, "workbox-window": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", "dev": true, "requires": { "@types/trusted-types": "^2.0.2", @@ -35284,8 +31022,6 @@ }, "wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -35295,8 +31031,6 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -35304,8 +31038,6 @@ }, "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" @@ -35313,22 +31045,16 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "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", @@ -35339,49 +31065,33 @@ }, "ws": { "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, "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 }, "xmlchars": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, "xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "version": "1.10.2" }, "yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -35395,20 +31105,14 @@ }, "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 }, "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 }, "zustand": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", - "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", "requires": {} } } diff --git a/ui/package.json b/ui/package.json index f284b552..45f272b7 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,27 +1,40 @@ { "name": "daml-finance-app-ui", - "version": "0.1.5", + "version": "0.0.2", "private": true, "dependencies": { - "@daml.js/daml-finance-app": "file:daml.js/daml-finance-app-0.1.5", - "@daml.js/contingent-claims-core": "file:daml.js/c2e9bd7da480b0050c8e42f609ad533695f8359c6018dec2731111e9a8efb841", - "@daml.js/daml-finance-interface-account": "file:daml.js/37b3f85c4fb25b306db2d2d8de588a755dfebe2d8353ce37bee72160942f2cd2", - "@daml.js/daml-finance-interface-claims": "file:daml.js/3bce4883d8470953ecbc13ee0872803052091ba372743c1f81a56ef0a12343c1", - "@daml.js/daml-finance-interface-data": "file:daml.js/2dfa9b3847d9ffd6d5115afd409efad4015655b9080ba5c87e8500d52e457e54", - "@daml.js/daml-finance-interface-holding": "file:daml.js/7998f3f7ddf0f0dc4735502c5de61806765cb2295ef8ee6cc432782d64823ed3", - "@daml.js/daml-finance-interface-instrument-base": "file:daml.js/87c62e83e3c0b9d2230c503992749abb45fea0ed0fad4a10f2b64b1cd63f5e9a", - "@daml.js/daml-finance-interface-instrument-bond": "file:daml.js/5bd335c5c8ae980ec8907e066da3eda5e0d57a983f59a5873684b9aa26ea0aa9", - "@daml.js/daml-finance-interface-instrument-equity": "file:daml.js/3f9983437e5f1768480818fc6995adbc656aa8d061aa72ab99e4777759b36164", - "@daml.js/daml-finance-interface-instrument-generic": "file:daml.js/a224d4f3a6226dc2920282c1e6a5f0335c38d3d8588e5810c2d33ad5cbf0ca2b", - "@daml.js/daml-finance-interface-instrument-swap": "file:daml.js/086db20b6f52db9260ca9d87c2092e8fa21619f62c7687a63bcdfb9c7a6bd670", - "@daml.js/daml-finance-interface-instrument-token": "file:daml.js/a74b723696c4cfa214bf96090c62d92cba77f45ac6b0670d88c79e4850a2a826", - "@daml.js/daml-finance-interface-lifecycle": "file:daml.js/880aab1dc6c2daeff038c4bc4b84c9e98acbf777a1061cfe8ae5517acac50008", - "@daml.js/daml-finance-interface-settlement": "file:daml.js/eee5de887daab47f57f46612c0e12c196cb24d89cf3fce319143088fa2765c64", - "@daml.js/daml-finance-interface-types": "file:daml.js/87cb7a623037fd06919af3cba15bc4a9430d315bbb02294a54cad7b61d48f01f", - "@daml.js/daml-finance-interface-util": "file:daml.js/200ca261e5eb1d239e728fc65421e5b2f693c6f738d5ccb8c6a5a40966a27ac5", - "@daml/ledger": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "@daml/react": "2.5.0-snapshot.20221010.10736.0.2f453a14", - "@daml/types": "2.5.0-snapshot.20221010.10736.0.2f453a14", + "@daml.js/contingent-claims-core": "file:daml.js/contingent-claims-core-1.0.0", + "@daml.js/daml-finance-app-data": "file:daml.js/daml-finance-app-data-0.0.2", + "@daml.js/daml-finance-app-interface-base": "file:daml.js/daml-finance-app-interface-base-0.0.2", + "@daml.js/daml-finance-app-interface-custody": "file:daml.js/daml-finance-app-interface-custody-0.0.2", + "@daml.js/daml-finance-app-interface-decentralized": "file:daml.js/daml-finance-app-interface-decentralized-0.0.2", + "@daml.js/daml-finance-app-interface-distribution": "file:daml.js/daml-finance-app-interface-distribution-0.0.2", + "@daml.js/daml-finance-app-interface-issuance": "file:daml.js/daml-finance-app-interface-issuance-0.0.2", + "@daml.js/daml-finance-app-interface-lending": "file:daml.js/daml-finance-app-interface-lending-0.0.2", + "@daml.js/daml-finance-app-interface-lifecycle": "file:daml.js/daml-finance-app-interface-lifecycle-0.0.2", + "@daml.js/daml-finance-app-interface-listing": "file:daml.js/daml-finance-app-interface-listing-0.0.2", + "@daml.js/daml-finance-app-interface-settlement": "file:daml.js/daml-finance-app-interface-settlement-0.0.2", + "@daml.js/daml-finance-app-interface-structuring": "file:daml.js/daml-finance-app-interface-structuring-0.0.2", + "@daml.js/daml-finance-app-interface-trading": "file:daml.js/daml-finance-app-interface-trading-0.0.2", + "@daml.js/daml-finance-app-setup": "file:daml.js/daml-finance-app-setup-0.0.2", + "@daml.js/daml-finance-interface-account": "file:daml.js/daml-finance-interface-account-1.0.0", + "@daml.js/daml-finance-interface-claims": "file:daml.js/daml-finance-interface-claims-1.0.0", + "@daml.js/daml-finance-interface-data": "file:daml.js/daml-finance-interface-data-1.0.0", + "@daml.js/daml-finance-interface-holding": "file:daml.js/daml-finance-interface-holding-1.0.0", + "@daml.js/daml-finance-interface-instrument-base": "file:daml.js/daml-finance-interface-instrument-base-1.0.0", + "@daml.js/daml-finance-interface-instrument-bond": "file:daml.js/daml-finance-interface-instrument-bond-0.2.0", + "@daml.js/daml-finance-interface-instrument-equity": "file:daml.js/daml-finance-interface-instrument-equity-0.2.0", + "@daml.js/daml-finance-interface-instrument-generic": "file:daml.js/daml-finance-interface-instrument-generic-1.0.0", + "@daml.js/daml-finance-interface-instrument-swap": "file:daml.js/daml-finance-interface-instrument-swap-0.2.0", + "@daml.js/daml-finance-interface-instrument-token": "file:daml.js/daml-finance-interface-instrument-token-1.0.0", + "@daml.js/daml-finance-interface-lifecycle": "file:daml.js/daml-finance-interface-lifecycle-1.0.0", + "@daml.js/daml-finance-interface-settlement": "file:daml.js/daml-finance-interface-settlement-1.0.0", + "@daml.js/daml-finance-interface-types-common": "file:daml.js/daml-finance-interface-types-common-1.0.0", + "@daml.js/daml-finance-interface-types-date": "file:daml.js/daml-finance-interface-types-date-1.0.0", + "@daml.js/daml-finance-interface-util": "file:daml.js/daml-finance-interface-util-1.0.0", + "@daml/ledger": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "@daml/react": "2.6.0-snapshot.20221218.11169.0.9d007b31", + "@daml/types": "2.6.0-snapshot.20221218.11169.0.9d007b31", "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@mui/icons-material": "^5.0.5", @@ -29,12 +42,14 @@ "@mui/material": "^5.0.6", "@mui/styles": "^5.0.2", "@mui/x-date-pickers": "^5.0.4", + "axios": "^1.2.2", "buffer": "^6.0.3", "classnames": "^2.3.1", "crypto-browserify": "^3.12.0", "d3": "^7.1.1", "date-fns": "^2.25.0", "jwt-simple": "^0.5.6", + "preval.macro": "^5.0.0", "react": "^17.0.2", "react-d3-tree": "^3.3.2", "react-dom": "^17.0.2", @@ -73,6 +88,7 @@ "devDependencies": { "@types/d3": "^7.1.0", "@types/jwt-simple": "^0.5.33", + "@types/preval.macro": "^3.0.0", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.2", "@types/uuid": "^8.3.1", diff --git a/ui/src/Main.tsx b/ui/src/Main.tsx index 70c6f36e..b7c6d28c 100644 --- a/ui/src/Main.tsx +++ b/ui/src/Main.tsx @@ -7,7 +7,6 @@ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider" import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns" import DamlLedger from "@daml/react"; import { useBranding } from "./context/BrandingContext"; -import { useUserState } from "./context/UserContext"; import { Root } from "./Root"; import { Login } from "./pages/login/Login"; import { Portal } from "./pages/login/Portal"; @@ -15,22 +14,27 @@ import ErrorComponent from "./pages/error/Error"; import { httpBaseUrl, wsBaseUrl } from "./config"; import { ThemeProvider, createTheme } from "@mui/material/styles"; import { CssBaseline } from "@mui/material"; +import { useUser } from "./context/UserContext"; +import { useScenarios } from "./context/ScenarioContext"; +import { Spinner } from "./components/Spinner/Spinner"; export const Main : React.FC = () => { - const user = useUserState(); + const { loading: l1, party, token, loggedIn } = useUser(); + const { loading: l2, selected } = useScenarios(); const branding = useBranding(); - const theme = React.useMemo(() => createTheme(branding.options), [branding]); + if (l1 || l2) return ; + return ( - + } /> - } /> + } /> } /> } /> } /> @@ -42,6 +46,7 @@ export const Main : React.FC = () => { ); function Private({ children } : any) { - return user.isAuthenticated ? children : ; - } + const path = selected.useNetworkLogin ? "/login/network" : "/login/form"; + return loggedIn ? children : ; + }; } diff --git a/ui/src/Root.tsx b/ui/src/Root.tsx index 03bade5a..e7a615f9 100644 --- a/ui/src/Root.tsx +++ b/ui/src/Root.tsx @@ -15,7 +15,7 @@ import { Lending } from "./apps/Lending"; import { Settlement } from "./apps/Settlement"; import { Route, Routes } from "react-router-dom"; import { Overview } from "./apps/Overview"; -import { ServicesProvider } from "./context/ServiceContext"; +import { ServicesProvider } from "./context/ServicesContext"; import { InstrumentProvider } from "./context/InstrumentContext"; import { HoldingProvider } from "./context/HoldingContext"; import { AccountProvider } from "./context/AccountContext"; diff --git a/ui/src/apps/Distribution.tsx b/ui/src/apps/Distribution.tsx index 7e3daf3d..0c5b700e 100644 --- a/ui/src/apps/Distribution.tsx +++ b/ui/src/apps/Distribution.tsx @@ -16,7 +16,7 @@ import { New as NewInvestment} from "../pages/distribution/investment/New"; import { Spinner } from "../components/Spinner/Spinner"; import { Offerings } from "../pages/distribution/offering/Offerings"; import { Offering } from "../pages/distribution/offering/Offering"; -import { useServices } from "../context/ServiceContext"; +import { useServices } from "../context/ServicesContext"; import { App } from "./App"; import { PooledRequests } from "../pages/distribution/investment/PooledRequests"; import { Funds } from "../pages/distribution/investment/Funds"; @@ -26,13 +26,13 @@ export const Distribution : React.FC = () => { const { loading: l1, auction, fund, investment, subscription } = useServices(); if (l1) return ; - const providerAuctionService = auction.find(c => c.payload.provider === party); - const customerAuctionService = auction.find(c => c.payload.customer === party); - const providerSubscriptionService = subscription.find(c => c.payload.provider === party); - const customerSubscriptionService = subscription.find(c => c.payload.customer === party); - const providerInvestmentService = investment.find(c => c.payload.provider === party); - const customerInvestmentService = investment.find(c => c.payload.customer === party); - const providerFundService = fund.find(c => c.payload.provider === party); + const providerAuctionService = auction.services.find(c => c.payload.provider === party); + const customerAuctionService = auction.services.find(c => c.payload.customer === party); + const providerSubscriptionService = subscription.services.find(c => c.payload.provider === party); + const customerSubscriptionService = subscription.services.find(c => c.payload.customer === party); + const providerInvestmentService = investment.services.find(c => c.payload.provider === party); + const customerInvestmentService = investment.services.find(c => c.payload.customer === party); + const providerFundService = fund.services.find(c => c.payload.provider === party); const isAgent = !!providerAuctionService || !!providerSubscriptionService; const isIssuer = !!customerAuctionService || !!customerSubscriptionService; const isInvestor = !!customerInvestmentService; diff --git a/ui/src/apps/Overview.tsx b/ui/src/apps/Overview.tsx index aef31c38..b04bbf16 100644 --- a/ui/src/apps/Overview.tsx +++ b/ui/src/apps/Overview.tsx @@ -4,12 +4,15 @@ import React from "react"; import { Grid, Typography } from "@mui/material"; import { Header } from "../components/Header/Header"; -import { useScenario } from "../context/ScenarioContext"; +import { applications, useScenarios } from "../context/ScenarioContext"; import useStyles from "./styles"; +import { Spinner } from "../components/Spinner/Spinner"; export const Overview : React.FC = () => { const classes = useStyles(); - const scenario = useScenario(); + const { loading, selected } = useScenarios(); + if (loading) return ; + const apps = applications.filter(a => selected.apps.includes(a.name)).map(a => a.element); return ( <> @@ -17,9 +20,9 @@ export const Overview : React.FC = () => { Welcome to the Daml Finance Portal - There are {scenario.selected.apps.length} services available to you. + There are {selected.apps.length} services available to you. - {scenario.selected.apps.map(a => a.elem)} + {apps} diff --git a/ui/src/apps/Trading.tsx b/ui/src/apps/Trading.tsx index 5010df6f..7a8d0a13 100644 --- a/ui/src/apps/Trading.tsx +++ b/ui/src/apps/Trading.tsx @@ -12,7 +12,7 @@ import { App } from "./App"; export const Trading : React.FC = () => { // const { contracts: listings, loading: l1 } = useStreamQueries(Listing); // if (l1) return ; - // const listingEntries = listings.map(c => ({ label: c.payload.id, path: "markets/" + c.contractId, element: })); + // const listingEntries = listings.map(c => ({ label: c.payload.id.unpack, path: "markets/" + c.contractId, element: })); const entries = [ { label: "Markets", path: "markets", element: } ];//.concat(listingEntries); const paths = [ { path: "markets/:contractId", element: } ]; return ; diff --git a/ui/src/components/Card/App.tsx b/ui/src/components/Card/App.tsx index 64435033..e30a507a 100644 --- a/ui/src/components/Card/App.tsx +++ b/ui/src/components/Card/App.tsx @@ -9,13 +9,13 @@ import useStyles from "./styles"; import gradient from "../../images/gradient.png"; type AppProps = { - label : string + name : string description : string image : string path : string } -export const App : React.FC = ({ label, description, image, path }) => { +export const App : React.FC = ({ name: label, description, image, path }) => { const classes = useStyles(); const navigate = useNavigate() diff --git a/ui/src/components/Card/Dex.tsx b/ui/src/components/Card/Dex.tsx index 5c3778c0..b31fbd09 100644 --- a/ui/src/components/Card/Dex.tsx +++ b/ui/src/components/Card/Dex.tsx @@ -7,7 +7,7 @@ import { Card, CardActionArea, CardContent, Grid, Table, TableBody, TableCell, T import { Box } from "@mui/system"; import useStyles from "./styles"; import { fmt } from "../../util"; -import { Service } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Decentralized/Exchange/Service"; +import { Service } from "@daml.js/daml-finance-app-interface-decentralized/lib/Daml/Finance/App/Interface/Decentralized/Exchange/Service"; import { useParties } from "../../context/PartiesContext"; type DexProps = { diff --git a/ui/src/components/Card/Scenario.tsx b/ui/src/components/Card/Scenario.tsx index 9b0bcc20..d0d0b336 100644 --- a/ui/src/components/Card/Scenario.tsx +++ b/ui/src/components/Card/Scenario.tsx @@ -1,44 +1,77 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import React from "react"; +import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; -import { Card, CardActionArea, CardContent, CardMedia, Grid, Typography } from "@mui/material"; -import { Box } from "@mui/system"; +import { Box, CircularProgress, Grid, Typography } from "@mui/material"; import useStyles from "./styles"; -import { useScenario } from "../../context/ScenarioContext"; +import { Scenario as ScenarioDef, setups, useScenarios } from "../../context/ScenarioContext"; +import { useAdmin } from "../../context/AdminContext"; +import { Circular } from "../Progress/Circular"; +import { useLedger } from "@daml/react"; type ScenarioProps = { - label : string - description : string - image : string - width : number + scenario : ScenarioDef } -export const Scenario : React.FC = ({ label, description, image, width }) => { - const classes = useStyles(); +export const Scenario : React.FC = ({ scenario }) => { + const cls = useStyles(); const navigate = useNavigate() - const scenario = useScenario(); + const ledger = useLedger(); + const { loading: l1, ledgerParties, createParty, runSetup } = useAdmin(); + const { loading: l2, select, initialize } = useScenarios(); + const [ progress, setProgress ] = useState(scenario.isInitialized ? 100 : 0); + const [ loaded, setLoaded ] = useState(false); const selectScenario = () => { - const s = scenario.select(label); + const s = select(scenario.name); if (s.useNetworkLogin) navigate("/login/network"); else navigate("/login/form") }; + useEffect(() => { + const loadParties = async () => { + setLoaded(true); + console.log("Creating parties for scenario " + scenario.name); + for (var i = 0; i < scenario.parties.length; i++) { + const p = scenario.parties[i]; + const partyInfo = await createParty(p.party.displayName, p.party.displayName + "-" + scenario.name); + p.party = partyInfo; + setProgress(100 * (i+1) / scenario.parties.length); + }; + + console.log("Running scenario " + scenario.name); + const parties = scenario.parties.map(p => p.party.identifier); + const info = setups.find(si => si.scenario === scenario.name); + if (!!info) await runSetup(info.templateId, info.choice, parties); + else console.log("No setup choice found for scenario " + scenario.name); + + scenario.isInitialized = true; + initialize(scenario); + console.log("Scenario " + scenario.name + " is ready"); + }; + if (!l1 && !l2 && !scenario.isInitialized && !loaded) loadParties(); + }, [l1, l2, loaded, scenario, ledger, ledgerParties, initialize, createParty, runSetup]); + return ( - - - - - - - {label} - {description} - - - - - + + + + + {scenario.name} + + + {scenario.description} + + + {progress === 100 ? (scenario.isInitialized ? "Ready" : "Initializing scenario...") : "Creating parties..."} + + + {(progress < 100 || scenario.isInitialized) && } + {progress === 100 && !scenario.isInitialized && } + + + + ); }; diff --git a/ui/src/components/Card/styles.ts b/ui/src/components/Card/styles.ts index c22ab777..c0984294 100644 --- a/ui/src/components/Card/styles.ts +++ b/ui/src/components/Card/styles.ts @@ -42,6 +42,17 @@ export default makeStyles((theme : Theme) => createStyles({ color: theme.palette.text.primary, fontSize: 12 }, + scenarioBox: { + margin: 0, + "&:hover": { + background: "#ffffff33", + cursor: "pointer" + } + }, + scenarioItem: { + margin: 0, + paddingTop: "0!important" + }, tableRow: { height: "auto" }, diff --git a/ui/src/components/Claims/ClaimsTreeBuilder.tsx b/ui/src/components/Claims/ClaimsTreeBuilder.tsx index 3666d220..21a1512d 100644 --- a/ui/src/components/Claims/ClaimsTreeBuilder.tsx +++ b/ui/src/components/Claims/ClaimsTreeBuilder.tsx @@ -7,7 +7,7 @@ import { CustomNodeElementProps, Point, TreeNodeDatum } from "react-d3-tree/lib/ import { useTheme } from "@mui/material"; import { claimMenu, createAsset, createDate, createDecimal, createObservable, inequalityConstructors, inequalityTags, MenuEntry, observationConstructors, observationTags, updateNode } from "./util"; import useStyles from "./styles"; -import { InstrumentKey } from "@daml.js/daml-finance-interface-types/lib/Daml/Finance/Interface/Types/Common"; +import { InstrumentKey } from "@daml.js/daml-finance-interface-types-common/lib/Daml/Finance/Interface/Types/Common/Types"; import "./styles-dark.css"; export type ClaimsTreeBuilderProps = { diff --git a/ui/src/components/Claims/util.ts b/ui/src/components/Claims/util.ts index ed851072..4be30244 100644 --- a/ui/src/components/Claims/util.ts +++ b/ui/src/components/Claims/util.ts @@ -6,7 +6,7 @@ import { Claim, Inequality } from "@daml.js/contingent-claims-core/lib/Contingen import { Observation } from "@daml.js/contingent-claims-core/lib/ContingentClaims/Core/Observation"; import { Decimal, Time } from "@daml/types"; import { ClaimTreeNode } from "./ClaimsTreeBuilder"; -import { InstrumentKey } from "@daml.js/daml-finance-interface-types/lib/Daml/Finance/Interface/Types/Common"; +import { InstrumentKey } from "@daml.js/daml-finance-interface-types-common/lib/Daml/Finance/Interface/Types/Common/Types"; export type MenuEntry = { id : string diff --git a/ui/src/components/Header/Header.tsx b/ui/src/components/Header/Header.tsx index 1e963acb..380726e0 100644 --- a/ui/src/components/Header/Header.tsx +++ b/ui/src/components/Header/Header.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import React, { useState } from "react"; +import React from "react"; import { useNavigate } from "react-router-dom"; import AppBar from "@mui/material/AppBar"; import Toolbar from "@mui/material/Toolbar"; @@ -10,35 +10,31 @@ import Box from "@mui/material/Box"; import { Button, Icon } from "@mui/material"; import { useParty } from "@daml/react"; import useStyles from "./styles"; -import { useUserDispatch, signOut, loginUser } from "../../context/UserContext"; import { useBranding } from "../../context/BrandingContext"; import { useParties } from "../../context/PartiesContext"; -import { useScenario } from "../../context/ScenarioContext"; +import { useScenarios } from "../../context/ScenarioContext"; import { ActionSelect } from "../Form/ActionSelect"; import Home from "../../images/home.svg"; import Logout from "../../images/logout.svg"; - +import { useUser } from "../../context/UserContext"; export const Header : React.FC = () => { const classes = useStyles(); const navigate = useNavigate(); - const userDispatch = useUserDispatch(); + const { login, logout } = useUser(); const branding = useBranding(); - const { getName, getParty, getToken, users } = useParties(); + const { getName, names } = useParties(); const party = useParty(); - const scenario = useScenario(); - const [, setError] = useState(false); + const { selected } = useScenarios(); - const logout = () => { - signOut(userDispatch); - if (scenario.selected.useNetworkLogin) navigate("/login/network"); + const logoutUser = () => { + logout(); + if (selected.useNetworkLogin) navigate("/login/network"); else navigate("/login/form"); }; const changeUser = async (user : string) => { - const party = getParty(user); - const token = getToken(party); - await loginUser(userDispatch, user, party, token, navigate, setError); + login(user); }; const homeIcon = ; @@ -51,10 +47,10 @@ export const Header : React.FC = () => {
User: - + - + ); diff --git a/ui/src/components/Instrument/Aggregate.tsx b/ui/src/components/Instrument/Aggregate.tsx index ddcd91b4..d8f6c0f2 100644 --- a/ui/src/components/Instrument/Aggregate.tsx +++ b/ui/src/components/Instrument/Aggregate.tsx @@ -9,12 +9,12 @@ import useStyles from "./styles"; import { ClaimsTreeBuilder, ClaimTreeNode } from "../../components/Claims/ClaimsTreeBuilder"; import { and, claimToNode } from "../../components/Claims/util"; import { InstrumentAggregate } from "../../context/InstrumentContext"; -import { Service as Lifecycle } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Lifecycle/Service"; +import { Service as Lifecycle } from "@daml.js/daml-finance-app-interface-lifecycle/lib/Daml/Finance/App/Interface/Lifecycle/Service"; import { useParties } from "../../context/PartiesContext"; import { shorten } from "../../util"; import { Spinner } from "../Spinner/Spinner"; -import { useServices } from "../../context/ServiceContext"; -import { NumericObservable } from "@daml.js/daml-finance-interface-data/lib/Daml/Finance/Interface/Data/NumericObservable"; +import { useServices } from "../../context/ServicesContext"; +import { NumericObservable } from "@daml.js/daml-finance-interface-lifecycle/lib/Daml/Finance/Interface/Lifecycle/Observable/NumericObservable"; import { VerticalTable } from "../Table/VerticalTable"; type AggregateProps = { @@ -32,17 +32,17 @@ export const Aggregate : React.FC = ({ instrument }) => { useEffect(() => { const setClaims = async () => { if (!l1 && !l2 && !!instrument.claim) { - const [res, ] = await ledger.exercise(Lifecycle.GetCurrentClaims, lifecycle[0].contractId, { instrumentCid: instrument.claim.contractId, observableCids: observables.map(c => c.contractId) }) + const [res, ] = await ledger.exercise(Lifecycle.GetCurrentClaims, lifecycle.services[0].service.contractId, { instrumentCid: instrument.claim.contractId, observableCids: observables.map(c => c.contractId) }) const claims = res.length > 1 ? and(res.map(r => r.claim)) : res[0].claim; setNode(claimToNode(claims)); } } - setClaims(); + if (lifecycle.services.length > 0) setClaims(); }, [lifecycle, instrument, observables, l1, l2, ledger]); if (l1 || l2) return - const headers = ["Depository", "Issuer", "Id", "Description", "Version", "ValidAsOf"].concat(!!instrument.lifecycle ? ["Lifecycler"] : []); + const headers = ["Depository", "Issuer", "Id", "Description", "Version", "ValidAsOf"]; const values : any[] = [ getName(instrument.payload.depository), getName(instrument.payload.issuer), @@ -50,7 +50,7 @@ export const Aggregate : React.FC = ({ instrument }) => { instrument.payload.description, shorten(instrument.payload.version), instrument.payload.validAsOf - ].concat(!!instrument.lifecycle ? [getName(instrument.lifecycle.payload.lifecycler)] : []); + ]; return ( diff --git a/ui/src/components/Progress/Circular.tsx b/ui/src/components/Progress/Circular.tsx new file mode 100644 index 00000000..5e939f85 --- /dev/null +++ b/ui/src/components/Progress/Circular.tsx @@ -0,0 +1,32 @@ +// Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import React from "react"; +import CircularProgress, { CircularProgressProps } from "@mui/material/CircularProgress"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; + +type CircularProps = CircularProgressProps & { + value : number +}; + +export const Circular : React.FC = (props : CircularProps) => { + return ( + + + + {Math.round(props.value)}% + + + ); +} diff --git a/ui/src/components/Sidebar/Sidebar.tsx b/ui/src/components/Sidebar/Sidebar.tsx index 4ef60998..e28a2746 100644 --- a/ui/src/components/Sidebar/Sidebar.tsx +++ b/ui/src/components/Sidebar/Sidebar.tsx @@ -9,7 +9,7 @@ import { Entry } from "./Route"; import useStyles from "./styles"; import { Button, Divider } from "@mui/material"; import { ActionSelect } from "../Form/ActionSelect"; -import { useScenario } from "../../context/ScenarioContext"; +import { useScenarios } from "../../context/ScenarioContext"; import { useNavigate } from "react-router-dom"; type SidebarProps = { @@ -20,7 +20,7 @@ type SidebarProps = { export const Sidebar : React.FC = ({ app, entries } : SidebarProps) => { const classes = useStyles(); const navigate = useNavigate(); - const scenario = useScenario(); + const { selected } = useScenarios(); const links = entries.filter(e => !e.action); const actions = entries.filter(e => !!e.action); @@ -30,7 +30,7 @@ export const Sidebar : React.FC = ({ app, entries } : SidebarProps
{links.map(e => )} diff --git a/ui/src/context/AccountContext.tsx b/ui/src/context/AccountContext.tsx index ab4aec0a..0bb92d15 100644 --- a/ui/src/context/AccountContext.tsx +++ b/ui/src/context/AccountContext.tsx @@ -3,9 +3,9 @@ import React from "react"; import { useParty, useStreamQueries } from "@daml/react"; -import { AccountKey, InstrumentKey } from "@daml.js/daml-finance-interface-types/lib/Daml/Finance/Interface/Types/Common"; +import { AccountKey, InstrumentKey } from "@daml.js/daml-finance-interface-types-common/lib/Daml/Finance/Interface/Types/Common/Types"; import { Reference } from "@daml.js/daml-finance-interface-account/lib/Daml/Finance/Interface/Account/Account"; -import { AccountDirectory } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Data/AccountDirectory"; +import { AccountDirectory } from "@daml.js/daml-finance-app-data/lib/Daml/Finance/App/Data/AccountDirectory"; export type AccountState = { loading : boolean diff --git a/ui/src/context/AdminContext.tsx b/ui/src/context/AdminContext.tsx new file mode 100644 index 00000000..79f22b56 --- /dev/null +++ b/ui/src/context/AdminContext.tsx @@ -0,0 +1,91 @@ +// Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import React, { useMemo, useState } from "react"; +import axios from "axios"; +import { encode } from "jwt-simple"; + +export type PartyInfo = { + displayName : string + identifier : string + isLocal : boolean + scenario : string +}; + +type AdminState = { + loading : boolean + ledgerId : string + ledgerParties : PartyInfo[] + createParty : (displayName : string, identifierHint: string) => Promise + getMultiPartyToken : (parties : string[]) => Promise + runSetup : (templateId : string, choice : string, parties : string[]) => Promise +}; + +const defaultState : AdminState = { + loading: true, + ledgerId: "", + ledgerParties: [], + createParty: (a, b) => { throw new Error("Not implemented") }, + getMultiPartyToken: (parties) => { throw new Error("Not implemented") }, + runSetup: (templateId, choice, parties) => { throw new Error("Not implemented") } +}; +const AdminContext = React.createContext(defaultState); + +export const AdminProvider : React.FC = ({ children }) => { + const [state, setState] = useState(defaultState); + + const createParty = async (displayName: string, identifierHint: string) => { + const payload = { ledgerId: "sandbox", applicationId: "daml-finance-app", admin: true }; + const token = encode({ "https://daml.com/ledger-api": payload }, "secret", "HS256"); + const config = { headers: { "Authorization": "Bearer " + token } }; + const body = { identifierHint, displayName }; + const { data } = await axios.post("/v1/parties/allocate", body, config); + return data.result as PartyInfo; + }; + + const getMultiPartyToken = (parties: string[]) => { + const payload = { ledgerId: "sandbox", applicationId: "daml-finance-app", admin: true, actAs: parties }; + const token = encode({ "https://daml.com/ledger-api": payload }, "secret", "HS256"); + return Promise.resolve(token); + }; + + const runSetup = async (templateId : string, choice : string, parties: string[]) => { + const token = await getMultiPartyToken(parties); + const config = { headers: { "Authorization": "Bearer " + token } }; + const body = { + templateId, + payload: { parties }, + choice: choice, + argument: {} + } + await axios.post("/v1/create-and-exercise", body, config); + }; + + const initialize = async () => { + const payload = { ledgerId: "sandbox", applicationId: "daml-finance-app", admin: true }; + const token = encode({ "https://daml.com/ledger-api": payload }, "secret", "HS256"); + const config = { headers: { "Authorization": "Bearer " + token } }; + const { data } = await axios.get("/v1/parties", config); + const ledgerParties : PartyInfo[] = data.result; + const sandboxParty = ledgerParties.find(p => p.identifier.startsWith("sandbox::")); + if (!sandboxParty) throw new Error("Couldn't find sandbox party"); + const participantId = sandboxParty.identifier.split("::")[1]; + console.log("LedgerId: " + participantId); + console.log("Parties: " + ledgerParties.length); + setState(s => ({ ...s, loading: false, ledgerId: participantId, ledgerParties })); + }; + + useMemo(() => { + initialize(); + }, []); + + return ( + + {children} + + ); +} + +export const useAdmin = () => { + return React.useContext(AdminContext); +} diff --git a/ui/src/context/HoldingContext.tsx b/ui/src/context/HoldingContext.tsx index fc91dc0f..b6fd70da 100644 --- a/ui/src/context/HoldingContext.tsx +++ b/ui/src/context/HoldingContext.tsx @@ -8,7 +8,7 @@ import { keyEquals } from "../util"; import { Base } from "@daml.js/daml-finance-interface-holding/lib/Daml/Finance/Interface/Holding/Base"; import { Transferable } from "@daml.js/daml-finance-interface-holding/lib/Daml/Finance/Interface/Holding/Transferable"; import { Fungible } from "@daml.js/daml-finance-interface-holding/lib/Daml/Finance/Interface/Holding/Fungible"; -import { InstrumentKey } from "@daml.js/daml-finance-interface-types/lib/Daml/Finance/Interface/Types/Common"; +import { InstrumentKey } from "@daml.js/daml-finance-interface-types-common/lib/Daml/Finance/Interface/Types/Common/Types"; import { ContractId } from "@daml/types"; type HoldingState = { diff --git a/ui/src/context/InstrumentContext.tsx b/ui/src/context/InstrumentContext.tsx index 85098ff0..60934c48 100644 --- a/ui/src/context/InstrumentContext.tsx +++ b/ui/src/context/InstrumentContext.tsx @@ -16,9 +16,8 @@ import { Instrument as CurrencySwap } from "@daml.js/daml-finance-interface-inst import { Instrument as ForeignExchangeSwap } from "@daml.js/daml-finance-interface-instrument-swap/lib/Daml/Finance/Interface/Instrument/Swap/ForeignExchange/Instrument"; import { Instrument as InterestRateSwap } from "@daml.js/daml-finance-interface-instrument-swap/lib/Daml/Finance/Interface/Instrument/Swap/InterestRate/Instrument"; import { Instrument as Token } from "@daml.js/daml-finance-interface-instrument-token/lib/Daml/Finance/Interface/Instrument/Token/Instrument"; -import { Lifecycle } from "@daml.js/daml-finance-interface-lifecycle/lib/Daml/Finance/Interface/Lifecycle/Rule/Lifecycle"; import { Claim } from "@daml.js/daml-finance-interface-claims/lib/Daml/Finance/Interface/Claims/Claim"; -import { Id, InstrumentKey } from "@daml.js/daml-finance-interface-types/lib/Daml/Finance/Interface/Types/Common"; +import { Id, InstrumentKey } from "@daml.js/daml-finance-interface-types-common/lib/Daml/Finance/Interface/Types/Common/Types"; import { key } from "../util"; import { Disclosure } from "@daml.js/daml-finance-interface-util/lib/Daml/Finance/Interface/Util/Disclosure"; @@ -42,7 +41,6 @@ type InstrumentState = { export type InstrumentAggregate = CreateEvent & { key : InstrumentKey - lifecycle : CreateEvent | undefined claim : CreateEvent | undefined token : CreateEvent | undefined equity : CreateEvent | undefined @@ -91,21 +89,20 @@ const InstrumentContext = React.createContext(empty); export const InstrumentProvider : React.FC = ({ children }) => { const { loading: l1, contracts: instruments } = useStreamQueries(Base); - const { loading: l2, contracts: lifecycles } = useStreamQueries(Lifecycle); - const { loading: l3, contracts: claims } = useStreamQueries(Claim); - const { loading: l4, contracts: tokens } = useStreamQueries(Token); - const { loading: l5, contracts: equities } = useStreamQueries(Equity); - const { loading: l6, contracts: generics } = useStreamQueries(Generic); - const { loading: l7, contracts: fixedRateBonds } = useStreamQueries(FixedRateBond); - const { loading: l8, contracts: floatingRateBonds } = useStreamQueries(FloatingRateBond); - const { loading: l9, contracts: inflationLinkedBonds } = useStreamQueries(InflationLinkedBond); - const { loading: l10, contracts: zeroCouponBonds } = useStreamQueries(ZeroCouponBond); - const { loading: l11, contracts: creditDefaultSwaps } = useStreamQueries(CreditDefaultSwap); - const { loading: l12, contracts: currencySwaps } = useStreamQueries(CurrencySwap); - const { loading: l13, contracts: foreignExchangeSwaps } = useStreamQueries(ForeignExchangeSwap); - const { loading: l14, contracts: interestRateSwaps } = useStreamQueries(InterestRateSwap); - const { loading: l15, contracts: disclosures } = useStreamQueries(Disclosure); - const loading = l1 || l2 || l3 || l4 || l5 || l6 || l7 || l8 || l9 || l10 || l11 || l12 || l13 || l14 || l15; + const { loading: l2, contracts: claims } = useStreamQueries(Claim); + const { loading: l3, contracts: tokens } = useStreamQueries(Token); + const { loading: l4, contracts: equities } = useStreamQueries(Equity); + const { loading: l5, contracts: generics } = useStreamQueries(Generic); + const { loading: l6, contracts: fixedRateBonds } = useStreamQueries(FixedRateBond); + const { loading: l7, contracts: floatingRateBonds } = useStreamQueries(FloatingRateBond); + const { loading: l8, contracts: inflationLinkedBonds } = useStreamQueries(InflationLinkedBond); + const { loading: l9, contracts: zeroCouponBonds } = useStreamQueries(ZeroCouponBond); + const { loading: l10, contracts: creditDefaultSwaps } = useStreamQueries(CreditDefaultSwap); + const { loading: l11, contracts: currencySwaps } = useStreamQueries(CurrencySwap); + const { loading: l12, contracts: foreignExchangeSwaps } = useStreamQueries(ForeignExchangeSwap); + const { loading: l13, contracts: interestRateSwaps } = useStreamQueries(InterestRateSwap); + const { loading: l14, contracts: disclosures } = useStreamQueries(Disclosure); + const loading = l1 || l2 || l3 || l4 || l5 || l6 || l7 || l8 || l9 || l10 || l11 || l12 || l13 || l14; if (loading) { return ( @@ -115,7 +112,6 @@ export const InstrumentProvider : React.FC = ({ children }) => { ); } else { const aggregatesByCid : Map = new Map(); - const lifecycleByCid : Map> = new Map(lifecycles.map(c => [c.contractId, c])); const claimsByCid : Map> = new Map(claims.map(c => [c.contractId, c])); const tokensByCid : Map> = new Map(tokens.map(c => [c.contractId, c])); const equitiesByCid : Map> = new Map(equities.map(c => [c.contractId, c])); @@ -134,7 +130,6 @@ export const InstrumentProvider : React.FC = ({ children }) => { const aggregate = { ...c, key: key(c), - lifecycle: lifecycleByCid.get(c.contractId), claim: claimsByCid.get(c.contractId), token: tokensByCid.get(c.contractId), equity: equitiesByCid.get(c.contractId), diff --git a/ui/src/context/PartiesContext.tsx b/ui/src/context/PartiesContext.tsx index 87ecabf1..d15ee588 100644 --- a/ui/src/context/PartiesContext.tsx +++ b/ui/src/context/PartiesContext.tsx @@ -1,12 +1,12 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import React, { useMemo, useState } from 'react'; -import { encode } from 'jwt-simple'; -import { useScenario } from './ScenarioContext'; -import parties from "../parties.json"; +import React, { useEffect, useState } from "react"; +import { encode } from "jwt-simple"; +import { useScenarios } from "./ScenarioContext"; import { Set } from "@daml.js/97b883cd8a2b7f49f90d5d39c981cf6e110cf1f1c64427a28a6d58ec88c43657/lib/DA/Set/Types" -import { values } from '../util'; +import { values } from "../util"; +import { PartyInfo } from "./AdminContext"; const createToken = (party : string, pub : string) => { const payload = { @@ -20,48 +20,50 @@ const createToken = (party : string, pub : string) => { }; export type PartyState = { - users : string[] + loading : boolean + names : string[] + parties : string[] getParty : (name : string) => string, getName : (id : string) => string, getNames : (ids : Set) => string, getToken : (id : string) => string, } -const empty = { - users: [], +const defaultState = { + loading: true, + names: [], + parties: [], getParty: (name : string) => "", getName: (id : string) => "", getNames: (ids : Set) => "", getToken: (id : string) => "" -} -const PartyContext = React.createContext(empty); +}; +const PartyContext = React.createContext(defaultState); export const PartyProvider : React.FC = ({ children }) => { - const scenario = useScenario(); - const [partyIds, setPartyIds] = useState({}); - const [partyNames, setPartyNames] = useState({}); - const [partyTokens, setPartyTokens] = useState({}); + const { loading, selected } = useScenarios(); + const [state, setState] = useState(defaultState); - useMemo(() => { - const filtered = parties.filter(p => p.scenario === scenario.selected.label); + useEffect(() => { + if (loading) return; + const partyInfos : PartyInfo[] = selected.parties.map(p => p.party); + const names = selected.parties.map(p => p.party.displayName); + const parties = selected.parties.map(p => p.party.identifier); const pIds : any = {}; const pNames : any = {}; const pTokens : any = {}; - filtered.forEach((p : any) => pIds[p.name] = p.id); - filtered.forEach((p : any) => pNames[p.id] = p.name); - filtered.forEach((p : any) => pTokens[p.id] = createToken(p.id, pIds["Public"])); - setPartyIds(pIds); - setPartyNames(pNames); - setPartyTokens(pTokens); - }, [scenario]); - - const getParty = (name : string) => (partyIds[name] || "") as string; - const getName = (id : string) => (partyNames[id] || "") as string; - const getNames = (ids : Set) => (values(ids).map(id => partyNames[id]).join(", ") || "") as string; - const getToken = (id : string) => (partyTokens[id] || "") as string; + partyInfos.forEach(p => pIds[p.displayName] = p.identifier); + partyInfos.forEach(p => pNames[p.identifier] = p.displayName); + partyInfos.forEach(p => pTokens[p.identifier] = createToken(p.identifier, pIds["Public"])); + const getParty = (name : string) => (pIds[name] || "") as string; + const getName = (id : string) => (pNames[id] || "") as string; + const getNames = (ids : Set) => (values(ids).map(id => pNames[id]).join(", ") || "") as string; + const getToken = (id : string) => (pTokens[id] || "") as string; + setState({ loading: false, names, parties, getParty, getName, getNames, getToken }); + }, [loading, selected]); return ( - + {children} ); diff --git a/ui/src/context/ScenarioContext.tsx b/ui/src/context/ScenarioContext.tsx index 9bc36ceb..7d554503 100644 --- a/ui/src/context/ScenarioContext.tsx +++ b/ui/src/context/ScenarioContext.tsx @@ -1,16 +1,8 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { App } from "../components/Card/App"; -import scenarioBondIssuance from "../images/scenario/bondIssuance.png"; -import scenarioCorporateActions from "../images/scenario/corporateActions.png"; -import scenarioDefault from "../images/scenario/default.png"; -import scenarioDecentralizedFinance from "../images/scenario/decentralizedFinance.png"; -import scenarioFundTokenization from "../images/scenario/fundTokenization.png"; -import scenarioSecuritiesLending from "../images/scenario/securitiesLending.png"; -import scenarioStructuredNotes from "../images/scenario/structuredNotes.png"; -import scenarioNaturalGas from "../images/scenario/naturalGas.png"; import appStructuring from "../images/app/structuring.png"; import appIssuance from "../images/app/issuance.png"; import appLending from "../images/app/lending.jpg"; @@ -22,209 +14,275 @@ import appSimulation from "../images/app/simulation.png"; import appListing from "../images/app/listing.png"; import appTrading from "../images/app/trading.png"; import appNetwork from "../images/app/network.png"; +import { PartyInfo, useAdmin } from "./AdminContext"; +import { Scenario as BondIssuance } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/BondIssuance"; +import { Scenario as CorporateActions } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/CorporateActions"; +import { Scenario as DecentralizedFinance } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/DecentralizedFinance"; +import { Scenario as Default } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/Default"; +import { Scenario as FundTokenization } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/FundTokenization"; +import { Scenario as NaturalGas } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/NaturalGas"; +import { Scenario as SecuritiesLending } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/SecuritiesLending"; +import { Scenario as StructuredNotes } from "@daml.js/daml-finance-app-setup/lib/Daml/Finance/App/Setup/Scenario/StructuredNotes"; type Position = { x : number y : number }; +type PartyPosition = { + party : PartyInfo + position : Position +}; + export type Scenario = { - label : string, + name : string, description : string, - apps: AppInfo[], - image : string, - positions : Map, - useNetworkLogin: boolean + apps: string[], + parties : PartyPosition[], + useNetworkLogin: boolean, + isInitialized: boolean, }; -export type ScenarioState = { +type ScenarioState = { selected : Scenario + scenarios : Scenario[] select : (name : string) => Scenario -} + initialize : (scenario : Scenario) => void + loading : boolean +}; type AppInfo = { name : string - path : string - elem : JSX.Element -} + element : JSX.Element +}; + +type SetupInfo = { + scenario : string + templateId : string + choice : string +}; + +export const applications : AppInfo[] = [ + { name: "Structuring", element: }, + { name: "Issuance", element: }, + { name: "Custody", element: }, + { name: "DeFi", element: }, + { name: "Distribution", element: }, + { name: "Lending", element: }, + { name: "Servicing", element: }, + { name: "Simulation", element: }, + { name: "Listing", element: }, + { name: "Trading", element: }, + { name: "Network", element: }, + { name: "Settlement", element: }, +]; + +export const setups : SetupInfo[] = [ + { scenario: "Bond Issuance", templateId: BondIssuance.templateId, choice: "Setup" }, + { scenario: "Corporate Actions", templateId: CorporateActions.templateId, choice: "Setup" }, + { scenario: "Decentralized Finance", templateId: DecentralizedFinance.templateId, choice: "Setup" }, + { scenario: "Default", templateId: Default.templateId, choice: "Setup" }, + { scenario: "Fund Tokenization", templateId: FundTokenization.templateId, choice: "Setup" }, + { scenario: "Natural Gas", templateId: NaturalGas.templateId, choice: "Setup" }, + { scenario: "Securities Lending", templateId: SecuritiesLending.templateId, choice: "Setup" }, + { scenario: "Structured Notes", templateId: StructuredNotes.templateId, choice: "Setup" }, +]; + +const createParty = (name: string, x: number, y: number) : PartyPosition => { + return { party: { displayName: name, identifier: "", isLocal: true, scenario: "" }, position: { x, y }}; +}; -const structuring = { name: "Structuring", path: "structuring", elem: }; -const issuance = { name: "Issuance", path: "issuance", elem: }; -const custody = { name: "Custody", path: "custody", elem: }; -const defi = { name: "DeFi", path: "defi", elem: }; -const distribution = { name: "Distribution", path: "distribution", elem: }; -const lending = { name: "Lending", path: "lending", elem: }; -const servicing = { name: "Servicing", path: "servicing", elem: }; -const simulation = { name: "Simulation", path: "simulation", elem: }; -const listing = { name: "Listing", path: "listing", elem: }; -const trading = { name: "Trading", path: "trading", elem: }; -const network = { name: "Network", path: "network", elem: }; -const settlement = { name: "Settlement", path: "settlement", elem: }; - -export const scenarios : Scenario[] = [ +const defaultScenarios : Scenario[] = [ { - label: "Default", + name: "Default", description: "Primary and secondary markets workflows", - image: scenarioDefault, - apps: [ structuring, issuance, custody, distribution, servicing, simulation, listing, trading, network ], - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "CentralBank", { x: 400, y: 0 } ], - [ "Registry", { x: 800, y: 50 } ], - [ "Exchange", { x: 800, y: 550 } ], - [ "Agent", { x: 400, y: 600 } ], - [ "Issuer", { x: 1200, y: 300 } ], - [ "Investor1", { x: 0, y: 300 } ], - [ "Investor2", { x: 400, y: 300 } ], - [ "Investor3", { x: 800, y: 300 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Distribution", "Servicing", "Simulation", "Listing", "Trading", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("CentralBank", 400, 0), + createParty("Registry", 800, 50), + createParty("Exchange", 800, 550), + createParty("Agent", 400, 600), + createParty("Issuer", 1200, 300), + createParty("Investor1", 0, 300), + createParty("Investor2", 400, 300), + createParty("Investor3", 800, 300) + ], + useNetworkLogin: true, + isInitialized: false, }, { - label: "Bond Issuance", + name: "Bond Issuance", description: "Simple bond issuance custody scenario", - image: scenarioBondIssuance, - apps: [ structuring, issuance, custody, distribution, servicing, listing, trading, settlement, network ], - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "CentralBank", { x: 400, y: 0 } ], - [ "Registry", { x: 800, y: 0 } ], - [ "Custodian", { x: 400, y: 300 } ], - [ "Issuer", { x: 800, y: 300 } ], - [ "Investor1", { x: 0, y: 600 } ], - [ "Investor2", { x: 400, y: 600 } ], - [ "Investor3", { x: 800, y: 600 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Distribution", "Servicing", "Listing", "Trading", "Settlement", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("CentralBank", 400, 0), + createParty("Registry", 800, 0), + createParty("Custodian", 400, 300), + createParty("Issuer", 800, 300), + createParty("Investor1", 0, 600), + createParty("Investor2", 400, 600), + createParty("Investor3", 800, 600) + ], + useNetworkLogin: true, + isInitialized: false }, { - label: "Corporate Actions", + name: "Corporate Actions", description: "Equity workflows for corporate actions", - image: scenarioCorporateActions, - apps: [ structuring, issuance, custody, distribution, servicing, listing, trading, settlement, network ], - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "CentralBank", { x: 400, y: 0 } ], - [ "Registry", { x: 800, y: 0 } ], - [ "Custodian", { x: 400, y: 300 } ], - [ "Issuer", { x: 800, y: 300 } ], - [ "Investor1", { x: 0, y: 600 } ], - [ "Investor2", { x: 400, y: 600 } ], - [ "Investor3", { x: 800, y: 600 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Distribution", "Servicing", "Listing", "Trading", "Settlement", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("CentralBank", 400, 0), + createParty("Registry", 800, 0), + createParty("Custodian", 400, 300), + createParty("Issuer", 800, 300), + createParty("Investor1", 0, 600), + createParty("Investor2", 400, 600), + createParty("Investor3", 800, 600) + ], + useNetworkLogin: true, + isInitialized: false }, { - label: "Securities Lending", + name: "Securities Lending", description: "Stock borrowing and lending scenario", - image: scenarioSecuritiesLending, - apps: [ structuring, issuance, custody, lending, servicing, settlement, network ], - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "CentralBank", { x: 400, y: 0 } ], - [ "Registry", { x: 800, y: 0 } ], - [ "Borrower", { x: 400, y: 400 } ], - [ "Lender", { x: 800, y: 200 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Lending", "Servicing", "Settlement", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("CentralBank", 400, 0), + createParty("Registry", 800, 0), + createParty("Borrower", 400, 400), + createParty("Lender", 800, 200) + ], + useNetworkLogin: true, + isInitialized: false }, { - label: "Natural Gas", + name: "Natural Gas", description: "Modeling complex commodity trades", - image: scenarioNaturalGas, - apps: [ structuring, issuance, custody, servicing, network ], - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "CentralBank", { x: 200, y: 0 } ], - [ "Seller", { x: 400, y: 200 } ], - [ "Buyer", { x: 0, y: 400 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Servicing", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("CentralBank", 200, 0), + createParty("Seller", 400, 200), + createParty("Buyer", 0, 400) + ], + useNetworkLogin: true, + isInitialized: false }, { - label: "Structured Notes", + name: "Structured Notes", description: "Synchronized issuance for structured products", - apps: [ structuring, issuance, custody, distribution, servicing, listing, trading, settlement, network ], - image: scenarioStructuredNotes, - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "Depository", { x: 0, y: 0 } ], - [ "CentralBank", { x: 200, y: 0 } ], - [ "Issuer", { x: 100, y: 300 } ], - [ "RiskTaker", { x: 0, y: 150 } ], - [ "Investor1", { x: 200, y: 450 } ], - [ "Investor2", { x: 400, y: 450 } ], - [ "Investor3", { x: 600, y: 450 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Distribution", "Servicing", "Listing", "Trading", "Settlement", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("Depository", 0, 0), + createParty("CentralBank", 200, 0), + createParty("Issuer", 100, 300), + createParty("RiskTaker", 0, 150), + createParty("Investor1", 200, 450), + createParty("Investor2", 400, 450), + createParty("Investor3", 600, 450) + ], + useNetworkLogin: true, + isInitialized: false }, { - label: "Fund Tokenization", + name: "Fund Tokenization", description: "Issuance and distribution of funds", - apps: [ structuring, issuance, custody, distribution, servicing, listing, trading, settlement, network ], - image: scenarioFundTokenization, - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "CashProvider", { x: 300, y: 0 } ], - [ "AssetManager", { x: 300, y: 300 } ], - [ "PortfolioManager", { x: 0, y: 300 } ], - [ "Custodian", { x: 0, y: 150 } ], - [ "Investor1", { x: 0, y: 450 } ], - [ "Investor2", { x: 300, y: 525 } ], - [ "Investor3", { x: 600, y: 450 } ] - ]), - useNetworkLogin: true + apps: [ "Structuring", "Issuance", "Custody", "Distribution", "Servicing", "Listing", "Trading", "Settlement", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("CashProvider", 300, 0), + createParty("AssetManager", 300, 300), + createParty("PortfolioManager", 0, 300), + createParty("Custodian", 0, 150), + createParty("Investor1", 0, 450), + createParty("Investor2", 300, 525), + createParty("Investor3", 600, 450) + ], + useNetworkLogin: true, + isInitialized: false }, { - label: "Decentralized Finance", + name: "Decentralized Finance", description: "Experimental Decentralized Financial protocols", - apps: [ custody, defi, network ], - image: scenarioDecentralizedFinance, - positions: new Map([ - [ "Operator", { x: 0, y: 0 } ], - [ "Public", { x: 0, y: 0 } ], - [ "FED", { x: 0, y: 0 } ], - [ "ECB", { x: 200, y: 0 } ], - [ "SNB", { x: 400, y: 0 } ], - [ "BOE", { x: 600, y: 0 } ], - [ "Consortium", { x: 200, y: 300 } ], - [ "Trader", { x: 400, y: 300 } ], - ]), - useNetworkLogin: true + apps: [ "Custody", "DeFi", "Network", ], + parties: [ + createParty("Operator", 0, 0), + createParty("Public", 0, 0), + createParty("FED", 0, 0), + createParty("ECB", 200, 0), + createParty("SNB", 400, 0), + createParty("BOE", 600, 0), + createParty("Consortium", 200, 300), + createParty("Trader", 400, 300), + ], + useNetworkLogin: true, + isInitialized: false } ]; -const ScenarioContext = React.createContext({ selected: scenarios[0], select: _ => scenarios[0] }); +const defaultState : ScenarioState = { selected: defaultScenarios[0], scenarios: defaultScenarios, select: _ => defaultScenarios[0], initialize: _ => null, loading: true }; +const ScenarioContext = React.createContext(defaultState); export const ScenarioProvider : React.FC = ({ children }) => { - const scenarioName = localStorage.getItem("daml.scenario") || "Default"; - const scenario = scenarios.find(s => s.label === scenarioName) || scenarios.find(s => s.label === "Default"); - if (!scenario) throw new Error("Couldn't find scenario " + scenarioName); + const { loading, ledgerId } = useAdmin(); + const [ state, setState ] = useState(defaultState); - const [ selected, setSelected ] = useState(scenario); + // TODO: Check if this could be racy + const initialize = (scenario : Scenario) => { + if (loading) throw new Error("Trying to initialize scenario but still loading"); + const scenariosKey = ledgerId + ".scenarios"; + const newScenarios = state.scenarios.map(s => s.name === scenario.name ? scenario : s); + console.log("Storing scenarios for " + scenariosKey); + localStorage.setItem(scenariosKey, JSON.stringify(newScenarios)); + if (state.selected.name === scenario.name) setState({ ...state, scenarios: newScenarios, selected: scenario }); + else setState(s => ({ ...s, scenarios: newScenarios })); + }; const select = (name : string) : Scenario => { - const s = scenarios.find(s => s.label === name); - if (!s) throw new Error("Couldn't find scenario " + name); - localStorage.setItem("daml.scenario", name); - setSelected(s); - return s; + if (loading) throw new Error("Trying to select scenario but still loading"); + const scenarioKey = ledgerId + ".scenario"; + const selected = state.scenarios.find(s => s.name === name); + if (!selected) throw new Error("Couldn't find scenario " + name); + localStorage.setItem(scenarioKey, name); + setState(s => ({ ...s, selected })); + return selected; } + useEffect(() => { + if (loading) return; + + const scenariosKey = ledgerId + ".scenarios"; + const storedScenariosString = localStorage.getItem(scenariosKey); + const scenarios : Scenario[] = !!storedScenariosString ? JSON.parse(storedScenariosString) : defaultScenarios; + + const scenarioKey = ledgerId + ".scenario"; + const scenarioName = localStorage.getItem(scenarioKey) || "Default"; + const selected = scenarios.find(s => s.name === scenarioName); + if (!selected) throw new Error("Couldn't find scenario " + scenarioName); + + console.log("Scenario: " + scenarioName); + setState(s => ({ ...s, loading: false , selected, scenarios})); + }, [loading, ledgerId]); + return ( - + {children} ); } -export const useScenario = () => { +export const useScenarios = () => { return React.useContext(ScenarioContext); } diff --git a/ui/src/context/ServiceContext.tsx b/ui/src/context/ServiceContext.tsx deleted file mode 100644 index 88b44909..00000000 --- a/ui/src/context/ServiceContext.tsx +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -// SPDX-License-Identifier: Apache-2.0 - -import React from "react"; -import { CreateEvent } from "@daml/ledger"; -import { useStreamQueries } from "@daml/react"; -import { Service as BackToBackService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/BackToBack/Service" -import { Service as CustodyService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Custody/Service" -import { Service as DecentralizedExchangeService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Decentralized/Exchange/Service" -import { Service as AuctionService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Service" -import { Service as AuctionAutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Auto/Service" -import { Service as BiddingService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Service" -import { Service as BiddingAutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Auto/Service" -import { Service as SubscriptionService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Subscription/Service" -import { Service as FundService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Service" -import { Service as InvestmentService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Investment/Service" -import { Service as IssuanceService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Issuance/Service" -import { Service as IssuanceAutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Issuance/Auto/Service" -import { Service as LendingService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Lending/Service" -import { Service as LifecycleService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Lifecycle/Service" -import { Service as StructuringService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Structuring/Service" -import { Service as StructuringAutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Structuring/Auto/Service" -import { Service as ListingService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Listing/Service" -import { Service as ListingAutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Listing/Auto/Service" -import { Service as SettlementService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Settlement/Service" -import { Service as TradingService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Trading/Service" -import { Service as TradingAutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Trading/Auto/Service" - -export type ServicesState = { - loading : boolean - backToBack : readonly CreateEvent[] - custody : readonly CreateEvent[] - decentralizedExchange : readonly CreateEvent[] - auctionAuto : readonly CreateEvent[] - auction : readonly CreateEvent[] - biddingAuto : readonly CreateEvent[] - bidding : readonly CreateEvent[] - fund : readonly CreateEvent[] - investment : readonly CreateEvent[] - issuanceAuto : readonly CreateEvent[] - issuance : readonly CreateEvent[] - lending : readonly CreateEvent[] - lifecycle : readonly CreateEvent[] - listingAuto : readonly CreateEvent[] - listing : readonly CreateEvent[] - settlement : readonly CreateEvent[] - structuringAuto : readonly CreateEvent[] - structuring : readonly CreateEvent[] - subscription : readonly CreateEvent[] - tradingAuto : readonly CreateEvent[] - trading : readonly CreateEvent[] -}; - -const empty = { - loading: true, - backToBack: [], - custody: [], - decentralizedExchange: [], - auctionAuto: [], - auction: [], - biddingAuto: [], - bidding: [], - fund: [], - investment: [], - issuanceAuto: [], - issuance: [], - lending: [], - lifecycle: [], - listingAuto: [], - listing: [], - settlement: [], - structuringAuto: [], - structuring: [], - subscription: [], - tradingAuto: [], - trading: [] -}; - -const ServicesContext = React.createContext(empty); - -export const ServicesProvider : React.FC = ({ children }) => { - - const { loading: l1, contracts: backToBack } = useStreamQueries(BackToBackService); - const { loading: l2, contracts: custody } = useStreamQueries(CustodyService); - const { loading: l3, contracts: decentralizedExchange } = useStreamQueries(DecentralizedExchangeService); - const { loading: l4, contracts: auctionAuto } = useStreamQueries(AuctionAutoService); - const { loading: l5, contracts: auction } = useStreamQueries(AuctionService); - const { loading: l6, contracts: biddingAuto } = useStreamQueries(BiddingAutoService); - const { loading: l7, contracts: bidding } = useStreamQueries(BiddingService); - const { loading: l8, contracts: fund } = useStreamQueries(FundService); - const { loading: l9, contracts: investment } = useStreamQueries(InvestmentService); - const { loading: l10, contracts: issuanceAuto } = useStreamQueries(IssuanceAutoService); - const { loading: l11, contracts: issuance } = useStreamQueries(IssuanceService); - const { loading: l12, contracts: lending } = useStreamQueries(LendingService); - const { loading: l13, contracts: lifecycle } = useStreamQueries(LifecycleService); - const { loading: l14, contracts: listingAuto } = useStreamQueries(ListingAutoService); - const { loading: l15, contracts: listing } = useStreamQueries(ListingService); - const { loading: l16, contracts: settlement } = useStreamQueries(SettlementService); - const { loading: l17, contracts: structuringAuto } = useStreamQueries(StructuringAutoService); - const { loading: l18, contracts: structuring } = useStreamQueries(StructuringService); - const { loading: l19, contracts: subscription } = useStreamQueries(SubscriptionService); - const { loading: l20, contracts: tradingAuto } = useStreamQueries(TradingAutoService); - const { loading: l21, contracts: trading } = useStreamQueries(TradingService); - const loading = l1 || l2 || l3 || l4 || l5 || l6 || l7 || l8 || l9 || l10 || l11 || l12 || l13 || l14 || l15 || l16 || l17 || l18 || l19 || l20 || l21; - - const value = { - loading, - backToBack, - custody, - decentralizedExchange, - auctionAuto, - auction, - biddingAuto, - bidding, - fund, - investment, - issuanceAuto, - issuance, - lending, - lifecycle, - listingAuto, - listing, - settlement, - structuringAuto, - structuring, - subscription, - tradingAuto, - trading, - }; - - return ( - - {children} - - ); -} - -export const useServices = () => { - return React.useContext(ServicesContext); -} diff --git a/ui/src/context/ServicesContext.tsx b/ui/src/context/ServicesContext.tsx new file mode 100644 index 00000000..ec6630dd --- /dev/null +++ b/ui/src/context/ServicesContext.tsx @@ -0,0 +1,178 @@ +// Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import React from "react"; +import { CreateEvent } from "@daml/ledger"; +import { useStreamQueries } from "@daml/react"; +import { Service as BaseService } from "@daml.js/daml-finance-app-interface-base/lib/Daml/Finance/App/Interface/Base/Service" +import { Service as CustodyService } from "@daml.js/daml-finance-app-interface-custody/lib/Daml/Finance/App/Interface/Custody/Service" +import { Service as CustodyAutoService } from "@daml.js/daml-finance-app-interface-custody/lib/Daml/Finance/App/Interface/Custody/Auto" +import { Service as DecentralizedExchangeService } from "@daml.js/daml-finance-app-interface-decentralized/lib/Daml/Finance/App/Interface/Decentralized/Exchange/Service" +import { Service as AuctionService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Service" +import { Service as AuctionAutoService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Auto" +import { Service as BiddingService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Service" +import { Service as BiddingAutoService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Auto" +import { Service as SubscriptionService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Subscription/Service" +import { Service as FundService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Service" +import { Service as InvestmentService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Investment/Service" +import { Service as BackToBackService } from "@daml.js/daml-finance-app-interface-issuance/lib/Daml/Finance/App/Interface/Issuance/BackToBack" +import { Service as IssuanceService } from "@daml.js/daml-finance-app-interface-issuance/lib/Daml/Finance/App/Interface/Issuance/Service" +import { Service as IssuanceAutoService } from "@daml.js/daml-finance-app-interface-issuance/lib/Daml/Finance/App/Interface/Issuance/Auto" +import { Service as LendingService } from "@daml.js/daml-finance-app-interface-lending/lib/Daml/Finance/App/Interface/Lending/Service" +import { Service as LifecycleService } from "@daml.js/daml-finance-app-interface-lifecycle/lib/Daml/Finance/App/Interface/Lifecycle/Service" +import { Service as ListingService } from "@daml.js/daml-finance-app-interface-listing/lib/Daml/Finance/App/Interface/Listing/Service" +import { Service as ListingAutoService } from "@daml.js/daml-finance-app-interface-listing/lib/Daml/Finance/App/Interface/Listing/Auto" +import { Service as SettlementService } from "@daml.js/daml-finance-app-interface-settlement/lib/Daml/Finance/App/Interface/Settlement/Service" +import { Service as StructuringService } from "@daml.js/daml-finance-app-interface-structuring/lib/Daml/Finance/App/Interface/Structuring/Service" +import { Service as StructuringAutoService } from "@daml.js/daml-finance-app-interface-structuring/lib/Daml/Finance/App/Interface/Structuring/Auto" +import { Service as TradingService } from "@daml.js/daml-finance-app-interface-trading/lib/Daml/Finance/App/Interface/Trading/Service" +import { Service as TradingAutoService } from "@daml.js/daml-finance-app-interface-trading/lib/Daml/Finance/App/Interface/Trading/Auto" + +type ServicesAggregate = { + services : ServiceAggregate[] + getService : (provider : string, customer : string) => ServiceAggregate | undefined +}; + +export type ServiceAggregate = CreateEvent & { + service : CreateEvent +}; + +export type ServicesState = { + loading : boolean + auction : ServicesAggregate + auctionAuto : ServicesAggregate + backToBack : ServicesAggregate + bidding : ServicesAggregate + biddingAuto : ServicesAggregate + custody : ServicesAggregate + custodyAuto : ServicesAggregate + decentralizedExchange : ServicesAggregate + fund : ServicesAggregate + investment : ServicesAggregate + issuance : ServicesAggregate + issuanceAuto : ServicesAggregate + lending : ServicesAggregate + lifecycle : ServicesAggregate + listing : ServicesAggregate + listingAuto : ServicesAggregate + settlement : ServicesAggregate + structuring : ServicesAggregate + structuringAuto : ServicesAggregate + subscription : ServicesAggregate + trading : ServicesAggregate + tradingAuto : ServicesAggregate +}; + +const emptyAggregate = { + services: [], + getService: (provider : string, customer : string) => { throw new Error("Not implemented"); } +}; + +const empty = { + loading: true, + auction : emptyAggregate, + auctionAuto : emptyAggregate, + backToBack : emptyAggregate, + bidding : emptyAggregate, + biddingAuto : emptyAggregate, + custody : emptyAggregate, + custodyAuto : emptyAggregate, + decentralizedExchange : emptyAggregate, + fund : emptyAggregate, + investment : emptyAggregate, + issuance : emptyAggregate, + issuanceAuto : emptyAggregate, + lending : emptyAggregate, + lifecycle : emptyAggregate, + listing : emptyAggregate, + listingAuto : emptyAggregate, + settlement : emptyAggregate, + structuring : emptyAggregate, + structuringAuto : emptyAggregate, + subscription : emptyAggregate, + trading : emptyAggregate, + tradingAuto : emptyAggregate, +}; + +const ServicesContext = React.createContext(empty); + +export const ServicesProvider : React.FC = ({ children }) => { + + const { loading: l1, contracts: base } = useStreamQueries(BaseService); + const { loading: l2, contracts: auctionAuto } = useStreamQueries(AuctionAutoService); + const { loading: l3, contracts: auction } = useStreamQueries(AuctionService); + const { loading: l4, contracts: backToBack } = useStreamQueries(BackToBackService); + const { loading: l5, contracts: biddingAuto } = useStreamQueries(BiddingAutoService); + const { loading: l6, contracts: bidding } = useStreamQueries(BiddingService); + const { loading: l7, contracts: custody } = useStreamQueries(CustodyService); + const { loading: l8, contracts: custodyAuto } = useStreamQueries(CustodyAutoService); + const { loading: l9, contracts: decentralizedExchange } = useStreamQueries(DecentralizedExchangeService); + const { loading: l10, contracts: fund } = useStreamQueries(FundService); + const { loading: l11, contracts: investment } = useStreamQueries(InvestmentService); + const { loading: l12, contracts: issuance } = useStreamQueries(IssuanceService); + const { loading: l13, contracts: issuanceAuto } = useStreamQueries(IssuanceAutoService); + const { loading: l14, contracts: lending } = useStreamQueries(LendingService); + const { loading: l15, contracts: lifecycle } = useStreamQueries(LifecycleService); + const { loading: l16, contracts: listingAuto } = useStreamQueries(ListingAutoService); + const { loading: l17, contracts: listing } = useStreamQueries(ListingService); + const { loading: l18, contracts: settlement } = useStreamQueries(SettlementService); + const { loading: l19, contracts: structuringAuto } = useStreamQueries(StructuringAutoService); + const { loading: l20, contracts: structuring } = useStreamQueries(StructuringService); + const { loading: l21, contracts: subscription } = useStreamQueries(SubscriptionService); + const { loading: l22, contracts: tradingAuto } = useStreamQueries(TradingAutoService); + const { loading: l23, contracts: trading } = useStreamQueries(TradingService); + const loading = l1 || l2 || l3 || l4 || l5 || l6 || l7 || l8 || l9 || l10 || l11 || l12 || l13 || l14 || l15 || l16 || l17 || l18 || l19 || l20 || l21 || l22 || l23; + + const createServicesAggregate = (services : readonly CreateEvent[]) : ServicesAggregate => { + const serviceByCid : Map> = new Map(services.map(c => [c.contractId, c])); + const filteredBase = base.filter(c => serviceByCid.has(c.contractId as string)); + const aggregates : ServiceAggregate[] = filteredBase.map(c => ({ ...c, service: serviceByCid.get(c.contractId)! })); + const getService = (provider : string, customer : string) => { return aggregates.find(c => c.payload.provider === provider && c.payload.customer === customer) }; + return { services: aggregates, getService }; + }; + + if (loading) { + return ( + + {children} + + ); + } else { + + const value = { + loading, + auction : createServicesAggregate(auction), + auctionAuto : createServicesAggregate(auctionAuto), + backToBack : createServicesAggregate(backToBack), + bidding : createServicesAggregate(bidding), + biddingAuto : createServicesAggregate(biddingAuto), + custody : createServicesAggregate(custody), + custodyAuto : createServicesAggregate(custodyAuto), + decentralizedExchange : createServicesAggregate(decentralizedExchange), + fund : createServicesAggregate(fund), + investment : createServicesAggregate(investment), + issuance : createServicesAggregate(issuance), + issuanceAuto : createServicesAggregate(issuanceAuto), + lending : createServicesAggregate(lending), + lifecycle : createServicesAggregate(lifecycle), + listing : createServicesAggregate(listing), + listingAuto : createServicesAggregate(listingAuto), + settlement : createServicesAggregate(settlement), + structuring : createServicesAggregate(structuring), + structuringAuto : createServicesAggregate(structuringAuto), + subscription : createServicesAggregate(subscription), + trading : createServicesAggregate(trading), + tradingAuto : createServicesAggregate(tradingAuto), + }; + + return ( + + {children} + + ); + } +} + +export const useServices = () => { + return React.useContext(ServicesContext); +} diff --git a/ui/src/context/UserContext.tsx b/ui/src/context/UserContext.tsx index 3030b040..a2c179ab 100644 --- a/ui/src/context/UserContext.tsx +++ b/ui/src/context/UserContext.tsx @@ -1,102 +1,58 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import React from "react"; -import { NavigateFunction } from "react-router-dom"; +import React, { useEffect, useState } from "react"; +import { useAdmin } from "./AdminContext"; import { useParties } from "./PartiesContext"; -const UserStateContext = React.createContext({ isAuthenticated: false, name: "", party: "", token: "" }); -const UserDispatchContext = React.createContext>({} as React.Dispatch); - type UserState = { - isAuthenticated : boolean - name : string + loading : boolean + loggedIn : boolean + user : string party : string token : string + login : (loginUser : string) => void + logout : () => void } -const userReducer = (state : UserState, action : any) => { - switch (action.type) { - case "LOGIN_SUCCESS": - return { ...state, isAuthenticated: true, name: action.name, party: action.party, token: action.token }; - case "LOGIN_FAILURE": - return { ...state, isAuthenticated: false }; - case "SIGN_OUT_SUCCESS": - return { ...state, isAuthenticated: false }; - default: { - throw new Error(`Unhandled action type: ${action.type}`); - } - } -} - -const UserProvider : React.FC = ({ children }) => { - const name = localStorage.getItem("daml.name") || ""; - const { getParty, getToken } = useParties(); - - const party = getParty(name); - const token = getToken(party); - - var [state, dispatch] = React.useReducer(userReducer, { - isAuthenticated: !!token, - name: name || "", - party: party || "", - token: token || "" - }); +const defaultState : UserState = { loading: true, loggedIn: false, user: "", party: "", token: "", login: _ => null, logout: () => null }; +const UserContext = React.createContext(defaultState); + +export const UserProvider : React.FC = ({ children }) => { + const { loading: l1, getParty, getToken } = useParties(); + const { loading: l2, ledgerId } = useAdmin(); + const [state, setState] = useState(defaultState); + + const login = (loginUser : string) => { + if (l1 || l2) throw new Error("Trying to login while still loading"); + localStorage.setItem(ledgerId + ".user", loginUser); + const loginParty = getParty(loginUser); + const loginToken = getToken(loginParty) + setState(s => ({ ...s, loggedIn: true, user: loginUser, party: loginParty, token: loginToken })); + }; + + const logout = () => { + if (l1 || l2) throw new Error("Trying to logout while still loading"); + localStorage.removeItem(ledgerId + ".user"); + setState(s => ({ ...s, loggedIn: false, user: "", party: "", token: "" })); + }; + + useEffect(() => { + if (l1 || l2) return; + const key = ledgerId + ".user"; + const user = localStorage.getItem(key) || ""; + const party = getParty(user); + const token = getToken(party) + setState(s => ({ ...s, loading: false, loggedIn: !!user, user, party, token })) + }, [l1, l2, ledgerId, getParty, getToken]); return ( - - - {children} - - + + {children} + ); -} - -const useUserState = () => { - var context = React.useContext(UserStateContext); - if (context === undefined) { - throw new Error("useUserState must be used within a UserProvider"); - } - return context; -} - -const useUserDispatch = () => { - var context = React.useContext>(UserDispatchContext); - if (context === undefined) { - throw new Error("useUserDispatch must be used within a UserProvider"); - } - return context; -} - -// ########################################################### - -const loginUser = async ( - dispatch : React.Dispatch, - name : string, - party : string, - token : string, - navigate : NavigateFunction, - setError : React.Dispatch>) => { - setError(false); - - if (!!name) { - - localStorage.setItem("daml.name", name); - - dispatch({ type: "LOGIN_SUCCESS", name, party, token }); - setError(false); - navigate("/app"); - } else { - dispatch({ type: "LOGIN_FAILURE" }); - setError(true); - } -} - -const signOut = (dispatch : React.Dispatch) => { - // event.preventDefault(); - localStorage.removeItem("daml.name"); - - dispatch({ type: "SIGN_OUT_SUCCESS" }); -} +}; -export { UserProvider, useUserState, useUserDispatch, loginUser, signOut }; +export const useUser = () => { + return React.useContext(UserContext); +}; diff --git a/ui/src/hooks/Network.tsx b/ui/src/hooks/Network.tsx index 2d722aa4..eb7dea05 100644 --- a/ui/src/hooks/Network.tsx +++ b/ui/src/hooks/Network.tsx @@ -1,22 +1,19 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { CreateEvent } from "@daml/ledger"; -import { dedup } from "../util"; -import { Edge, EdgeChange, MarkerType, Node, NodeChange, useEdgesState, useNodesState } from "react-flow-renderer"; import { useEffect, useState } from "react"; +import { Edge, EdgeChange, MarkerType, Node, NodeChange, useEdgesState, useNodesState } from "react-flow-renderer"; import { useParties } from "../context/PartiesContext"; -import { useScenario } from "../context/ScenarioContext"; -import { useServices } from "../context/ServiceContext"; +import { Scenario } from "../context/ScenarioContext"; +import { ServiceAggregate, useServices } from "../context/ServicesContext"; +import { dedup } from "../util"; export type Network = { + loading : boolean nodes : Node[], - setNodes : React.Dispatch[]>>, - onNodesChange : (changes: NodeChange[]) => void edges : Edge[], - setEdges : React.Dispatch[]>>, + onNodesChange : (changes: NodeChange[]) => void onEdgesChange : (changes: EdgeChange[]) => void, - loading : boolean } type GroupedServices = { @@ -26,73 +23,75 @@ type GroupedServices = { services : string[] }; -export const useNetwork = () : Network => { +export const useNetwork = (scenario : Scenario) : Network => { const { getName } = useParties(); - const scenario = useScenario(); const svc = useServices(); - const services : CreateEvent[] = Array.prototype.concat.apply([], [ - svc.auction, - svc.backToBack, - svc.custody, - svc.bidding, - svc.fund, - svc.investment, - svc.issuance, - svc.lending, - svc.lifecycle, - svc.settlement, - svc.structuring, - svc.subscription, - svc.listing, - svc.trading, - ]); - const createNode = (p : string, i : number) => ({ + const [nodes, setNodes, onNodesChange] = useNodesState([]); + const [edges, setEdges, onEdgesChange] = useEdgesState([]); + const [loading, setLoading] = useState(true); + + useEffect(() => { + + const createNode = (p : string, i : number) => ({ id: p, data: { label: getName(p) }, - position: scenario.selected.positions.get(getName(p)) || { x: 0, y: 0 }, + position: scenario.parties.find(pi => pi.party.displayName === getName(p))?.position || { x: 0, y: 0 }, style: { zIndex: 0, width: 160, cursor: "pointer" }, zIndex: 0 - }); - - const createEdge = (c : GroupedServices) : Edge => ({ - id: c.id, - source: c.provider, - target: c.customer, - label: (<>{c.services.map((s, i) => ({s}))}), - labelBgPadding: [8, 4], - labelBgBorderRadius: 4, - labelBgStyle: c.provider === c.customer ? { fill: "#FFCC00", color: "#fff", fillOpacity: 0.7, transform: "translate(150px)" } : { fill: "#FFCC00", color: "#fff", fillOpacity: 0.7 }, - labelStyle: c.provider === c.customer ? { transform: "translate(150px)" } : {}, - zIndex: 1, - type: "floating", - markerEnd: { - type: MarkerType.ArrowClosed, - strokeWidth: 3, - color: "#666" - }, - // animated: true - }); + }); - const [nodes, setNodes, onNodesChange] = useNodesState([]); - const [edges, setEdges, onEdgesChange] = useEdgesState([]); - const [loading, setLoading] = useState(true); + const createEdge = (c : GroupedServices) : Edge => ({ + id: c.id, + source: c.provider, + target: c.customer, + label: (<>{c.services.map((s, i) => ({s}))}), + labelBgPadding: [8, 4], + labelBgBorderRadius: 4, + labelBgStyle: c.provider === c.customer ? { fill: "#FFCC00", color: "#fff", fillOpacity: 0.7, transform: "translate(150px)" } : { fill: "#FFCC00", color: "#fff", fillOpacity: 0.7 }, + labelStyle: c.provider === c.customer ? { transform: "translate(150px)" } : {}, + zIndex: 1, + type: "floating", + markerEnd: { + type: MarkerType.ArrowClosed, + strokeWidth: 3, + color: "#666" + }, + // animated: true + }); - useEffect(() => { if (!svc.loading) { + const services : ServiceAggregate[] = Array.prototype.concat.apply([], [ + svc.auction.services, + svc.backToBack.services, + svc.bidding.services, + svc.custody.services, + svc.fund.services, + svc.investment.services, + svc.issuance.services, + svc.lending.services, + svc.lifecycle.services, + svc.listing.services, + svc.settlement.services, + svc.structuring.services, + svc.subscription.services, + svc.trading.services, + ]); + const groupedServices : GroupedServices[] = []; + const getName = (s : ServiceAggregate) => s.service.templateId.split(":")[1].replace("Daml.Finance.App.Interface.", ""); services.forEach(c => { const elem = groupedServices.find(e => e.provider === c.payload.provider && e.customer === c.payload.customer); - if (!!elem) elem.services.push(c.templateId.split(":")[1].replace("Daml.Finance.App.", "")); - else groupedServices.push({ id: c.contractId, provider: c.payload.provider, customer: c.payload.customer, services: [c.templateId.split(":")[1].replace("Daml.Finance.App.", "")]}); + if (!!elem) elem.services.push(getName(c)); + else groupedServices.push({ id: c.contractId, provider: c.payload.provider, customer: c.payload.customer, services: [getName(c)]}); }); const parties = dedup(groupedServices.flatMap(s => [s.provider, s.customer])); setNodes(parties.map(createNode)); setEdges(groupedServices.map(createEdge)); setLoading(false); }; - }, [scenario, setNodes, setEdges, setLoading, svc.loading]); + }, [svc, setNodes, setEdges, getName, scenario]); - return { nodes, setNodes, onNodesChange, edges, setEdges, onEdgesChange, loading }; + return { loading, nodes, edges, onNodesChange, onEdgesChange }; }; diff --git a/ui/src/index.tsx b/ui/src/index.tsx index 1116bffb..28f67e2c 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -6,19 +6,22 @@ import { StyledEngineProvider } from "@mui/styled-engine"; import { BrandingProvider } from "./context/BrandingContext"; import { UserProvider } from "./context/UserContext"; import { PartyProvider } from "./context/PartiesContext"; -import { Main } from "./Main"; import { ScenarioProvider } from "./context/ScenarioContext"; +import { AdminProvider } from "./context/AdminContext"; +import { Main } from "./Main"; ReactDOM.render(( - - - - -
- - - - + + + + + +
+ + + + + ), document.getElementById("root")); diff --git a/ui/src/pages/defi/Exchange.tsx b/ui/src/pages/defi/Exchange.tsx index b18f5d8c..83238d4c 100644 --- a/ui/src/pages/defi/Exchange.tsx +++ b/ui/src/pages/defi/Exchange.tsx @@ -10,8 +10,8 @@ import { Button, Grid, Paper, Table, TableBody, TableCell, TableRow, TextField, import { Percentage } from "../../components/Slider/Percentage"; import useStyles from "../styles"; import { Bonding } from "../../components/Curve/Bonding"; -import { Service } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Decentralized/Exchange/Service"; -import { useServices } from "../../context/ServiceContext"; +import { Service } from "@daml.js/daml-finance-app-interface-decentralized/lib/Daml/Finance/App/Interface/Decentralized/Exchange/Service"; +import { useServices } from "../../context/ServicesContext"; import { useHoldings } from "../../context/HoldingContext"; import { useAccounts } from "../../context/AccountContext"; import { Message } from "../../components/Message/Message"; @@ -32,7 +32,7 @@ export const Exchange : React.FC = () => { const { loading: l1, decentralizedExchange } = useServices(); const { loading: l2, getFungible, holdings } = useHoldings(); const { loading: l3, getAccount } = useAccounts(); - const dex = decentralizedExchange.find(c => c.payload.id.unpack === dexId); + const dex = decentralizedExchange.services.find(c => c.service.payload.id.unpack === dexId)?.service; useEffect(() => { if (!dex) return; diff --git a/ui/src/pages/defi/Exchanges.tsx b/ui/src/pages/defi/Exchanges.tsx index 55bc24ff..57132a26 100644 --- a/ui/src/pages/defi/Exchanges.tsx +++ b/ui/src/pages/defi/Exchanges.tsx @@ -6,19 +6,18 @@ import { Grid, Theme } from "@mui/material"; import { Spinner } from "../../components/Spinner/Spinner"; import { makeStyles, createStyles } from "@mui/styles"; import { Dex } from "../../components/Card/Dex"; -import { useServices } from "../../context/ServiceContext"; +import { useServices } from "../../context/ServicesContext"; export const Exchanges : React.FC = () => { const classes = useStyles(); const { loading: l1, decentralizedExchange } = useServices(); if (l1) return (); - console.log(decentralizedExchange); return ( - {decentralizedExchange.map((c, i) => )} + {decentralizedExchange.services.map(c => c.service.payload).sort((a, b) => a.id.unpack.localeCompare(b.id.unpack)).map((p, i) => )} diff --git a/ui/src/pages/distribution/Utils.ts b/ui/src/pages/distribution/Utils.ts index c67d3e49..38598202 100644 --- a/ui/src/pages/distribution/Utils.ts +++ b/ui/src/pages/distribution/Utils.ts @@ -1,7 +1,7 @@ // Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Bid } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Model/module"; +import { Bid } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Bid"; export const getBidAllocation = (bid : Bid) : string => { switch (bid.status.tag) { diff --git a/ui/src/pages/distribution/auction/Auction.tsx b/ui/src/pages/distribution/auction/Auction.tsx index 6203fc3b..671fbdf4 100644 --- a/ui/src/pages/distribution/auction/Auction.tsx +++ b/ui/src/pages/distribution/auction/Auction.tsx @@ -8,16 +8,15 @@ import { useLedger, useParty, useStreamQueries } from "@daml/react"; import { Typography, Grid, Table, TableBody, TableCell, TableRow, Button, Paper } from "@mui/material"; import { useParams } from "react-router-dom"; import useStyles from "../../styles"; -import { Auction as AuctionContract, Status as AuctionStatus } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Model"; -import { Service } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Service"; -import { Bid } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Model"; +import { Auction as AuctionI, Status as AuctionStatus } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Auction"; +import { Service } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Service"; +import { Bid } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Bid"; import { getBidAllocation } from "../Utils"; import { Spinner } from "../../../components/Spinner/Spinner"; import { fmt } from "../../../util"; import { Message } from "../../../components/Message/Message"; import { useParties } from "../../../context/PartiesContext"; -import { useServices } from "../../../context/ServiceContext"; -import { Factory } from "@daml.js/daml-finance-interface-settlement/lib/Daml/Finance/Interface/Settlement/Factory"; +import { useServices } from "../../../context/ServicesContext"; export const Auction: React.FC = () => { const classes = useStyles(); @@ -28,31 +27,26 @@ export const Auction: React.FC = () => { const party = useParty(); const ledger = useLedger(); - const svc = useServices(); + const { loading: l1, auction: auctionSvc } = useServices(); + const { loading: l2, contracts: auctions } = useStreamQueries(AuctionI); + const { loading: l3, contracts: bids } = useStreamQueries(Bid); - const { contracts: auctions, loading: l1 } = useStreamQueries(AuctionContract); - const { contracts: bids, loading: l2 } = useStreamQueries(Bid); - const { contracts: factories, loading: l3 } = useStreamQueries(Factory); - - const services = svc.auction.filter(s => s.payload.customer === party || s.payload.provider === party); const auction = auctions.find(c => c.contractId === contractId); - if (svc.loading || l1 || l2 || l3) return ; + if (l1 || l2 || l3) return ; if (!contractId) return ; if (!auction) return ; - if (services.length === 0) return ; - const service = services[0]; - const provider = service.payload.provider; - const filteredBids = bids.filter(c => c.payload.auctionId === auction.payload.id); + const filteredBids = bids.filter(c => c.payload.auctionId.unpack === auction.payload.id.unpack); const filledPerc = 100.0 * filteredBids.reduce((a, b) => a + (parseFloat(b.payload.details.price.amount) >= parseFloat(auction.payload.floor) ? parseFloat(b.payload.details.quantity.amount) : 0), 0) / parseFloat(auction.payload.quantity.amount); const currentPrice = filteredBids.length === 0 ? 0.0 : filteredBids.reduce((a, b) => parseFloat(b.payload.details.price.amount) >= parseFloat(auction.payload.floor) && parseFloat(b.payload.details.price.amount) < a ? parseFloat(b.payload.details.price.amount) : a, Number.MAX_VALUE); - const canClose = auction.payload.status.tag !== "Open" || filteredBids.length === 0 || party !== provider; + const canClose = auction.payload.status.tag !== "Open" || filteredBids.length === 0 || party !== auction.payload.provider; const closeAuction = async () => { - if (factories.length === 0) return new Error("No settlement factory found"); + const svc = auctionSvc.getService(party, auction.payload.customer); + if (!svc) throw new Error("No auction service found for provider [" + party + "] and customer [" + auction.payload.customer + "]"); const bidCids = filteredBids.map(c => c.contractId); - const [result, ] = await ledger.exercise(Service.ProcessAuction, service.contractId, { settlementFactoryCid: factories[0].contractId, auctionCid: auction.contractId, bidCids }); + const [result, ] = await ledger.exercise(Service.ProcessAuction, svc.service.contractId, { auctionCid: auction.contractId, bidCids }); navigate("/app/distribution/auctions/" + result); }; @@ -67,7 +61,7 @@ export const Auction: React.FC = () => { } }; - const getParticallyAllocatedUnits = (auction: AuctionContract): number | undefined => { + const getParticallyAllocatedUnits = (auction: AuctionI): number | undefined => { switch (auction.status.tag) { case 'PartiallyAllocated': return parseFloat(auction.quantity.amount) - parseFloat(auction.status.value.remaining) @@ -79,7 +73,7 @@ export const Auction: React.FC = () => { return ( - {auction.payload.id} + {auction.payload.description} @@ -133,7 +127,7 @@ export const Auction: React.FC = () => { Id - {auction.payload.id} + {auction.payload.id.unpack} Asset diff --git a/ui/src/pages/distribution/auction/Auctions.tsx b/ui/src/pages/distribution/auction/Auctions.tsx index 7d31044c..2ed49fbe 100644 --- a/ui/src/pages/distribution/auction/Auctions.tsx +++ b/ui/src/pages/distribution/auction/Auctions.tsx @@ -3,7 +3,7 @@ import React from "react"; import { useParty, useStreamQueries } from "@daml/react"; -import { Auction } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Model"; +import { Auction } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Auction"; import { Spinner } from "../../../components/Spinner/Spinner"; import { fmt } from "../../../util"; import { useParties } from "../../../context/PartiesContext"; @@ -20,7 +20,7 @@ export const Auctions : React.FC = () => { const createRow = (c : CreateEvent) : any[] => { const path = (party === c.payload.provider || party === c.payload.customer ? "/app/distribution/auctions/" : "/app/distribution/auction/") + c.contractId; return [ - c.payload.id, + c.payload.id.unpack, getName(c.payload.provider), getName(c.payload.customer), fmt(c.payload.quantity.amount) + " " + c.payload.quantity.unit.id.unpack, diff --git a/ui/src/pages/distribution/auction/Bidding.tsx b/ui/src/pages/distribution/auction/Bidding.tsx index fa423f9f..7fa324e9 100644 --- a/ui/src/pages/distribution/auction/Bidding.tsx +++ b/ui/src/pages/distribution/auction/Bidding.tsx @@ -4,13 +4,13 @@ import React, { useState } from "react"; import useStyles from "../../styles"; import classnames from "classnames"; -import { Auction } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Model"; -import { Bid } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Model"; +import { Auction } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Auction"; +import { Bid } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Bid"; import { useLedger, useParty, useStreamQueries } from "@daml/react"; import { Grid, Paper, Typography, Table, TableRow, TableCell, TableBody, TextField, Button } from "@mui/material"; import { useParams } from "react-router-dom"; -import { Service } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Service"; -import { Service as AutoService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Auto/Service"; +import { Service } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Service"; +import { Service as ServiceAuto } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Auto"; import { getBidAllocation } from "../Utils"; import { Spinner } from "../../../components/Spinner/Spinner"; import { fmt } from "../../../util"; @@ -18,7 +18,7 @@ import { Reference } from "@daml.js/daml-finance-interface-account/lib/Daml/Fina import { Message } from "../../../components/Message/Message"; import { useParties } from "../../../context/PartiesContext"; import { useInstruments } from "../../../context/InstrumentContext"; -import { useServices } from "../../../context/ServiceContext"; +import { useServices } from "../../../context/ServicesContext"; import { Aggregate } from "../../../components/Instrument/Aggregate"; import { useHoldings } from "../../../context/HoldingContext"; @@ -44,14 +44,10 @@ export const Bidding : React.FC = () => { if (l1 || l2 || l3 || l4 || l5 || l6) return ; - const myServices = bidding.filter(c => c.payload.customer === party); - const myAutoServices = biddingAuto.filter(c => c.payload.customer === party); - - if (myServices.length === 0) return if (!auction) return if (!instrument) return - const bid = bids.find(b => b.payload.auctionId === auction.payload.id); + const bid = bids.find(b => b.payload.auctionId.unpack === auction.payload.id.unpack); const requestCreateBid = async () => { const volume = price * amount; @@ -66,24 +62,23 @@ export const Bidding : React.FC = () => { collateralCid, receivableAccount }; - if (myAutoServices.length > 0) { - await ledger.exercise(AutoService.RequestAndCreateBid, myAutoServices[0].contractId, arg); - } else { - await ledger.exercise(Service.RequestCreateBid, myServices[0].contractId, arg); - } - + const svc = bidding.getService(auction.payload.provider, party); + const auto = biddingAuto.getService(auction.payload.provider, party); + if (!svc) throw new Error("No bidding service found for provider [" + auction.payload.provider + "] and customer [" + party + "]"); + if (!!auto) await ledger.exercise(ServiceAuto.RequestAndCreateBid, auto.service.contractId, arg); + else await ledger.exercise(Service.RequestCreateBid, svc.service.contractId, arg); }; return ( - {auction.payload.id} + {auction.payload.description} - + Auction Details @@ -98,7 +93,7 @@ export const Bidding : React.FC = () => { Auction Id - {auction.payload.id} + {auction.payload.id.unpack} Instrument @@ -116,7 +111,7 @@ export const Bidding : React.FC = () => {
- + {!!bid && Bid diff --git a/ui/src/pages/distribution/auction/New.tsx b/ui/src/pages/distribution/auction/New.tsx index e113a4ee..988d95f6 100644 --- a/ui/src/pages/distribution/auction/New.tsx +++ b/ui/src/pages/distribution/auction/New.tsx @@ -3,31 +3,33 @@ import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; +import { v4 as uuidv4 } from "uuid"; import classnames from "classnames"; import { useLedger, useParty, useStreamQueries } from "@daml/react"; -import { Typography, Grid, Paper, Select, MenuItem, TextField, Button, MenuProps, FormControl, InputLabel } from "@mui/material"; +import { Button } from "@mui/material"; import useStyles from "../../styles"; import { Spinner } from "../../../components/Spinner/Spinner"; import { Reference } from "@daml.js/daml-finance-interface-account/lib/Daml/Finance/Interface/Account/Account"; import { createSet } from "../../../util"; import { useParties } from "../../../context/PartiesContext"; import { useInstruments } from "../../../context/InstrumentContext"; -import { useServices } from "../../../context/ServiceContext"; -import { Service as Auction } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Service"; -import { Service as AuctionAuto } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Auto/Service"; -import { Message } from "../../../components/Message/Message"; +import { useServices } from "../../../context/ServicesContext"; +import { Service as Auction } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Service"; +import { Service as AuctionAuto } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Auto"; import { useHoldings } from "../../../context/HoldingContext"; -import { Aggregate } from "../../../components/Instrument/Aggregate"; +import { CenteredForm } from "../../../components/CenteredForm/CenteredForm"; +import { TextInput } from "../../../components/Form/TextInput"; +import { SelectInput, toValues } from "../../../components/Form/SelectInput"; export const New : React.FC = () => { - const classes = useStyles(); + const cls = useStyles(); const navigate = useNavigate(); const [ instrumentLabel, setInstrumentLabel ] = useState(""); const [ currencyLabel, setCurrencyLabel ] = useState(""); const [ amount, setAmount ] = useState(""); const [ floor, setFloor ] = useState(""); - const [ id, setId ] = useState(""); + const [ description, setDescription ] = useState(""); const ledger = useLedger(); const party = useParty(); @@ -39,23 +41,21 @@ export const New : React.FC = () => { if (l1 || l2 || l3 || l4) return ; - const myServices = auction.filter(s => s.payload.customer === party); - const myAutoServices = auctionAuto.filter(s => s.payload.customer === party); const instrument = latests.find(c => c.payload.id.unpack === instrumentLabel); const currency = tokens.find(c => c.payload.id.unpack === currencyLabel); const myHoldings = holdings.filter(c => c.payload.account.owner === party); - const myHoldingLabels = myHoldings.map(c => c.payload.instrument.id.unpack).filter((v, i, a) => a.indexOf(v) === i); - const canRequest = !!instrumentLabel && !!instrument && !!currencyLabel && !!currency && !!id && !!amount && !!floor; - - if (myServices.length === 0) return ; + const myInstrumentLabels = myHoldings.map(c => c.payload.instrument.id.unpack).filter((v, i, a) => a.indexOf(v) === i); + const myInstruments = latests.filter(a => myInstrumentLabels.includes(a.payload.id.unpack)); + const canRequest = !!instrumentLabel && !!instrument && !!currencyLabel && !!currency && !!description && !!amount && !!floor; const requestCreateAuction = async () => { - if (!instrument || !currency) return; + if (!instrument || !currency) throw new Error("Instrument or currency not found"); const collateralCid = await getFungible(party, amount, instrument.key); const receivableAccount = accounts.find(c => c.payload.accountView.custodian === currency.payload.depository && c.payload.accountView.owner === party)?.key; - if (!receivableAccount) return; - const arg = { - id, + if (!receivableAccount) throw new Error("Receivable account not found"); + const arg = { + auctionId: { unpack: uuidv4() }, + description, quantity: { amount, unit: instrument.key }, currency: currency.key, floor: floor, @@ -63,53 +63,23 @@ export const New : React.FC = () => { receivableAccount, observers: createSet([getParty("Public")]) }; - if (myAutoServices.length > 0) { - await ledger.exercise(AuctionAuto.RequestAndCreateAuction, myAutoServices[0].contractId, arg); - navigate("/app/distribution/auctions"); - } else { - await ledger.exercise(Auction.RequestCreateAuction, myServices[0].contractId, arg); - navigate("/app/distribution/requests"); - } - } + // TODO: Assumes single service + const svc = auction.services[0]; + const auto = auctionAuto.services[0]; + if (!svc) throw new Error("No structuring service found for customer [" + party + "]"); + if (!!auto) await ledger.exercise(AuctionAuto.RequestAndCreateAuction, auto.service.contractId, arg); + else await ledger.exercise(Auction.RequestCreateAuction, svc.service.contractId, arg); + navigate("/app/distribution/auctions"); + }; - const menuProps : Partial = { anchorOrigin: { vertical: "bottom", horizontal: "left" }, transformOrigin: { vertical: "top", horizontal: "left" } }; return ( - - - New Auction - - - - - - - - Details - - Auctioned Asset - - - - Currency - - - setAmount(e.target.value as string)} /> - setFloor(e.target.value as string)} /> - setId(e.target.value as string)} /> - - - - - - - {!!instrument && } - - - - + + + + + + + + ); }; diff --git a/ui/src/pages/distribution/auction/Requests.tsx b/ui/src/pages/distribution/auction/Requests.tsx index 87aa0a25..5c8fadc8 100644 --- a/ui/src/pages/distribution/auction/Requests.tsx +++ b/ui/src/pages/distribution/auction/Requests.tsx @@ -3,16 +3,17 @@ import React from "react"; import { useNavigate } from "react-router-dom"; -import { Table, TableBody, TableCell, TableRow, TableHead, Button, Grid, Paper, Typography } from "@mui/material"; +import { Button } from "@mui/material"; import { CreateEvent } from "@daml/ledger"; import { useLedger, useParty, useStreamQueries } from "@daml/react"; import useStyles from "../../styles"; -import { CreateAuctionRequest } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Model"; -import { Service } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Service"; +import { CreateAuctionRequest } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/CreateAuctionRequest"; +import { Service } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Service"; import { Spinner } from "../../../components/Spinner/Spinner"; import { fmt } from "../../../util"; import { useParties } from "../../../context/PartiesContext"; -import { useServices } from "../../../context/ServiceContext"; +import { useServices } from "../../../context/ServicesContext"; +import { Alignment, HorizontalTable } from "../../../components/Table/HorizontalTable"; export const Requests : React.FC = () => { const classes = useStyles(); @@ -25,54 +26,29 @@ export const Requests : React.FC = () => { const { loading: l2, contracts: requests } = useStreamQueries(CreateAuctionRequest); if (l1 || l2) return ; - const providerServices = auction.filter(s => s.payload.provider === party); - const createAuction = async (c : CreateEvent) => { - const service = providerServices.find(s => s.payload.customer === c.payload.customer); - if (!service) throw new Error("No auction service found"); - await ledger.exercise(Service.CreateAuction, service.contractId, { createAuctionRequestCid: c.contractId }); + const svc = auction.getService(party, c.payload.customer); + if (!svc) throw new Error("No auction service found for provider " + party + " and customer " + c.payload.customer); + await ledger.exercise(Service.CreateAuction, svc.service.contractId, { createAuctionRequestCid: c.contractId }); navigate("/app/distribution/auctions"); } + const createRow = (c : CreateEvent) : any[] => { + return [ + getName(c.payload.provider), + getName(c.payload.customer), + c.payload.auctionId.unpack, + c.payload.description, + fmt(c.payload.quantity.amount, 0) + " " + c.payload.quantity.unit.id.unpack, + c.payload.currency.id.unpack, + c.payload.floor + " " + c.payload.currency.id.unpack, + + ]; + } + const headers = ["Agent", "Issuer", "Auction Id", "Description", "Asset", "Currency", "Floor Price", "Action"] + const values : any[] = requests.map(createRow); + const alignment : Alignment[] = ["left", "left", "left", "left", "right", "left", "right", "left"]; return ( - <> - - - - - Auction Requests - - - - Agent - Issuer - Auction ID - Auctioned Asset - Quoted Asset - Floor Price - Action - - - - {requests.map((c, i) => ( - - {getName(c.payload.provider)} - {getName(c.payload.customer)} - {c.payload.id} - {fmt(c.payload.quantity.amount)} {c.payload.quantity.unit.id.unpack} - {c.payload.currency.id.unpack} - {c.payload.floor} {c.payload.currency.id.unpack} - - {party === c.payload.provider && } - - - ))} - -
-
-
-
-
- + ); }; diff --git a/ui/src/pages/distribution/bidding/Auctions.tsx b/ui/src/pages/distribution/bidding/Auctions.tsx index 702c16bd..9de445f5 100644 --- a/ui/src/pages/distribution/bidding/Auctions.tsx +++ b/ui/src/pages/distribution/bidding/Auctions.tsx @@ -6,8 +6,8 @@ import { useNavigate } from "react-router-dom"; import { Table, TableBody, TableCell, TableRow, TableHead, Grid, Paper, Typography, IconButton } from "@mui/material"; import { useStreamQueries } from "@daml/react"; import useStyles from "../../styles"; -import { Auction } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Auction/Model"; -import { Bid } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Bidding/Model"; +import { Auction } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Auction/Auction"; +import { Bid } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Bidding/Bid"; import { getBidAllocation } from "../Utils"; import { KeyboardArrowRight } from "@mui/icons-material"; import { Spinner } from "../../../components/Spinner/Spinner"; @@ -22,7 +22,7 @@ export const Auctions: React.FC = () => { const { contracts: auctions, loading: l1 } = useStreamQueries(Auction); const { contracts: bids, loading: l2 } = useStreamQueries(Bid); if (l1 || l2) return ; - + console.log(bids); return ( @@ -43,7 +43,7 @@ export const Auctions: React.FC = () => { {auctions.map((c, i) => - {c.payload.id} + {c.payload.id.unpack} {getName(c.payload.provider)} {getName(c.payload.customer)} {c.payload.quantity.unit.id.unpack} @@ -77,7 +77,7 @@ export const Auctions: React.FC = () => { {bids.map((c, i) => ( - {c.payload.auctionId} + {c.payload.auctionId.unpack} {getName(c.payload.provider)} {getName(c.payload.customer)} {fmt(c.payload.details.quantity.amount)} {c.payload.details.quantity.unit.id.unpack} diff --git a/ui/src/pages/distribution/investment/Funds.tsx b/ui/src/pages/distribution/investment/Funds.tsx index edd8615f..ca6eea68 100644 --- a/ui/src/pages/distribution/investment/Funds.tsx +++ b/ui/src/pages/distribution/investment/Funds.tsx @@ -11,8 +11,8 @@ import { Spinner } from "../../../components/Spinner/Spinner"; import { fmt } from "../../../util"; import { useParties } from "../../../context/PartiesContext"; import { Alignment, HorizontalTable } from "../../../components/Table/HorizontalTable"; -import { Fund } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Model"; -import { useServices } from "../../../context/ServiceContext"; +import { Fund } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Fund"; +import { useServices } from "../../../context/ServicesContext"; export const Funds : React.FC = () => { const classes = useStyles(); @@ -23,7 +23,7 @@ export const Funds : React.FC = () => { const { loading: l1, investment } = useServices(); const { loading: l2, contracts: requests } = useStreamQueries(Fund); if (l1 || l2) return ; - const isInvestor = !!investment.find(c => c.payload.customer === party); + const isInvestor = !!investment.services.find(c => c.payload.customer === party); const createRow = (c : CreateEvent) : any[] => { return [ diff --git a/ui/src/pages/distribution/investment/New.tsx b/ui/src/pages/distribution/investment/New.tsx index 561bf9f7..162816f7 100644 --- a/ui/src/pages/distribution/investment/New.tsx +++ b/ui/src/pages/distribution/investment/New.tsx @@ -8,13 +8,13 @@ import { useLedger, useParty, useStreamQueries } from "@daml/react"; import { Typography, Grid, Paper, Button } from "@mui/material"; import useStyles from "../../styles"; import { Spinner } from "../../../components/Spinner/Spinner"; -import { useServices } from "../../../context/ServiceContext"; -import { Service as Investment } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Investment/Service"; +import { useServices } from "../../../context/ServicesContext"; +import { Service as Investment } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Investment/Service"; import { Message } from "../../../components/Message/Message"; import { useHoldings } from "../../../context/HoldingContext"; import { TextInput } from "../../../components/Form/TextInput"; import { SelectInput } from "../../../components/Form/SelectInput"; -import { Fund } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Model"; +import { Fund } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Fund"; import { ContractId } from "@daml/types"; import { Transferable } from "@daml.js/daml-finance-interface-holding/lib/Daml/Finance/Interface/Holding/Transferable"; import { useParties } from "../../../context/PartiesContext"; @@ -35,12 +35,13 @@ export const New : React.FC = () => { const { loading: l3, contracts: funds } = useStreamQueries(Fund); if (l1 || l2 || l3) return ; - const myServices = investment.filter(s => s.payload.customer === party); + const myServices = investment.services.filter(s => s.payload.customer === party); + const svc = myServices[0]; const fund = funds.find(c => c.payload.id.unpack === fundId); const canRequest = !!fundId && !!amount; const amountLabel = "Amount (" + (!!fund ? fund.payload.currency.id.unpack : "CCY") + ")"; const fundValues = funds.map(c => ({ value: c.payload.id.unpack, display: c.payload.id.unpack + " - " + c.payload.description })); - if (myServices.length === 0) return ; + if (!svc) return ; const requestInvestment = async () => { if (!fund) return; @@ -53,7 +54,7 @@ export const New : React.FC = () => { fundCid: fund.contractId, cashCid: cashCid as string as ContractId }; - await ledger.exercise(Investment.RequestInvestment, myServices[0].contractId, arg); + await ledger.exercise(Investment.RequestInvestment, svc.service.contractId, arg); navigate("/app/distribution/investmentrequests"); } diff --git a/ui/src/pages/distribution/investment/PooledRequests.tsx b/ui/src/pages/distribution/investment/PooledRequests.tsx index fdb6f786..801e88b9 100644 --- a/ui/src/pages/distribution/investment/PooledRequests.tsx +++ b/ui/src/pages/distribution/investment/PooledRequests.tsx @@ -7,13 +7,14 @@ import { useLedger, useParty, useStreamQueries } from "@daml/react"; import { Spinner } from "../../../components/Spinner/Spinner"; import { fmt } from "../../../util"; import { useParties } from "../../../context/PartiesContext"; -import { useServices } from "../../../context/ServiceContext"; +import { useServices } from "../../../context/ServicesContext"; import { Alignment, HorizontalTable } from "../../../components/Table/HorizontalTable"; -import { Service as FundService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Service"; -import { Fund, PooledInvestmentRequest } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Model"; +import { Service as FundService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Service"; +import { Fund } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Fund"; +import { PooledInvestmentRequest } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/PooledInvestmentRequest"; import { Button } from "@mui/material"; import useStyles from "../../styles"; -import { NumericObservable } from "@daml.js/daml-finance-interface-data/lib/Daml/Finance/Interface/Data/NumericObservable"; +import { NumericObservable } from "@daml.js/daml-finance-interface-lifecycle/lib/Daml/Finance/Interface/Lifecycle/Observable/NumericObservable"; import { Factory } from "@daml.js/daml-finance-interface-settlement/lib/Daml/Finance/Interface/Settlement/Factory"; export const PooledRequests : React.FC = () => { @@ -22,19 +23,19 @@ export const PooledRequests : React.FC = () => { const party = useParty(); const ledger = useLedger(); - const { loading: l1, fund } = useServices(); + const { loading: l1, fund, issuance } = useServices(); const { loading: l2, contracts: funds } = useStreamQueries(Fund); const { loading: l3, contracts: requests } = useStreamQueries(PooledInvestmentRequest); const { loading: l4, contracts: observables } = useStreamQueries(NumericObservable); const { loading: l5, contracts: factories } = useStreamQueries(Factory); if (l1 || l2 || l3 || l4 || l5) return ; - const myServices = fund.filter(s => s.payload.provider === party); + const myServices = fund.services.filter(s => s.payload.provider === party); const canFulFill = myServices.length > 0; const fulfillRequest = async (pir : CreateEvent) => { - const service = myServices[0]; - if (!service) throw new Error("No fund service found"); + const svc = myServices[0]; + if (!svc) throw new Error("No fund service found"); const fundId = pir.payload.fundId.unpack; const fundContract = funds.find(c => c.payload.id.unpack === fundId); if (!fundContract) throw new Error("Fund [" + fundId + "] not found"); @@ -42,13 +43,16 @@ export const PooledRequests : React.FC = () => { if (!observable) throw new Error("NAV observable for [" + fundId + "] not found"); const factory = factories[0]; if (!factory) throw new Error("Settlement factory not found"); + const issuanceSvc = issuance.getService(fundContract.payload.custodian, party); + if (!issuanceSvc) throw new Error("No issuance service found for provider [" + fundContract.payload.custodian + "] and customer [" + party + "]"); const arg = { pooledInvestmentRequestCid: pir.contractId, fundCid: fundContract.contractId, navObservableCid: observable.contractId, - settlementFactoryCid: factory.contractId + settlementFactoryCid: factory.contractId, + issuanceServiceCid: issuanceSvc.service.contractId }; - await ledger.exercise(FundService.FulfillPooledInvestmentRequest, service.contractId, arg); + await ledger.exercise(FundService.FulfillPooledInvestmentRequest, svc.service.contractId, arg); } const createRow = (c : CreateEvent) : any[] => { diff --git a/ui/src/pages/distribution/investment/Requests.tsx b/ui/src/pages/distribution/investment/Requests.tsx index 4e16541a..d0066381 100644 --- a/ui/src/pages/distribution/investment/Requests.tsx +++ b/ui/src/pages/distribution/investment/Requests.tsx @@ -8,15 +8,15 @@ import { useLedger, useParty, useStreamQueries } from "@daml/react"; import { Spinner } from "../../../components/Spinner/Spinner"; import { dedup, fmt } from "../../../util"; import { useParties } from "../../../context/PartiesContext"; -import { useServices } from "../../../context/ServiceContext"; -import { InvestmentRequest } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Investment/Model"; +import { useServices } from "../../../context/ServicesContext"; +import { InvestmentRequest } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Investment/InvestmentRequest"; import { Alignment, HorizontalTable } from "../../../components/Table/HorizontalTable"; import { SelectionTable } from "../../../components/Table/SelectionTable"; import { ContractId } from "@daml/types"; -import { Service as FundService } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Service"; +import { Service as FundService } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Service"; import { useHoldings } from "../../../context/HoldingContext"; import { Transferable } from "@daml.js/daml-finance-interface-holding/lib/Daml/Finance/Interface/Holding/Transferable"; -import { Fund } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Fund/Model"; +import { Fund } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Fund/Fund"; export const Requests : React.FC = () => { const navigate = useNavigate(); @@ -30,12 +30,12 @@ export const Requests : React.FC = () => { const { loading: l4, contracts: requests } = useStreamQueries(InvestmentRequest); if (l1 || l2 || l3 || l4) return ; - const myServices = fund.filter(s => s.payload.customer === party); + const myServices = fund.services.filter(s => s.payload.customer === party); const canPool = myServices.length > 0; const poolRequests = async (cs : CreateEvent[]) => { - const service = myServices[0]; - if (!service) throw new Error("No fund service found"); + const svc = myServices[0]; + if (!svc) throw new Error("No fund service found"); const total = cs.reduce((a, b) => a + parseFloat(b.payload.quantity.amount), 0); const fundIds = dedup(cs.map(c => c.payload.fundId.unpack)); if (fundIds.length > 1) throw new Error("Investment requests for more than one fund selected"); @@ -51,7 +51,7 @@ export const Requests : React.FC = () => { cashCid: cashCid as string as ContractId, investmentRequestCids: cs.map(c => c.contractId) }; - await ledger.exercise(FundService.PoolInvestmentRequests, service.contractId, arg); + await ledger.exercise(FundService.PoolInvestmentRequests, svc.service.contractId, arg); navigate("../pooledrequests"); } diff --git a/ui/src/pages/distribution/offering/New.tsx b/ui/src/pages/distribution/offering/New.tsx index 86d31938..a67c936c 100644 --- a/ui/src/pages/distribution/offering/New.tsx +++ b/ui/src/pages/distribution/offering/New.tsx @@ -3,31 +3,34 @@ import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; +import { v4 as uuidv4 } from "uuid"; import classnames from "classnames"; import { useLedger, useParty, useStreamQueries } from "@daml/react"; import { Typography, Grid, Paper, Select, MenuItem, TextField, Button, MenuProps, FormControl, InputLabel, Box } from "@mui/material"; import useStyles from "../../styles"; -import { CreateOffering, Service } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Subscription/Service"; +import { Service } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Subscription/Service"; import { Spinner } from "../../../components/Spinner/Spinner"; import { Reference } from "@daml.js/daml-finance-interface-account/lib/Daml/Finance/Interface/Account/Account"; -import { dedup } from "../../../util"; -import { BackToBack } from "@daml.js/daml-finance-app/lib/Daml/Finance/App/Distribution/Subscription/Model"; -import { useServices } from "../../../context/ServiceContext"; +import { dedup, singleton } from "../../../util"; +import { BackToBack } from "@daml.js/daml-finance-app-interface-distribution/lib/Daml/Finance/App/Interface/Distribution/Subscription/Types"; +import { useServices } from "../../../context/ServicesContext"; import { useInstruments } from "../../../context/InstrumentContext"; import { Message } from "../../../components/Message/Message"; import { Aggregate } from "../../../components/Instrument/Aggregate"; import { useHoldings } from "../../../context/HoldingContext"; +import { useParties } from "../../../context/PartiesContext"; export const New : React.FC = () => { const classes = useStyles(); const navigate = useNavigate(); - const [ id, setId ] = useState(""); + const [ description, setDescription ] = useState(""); const [ offeredInstLabel, setOfferedInstLabel ] = useState(""); const [ priceInstLabel, setPriceInstLabel ] = useState(""); const [ amount, setAmount ] = useState(""); const [ price, setPrice ] = useState(""); + const { getParty } = useParties(); const party = useParty(); const ledger = useLedger(); const { loading: l1, subscription, backToBack } = useServices(); @@ -36,9 +39,9 @@ export const New : React.FC = () => { const { contracts: accounts, loading: l4 } = useStreamQueries(Reference); - const myServices = subscription.filter(s => s.payload.customer === party); - const myB2BServices = backToBack.filter(s => s.payload.customer === party); - const hasB2B = backToBack.length > 0; + const myServices = subscription.services.filter(s => s.payload.customer === party); + const myB2BServices = backToBack.services.filter(s => s.payload.customer === party); + const hasB2B = backToBack.services.length > 0; const offeredInst = latests.find(c => c.payload.id.unpack === offeredInstLabel); const priceInst = tokens.find(c => c.payload.id.unpack === priceInstLabel); @@ -55,6 +58,8 @@ export const New : React.FC = () => { const customerAccount = accounts.find(c => c.payload.accountView.custodian === priceInst.payload.depository && c.payload.accountView.owner === party)?.key; const holdingCid = await getFungible(party, amount, offeredInst.key); if (!customerAccount) return; + const offeringId = { unpack: uuidv4() }; + const observers = singleton(getParty("Public")); if (hasB2B) { const notional = parseFloat(amount) * parseFloat(price); const b2b = myB2BServices[0].payload.provider; @@ -63,7 +68,6 @@ export const New : React.FC = () => { if (!b2bReceivableAccount || !issuerReceivableAccount) return; const b2bDeliverableCid = await getFungible(b2b, amount, offeredInst.key); const issuerDeliverableCid = await getFungible(party, notional, priceInst.key); - const offeringId = id; const backToBack : BackToBack = { party: b2b, offeringId, @@ -72,25 +76,29 @@ export const New : React.FC = () => { b2bReceivableAccount, b2bDeliverableCid }; - const arg : CreateOffering = { + const arg = { offeringId, + description, asset: { amount: amount, unit: offeredInst.key }, price: { amount: price, unit: priceInst.key }, customerHoldingCid: holdingCid, customerAccount, - backToBack + backToBack, + observers }; - await ledger.exercise(Service.CreateOffering, myServices[0].contractId, arg); + await ledger.exercise(Service.CreateOffering, myServices[0].service.contractId, arg); } else { - const arg : CreateOffering = { - offeringId: id, + const arg = { + offeringId, + description, asset: { amount: amount, unit: offeredInst.key }, price: { amount: price, unit: priceInst.key }, customerHoldingCid: holdingCid, customerAccount, - backToBack: null + backToBack: null, + observers }; - await ledger.exercise(Service.CreateOffering, myServices[0].contractId, arg); + await ledger.exercise(Service.CreateOffering, myServices[0].service.contractId, arg); } navigate("/app/distribution/offerings"); } @@ -108,7 +116,7 @@ export const New : React.FC = () => { Details - setId(e.target.value as string)} /> + setDescription(e.target.value as string)} /> Offered Asset