diff --git a/.bazelignore b/.bazelignore index c85c2f7ba..8db792317 100644 --- a/.bazelignore +++ b/.bazelignore @@ -8,4 +8,19 @@ pixy node_modules **/node_modules products/developer-portal/node_modules -products/developer-portal-ng/node_modules \ No newline at end of file +products/developer-portal-ng/node_modules +products/bridge/bridge-web/node_modules +products/bridge/smart-contracts/node_modules + +zilliqa/js/account/node_modules +zilliqa/js/blockchain/node_modules +zilliqa/js/contract/node_modules +zilliqa/js/core/node_modules +zilliqa/js/crypto/node_modules +zilliqa/js/proto/node_modules +zilliqa/js/subscriptions/node_modules +zilliqa/js/util/node_modules +zilliqa/js/zilliqa/node_modules +examples/zilliqa-js/latest-block/node_modules +examples/zilliqa-js/react-zilliqa-js/node_modules +contracts/experimental/ERC20ProxyForZRC2/node_modules diff --git a/.github/workflows/ci-bridge.yml b/.github/workflows/ci-bridge.yml new file mode 100644 index 000000000..adcc199ee --- /dev/null +++ b/.github/workflows/ci-bridge.yml @@ -0,0 +1,34 @@ +name: "CI for Product Bridge" + +on: + push: + paths: + - products/bridge/** + - ".github/workflows/**" + +jobs: + testing: + runs-on: ubuntu-latest + name: "Bridge Tests" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install nodes packages + run: npm ci + working-directory: products/bridge/bridge-web + + - name: Check bridge-web build + run: npm run build + working-directory: products/bridge/bridge-web + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Foundry tests + run: forge test + working-directory: products/bridge/smart-contracts diff --git a/.github/workflows/ci-linting.yml b/.github/workflows/ci-linting.yml index 335fb4147..6507e2f0b 100644 --- a/.github/workflows/ci-linting.yml +++ b/.github/workflows/ci-linting.yml @@ -18,9 +18,13 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 6.0.2 + - name: "Installing dependencies" run: | - yarn install + pnpm i - name: Trunk cache id: cache-trunk diff --git a/.github/workflows/ci-on-merge-main-or-release.yml b/.github/workflows/ci-on-merge-main-or-release.yml deleted file mode 100644 index b01a9c878..000000000 --- a/.github/workflows/ci-on-merge-main-or-release.yml +++ /dev/null @@ -1,180 +0,0 @@ -name: "Create application update" - -on: - # Test run before merging - pull_request: - branches: - - main - # On merged - push: - branches: - - main - # On released - release: - types: [created] - -jobs: - build-docker: - permissions: - id-token: write - contents: write - runs-on: ubuntu-22.04 - name: "Build and deploy" - env: - AWS_REGION: us-west-2 - DEFAULT_BRANCH: main - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - fetch-depth: 0 - - - name: Preparing merged branches - # Fetch the ref of the base branch, just the single commit. - run: | - git config --global user.email "bot@zilliqa.com" - git config --global user.name "Zilliqa Bot" - - echo "Running git checkout ${{ env.DEFAULT_BRANCH }}" - - git checkout ${{ env.DEFAULT_BRANCH }} - git fetch --all --tags - git pull --all - - # Checking out the base branch to make this our working branch and - # merge the head - echo "Running git checkout ${{ github.base_ref }}" - - git checkout ${{ github.base_ref }} - git fetch --all --tags - git pull --all - python config/workspace-status.py - - - name: Committing head - if: github.event_name == 'pull_request' - env: - HEAD_REF: ${{ github.head_ref }} - # Fetch the ref of the base branch, just the single commit. - run: | - echo "Running git merge --squash ${{ env.HEAD_REF }}" - git merge --squash ${{ env.HEAD_REF }} - - git add . -A - git commit -m "Finish merge" - python config/workspace-status.py - - - name: Install SSH key - uses: webfactory/ssh-agent@v0.7.0 - with: - ssh-private-key: ${{ secrets.SSH_SECRET_KET_MANIFESTS }} - - - name: Bazel cache - id: cache-bazel-debug - uses: actions/cache@v3.0.4 - with: - path: ~/.cache/bazel/ - key: ${{ runner.os }}-bazel-debug - - - name: Get tag version - id: get-version - run: | - python config/workspace-status.py | grep FULL_VERSION_TAG | awk '{print $2}' > VERSION - cat VERSION - - - name: Configure AWS Credentials - staging - if: github.ref_name == env.DEFAULT_BRANCH && github.event_name != 'release' - uses: Zilliqa/gh-actions-workflows/actions/configure-aws-credentials@v1 - with: - aws-region: us-west-2 - role-to-assume: arn:aws:iam::816080630680:role/ecr-read-write - oidc-role: ${{ secrets.OIDC_ROLE }} - - - name: Login to the registry - staging - if: github.ref_name == env.DEFAULT_BRANCH && github.event_name != 'release' - uses: docker/login-action@v2 - with: - registry: 816080630680.dkr.ecr.us-west-2.amazonaws.com - - - name: "Build and push devex-apollo - staging" - if: github.ref_name == env.DEFAULT_BRANCH && github.event_name != 'release' - run: | - VERSION=$(cat VERSION) - docker build -t devex-apollo:local products/devex-apollo - docker tag devex-apollo:local 816080630680.dkr.ecr.us-west-2.amazonaws.com/devex-apollo:$VERSION - docker push 816080630680.dkr.ecr.us-west-2.amazonaws.com/devex-apollo:$VERSION - - - name: "Build neo-savant - staging" - if: github.ref_name == env.DEFAULT_BRANCH && github.event_name != 'release' - run: | - cd products/neo-savant - mkdir -p savant-artifact/ - docker build --build-arg DEPLOY_ENV="stg" -t "neo-savant:local" . - docker create --name extractstg "neo-savant:local" - docker cp extractstg:/usr/share/nginx/html/. "$(pwd)/savant-artifact/" - docker rm extractstg - - - name: "Build and push Docker - staging" - if: github.ref_name == env.DEFAULT_BRANCH && github.event_name != 'release' - run: | - bazelisk run --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //products/developer-portal:push_image_staging - bazelisk run --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //products/neo-savant:push_image_staging - bazelisk run --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //products/devex:push_image_staging - - - name: Configure AWS Credentials - production - if: github.event_name == 'release' && github.event.action == 'created' - uses: Zilliqa/gh-actions-workflows/actions/configure-aws-credentials@v1 - with: - aws-region: us-west-2 - role-to-assume: arn:aws:iam::298213327629:role/ecr-read-write - oidc-role: ${{ secrets.OIDC_ROLE }} - - - name: Login to the registry - production - if: github.event_name == 'release' && github.event.action == 'created' - uses: docker/login-action@v2 - with: - registry: 298213327629.dkr.ecr.us-west-2.amazonaws.com - - - name: "Build and push devex-apollo - production" - if: github.event_name == 'release' && github.event.action == 'created' - run: | - VERSION=$(cat VERSION) - docker build -t devex-apollo:local products/devex-apollo - docker tag devex-apollo:local 298213327629.dkr.ecr.us-west-2.amazonaws.com/devex-apollo:$VERSION - docker push 298213327629.dkr.ecr.us-west-2.amazonaws.com/devex-apollo:$VERSION - - - name: "Build neo-savant - production" - if: github.event_name == 'release' && github.event.action == 'created' - run: | - cd products/neo-savant - mkdir -p savant-artifact/ - docker build --build-arg DEPLOY_ENV="prd" -t "neo-savant:local" . - docker create --name extractstg "neo-savant:local" - docker cp extractstg:/usr/share/nginx/html/. "$(pwd)/savant-artifact/" - docker rm extractstg - - - name: "Build and push Docker - production" - if: github.event_name == 'release' && github.event.action == 'created' - run: | - bazelisk run --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //products/developer-portal:push_image_production - bazelisk run --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //products/neo-savant:push_image_production - bazelisk run --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //products/devex:push_image_production - - - name: "Creating staging update" - if: github.ref_name == env.DEFAULT_BRANCH && github.event_name != 'release' - run: | - bazelisk run //cd:update_staging - env: - GITHUB_TOKEN: ${{ github.token }} - DEVOPS_ACCESS_TOKEN: ${{ secrets.DEVOPS_ACCESS_TOKEN }} - BUILD_URI_SUFFIX: ${{ github.head_ref }} - - - name: "Creating production update" - if: github.event_name == 'release' && github.event.action == 'created' - run: | - bazelisk run //cd:update_production - env: - GITHUB_TOKEN: ${{ github.token }} - DEVOPS_ACCESS_TOKEN: ${{ secrets.DEVOPS_ACCESS_TOKEN }} - BUILD_URI_SUFFIX: ${{ github.head_ref }} diff --git a/.github/workflows/ci-on-pr-bazel-test-mac.yml b/.github/workflows/ci-on-pr-bazel-test-mac.yml deleted file mode 100644 index 390f03acf..000000000 --- a/.github/workflows/ci-on-pr-bazel-test-mac.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: "macOS CI" - -on: - push: - branches: - - main - - release/* - pull_request: - branches: - - main - - release/* - release: - types: - - created - -jobs: - build-debug: - runs-on: macos-12 - name: "Bazel Debug Build" - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Bazel cache - id: cache-bazel-debug - uses: actions/cache@v3.0.4 - with: - path: ~/.cache/bazel/ - key: ${{ runner.os }}-bazel-debug - - - name: "Building debug" - run: | - bazelisk build --keep_going --disk_cache=~/.cache/bazel/ //... - - - name: "Running tests" - run: | - bazelisk test --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //... diff --git a/.github/workflows/ci-on-pr-bazel-test-ubuntu-20.04.disabled b/.github/workflows/ci-on-pr-bazel-test-ubuntu-20.04.disabled deleted file mode 100644 index 30e328cd6..000000000 --- a/.github/workflows/ci-on-pr-bazel-test-ubuntu-20.04.disabled +++ /dev/null @@ -1,54 +0,0 @@ -name: "Ubuntu 20 CI" - -on: - push: - branches: - - main - - release/* - pull_request: - branches: - - main - - release/* - release: - types: - - created - -jobs: - build-debug: - runs-on: ubuntu-20.04 - name: "Bazel Debug Build" - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: ${{github.event.pull_request.head.ref}} - repository: ${{github.event.pull_request.head.repo.full_name}} - - - name: Install Python 3.10 - run: | - sudo apt-get update - sudo apt-get remove python3.8 - sudo apt install software-properties-common -y - sudo add-apt-repository ppa:deadsnakes/ppa - sudo apt-get install -y python3.10 python3.10-dev python3.10-distutils python3.10-venv - python3.10 --help - which python3.10 - whereis python3.10 - sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 0 - python --help - - - name: Bazel cache - id: cache-bazel-debug - uses: actions/cache@v3.0.4 - with: - path: ~/.cache/bazel/ - key: ${{ runner.os }}-bazel-debug - - - name: "Building debug" - run: | - python --version - bazelisk build --jobs=1 --keep_going --disk_cache=~/.cache/bazel/ //... - - - name: "Running tests" - run: | - bazelisk test --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //... diff --git a/.github/workflows/ci-on-pr-bazel-test-ubuntu-22.04.yml b/.github/workflows/ci-on-pr-bazel-test-ubuntu-22.04.yml index b647b6e4b..bc7995865 100644 --- a/.github/workflows/ci-on-pr-bazel-test-ubuntu-22.04.yml +++ b/.github/workflows/ci-on-pr-bazel-test-ubuntu-22.04.yml @@ -17,6 +17,9 @@ jobs: build-debug: runs-on: ubuntu-22.04 name: "Bazel Debug Build" + permissions: + id-token: write + contents: read steps: - name: Checkout code uses: actions/checkout@v2 @@ -24,17 +27,26 @@ jobs: ref: ${{github.event.pull_request.head.ref}} repository: ${{github.event.pull_request.head.repo.full_name}} - - name: Bazel cache - id: cache-bazel-debug - uses: actions/cache@v3.0.4 + - id: "auth" + name: "Authenticate to Google Cloud" + uses: "google-github-actions/auth@v1" with: - path: ~/.cache/bazel/ - key: ${{ runner.os }}-bazel-debug + token_format: "access_token" + workload_identity_provider: "${{ secrets.GCP_PRD_GITHUB_WIF }}" + service_account: "${{ secrets.GCP_PRD_GITHUB_SA_GCS_CACHE }}" + create_credentials_file: true + + - name: Configure bazel GCS cache + run: | + export BAZEL_REMOTE_CACHE_CREDENTIALS_JSON='${{ steps.auth.outputs.credentials_file_path }}' + export BAZEL_REMOTE_CACHE_ENDPOINT='${{ vars.BAZEL_REMOTE_CACHE_ENDPOINT }}' + python config/gcp_cs_cache.py + shell: bash - name: "Building debug" run: | - bazelisk build --keep_going --disk_cache=~/.cache/bazel/ //... + bazelisk build --keep_going //... - name: "Running tests" run: | - bazelisk test --test_output=all --keep_going --disk_cache=~/.cache/bazel/ //... + bazelisk test --test_output=all --keep_going //... diff --git a/.github/workflows/cicd-prd.yml b/.github/workflows/cicd-prd.yml new file mode 100644 index 000000000..d2803a231 --- /dev/null +++ b/.github/workflows/cicd-prd.yml @@ -0,0 +1,188 @@ +name: "CICD production" + +on: + # On merged + push: + branches: + - main + # On released + release: + types: [published] + +jobs: + build-docker: + permissions: + id-token: write + contents: write + runs-on: ubuntu-22.04 + if: github.actor != 'dependabot[bot]' + name: "Deploy image" + strategy: + fail-fast: false + matrix: + application: + [ + bluebell-playground, + developer-portal, + devex, + devex-apollo, + dev-wallet, + faucet-service, + eth-spout, + governance-api, + governance-snapshot, + multisig, + neo-savant, + scilla-server, + zillion, + zilliqa-bridge-validator, + zilliqa-bridge-web, + zilliqa-isolated-server, + ] + include: + - application: bluebell-playground + image_name: bluebell-playground + path: products/bluebell + tag_length: 8 + tag_latest: false + - application: developer-portal + image_name: developer-portal + path: products/developer-portal + tag_length: 8 + tag_latest: false + - application: devex + image_name: devex + path: products/devex + tag_length: 8 + tag_latest: false + - application: devex-apollo + image_name: devex-apollo + path: products/devex-apollo + tag_length: 8 + tag_latest: false + - application: dev-wallet + image_name: dev-wallet + path: products/dev-wallet + tag_length: 8 + tag_latest: false + - application: faucet-service + image_name: faucet-service + path: products/faucet-service + tag_length: 8 + tag_latest: false + - application: eth-spout + image_name: eth-spout + path: products/eth-spout + tag_length: 9 + tag_latest: true + - application: governance-api + image_name: governance-api + path: products/governance-api + tag_length: 8 + tag_latest: false + - application: governance-snapshot + image_name: governance-snapshot + path: products/governance-snapshot + tag_length: 8 + tag_latest: false + - application: multisig + image_name: multisig + path: products/multisig + tag_length: 8 + tag_latest: false + - application: neo-savant + image_name: neo-savant + path: products/neo-savant + tag_length: 8 + tag_latest: false + - application: scilla-server + image_name: scilla-server + path: products/scilla-server + tag_length: 8 + tag_latest: false + - application: zillion + image_name: zillion + path: products/zillion + tag_length: 8 + tag_latest: false + - application: zilliqa-isolated-server + image_name: zilliqa-isolated-server + path: products/zilliqa-isolated-server + tag_length: 8 + tag_latest: true + - application: zilliqa-bridge-validator + image_name: zilliqa-bridge-validator + path: products/bridge/bridge-validators + tag_length: 8 + tag_latest: false + - application: zilliqa-bridge-web + image_name: zilliqa-bridge-web + path: products/bridge/bridge-web + tag_length: 8 + tag_latest: false + env: + DOCKER_DOMAIN: asia-docker.pkg.dev + REGISTRY: asia-docker.pkg.dev/prj-p-devops-services-tvwmrf63/zilliqa-public + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + submodules: recursive + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + fetch-depth: 0 + + - name: "Authenticate to Google Cloud - production" + id: google-auth + uses: "google-github-actions/auth@v1" + with: + token_format: "access_token" + workload_identity_provider: "${{ secrets.GCP_PRD_GITHUB_WIF }}" + service_account: "${{ secrets.GCP_PRD_GITHUB_SA_DOCKER_REGISTRY }}" + create_credentials_file: true + + - name: Login to the registry - production + uses: docker/login-action@v2 + with: + registry: ${{ env.DOCKER_DOMAIN }} + username: "oauth2accesstoken" + password: "${{ steps.google-auth.outputs.access_token }}" + + - name: Get tag version - production + if: github.event_name == 'push' + id: set-tag + uses: Zilliqa/gh-actions-workflows/actions/generate-tag@v1 + with: + tag: ${{ env.REGISTRY }}/${{ matrix.image_name }} + length: ${{ matrix.tag_length }} + + - name: "Build and push ${{ matrix.application }} - production" + if: github.event_name == 'push' + env: + ENVIRONMENT: prd + IMAGE_TAG: ${{ steps.set-tag.outputs.tags }} + run: | + cd ${{ matrix.path }} + make image/build-and-push + + - name: "Build and push ${{ matrix.application }} - production" + if: github.event_name == 'release' + env: + ENVIRONMENT: prd + IMAGE_TAG: ${{ env.REGISTRY }}/${{ matrix.image_name }}:${{ github.ref_name }} + ENV_FILES_DECRYPTER_NONPRD: ${{ secrets.ENV_FILES_DECRYPTER_NONPRD }} + ENV_FILES_DECRYPTER_PRD: ${{ secrets.ENV_FILES_DECRYPTER_PRD }} + run: | + cd ${{ matrix.path }} + make image/build-and-push + + - name: "Build and push ${{ matrix.application }} tag latest - production" + if: matrix.tag_latest == true && github.event_name == 'release' + env: + ENVIRONMENT: prd + IMAGE_TAG: ${{ env.REGISTRY }}/${{ matrix.image_name }}:latest + ENV_FILES_DECRYPTER_NONPRD: ${{ secrets.ENV_FILES_DECRYPTER_NONPRD }} + ENV_FILES_DECRYPTER_PRD: ${{ secrets.ENV_FILES_DECRYPTER_PRD }} + run: | + cd ${{ matrix.path }} + make image/build-and-push diff --git a/.github/workflows/cicd-stg.yml b/.github/workflows/cicd-stg.yml new file mode 100644 index 000000000..af3c5ea8b --- /dev/null +++ b/.github/workflows/cicd-stg.yml @@ -0,0 +1,165 @@ +name: "CICD staging" + +on: + # Test run before merging + pull_request: + branches: + - main + # On merged + push: + branches: + - main + +jobs: + build-docker: + permissions: + id-token: write + contents: write + runs-on: ubuntu-22.04 + if: github.actor != 'dependabot[bot]' && github.ref_name == 'main' + name: "Deploy image" + strategy: + fail-fast: false + matrix: + application: + [ + developer-portal, + devex, + devex-apollo, + dev-wallet, + faucet-service, + governance-api, + governance-snapshot, + multisig, + neo-savant, + scilla-server, + zillion, + zilliqa-isolated-server, + ] + include: + - application: developer-portal + image_name: developer-portal + path: products/developer-portal + tag_length: 8 + tag_latest: false + - application: devex + image_name: devex + path: products/devex + tag_length: 8 + tag_latest: false + - application: devex-apollo + image_name: devex-apollo + path: products/devex-apollo + tag_length: 8 + tag_latest: false + - application: dev-wallet + image_name: dev-wallet + path: products/dev-wallet + tag_length: 8 + tag_latest: false + - application: faucet-service + image_name: faucet-service + path: products/faucet-service + tag_length: 8 + tag_latest: false + - application: multisig + image_name: multisig + path: products/multisig + tag_length: 8 + tag_latest: false + - application: neo-savant + image_name: neo-savant + path: products/neo-savant + tag_length: 8 + tag_latest: false + - application: governance-api + image_name: governance-api + path: products/governance-api + tag_length: 8 + tag_latest: false + - application: governance-snapshot + image_name: governance-snapshot + path: products/governance-snapshot + tag_length: 8 + tag_latest: false + - application: pdt + image_name: pdt + path: products/pdt + tag_length: 8 + tag_latest: false + - application: scilla-server + image_name: scilla-server + path: products/scilla-server + tag_length: 8 + tag_latest: false + - application: zillion + image_name: zillion + path: products/zillion + tag_length: 8 + tag_latest: false + - application: zilliqa-isolated-server + image_name: zilliqa-isolated-server + path: products/zilliqa-isolated-server + tag_length: 8 + tag_latest: true + - application: zilliqa-bridge + image_name: zilliqa-bridge-validator + path: products/bridge/bridge-validators + tag_length: 8 + tag_latest: false + - application: zilliqa-bridge-web + image_name: zilliqa-bridge-web + path: products/bridge/bridge-web + tag_length: 8 + tag_latest: false + env: + DOCKER_DOMAIN: asia-docker.pkg.dev + REGISTRY: asia-docker.pkg.dev/prj-d-devops-services-4dgwlsse/zilliqa-public + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + submodules: recursive + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + fetch-depth: 0 + + - name: "Authenticate to Google Cloud - staging" + id: google-auth + uses: "google-github-actions/auth@v1" + with: + token_format: "access_token" + workload_identity_provider: "${{ secrets.GCP_PRD_GITHUB_WIF }}" + service_account: "${{ secrets.GCP_STG_GITHUB_SA_DOCKER_REGISTRY }}" + create_credentials_file: true + + - name: Login to the registry - staging + uses: docker/login-action@v2 + with: + registry: ${{ env.DOCKER_DOMAIN }} + username: "oauth2accesstoken" + password: "${{ steps.google-auth.outputs.access_token }}" + + - name: Get tag version - staging + id: set-tag + uses: Zilliqa/gh-actions-workflows/actions/generate-tag@v1 + with: + tag: ${{ env.REGISTRY }}/${{ matrix.image_name }} + length: ${{ matrix.tag_length }} + + - name: "Build and push ${{ matrix.application }} - staging" + env: + ENVIRONMENT: stg + IMAGE_TAG: ${{ steps.set-tag.outputs.tags }} + run: | + cd ${{ matrix.path }} + make image/build-and-push + + - name: "Build and push ${{ matrix.application }} tag latest - staging" + if: ${{ matrix.tag_latest == true }} + env: + ENVIRONMENT: stg + IMAGE_TAG: "${{ env.REGISTRY }}/${{ matrix.image_name }}:latest" + run: | + cd ${{ matrix.path }} + make image/build-and-push diff --git a/.github/workflows/title-requirements.yml b/.github/workflows/title-requirements.yml index 0aeb9cc1d..81811c1b3 100644 --- a/.github/workflows/title-requirements.yml +++ b/.github/workflows/title-requirements.yml @@ -6,13 +6,13 @@ on: jobs: build: + if: ${{ github.actor != 'dependabot[bot]' }} name: Check that PR is associated with Jira ticket runs-on: "ubuntu-latest" steps: - uses: deepakputhraya/action-pr-title@master with: - regex: '(DEVOPS|US|ZT)\-\d+\:\s+.*' - allowed_prefixes: "DEVOPS,US,ZT" # title should start with the given prefix + regex: '([A-Z]+)\-\d+\:\s+.*' disallowed_prefixes: "release/,feature/,feat/,hotfix" prefix_case_sensitive: false min_length: 5 diff --git a/.gitignore b/.gitignore index d7bc523f2..656878f72 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,9 @@ secret/* .infra/** *_env -**/*_env \ No newline at end of file +**/*_env + +target/ +**/target/ + +examples/zilliqa-js/react-zilliqa-js/build/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..343a25385 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,12 @@ +[submodule "products/bridge/smart-contracts/lib/forge-std"] + path = products/bridge/smart-contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "products/bridge/smart-contracts/lib/openzeppelin-foundry-upgrades"] + path = products/bridge/smart-contracts/lib/openzeppelin-foundry-upgrades + url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades +[submodule "products/bridge/smart-contracts/lib/openzeppelin-contracts"] + path = products/bridge/smart-contracts/lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts +[submodule "products/bridge/smart-contracts/lib/openzeppelin-contracts-upgradeable"] + path = products/bridge/smart-contracts/lib/openzeppelin-contracts-upgradeable + url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index b756b9375..e5fa08f7b 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -16,25 +16,37 @@ lint: - git-diff-check - markdownlint@0.33.0 - prettier@2.8.4 - - shellcheck@0.9.0 - shfmt@3.5.0 - svgo@3.0.2 - gitleaks@8.16.0 - flake8@6.0.0 - isort@5.12.0 - black@23.1.0 + - rustfmt@1.61.0 + # - shellcheck@0.9.0 - removed for being over-prissy and wanting tab indents - rrw 2023-04-25 ignore: - linters: [gitleaks] paths: - - products/laksaj # laksaj contains a lot of embedded testnet privkeys - ignore them. + - products/laksaj # laksaj contains a lot of embedded testnet privkeys - ignore them. - docs/developers/transaction-lifecycle/dev-txn-broadcasting.md # Contains examples. + - products/bridge/smart-contracts/script/config.ts + - products/bridge/smart-contracts/script/**/*.s.sol + - products/bridge/bridge-web/src/config/config.ts - linters: [eslint] paths: - - contracts/experimental/burn_zrc2 # eslint barfs on an internal error if you enable it on this directory. + - contracts/audited/burn_zrc2 # eslint barfs on an internal error if you enable it on this directory. + - contracts/reward_control # and again + - products/bridge/bridge-web - linters: [ALL] paths: - needing-organisation/**/* - - products/devex/public/*.js + - products/devex/public/*.js + - products/dev-wallet/** + - products/governance-api/** + - products/governance-snapshot/** + - products/multisig/** + - products/scilla-server/** + - products/zillion/** - .devcontainer/* - .devcontainer/** - .trunk/*out/** diff --git a/CODEOWNERS b/CODEOWNERS index f01cbb0bf..ff377e725 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @troelsfr @JamesHinshelwood @rrw-zilliqa \ No newline at end of file +* @troelsfr @rrw-zilliqa diff --git a/README.md b/README.md index 675f98da0..44c8e1a39 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# Zilliqa Developer Tools & Documnentation +# Zilliqa Developer Tools & Documentation `zilliqa-developer` is a Bazel based monorepo that contains SDKs, documentations and products used to develop solutions based on the Zilliqa ecosystem. -This reposository is organised as follows: +This repository is organised as follows: - `docs/`: Pure documentation in `md` or `mdx` format. - `examples/`: Reference material. @@ -25,6 +25,10 @@ following table is a place holder: ## Building +To disable our git queries on build, set the `DISABLE_WORKSPACE_STATUS` +environment variable. This loses version information, but speeds builds and +stops you having to touch your security key on every bazel run. + ### Prerequisites This repository is based on the [Bazel build tool](https://bazel.build/). Bazel @@ -114,6 +118,36 @@ which is served on port `80`. #### Building libraries +#### Building and publishing `zilliqa-js` + +Checkout out the repository. First ensure that tests are passing: + +```sh +bazelisk test //zilliqa/js/... +``` + +Next navigate to the `zilliqa/js` folder. If you have not done so, install all +dependencies: + +```sh +pnpm i +``` + +Then build all libraries: + +```sh +pnpm -r build +``` + +Finally, publish: + +```sh +pnpm -r publish +``` + +Add `--dry-run` in the event you want to test publish without publishing +anything. + #### Building and running Docker images For the purpose of building Docker images, you do not need Docker installed @@ -230,8 +264,10 @@ previous builds: `bazel clean --expunge` To get information about your current Bazel setup run `bazelisk info`. -If you get bored with bazel constantly asking you for your password/to authenticate via your key, add -`--workspace_status_command=echo` to your command line. +If you get bored with bazel constantly asking you for your password/to +authenticate via your key, add `--workspace_status_command=echo` to your command +line. Use `DISABLE_WORKSPACE_STATUS` with `ibazel` (since `ibazel` doesn't pass +command line options on to `bazel`). ## Reasoning Behind Repository Organisation @@ -260,4 +296,4 @@ The idea with keeping it all in one repository is as follows: version 5.2.1, this possibly leads to incompatibility between `devex` and the API component. By keeping the two together, we can ensure that releases are done simultaneously and that they rely on the same library version to avoid - tedious bugs that are hard to find. + tedious bugs that are hard to find.. diff --git a/WORKSPACE b/WORKSPACE index 009c19079..9cd0b7885 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -76,9 +76,9 @@ install_deps() # ================================================================ http_archive( name = "aspect_rules_js", - sha256 = "c3b5fd40ec19f3260094321380169abe86dd89e3506c4e44a515a50c1626629b", - strip_prefix = "rules_js-1.6.6", - url = "https://github.com/aspect-build/rules_js/archive/refs/tags/v1.6.6.tar.gz", + sha256 = "08061ba5e5e7f4b1074538323576dac819f9337a0c7d75aee43afc8ae7cb6e18", + strip_prefix = "rules_js-1.26.1", + url = "https://github.com/aspect-build/rules_js/releases/download/v1.26.1/rules_js-v1.26.1.tar.gz", ) http_archive( @@ -201,6 +201,18 @@ http_archive( urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.25.0/rules_docker-v0.25.0.tar.gz"], ) +load( + "@io_bazel_rules_docker//toolchains/docker:toolchain.bzl", + docker_toolchain_configure = "toolchain_configure", +) + +docker_toolchain_configure( + name = "docker_config", + # OPTIONAL: Path to the docker binary. + # Should be set explicitly for remote execution. + docker_path = "$BUILD_WORKSPACE_DIRECTORY/bin/docker.py", +) + load( "@io_bazel_rules_docker//repositories:repositories.bzl", container_repositories = "repositories", diff --git a/bin/docker.py b/bin/docker.py new file mode 100755 index 000000000..b73b253dd --- /dev/null +++ b/bin/docker.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 +# the bazel container image rules end up running docker in a deleted +# temporary directory. Sadly, podman objects to this, so change directory +# before we re-exec docker and set DOCKER to the location of this file. +# ugh! +# Sadly, this has to be a python script, because trunk invokes shellcheck, +# which is so fascist that it's nearly impossible to satisfy it. + +import os +import sys + +try: + exists = os.getcwd() +except Exception: + # nope! + os.chdir("/tmp") +os.execvp("/usr/bin/docker", sys.argv) diff --git a/cd/BUILD b/cd/BUILD index 6cbee4130..c4a4c7caf 100644 --- a/cd/BUILD +++ b/cd/BUILD @@ -1,7 +1,7 @@ load("@rules_python//python:defs.bzl", "py_binary", "py_library") load("@zilliqa_python_deps//:requirements.bzl", "requirement") load("//config:expand-workspace-status.bzl", "expand_workspace_status") -load(":applications.bzl", "APPLICATIONS") +load(":applications.bzl", "APPLICATIONS_PROD") expand_workspace_status( name = "git-version-py", @@ -22,28 +22,13 @@ py_library( ], ) -py_binary( - name = "update_staging", - srcs = [ - "update_manifests_repository.py", - ], - args = ["$(location {}:cd_staging_patch)".format(s) for s in APPLICATIONS], - data = ["{}:cd_staging_patch".format(s) for s in APPLICATIONS], - main = "update_manifests_repository.py", - visibility = ["//visibility:public"], - deps = [ - ":version", - requirement("PyGithub"), - ], -) - py_binary( name = "update_production", srcs = [ "update_manifests_repository.py", ], - args = ["$(location {}:cd_production_patch)".format(s) for s in APPLICATIONS], - data = ["{}:cd_production_patch".format(s) for s in APPLICATIONS], + args = ["$(location {}:cd_production_patch)".format(s) for s in APPLICATIONS_PROD], + data = ["{}:cd_production_patch".format(s) for s in APPLICATIONS_PROD], main = "update_manifests_repository.py", visibility = ["//visibility:public"], deps = [ diff --git a/cd/applications.bzl b/cd/applications.bzl index 53189463b..76e053a9d 100644 --- a/cd/applications.bzl +++ b/cd/applications.bzl @@ -2,9 +2,6 @@ This module contains the applications which are deployed upon merge into main and release tagging. """ -APPLICATIONS = [ - "//products/developer-portal", - "//products/devex", - "//products/devex-apollo", - "//products/neo-savant", -] +APPLICATIONS_STAGING = [] + +APPLICATIONS_PROD = [] diff --git a/config/gcp_cs_cache.py b/config/gcp_cs_cache.py new file mode 100644 index 000000000..064eece26 --- /dev/null +++ b/config/gcp_cs_cache.py @@ -0,0 +1,20 @@ +#!/usr/bin/python + +import argparse +import os + +parser = argparse.ArgumentParser(description="Configure Bazel remote cache.") +parser.add_argument("--endpoint", type=str, help="Remote cache endpoint URL") +parser.add_argument("--credentials", type=str, help="Path to JSON secret key file") +args = parser.parse_args() + +# Get values from command-line arguments or environment variables +ENDPOINT = args.endpoint or os.environ.get("BAZEL_REMOTE_CACHE_ENDPOINT") + +CREDENTIALS_JSON = args.credentials or os.environ.get( + "BAZEL_REMOTE_CACHE_CREDENTIALS_JSON" +) + +with open(".bazelrc.configure", "w") as fb: + fb.write("build --remote_cache={}\n".format(ENDPOINT)) + fb.write("build --google_credentials={}\n".format(CREDENTIALS_JSON)) diff --git a/config/workspace-status.py b/config/workspace-status.py index 9f3ac5f65..06d47999c 100644 --- a/config/workspace-status.py +++ b/config/workspace-status.py @@ -14,6 +14,26 @@ def is_git_dirty(path): return out.decode("ascii").strip() != "" +def get_dummy_version(): + ret = { + "major": 0, + "minor": 0, + "placeholder": 0, + "prerelease": "", + "patch": 0, + "build": "unknown", + "is_dirty": True, + "commit_hash": "000000", + "describe": "unknown.0", + "regex_match": "no_match", + "intersection_point": "main", + "dist_from_main_intersection": -1, + "branch": "unknown", + "branches": "", + } + return ret + + def get_version_from_git(path): subprocess.check_output("git fetch --all --tags", shell=True) ret = { @@ -22,7 +42,7 @@ def get_version_from_git(path): "placeholder": 0, "prerelease": "", "patch": 0, - "build": "unkown", + "build": "unknown", } git_is_dirty = is_git_dirty(".") @@ -168,7 +188,14 @@ def get_version(major, minor, patch, prerelease, commit_hash, is_dirty, **kwargs def main(): - version = get_version_from_git(".") + # Use this to disable status when you have a yubikey and would + # otherwise need to keep touching it for every op + # - rrw 2023-04-25 + if os.environ.get("DISABLE_WORKSPACE_STATUS") is not None: + version = get_dummy_version() + else: + version = get_version_from_git(".") + version["version"] = get_version(**version) git_hash = version["commit_hash"] git_is_dirty = version["is_dirty"] diff --git a/contracts/audited/burn_zrc2/AUDIT.md b/contracts/audited/burn_zrc2/AUDIT.md new file mode 100644 index 000000000..bcbb03251 --- /dev/null +++ b/contracts/audited/burn_zrc2/AUDIT.md @@ -0,0 +1,3 @@ +# Audit notes + +An audit report by hacken.io can be found in [the report](https://wp.hacken.io/wp-content/uploads/2023/05/LunarCRUSH_SC-Audit-Report_03052023_SA-1204.pdf) diff --git a/contracts/experimental/burn_zrc2/README.md b/contracts/audited/burn_zrc2/README.md similarity index 72% rename from contracts/experimental/burn_zrc2/README.md rename to contracts/audited/burn_zrc2/README.md index 403f52d33..92bf32d5b 100644 --- a/contracts/experimental/burn_zrc2/README.md +++ b/contracts/audited/burn_zrc2/README.md @@ -23,9 +23,10 @@ ZRC-2 `TransferFrom` mechanism: To burn ZRC2s: - Call `ZRC2Burn.UpdateBurnAllowance( ZRC2TokenAddress, token_amount)` from the wallet that wishes to burn the tokens. -- Call `ZRC2TokenAddress.Transfer( ZRC2BurnAddress, token_amount)` to burn the tokens. -- If you change your mind, call `ZRC2Burn.CancelBurn( ZRC2BurnAddress )` within `burncancelblocks` to change your mind. Your tokens will be returned. -- Otherwise the burn becomes irrevocable. +- Call `ZRC2TokenAddress.Transfer( ZRC2BurnAddress, token_amount)` to burn the tokens. This will start a cancel timer for `burncancelblocks` blocks. +- If you change your mind, call `ZRC2Burn.CancelBurn( ZRC2BurnAddress )` before the timer expires (ie. within `burncancelblocks`) to change your mind. Your tokens will be returned. +- If `Transfer()` or `TransferFrom()` is called again, a new timer will be started for all tokens waiting to be burned. +- Otherwise the burn becomes irrevocable., - Anyone can then call `ZRC2Burn.FinaliseBurn(token_address, wallet_address)` to finalise the burn. - Once the tokens are permanently burned, not even the `ZRC2Burn` contract owner can get them back. @@ -33,12 +34,15 @@ To burn ZRC2 tokens via an allowance: - Call `ZRC2Burn.UpdateBurnAllowance( ZRC2TokenAddress, token_amount)` from the wallet that wishes to burn the tokens. - Call `ZRC2TokenAddress.IncreaseAllowance( AllowanceAddress, token_amount)` from the wallet that wishes to burn the tokens. -- Have `AllowanceAddress` call `ZRC2TokenAddress.TransferFrom( WalletAddress, ZRC2Burn, token_amount)` to transfer the tokens. -- If `WalletAddress` changes their mind within `burncancelblocks`, they can call `ZRC2Burn.CancelBurn( ZRC2BurnAddress )` to cancel. +- Have `AllowanceAddress` call `ZRC2TokenAddress.TransferFrom( WalletAddress, ZRC2Burn, token_amount)` to transfer the tokens. This will start a cancel timer for `burncancelblocks` blocks. +- If `WalletAddress` changes their mind before the timer expires (within `burncancelblocks`), they can call `ZRC2Burn.CancelBurn( ZRC2BurnAddress )` to cancel. +- If `Transfer()` or `TransferFrom` is called again, a new timer will be started for all tokens waiting to be burned. - Otherwise the burn becomes irrevocable. - Anyone can then call `ZRC2Burn.FinaliseBurn(token_address, wallet_address)` to finalise the burn - this just updates internal data structures. - Once the tokens are permanently burned, not even the `ZRC2Burn` contract owner can get them back. +`burncancelblocks` is sampled when the timer is started or restarted. + ## Inspecting totals The total number of tokens burned per ZRC2 is stored in `token_total_burned`. @@ -65,6 +69,14 @@ It is not defined if the owner can interact with the contract whilst it is paused. The owner can reassign ownership and call the pause and unpause transitions whilst the contract is paused. +## Quirks + +- When the contract is paused on only a particular ZRC2, you can cancel your burn, but not finalise it. + This is odd, but arises from the logic that we would really like you not to be able to cancel it either, + but we have to in case the timer expires on you. Thus, we protect the logic behind finalise with the + pause flag, but not that behind cancel. This provides us with better error coverage at the cost of + some more than slightly odd semantics. + ## Tests and deployment instructions ### Tests diff --git a/contracts/experimental/burn_zrc2/artifacts/scilla.cache b/contracts/audited/burn_zrc2/artifacts/scilla.cache similarity index 62% rename from contracts/experimental/burn_zrc2/artifacts/scilla.cache rename to contracts/audited/burn_zrc2/artifacts/scilla.cache index 3f93937be..f146bd187 100644 --- a/contracts/experimental/burn_zrc2/artifacts/scilla.cache +++ b/contracts/audited/burn_zrc2/artifacts/scilla.cache @@ -1 +1 @@ -{"contracts/BurnTokensAnyZRC2.scilla":{"hash":"13be183ed2071f49e7713d4f6c7a00d7","path":"contracts/BurnTokensAnyZRC2.scilla","parsedContract":{"name":"BurnTokensAnyZRC2","transitions":[{"type":"CompProc","name":"ThrowError","params":[{"name":"err","typeJSON":{"ctor":"Error","argtypes":[]},"type":"Error"}]},{"type":"CompProc","name":"IsOwner","params":[{"name":"address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"RequireNotSelf","params":[{"name":"address_a","typeJSON":"ByStr20","type":"ByStr20"},{"name":"address_b","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"IsNotPausedAll","params":[]},{"type":"CompProc","name":"IsNotPaused","params":[{"name":"contract_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"IsRecipientMatchContract","params":[{"name":"address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"FinaliseBurnHelper","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"ProcessBurnTokensHelper","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"},{"name":"pending_amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompProc","name":"ProcessBurnTokens","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"Pause","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"UnPause","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"PauseAll","params":[]},{"type":"CompTrans","name":"UnPauseAll","params":[]},{"type":"CompTrans","name":"SetContractOwnershipRecipient","params":[{"name":"to","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"AcceptContractOwnership","params":[]},{"type":"CompTrans","name":"UpdateBurnAllowance","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"token_amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"CancelBurn","params":[{"name":"token","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"ChangeBurnCancelBlocks","params":[{"name":"new_cancel_blocks","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"FinaliseBurn","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"RecipientAcceptTransfer","params":[{"name":"sender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"RecipientAcceptTransferFrom","params":[{"name":"initiator","typeJSON":"ByStr20","type":"ByStr20"},{"name":"sender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"TransferSuccessCallBack","params":[{"name":"sender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]}],"fields":[{"type":"ADT","name":"paused"},{"type":"ByStr20","name":"contract_owner"},{"type":"ByStr20","name":"contract_ownership_recipient"},{"type":"Uint32","name":"burncancelblocks"},{"type":"Map","name":"confirm_time"},{"type":"Map","name":"pending_burn"},{"type":"Map","name":"token_total_burned"},{"type":"Map","name":"paused_zrc2"},{"type":"Map","name":"allow_burn_tokens"}],"constructorParams":[{"type":"ByStr20","name":"initial_contract_owner"}],"ctors":[{"typename":"Error","ctorname":"CodeNotOwner","argtypes":[]},{"typename":"Error","ctorname":"ContractIsPausedFailure","argtypes":[]},{"typename":"Error","ctorname":"ContractAddressNoMatch","argtypes":[]},{"typename":"Error","ctorname":"ZRC2AddressNoMatch","argtypes":[]},{"typename":"Error","ctorname":"BurnAllowanceNotSetForWallet","argtypes":[]},{"typename":"Error","ctorname":"BurnAllowanceExceedForWallet","argtypes":[]},{"typename":"Error","ctorname":"SelfError","argtypes":[]},{"typename":"Error","ctorname":"NotContractOwnershipRecipientError","argtypes":[]}]}},"contracts/FungibleToken.scilla":{"hash":"c00773f47f22a5ed9fcc53791baeb578","path":"contracts/FungibleToken.scilla","parsedContract":{"name":"FungibleToken","transitions":[{"type":"CompProc","name":"ThrowError","params":[{"name":"err","typeJSON":{"ctor":"Error","argtypes":[]},"type":"Error"}]},{"type":"CompProc","name":"IsNotSender","params":[{"name":"address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"AuthorizedMoveIfSufficientBalance","params":[{"name":"from","typeJSON":"ByStr20","type":"ByStr20"},{"name":"to","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"IncreaseAllowance","params":[{"name":"spender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"DecreaseAllowance","params":[{"name":"spender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"Transfer","params":[{"name":"to","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"TransferFrom","params":[{"name":"from","typeJSON":"ByStr20","type":"ByStr20"},{"name":"to","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]}],"fields":[{"type":"Uint128","name":"total_supply"},{"type":"Map","name":"balances"},{"type":"Map","name":"allowances"}],"constructorParams":[{"type":"ByStr20","name":"contract_owner"},{"type":"String","name":"name"},{"type":"String","name":"symbol"},{"type":"Uint32","name":"decimals"},{"type":"Uint128","name":"init_supply"}],"ctors":[{"typename":"Error","ctorname":"CodeIsSender","argtypes":[]},{"typename":"Error","ctorname":"CodeInsufficientFunds","argtypes":[]},{"typename":"Error","ctorname":"CodeInsufficientAllowance","argtypes":[]},{"typename":"Unit","ctorname":"Unit","argtypes":[]}]}}} \ No newline at end of file +{"contracts/BurnTokensAnyZRC2.scilla":{"hash":"2e11be130eb11c8ed111f99fc1d6e1ae","path":"contracts/BurnTokensAnyZRC2.scilla","parsedContract":{"name":"BurnTokensAnyZRC2","transitions":[{"type":"CompProc","name":"ThrowError","params":[{"name":"err","typeJSON":{"ctor":"Error","argtypes":[]},"type":"Error"}]},{"type":"CompProc","name":"IsOwner","params":[{"name":"address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"RequireNotSelf","params":[{"name":"address_a","typeJSON":"ByStr20","type":"ByStr20"},{"name":"address_b","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"IsNotPausedAll","params":[]},{"type":"CompProc","name":"IsNotPaused","params":[{"name":"contract_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"IsRecipientMatchContract","params":[{"name":"address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"FinaliseBurnHelper","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"ProcessBurnTokensHelper","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"},{"name":"pending_amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompProc","name":"ProcessBurnTokens","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"Pause","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"UnPause","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"PauseAll","params":[]},{"type":"CompTrans","name":"UnPauseAll","params":[]},{"type":"CompTrans","name":"SetContractOwnershipRecipient","params":[{"name":"to","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"AcceptContractOwnership","params":[]},{"type":"CompTrans","name":"UpdateBurnAllowance","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"token_amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"CancelBurn","params":[{"name":"token","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"ChangeBurnCancelBlocks","params":[{"name":"new_cancel_blocks","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"FinaliseBurn","params":[{"name":"token_address","typeJSON":"ByStr20","type":"ByStr20"},{"name":"wallet_address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"RecipientAcceptTransfer","params":[{"name":"sender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"RecipientAcceptTransferFrom","params":[{"name":"initiator","typeJSON":"ByStr20","type":"ByStr20"},{"name":"sender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"TransferSuccessCallBack","params":[{"name":"sender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]}],"fields":[{"type":"ADT","name":"paused"},{"type":"ByStr20","name":"contract_owner"},{"type":"ByStr20","name":"contract_ownership_recipient"},{"type":"Uint32","name":"burncancelblocks"},{"type":"Map","name":"confirm_time"},{"type":"Map","name":"pending_burn"},{"type":"Map","name":"token_total_burned"},{"type":"Map","name":"paused_zrc2"},{"type":"Map","name":"allow_burn_tokens"}],"constructorParams":[{"type":"ByStr20","name":"initial_contract_owner"}],"ctors":[{"typename":"Error","ctorname":"CodeNotOwner","argtypes":[]},{"typename":"Error","ctorname":"ContractIsPausedFailure","argtypes":[]},{"typename":"Error","ctorname":"ContractAddressNoMatch","argtypes":[]},{"typename":"Error","ctorname":"BurnAllowanceNotSetForWallet","argtypes":[]},{"typename":"Error","ctorname":"BurnAllowanceExceedForWallet","argtypes":[]},{"typename":"Error","ctorname":"SelfError","argtypes":[]},{"typename":"Error","ctorname":"NotContractOwnershipRecipientError","argtypes":[]}]}},"contracts/FungibleToken.scilla":{"hash":"c00773f47f22a5ed9fcc53791baeb578","path":"contracts/FungibleToken.scilla","parsedContract":{"name":"FungibleToken","transitions":[{"type":"CompProc","name":"ThrowError","params":[{"name":"err","typeJSON":{"ctor":"Error","argtypes":[]},"type":"Error"}]},{"type":"CompProc","name":"IsNotSender","params":[{"name":"address","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"AuthorizedMoveIfSufficientBalance","params":[{"name":"from","typeJSON":"ByStr20","type":"ByStr20"},{"name":"to","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"IncreaseAllowance","params":[{"name":"spender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"DecreaseAllowance","params":[{"name":"spender","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"Transfer","params":[{"name":"to","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"TransferFrom","params":[{"name":"from","typeJSON":"ByStr20","type":"ByStr20"},{"name":"to","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"}]}],"fields":[{"type":"Uint128","name":"total_supply"},{"type":"Map","name":"balances"},{"type":"Map","name":"allowances"}],"constructorParams":[{"type":"ByStr20","name":"contract_owner"},{"type":"String","name":"name"},{"type":"String","name":"symbol"},{"type":"Uint32","name":"decimals"},{"type":"Uint128","name":"init_supply"}],"ctors":[{"typename":"Error","ctorname":"CodeIsSender","argtypes":[]},{"typename":"Error","ctorname":"CodeInsufficientFunds","argtypes":[]},{"typename":"Error","ctorname":"CodeInsufficientAllowance","argtypes":[]},{"typename":"Unit","ctorname":"Unit","argtypes":[]}]}}} \ No newline at end of file diff --git a/contracts/experimental/burn_zrc2/cache/solidity-files-cache.json b/contracts/audited/burn_zrc2/cache/solidity-files-cache.json similarity index 100% rename from contracts/experimental/burn_zrc2/cache/solidity-files-cache.json rename to contracts/audited/burn_zrc2/cache/solidity-files-cache.json diff --git a/contracts/experimental/burn_zrc2/contracts/BurnTokensAnyZRC2.scilla b/contracts/audited/burn_zrc2/contracts/BurnTokensAnyZRC2.scilla similarity index 95% rename from contracts/experimental/burn_zrc2/contracts/BurnTokensAnyZRC2.scilla rename to contracts/audited/burn_zrc2/contracts/BurnTokensAnyZRC2.scilla index 842180563..575a5fc0e 100644 --- a/contracts/experimental/burn_zrc2/contracts/BurnTokensAnyZRC2.scilla +++ b/contracts/audited/burn_zrc2/contracts/BurnTokensAnyZRC2.scilla @@ -11,13 +11,14 @@ let zero_address = 0x0000000000000000000000000000000000000000 let uint128_zero = Uint128 0 let bool_paused = True let bool_unpaused = False +let bool_succeeded = True +let bool_failed = False (* Error events *) type Error = | CodeNotOwner | ContractIsPausedFailure | ContractAddressNoMatch -| ZRC2AddressNoMatch | BurnAllowanceNotSetForWallet | BurnAllowanceExceedForWallet | SelfError @@ -25,12 +26,11 @@ type Error = let make_error = fun (result : Error) => - let result_code = + let result_code = match result with | CodeNotOwner => Int32 -101 | ContractIsPausedFailure => Int32 -102 | ContractAddressNoMatch => Int32 -103 - | ZRC2AddressNoMatch => Int32 -104 | BurnAllowanceNotSetForWallet => Int32 -105 | BurnAllowanceExceedForWallet => Int32 -106 | SelfError => Int32 -11 @@ -38,9 +38,9 @@ let make_error = end in { _exception : "Error"; code : result_code } - -let one_msg = - fun (msg : Message) => + +let one_msg = + fun (msg : Message) => let nil_msg = Nil {Message} in Cons {Message} msg nil_msg @@ -134,7 +134,7 @@ procedure IsNotPaused(contract_address: ByStr20) IsNotPausedAll; paused_flag <- paused_zrc2[contract_address]; - + match paused_flag with | Some flag => match flag with @@ -150,7 +150,7 @@ end (* Does address match this contract *) procedure IsRecipientMatchContract(address: ByStr20) - + is_match = builtin eq address _this_address; match is_match with @@ -208,7 +208,7 @@ procedure ProcessBurnTokensHelper(token_address: ByStr20, pending_amount: Uint128) burnable_balance <- allow_burn_tokens[token_address][wallet_address]; - + match burnable_balance with | Some bal => is_within_limit = uint128_le amount bal; @@ -222,7 +222,7 @@ procedure ProcessBurnTokensHelper(token_address: ByStr20, cancelblocks <- burncancelblocks; newconfirmtime = builtin badd blk cancelblocks; newamount = builtin add amount pending_amount; - + pending_burn[token_address][wallet_address]:= newamount; confirm_time[token_address][wallet_address]:= newconfirmtime; @@ -379,6 +379,10 @@ transition CancelBurn(token:ByStr20) somependingamount <- pending_burn[token][_sender]; match somependingamount with | Some pendingamount => + delete pending_burn[token][_sender]; + delete confirm_time[token][_sender]; + e = { _eventname: "CancelBurn"; token: token; sender: _sender; token_amount: pendingamount; success: bool_succeeded}; + event e; msg = { _amount: uint128_zero; _recipient: token; @@ -387,17 +391,18 @@ transition CancelBurn(token:ByStr20) amount: pendingamount }; msgs = one_msg msg; - send msgs; - delete pending_burn[token][_sender]; - delete confirm_time[token][_sender] - + send msgs | None => + e = { _eventname: "CancelBurn"; token: token; sender: _sender; token_amount: uint128_zero; success: bool_failed }; + event e end end transition ChangeBurnCancelBlocks(new_cancel_blocks: Uint32) IsOwner _sender; - burncancelblocks := new_cancel_blocks + burncancelblocks := new_cancel_blocks; + e = { _eventname: "ChangeBurnCancelBlocks"; new_cancel_blocks: new_cancel_blocks }; + event e end transition FinaliseBurn(token_address : ByStr20, wallet_address : ByStr20) diff --git a/contracts/experimental/burn_zrc2/contracts/FungibleToken.scilla b/contracts/audited/burn_zrc2/contracts/FungibleToken.scilla similarity index 100% rename from contracts/experimental/burn_zrc2/contracts/FungibleToken.scilla rename to contracts/audited/burn_zrc2/contracts/FungibleToken.scilla diff --git a/contracts/experimental/burn_zrc2/hardhat.config.ts b/contracts/audited/burn_zrc2/hardhat.config.ts similarity index 97% rename from contracts/experimental/burn_zrc2/hardhat.config.ts rename to contracts/audited/burn_zrc2/hardhat.config.ts index 0483a803b..788690481 100644 --- a/contracts/experimental/burn_zrc2/hardhat.config.ts +++ b/contracts/audited/burn_zrc2/hardhat.config.ts @@ -68,8 +68,8 @@ const config: HardhatUserConfig = { miningState: false, }, public_testnet: { - url: "https://evm-api-dev.zilliqa.com", - websocketUrl: "https://evm-api-dev.zilliqa.com", + url: "https://api-dev.zilliqa.com", + websocketUrl: "https://api-dev.zilliqa.com", accounts: [ "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", "db11cfa086b92497c8ed5a4cc6edb3a5bfe3a640c43ffb9fc6aa0873c56f2ee3", diff --git a/contracts/experimental/burn_zrc2/package-lock.json b/contracts/audited/burn_zrc2/package-lock.json similarity index 87% rename from contracts/experimental/burn_zrc2/package-lock.json rename to contracts/audited/burn_zrc2/package-lock.json index 268b62116..670d2775d 100644 --- a/contracts/experimental/burn_zrc2/package-lock.json +++ b/contracts/audited/burn_zrc2/package-lock.json @@ -35,7 +35,7 @@ "@types/cli-color": "^2.0.2", "@types/mocha": "^9.1.1", "@types/yargs": "^17.0.17", - "axios": "^0.27.2", + "axios": "^1.6.0", "chai": "^4.3.6", "chai-subset": "^1.6.0", "eslint": "^8.23.1", @@ -221,23 +221,100 @@ } }, "node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", "dev": true, "dependencies": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" } }, "node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", "dev": true, "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "dev": true, + "dependencies": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "dev": true, + "dependencies": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "dev": true, + "dependencies": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" } }, "node_modules/@ethersproject/abi": { @@ -947,6 +1024,15 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -1083,6 +1169,30 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.3.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/hashes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", @@ -1654,9 +1764,9 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.3.tgz", - "integrity": "sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", + "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==", "dev": true }, "node_modules/@openzeppelin/test-helpers": { @@ -1695,9 +1805,9 @@ } }, "node_modules/@openzeppelin/test-helpers/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1758,16 +1868,13 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/bip32": { "version": "1.1.5", @@ -1974,20 +2081,23 @@ } }, "node_modules/@truffle/abi-utils": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.9.tgz", - "integrity": "sha512-G5dqgwRHx5zwlXjz3QT8OJVfB2cOqWwD6DwKso0KttUt/zejhCjnkKq72rSgyeLMkz7wBB9ERLOsupLBILM8MA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.3.tgz", + "integrity": "sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==", "dev": true, "dependencies": { "change-case": "3.0.2", "fast-check": "3.1.1", - "web3-utils": "1.8.2" + "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/abi-utils/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "dependencies": { "bn.js": "^5.2.1", @@ -2003,33 +2113,39 @@ } }, "node_modules/@truffle/blockchain-utils": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.7.tgz", - "integrity": "sha512-1nibqGjEHC7KAyDThEFvbm2+EO8zAHee/VjCtxkYBE3ySwP50joh0QCEBjy7K/9z+icpMoDucfxmgaKToBFUgQ==", - "dev": true + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz", + "integrity": "sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==", + "dev": true, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/codec": { - "version": "0.14.17", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.17.tgz", - "integrity": "sha512-kD4dD86huLeaBEq5R8D1zleJEu6NsXbyYLdXl1V1TKdiO8odw5CBC6Y/+wdu5d3t1dyEYrTbhn1dqknZa52pmw==", + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.3.tgz", + "integrity": "sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==", "dev": true, "dependencies": { - "@truffle/abi-utils": "^0.3.9", - "@truffle/compile-common": "^0.9.4", + "@truffle/abi-utils": "^1.0.3", + "@truffle/compile-common": "^0.9.8", "big.js": "^6.0.3", "bn.js": "^5.1.3", "cbor": "^5.2.0", "debug": "^4.3.1", "lodash": "^4.17.21", - "semver": "7.3.7", + "semver": "^7.5.4", "utf8": "^3.0.0", - "web3-utils": "1.8.2" + "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/codec/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true, "engines": { "node": "*" @@ -2070,9 +2186,9 @@ } }, "node_modules/@truffle/codec/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2085,9 +2201,9 @@ } }, "node_modules/@truffle/codec/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "dependencies": { "bn.js": "^5.2.1", @@ -2109,45 +2225,74 @@ "dev": true }, "node_modules/@truffle/compile-common": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.4.tgz", - "integrity": "sha512-mnqJB/hLiPHNf+WKwt/2MH6lv34xSG/SFCib7+ckAklutUqVLeFo8EwQxinuHNkU7LY0C+YgZXhK1WTCO5YRJQ==", + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.8.tgz", + "integrity": "sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==", "dev": true, "dependencies": { - "@truffle/error": "^0.2.0", + "@truffle/error": "^0.2.2", "colors": "1.4.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/contract": { - "version": "4.6.19", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.19.tgz", - "integrity": "sha512-LV4JuMWa4juySKCj4PHQ9YpP/xLXDxV2BQR/IEGIthhQb7jdo+BrwSxuRjO3kn2CtI5KxUpL99VUOTLvAz56iQ==", + "version": "4.6.31", + "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.31.tgz", + "integrity": "sha512-s+oHDpXASnZosiCdzu+X1Tx5mUJUs1L1CYXIcgRmzMghzqJkaUFmR6NpNo7nJYliYbO+O9/aW8oCKqQ7rCHfmQ==", "dev": true, "dependencies": { "@ensdomains/ensjs": "^2.1.0", - "@truffle/blockchain-utils": "^0.1.7", - "@truffle/contract-schema": "^3.4.13", - "@truffle/debug-utils": "^6.0.48", - "@truffle/error": "^0.2.0", - "@truffle/interface-adapter": "^0.5.31", + "@truffle/blockchain-utils": "^0.1.9", + "@truffle/contract-schema": "^3.4.16", + "@truffle/debug-utils": "^6.0.57", + "@truffle/error": "^0.2.2", + "@truffle/interface-adapter": "^0.5.37", "bignumber.js": "^7.2.1", "debug": "^4.3.1", "ethers": "^4.0.32", - "web3": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" + "web3": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/contract-schema": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.13.tgz", - "integrity": "sha512-emG7upuryYFrsPDbHqeASPWXL824M1tinhQwSPG0phSoa3g+RX9fUNNN/VPmF3tSkXLWUMhRnb7ehxnaCuRbZg==", + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.16.tgz", + "integrity": "sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==", "dev": true, "dependencies": { "ajv": "^6.10.0", "debug": "^4.3.1" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@truffle/contract/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/@truffle/contract/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dev": true, + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" } }, "node_modules/@truffle/contract/node_modules/@types/node": { @@ -2163,12 +2308,12 @@ "dev": true }, "node_modules/@truffle/contract/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==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "node_modules/@truffle/contract/node_modules/eth-lib": { @@ -2227,26 +2372,6 @@ "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", "dev": true }, - "node_modules/@truffle/contract/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==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/@truffle/contract/node_modules/scrypt-js": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", @@ -2267,28 +2392,28 @@ "dev": true }, "node_modules/@truffle/contract/node_modules/web3": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz", - "integrity": "sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-bzz": "1.8.2", - "web3-core": "1.8.2", - "web3-eth": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-shh": "1.8.2", - "web3-utils": "1.8.2" + "web3-bzz": "1.10.0", + "web3-core": "1.10.0", + "web3-eth": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-shh": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-bzz": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz", - "integrity": "sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2301,104 +2426,104 @@ } }, "node_modules/@truffle/contract/node_modules/web3-core": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz", - "integrity": "sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", "dev": true, "dependencies": { - "@types/bn.js": "^5.1.0", + "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-requestmanager": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-requestmanager": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-core-method": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz", - "integrity": "sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", "dev": true, "dependencies": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-core-requestmanager": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz", - "integrity": "sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", "dev": true, "dependencies": { "util": "^0.12.5", - "web3-core-helpers": "1.8.2", - "web3-providers-http": "1.8.2", - "web3-providers-ipc": "1.8.2", - "web3-providers-ws": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-providers-http": "1.10.0", + "web3-providers-ipc": "1.10.0", + "web3-providers-ws": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-core-subscriptions": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz", - "integrity": "sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-core/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true, "engines": { "node": "*" } }, "node_modules/@truffle/contract/node_modules/web3-eth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz", - "integrity": "sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", "dev": true, "dependencies": { - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-accounts": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-eth-ens": "1.8.2", - "web3-eth-iban": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-accounts": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-eth-ens": "1.10.0", + "web3-eth-iban": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-eth-accounts": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz", - "integrity": "sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", "dev": true, "dependencies": { "@ethereumjs/common": "2.5.0", @@ -2407,10 +2532,10 @@ "ethereumjs-util": "^7.1.5", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" @@ -2423,119 +2548,123 @@ "dev": true }, "node_modules/@truffle/contract/node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@truffle/contract/node_modules/web3-eth-contract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz", - "integrity": "sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", "dev": true, "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-eth-ens": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz", - "integrity": "sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", "dev": true, "dependencies": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-eth-personal": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz", - "integrity": "sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", "dev": true, "dependencies": { "@types/node": "^12.12.6", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-net": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz", - "integrity": "sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", "dev": true, "dependencies": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-providers-http": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz", - "integrity": "sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", "dev": true, "dependencies": { "abortcontroller-polyfill": "^1.7.3", "cross-fetch": "^3.1.4", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-providers-ipc": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz", - "integrity": "sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", "dev": true, "dependencies": { "oboe": "2.1.5", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-providers-ws": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz", - "integrity": "sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2", + "web3-core-helpers": "1.10.0", "websocket": "^1.0.32" }, "engines": { @@ -2543,25 +2672,25 @@ } }, "node_modules/@truffle/contract/node_modules/web3-shh": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz", - "integrity": "sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-net": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-net": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/contract/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "dependencies": { "bn.js": "^5.2.1", @@ -2577,34 +2706,63 @@ } }, "node_modules/@truffle/debug-utils": { - "version": "6.0.48", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.48.tgz", - "integrity": "sha512-HdK/7eH5EFrcTPeZVEgKaKkkzuZ4xsrH8yw+EoLEsScLsOEuQeKynY61NctjuU93voATWrYmV99Sfb/MRq2i2g==", + "version": "6.0.57", + "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.57.tgz", + "integrity": "sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==", "dev": true, "dependencies": { - "@truffle/codec": "^0.14.17", + "@truffle/codec": "^0.17.3", "@trufflesuite/chromafi": "^3.0.0", "bn.js": "^5.1.3", "chalk": "^2.4.2", "debug": "^4.3.1", "highlightjs-solidity": "^2.0.6" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" } }, "node_modules/@truffle/error": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.0.tgz", - "integrity": "sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ==", - "dev": true + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", + "dev": true, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } }, "node_modules/@truffle/interface-adapter": { - "version": "0.5.31", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.31.tgz", - "integrity": "sha512-f5mOqbptQUUgHhBrBvWie4EUAUqHLN/wCBjFoP2N/QNcyvwGfdC3TSck9kjwIIFIgYgQQyAxQDGBQcjHryvxzg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz", + "integrity": "sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==", "dev": true, "dependencies": { "bn.js": "^5.1.3", "ethers": "^4.0.32", - "web3": "1.8.2" + "web3": "1.10.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@truffle/interface-adapter/node_modules/@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "node_modules/@truffle/interface-adapter/node_modules/@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dev": true, + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" } }, "node_modules/@truffle/interface-adapter/node_modules/@types/node": { @@ -2620,21 +2778,21 @@ "dev": true }, "node_modules/@truffle/interface-adapter/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true, "engines": { "node": "*" } }, "node_modules/@truffle/interface-adapter/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==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "node_modules/@truffle/interface-adapter/node_modules/eth-lib": { @@ -2693,26 +2851,6 @@ "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", "dev": true }, - "node_modules/@truffle/interface-adapter/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==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/@truffle/interface-adapter/node_modules/scrypt-js": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", @@ -2733,28 +2871,28 @@ "dev": true }, "node_modules/@truffle/interface-adapter/node_modules/web3": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz", - "integrity": "sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-bzz": "1.8.2", - "web3-core": "1.8.2", - "web3-eth": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-shh": "1.8.2", - "web3-utils": "1.8.2" + "web3-bzz": "1.10.0", + "web3-core": "1.10.0", + "web3-eth": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-shh": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-bzz": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz", - "integrity": "sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2767,95 +2905,95 @@ } }, "node_modules/@truffle/interface-adapter/node_modules/web3-core": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz", - "integrity": "sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", "dev": true, "dependencies": { - "@types/bn.js": "^5.1.0", + "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-requestmanager": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-requestmanager": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-core-method": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz", - "integrity": "sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", "dev": true, "dependencies": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-core-requestmanager": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz", - "integrity": "sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", "dev": true, "dependencies": { "util": "^0.12.5", - "web3-core-helpers": "1.8.2", - "web3-providers-http": "1.8.2", - "web3-providers-ipc": "1.8.2", - "web3-providers-ws": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-providers-http": "1.10.0", + "web3-providers-ipc": "1.10.0", + "web3-providers-ws": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-core-subscriptions": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz", - "integrity": "sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz", - "integrity": "sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", "dev": true, "dependencies": { - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-accounts": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-eth-ens": "1.8.2", - "web3-eth-iban": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-accounts": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-eth-ens": "1.10.0", + "web3-eth-iban": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz", - "integrity": "sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", "dev": true, "dependencies": { "@ethereumjs/common": "2.5.0", @@ -2864,10 +3002,10 @@ "ethereumjs-util": "^7.1.5", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" @@ -2880,119 +3018,123 @@ "dev": true }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-contract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz", - "integrity": "sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", "dev": true, "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-ens": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz", - "integrity": "sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", "dev": true, "dependencies": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-eth-personal": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz", - "integrity": "sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", "dev": true, "dependencies": { "@types/node": "^12.12.6", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-net": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz", - "integrity": "sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", "dev": true, "dependencies": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-providers-http": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz", - "integrity": "sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", "dev": true, "dependencies": { "abortcontroller-polyfill": "^1.7.3", "cross-fetch": "^3.1.4", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-providers-ipc": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz", - "integrity": "sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", "dev": true, "dependencies": { "oboe": "2.1.5", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-providers-ws": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz", - "integrity": "sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", "dev": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2", + "web3-core-helpers": "1.10.0", "websocket": "^1.0.32" }, "engines": { @@ -3000,25 +3142,25 @@ } }, "node_modules/@truffle/interface-adapter/node_modules/web3-shh": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz", - "integrity": "sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", "dev": true, "hasInstallScript": true, "dependencies": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-net": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-net": "1.10.0" }, "engines": { "node": ">=8.0.0" } }, "node_modules/@truffle/interface-adapter/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "dependencies": { "bn.js": "^5.2.1", @@ -4019,25 +4161,46 @@ } }, "node_modules/@zilliqa-js/core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@zilliqa-js/core/-/core-3.3.4.tgz", - "integrity": "sha512-5bfXrhWUYY7wtBvGA+sLGVZvTpZOavr8KbZgdODpxXnDPLNjUe6Qoy36SkSIIU4TrLk9DMmY435RWjFEANkt0Q==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@zilliqa-js/core/-/core-3.5.0.tgz", + "integrity": "sha512-sc3RaF7W4bwnLrOffuVhzmHGmXcfLGnCHxVkhJRNNkGzgjwjV9EhumtbNLinDTosvmaZY68mvSLlPkyyYEP1Yg==", "dependencies": { - "cross-fetch": "2.2.5", + "buffer": "^6.0.3", + "cross-fetch": "2.2.6", "mitt": "^1.1.3", "tslib": "2.3.1" - }, - "engines": { - "node": ">=12.0.0 <17" } }, - "node_modules/@zilliqa-js/crypto": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@zilliqa-js/crypto/-/crypto-3.3.4.tgz", - "integrity": "sha512-SOKDuEcBJ1zmnFsG1geiKwGODazy1RoPnqvyBHpakEGxdsZaP6sOomdd91WgqijOw2DOYd93BDXI+qnDlyOQGg==", - "dependencies": { - "@types/elliptic": "^6.4.13", - "@types/uuid": "8.3.1", + "node_modules/@zilliqa-js/core/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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@zilliqa-js/crypto": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@zilliqa-js/crypto/-/crypto-3.3.4.tgz", + "integrity": "sha512-SOKDuEcBJ1zmnFsG1geiKwGODazy1RoPnqvyBHpakEGxdsZaP6sOomdd91WgqijOw2DOYd93BDXI+qnDlyOQGg==", + "dependencies": { + "@types/elliptic": "^6.4.13", + "@types/uuid": "8.3.1", "@zilliqa-js/util": "^3.3.4", "aes-js": "^3.1.1", "bsert": "^0.0.4", @@ -4392,19 +4555,6 @@ "node": ">=6" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -4429,25 +4579,6 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -4563,13 +4694,14 @@ "dev": true }, "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/balanced-match": { @@ -4589,7 +4721,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -4873,20 +5004,23 @@ } }, "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==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/bs58": { @@ -4968,18 +5102,6 @@ "node": ">=6.14.2" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -5853,12 +5975,12 @@ "dev": true }, "node_modules/cross-fetch": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz", - "integrity": "sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", "dependencies": { - "node-fetch": "2.6.1", - "whatwg-fetch": "2.0.4" + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" } }, "node_modules/cross-spawn": { @@ -6086,22 +6208,6 @@ "node": ">=10" } }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6261,14 +6367,14 @@ } }, "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" + "domhandler": "^5.0.3" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" @@ -6426,109 +6532,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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 - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es5-ext": { "version": "0.10.62", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", @@ -7107,24 +7110,22 @@ "dev": true }, "node_modules/eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dev": true, "dependencies": { - "@ethersproject/abi": "^5.0.0-beta.146", "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", "cli-table3": "^0.5.0", "colors": "1.4.0", "ethereum-cryptography": "^1.0.3", - "ethers": "^4.0.40", + "ethers": "^5.7.2", "fs-readdir-recursive": "^1.1.0", "lodash": "^4.17.14", "markdown-table": "^1.1.3", - "mocha": "^7.1.1", + "mocha": "^10.2.0", "req-cwd": "^2.0.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", "sha1": "^1.1.1", "sync-request": "^6.0.0" }, @@ -7137,2040 +7138,2058 @@ } } }, - "node_modules/eth-gas-reporter/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "node_modules/eth-gas-reporter/node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/eth-gas-reporter/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" } }, - "node_modules/eth-gas-reporter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" } }, - "node_modules/eth-gas-reporter/node_modules/bn.js": { + "node_modules/eth-lib/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==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/eth-lib/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, - "node_modules/eth-gas-reporter/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/eth-lib/node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } }, - "node_modules/eth-gas-reporter/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "dev": true, "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "js-sha3": "^0.8.0" } }, - "node_modules/eth-gas-reporter/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" } }, - "node_modules/eth-gas-reporter/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dev": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "@types/node": "*" } }, - "node_modules/eth-gas-reporter/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/ethereumjs-abi/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==", "dev": true }, - "node_modules/eth-gas-reporter/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==", + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dev": true, "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, - "node_modules/eth-gas-reporter/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/ethjs-abi": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz", + "integrity": "sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "bn.js": "4.11.6", + "js-sha3": "0.5.5", + "number-to-bn": "1.7.0" }, "engines": { - "node": ">=6" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/eth-gas-reporter/node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } + "node_modules/ethjs-abi/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true }, - "node_modules/eth-gas-reporter/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "node_modules/ethjs-abi/node_modules/js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA==", + "dev": true }, - "node_modules/eth-gas-reporter/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" }, "engines": { - "node": "*" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/eth-gas-reporter/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/eth-gas-reporter/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "d": "1", + "es5-ext": "~0.10.14" } }, - "node_modules/eth-gas-reporter/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/eth-gas-reporter/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "node_modules/eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, + "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==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/eth-gas-reporter/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==", + "node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=6" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/eth-gas-reporter/node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { - "chalk": "^2.4.2" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.10.0" } }, - "node_modules/eth-gas-reporter/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": "*" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/eth-gas-reporter/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "ms": "2.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "side-channel": "^1.0.4" }, "engines": { - "node": ">= 8.10.0" + "node": ">=0.6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eth-gas-reporter/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/eth-gas-reporter/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, - "engines": { - "node": ">=4" + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" } }, - "node_modules/eth-gas-reporter/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-check": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", + "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", "dev": true, "dependencies": { - "picomatch": "^2.0.4" + "pure-rand": "^5.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" } }, - "node_modules/eth-gas-reporter/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, - "node_modules/eth-gas-reporter/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=6" + "node": ">=8.6.0" } }, - "node_modules/eth-gas-reporter/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "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, "dependencies": { - "ansi-regex": "^4.1.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/eth-gas-reporter/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/eth-gas-reporter/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=6" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "node_modules/eth-gas-reporter/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "to-regex-range": "^5.0.1" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=8" } }, - "node_modules/eth-gas-reporter/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/eth-gas-reporter/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "ms": "2.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" + "bin": { + "flat": "cli.js" } }, - "node_modules/eth-lib/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==", - "dev": true - }, - "node_modules/eth-lib/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/eth-lib/node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true, - "dependencies": { - "js-sha3": "^0.8.0" + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" + "is-callable": "^1.1.3" } }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, - "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" + "engines": { + "node": "*" } }, - "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "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==", "dev": true, "dependencies": { - "@types/node": "*" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/ethereumjs-abi/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==", + "node_modules/form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", "dev": true }, - "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" + "engines": { + "node": ">= 0.6" } }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.6" } }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" } }, - "node_modules/ethjs-abi": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz", - "integrity": "sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA==", + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "dev": true, "dependencies": { - "bn.js": "4.11.6", - "js-sha3": "0.5.5", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "minipass": "^2.6.0" } }, - "node_modules/ethjs-abi/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "dev": true - }, - "node_modules/ethjs-abi/node_modules/js-sha3": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", - "integrity": "sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA==", + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "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==" + }, + "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, - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "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==", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", - "dev": true - }, - "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==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "node": "*" } }, - "node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, "engines": { - "node": ">= 0.10.0" + "node": ">=4" } }, - "node_modules/express/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==", + "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, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "assert-plus": "^1.0.0" } }, - "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==", + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" + }, + "bin": { + "testrpc-sc": "index.js" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { - "side-channel": "^1.0.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=0.6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 0.8" + "node": ">=10.13.0" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/glob/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==", "dependencies": { - "type": "^2.7.2" + "balanced-match": "^1.0.0" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-check": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", - "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", - "dev": true, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "pure-rand": "^5.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "node": ">=10" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "node_modules/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, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "global-prefix": "^3.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=6" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_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, "dependencies": { - "is-glob": "^4.0.1" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "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, "dependencies": { - "reusify": "^1.0.4" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "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==", + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "type-fest": "^0.20.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "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==", + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "ms": "2.0.0" + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "node_modules/got": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", "dev": true, "dependencies": { - "array-back": "^3.0.1" + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=8" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/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, - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6" } }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "node_modules/hardhat": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.14.0.tgz", + "integrity": "sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-blockchain": "7.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-evm": "2.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-statemanager": "2.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "@nomicfoundation/ethereumjs-vm": "7.0.1", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, "engines": { - "node": ">=4.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" }, "peerDependenciesMeta": { - "debug": { + "ts-node": { + "optional": true + }, + "typescript": { "optional": true } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/hardhat-gas-reporter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", + "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", "dev": true, "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" + }, + "peerDependencies": { + "hardhat": "^2.0.2" } }, - "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==", + "node_modules/hardhat-scilla-plugin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hardhat-scilla-plugin/-/hardhat-scilla-plugin-3.0.1.tgz", + "integrity": "sha512-T4/SE88iTpsa5/uxKLtsMjJ/SKT6kxWfA2FQ1g7sMQTOU272V/lsl5lKsp5nq6FW5Icdc+rkC0oF6IEl46qmkg==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "@types/chai-subset": "^1.3.3", + "chai-subset": "^1.6.0", + "glob": "^8.0.3", + "s-expression": "^3.1.1" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "@zilliqa-js/zilliqa": "^3.3.4", + "hardhat": "^2.0.0" } }, - "node_modules/form-data-encoder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", - "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", + "node_modules/hardhat/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" } }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/hardhat/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/hardhat/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "node_modules/hardhat/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { - "minipass": "^2.6.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/hardhat/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "p-try": "^1.0.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=4" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/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==", + "node_modules/hardhat/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "p-limit": "^1.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "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==", + "node_modules/hardhat/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "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==", + "node_modules/hardhat/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, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=4" } }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "node_modules/hardhat/node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "node_modules/hardhat/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "glob": "^7.1.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "node_modules/hardhat/node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, "engines": { - "node": ">=4" + "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==", + "node_modules/hardhat/node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, - "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==", + "node_modules/hardhat/node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "function-bind": "^1.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.4.0" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" + "engines": { + "node": ">= 0.4" }, - "bin": { - "testrpc-sc": "index.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "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==", "dependencies": { - "is-glob": "^4.0.3" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=4" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { - "balanced-match": "^1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/hdkey": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-1.1.2.tgz", + "integrity": "sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "bs58check": "^2.1.2", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } + "node_modules/hdkey/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==" }, - "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, + "node_modules/hdkey/node_modules/secp256k1": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", + "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", + "hasInstallScript": true, "dependencies": { - "global-prefix": "^3.0.0" + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.5.2", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" }, "engines": { - "node": ">=6" + "node": ">=4.0.0" } }, - "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==", + "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, + "bin": { + "he": "bin/he" + } + }, + "node_modules/header-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", + "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", "dev": true, "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, + "no-case": "^2.2.0", + "upper-case": "^1.1.3" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, "engines": { - "node": ">=6" + "node": "*" } }, - "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==", + "node_modules/highlightjs-solidity": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz", + "integrity": "sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg==", + "dev": true + }, + "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==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "node_modules/http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "dev": true + }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "dev": true, "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@types/node": "^10.0.3" } }, - "node_modules/globby/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10.19.0" } }, - "node_modules/got": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", - "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "@sindresorhus/is": "^4.6.0", - "@szmarczak/http-timer": "^5.0.1", - "@types/cacheable-request": "^6.0.2", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^6.0.4", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "form-data-encoder": "1.7.1", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^2.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">= 6" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, "engines": { - "node": ">=4.x" + "node": ">=14.18.0" } }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, "bin": { - "handlebars": "bin/handlebars" + "husky": "lib/bin.js" }, "engines": { - "node": ">=0.4.7" + "node": ">=14" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "node_modules/idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", "dev": true, + "dependencies": { + "punycode": "2.1.0" + }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">= 4" } }, - "node_modules/hardhat": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.14.0.tgz", - "integrity": "sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ==", + "node_modules/immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@nomicfoundation/ethereumjs-vm": "7.0.1", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "abort-controller": "^3.0.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "chalk": "^2.4.2", - "chokidar": "^3.4.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^2.1.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "glob": "7.2.0", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "qs": "^6.7.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.7.3", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" + "node": ">=6" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hardhat-gas-reporter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", - "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" - }, - "peerDependencies": { - "hardhat": "^2.0.2" + "engines": { + "node": ">=0.8.19" } }, - "node_modules/hardhat-scilla-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hardhat-scilla-plugin/-/hardhat-scilla-plugin-3.0.1.tgz", - "integrity": "sha512-T4/SE88iTpsa5/uxKLtsMjJ/SKT6kxWfA2FQ1g7sMQTOU272V/lsl5lKsp5nq6FW5Icdc+rkC0oF6IEl46qmkg==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { - "@types/chai-subset": "^1.3.3", - "chai-subset": "^1.6.0", - "glob": "^8.0.3", - "s-expression": "^3.1.1" - }, - "peerDependencies": { - "@zilliqa-js/zilliqa": "^3.3.4", - "hardhat": "^2.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/hardhat/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/hardhat/node_modules/ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" + "engines": { + "node": ">= 0.10" } }, - "node_modules/hardhat/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/hardhat/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "fp-ts": "^1.0.0" } }, - "node_modules/hardhat/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "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, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">= 0.10" } }, - "node_modules/hardhat/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/hardhat/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "engines": { "node": ">=4" } }, - "node_modules/hardhat/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/hardhat/node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hardhat/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "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==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "has-tostringtag": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat/node_modules/solc": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", - "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "command-exists": "^1.2.8", - "commander": "3.0.2", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solcjs" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/hardhat/node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/hardhat/node_modules/solc/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "lower-case": "^1.1.0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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, - "dependencies": { - "function-bind": "^1.1.1" - }, "engines": { - "node": ">= 0.4.0" + "node": ">=0.12.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -9178,309 +9197,250 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { + "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/is-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", + "dev": true, "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" + "upper-case": "^1.1.0" } }, - "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==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true }, - "node_modules/hdkey": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-1.1.2.tgz", - "integrity": "sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ==", - "dependencies": { - "bs58check": "^2.1.2", - "safe-buffer": "^5.1.1", - "secp256k1": "^3.0.1" - } + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, - "node_modules/hdkey/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==" + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/hdkey/node_modules/secp256k1": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", - "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.5.2", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4.0.0" - } + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", "dev": true, - "bin": { - "he": "bin/he" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true, - "engines": { - "node": "*" - } + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, - "node_modules/highlightjs-solidity": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz", - "integrity": "sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "node_modules/hmac-drbg": { + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/http-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "dev": true, - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, "engines": { - "node": ">=6.0.0" + "node": "*" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" }, "engines": { - "node": ">= 0.8" + "node": ">=0.6.0" } }, - "node_modules/http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", - "dev": true - }, - "node_modules/http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "node_modules/keccak": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", + "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", "dev": true, + "hasInstallScript": true, "dependencies": { - "@types/node": "^10.0.3" + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "node_modules/http-response-object/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dev": true, "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "json-buffer": "3.0.1" } }, - "node_modules/http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "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, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, "engines": { - "node": ">=10.19.0" + "node": ">=0.10.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "optionalDependencies": { + "graceful-fs": "^4.1.9" } }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, "engines": { - "node": ">=14.18.0" + "node": ">=0.10.0" } }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", "dev": true, - "bin": { - "husky": "lib/bin.js" + "dependencies": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "type": "opencollective", + "url": "https://opencollective.com/level" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "dev": true, "dependencies": { - "punycode": "2.1.0" + "buffer": "^6.0.3", + "module-error": "^1.0.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=12" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/level-transcoder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -9495,1040 +9455,953 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, "engines": { - "node": ">= 4" + "node": ">= 0.8.0" } }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/lint-staged": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.1.tgz", + "integrity": "sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "chalk": "5.2.0", + "cli-truncate": "^3.1.0", + "commander": "^10.0.0", + "debug": "^4.3.4", + "execa": "^7.0.0", + "lilconfig": "2.1.0", + "listr2": "^5.0.7", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.3", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.2.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=6" + "node": "^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "node_modules/listr2/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "dependencies": { - "fp-ts": "^1.0.0" - } + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "node_modules/listr2/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=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==", + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/load-json-file/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, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "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==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "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==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=8" } }, - "node_modules/is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "lower-case": "^1.1.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/is-stream": { + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/log-update/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, "dependencies": { - "upper-case": "^1.1.0" + "get-func-name": "^2.0.0" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", "dev": true }, - "node_modules/is-weakref": { + "node_modules/lower-case-first": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "lower-case": "^1.1.2" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", "dev": true }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "yallist": "^3.0.2" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } }, - "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==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=8.9.0" } }, - "node_modules/jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "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==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "engines": { - "node": "*" + "node": ">= 0.6" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" } }, - "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", "dev": true, - "hasInstallScript": true, "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=12" } }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, - "dependencies": { - "json-buffer": "3.0.1" + "engines": { + "node": ">= 0.10.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==", + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "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, - "optionalDependencies": { - "graceful-fs": "^4.1.9" + "engines": { + "node": ">= 0.6" } }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "invert-kv": "^1.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/level": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", - "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "dependencies": { - "browser-level": "^1.0.1", - "classic-level": "^1.2.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, - "engines": { - "node": ">=12" + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "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==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" + "engines": { + "node": ">=4" } }, - "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/level-transcoder/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "dom-walk": "^0.1.0" } }, - "node_modules/lint-staged": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.1.tgz", - "integrity": "sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==", + "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==" + }, + "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==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "chalk": "5.2.0", - "cli-truncate": "^3.1.0", - "commander": "^10.0.0", - "debug": "^4.3.4", - "execa": "^7.0.0", - "lilconfig": "2.1.0", - "listr2": "^5.0.7", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.3", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.2.1" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "node": "*" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "dev": true, "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, - "node_modules/listr2/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==", + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "minipass": "^2.9.0" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "minimist": "^1.2.6" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", "dev": true, "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "mkdirp": "*" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "obliterator": "^2.0.0" } }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" + "node": ">= 14.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/mocha/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "node_modules/mocha/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, "engines": { "node": ">=10" }, @@ -10536,56 +10409,55 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=7.0.0" + "node": "*" } }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { + "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -10594,28 +10466,22 @@ "node": ">=8" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" @@ -10624,81 +10490,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-regex": { + "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/log-update/node_modules/color-convert": { + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/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==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/string-width": { + "node_modules/mocha/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==", @@ -10712,7 +10561,7 @@ "node": ">=8" } }, - "node_modules/log-update/node_modules/strip-ansi": { + "node_modules/mocha/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==", @@ -10724,261 +10573,299 @@ "node": ">=8" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "node_modules/mock-fs": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", "dev": true }, - "node_modules/lower-case-first": { + "node_modules/module-error": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", - "dev": true, - "dependencies": { - "lower-case": "^1.1.2" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "deprecated": "This module has been superseded by the multiformats module", "dev": true, "dependencies": { - "yallist": "^3.0.2" + "base-x": "^3.0.8", + "buffer": "^5.5.0" } }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "node_modules/multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, "dependencies": { - "es5-ext": "~0.10.2" + "varint": "^5.0.0" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true - }, - "node_modules/mcl-wasm": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", - "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "node_modules/multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", "dev": true, - "engines": { - "node": ">=8.9.0" + "dependencies": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" } }, - "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==", + "node_modules/multihashes/node_modules/multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "base-x": "^3.0.8", + "buffer": "^5.5.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==", + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + }, + "node_modules/nano-base32": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz", + "integrity": "sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw==", + "dev": true + }, + "node_modules/nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">= 0.6" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true }, - "node_modules/memory-level": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", - "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", - "dev": true, - "dependencies": { - "abstract-level": "^1.0.0", - "functional-red-black-tree": "^1.0.1", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.6" } }, - "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==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, - "engines": { - "node": ">= 8" + "dependencies": { + "lower-case": "^1.1.1" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "lodash": "^4.17.21" } }, - "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, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=8.6" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "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==", + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "abbrev": "1" }, "bin": { - "miller-rabin": "bin/miller-rabin" + "nopt": "bin/nopt.js" } }, - "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==", - "dev": true + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { - "mime": "cli.js" - }, + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/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, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "dependencies": { - "mime-db": "1.52.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-fn": { + "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { "node": ">=12" @@ -10987,1382 +10874,1244 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dev": true, "dependencies": { - "dom-walk": "^0.1.0" + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "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==" + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true }, - "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==" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "http-https": "^1.0.0" } }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { - "minipass": "^2.9.0" + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" - }, - "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, + "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==", "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "wrappy": "1" } }, - "node_modules/mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", - "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "mkdirp": "*" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "dependencies": { - "obliterator": "^2.0.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "node_modules/ordinal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", + "dev": true + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "lcid": "^1.0.0" }, "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/mocha/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==", + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.20" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/mocha/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "p-try": "^2.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "no-case": "^2.2.0" } }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "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==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "dev": true + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "error-ex": "^1.2.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/mocha/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/mocha/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/pascal-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", + "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" } }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/path-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", + "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, + "no-case": "^2.2.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "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, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "deprecated": "This module has been superseded by the multiformats module", + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" + "engines": { + "node": "*" } }, - "node_modules/multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "deprecated": "This module has been superseded by the multiformats module", - "dev": true, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dependencies": { - "varint": "^5.0.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" } }, - "node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, - "node_modules/multihashes/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" - }, - "node_modules/nano-base32": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz", - "integrity": "sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw==", - "dev": true - }, - "node_modules/nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, "bin": { - "nanoid": "bin/nanoid.cjs" + "pidtree": "bin/pidtree.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=0.10" } }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, - "dependencies": { - "lower-case": "^1.1.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "dependencies": { - "lodash": "^4.17.21" + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "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, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "node": ">=4" } }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=12.19" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "dependencies": { - "abbrev": "1" + "fast-diff": "^1.1.2" }, - "bin": { - "nopt": "bin/nopt.js" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "engines": { + "node": ">= 0.6.0" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "asap": "~2.0.6" } }, - "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, - "engines": { - "node": ">=10" + "node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" } }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "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==", "dev": true }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "node_modules/pure-rand": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz", + "integrity": "sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/qs": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", + "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { - "node": ">= 0.4" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "dev": true, "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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, - "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, "engines": { - "node": ">= 0.8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "node_modules/rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", "dev": true }, - "node_modules/oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", - "dev": true, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": { - "http-https": "^1.0.0" + "safe-buffer": "^5.1.0" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "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==", - "dependencies": { - "wrappy": "1" + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { - "mimic-fn": "^4.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, "dependencies": { - "lcid": "^1.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, "engines": { - "node": ">=12.20" + "node": ">=0.10.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/read-pkg/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/read-pkg/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, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { - "aggregate-error": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">=6" + "node": ">=8.10.0" } }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { - "no-case": "^2.2.0" + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/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, "dependencies": { - "callsites": "^3.0.0" + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6" + "node": ">=6.0.0" } }, - "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==", + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "engines": { + "node": ">=6" } }, - "node_modules/parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", - "dev": true - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dev": true, "dependencies": { - "error-ex": "^1.2.0" + "req-from": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "node": ">=4" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" + "resolve-from": "^3.0.0" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/req-from/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "dependencies": { - "no-case": "^2.2.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.6" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "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==", "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==", + "node_modules/require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "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==", + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, - "node_modules/path-type": { + "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "lowercase-keys": "^2.0.0" }, - "engines": { - "node": ">=0.12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "pinkie": "^2.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "engines": { - "node": ">= 0.8.0" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true }, - "node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "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, - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "glob": "^7.1.3" }, - "engines": { - "node": ">=10.13.0" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "fast-diff": "^1.1.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/ripemd160-min": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", + "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", "dev": true, "engines": { - "node": ">= 0.6.0" + "node": ">=8" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" + "bn.js": "^5.2.0" }, "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "rlp": "bin/rlp" } }, - "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==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", - "dev": true, - "engines": { - "node": ">=6" + "queue-microtask": "^1.2.2" } }, - "node_modules/pure-rand": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.5.tgz", - "integrity": "sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==", + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", "dev": true, "funding": [ { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" + "type": "github", + "url": "https://github.com/sponsors/feross" }, { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - ] - }, - "node_modules/qs": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", - "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", - "dev": true, + ], "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "queue-microtask": "^1.2.2" } }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "tslib": "^2.1.0" } }, - "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, + "node_modules/s-expression": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/s-expression/-/s-expression-3.1.1.tgz", + "integrity": "sha512-VMsW7sIvixXfIDmDll7XCePMYYY52UlUtA7OlFQUovqj3XtQ2UkZkjjAvnSFW8o+SbswzUEeCBMmpAx9LS3qrg==" + }, + "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", @@ -12378,493 +12127,591 @@ } ] }, - "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==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "istanbul": "lib/cli.js" } }, - "node_modules/rambda": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", - "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/sc-istanbul/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { - "safe-buffer": "^5.1.0" + "sprintf-js": "~1.0.2" } }, - "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==", + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", "dev": true, "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/sc-istanbul/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "node_modules/sc-istanbul/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">= 0.8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "node_modules/sc-istanbul/node_modules/js-yaml/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, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + }, + "node_modules/sc-istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "has-flag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "node_modules/sc-istanbul/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "which": "bin/which" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/scryptsy": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", "dev": true, + "hasInstallScript": true, "dependencies": { - "pinkie-promise": "^2.0.0" + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "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, "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/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, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/sentence-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", + "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "randombytes": "^2.1.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { - "resolve": "^1.1.6" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8.0" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "node_modules/servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", "dev": true, "dependencies": { - "minimatch": "^3.0.5" + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" }, "engines": { - "node": ">=6.0.0" + "node": ">=6" } }, - "node_modules/reduce-flatten": { + "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true, - "engines": { - "node": ">=6" - } + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "sha.js": "bin.js" } }, - "node_modules/req-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "node_modules/sha1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, "dependencies": { - "req-from": "^2.0.0" + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/req-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", - "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", + "node_modules/sha3": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", + "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", "dev": true, "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" + "buffer": "6.0.3" } }, - "node_modules/req-from/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "node_modules/sha3/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, - "engines": { - "node": ">=4" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { - "lodash": "^4.17.19" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "shjs": "bin/shjs" }, - "peerDependencies": { - "request": "^2.34" + "engines": { + "node": ">=4" } }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.12.0" + "node": "*" }, - "peerDependencies": { - "request": "^2.34" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "engines": { - "node": ">= 0.12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true, - "engines": { - "node": ">=0.6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/simple-get": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", "dev": true, - "bin": { - "uuid": "bin/uuid" + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/simple-get/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "dependencies": { - "path-parse": "^1.0.6" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/responselike/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/snake-case": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", + "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "no-case": "^2.2.0" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/sodium-native": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", + "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + } + }, + "node_modules/sodium-randbytes": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/sodium-randbytes/-/sodium-randbytes-0.14.0.tgz", + "integrity": "sha512-X5HXTHiorRs8Jte7+SEwxnX0ZPmDdU3TxYIIOoTklEgdiFELtQ1CwwyBBePPZlN0T+XDNBlNaikPRarfT0cK/A==", + "dependencies": { + "@types/sodium-native": "2.3.5", + "sodium-native": "3.3.0" + } + }, + "node_modules/solc": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", + "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" }, + "bin": { + "solcjs": "solcjs" + } + }, + "node_modules/solc/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/solc/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/solc/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/solc/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { - "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, - "node_modules/rimraf/node_modules/glob": { + "node_modules/solc/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/solc/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", @@ -12884,5209 +12731,4487 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/solc/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, - "engines": { - "node": ">=8" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "node_modules/solc/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "node_modules/solc/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "bn.js": "^5.2.0" + "glob": "^7.1.3" }, "bin": { - "rlp": "bin/rlp" + "rimraf": "bin.js" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solc/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "node_modules/solc/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "queue-microtask": "^1.2.2" + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "node_modules/solc/node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "node_modules/solc/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, "dependencies": { - "tslib": "^2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/s-expression": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/s-expression/-/s-expression-3.1.1.tgz", - "integrity": "sha512-VMsW7sIvixXfIDmDll7XCePMYYY52UlUtA7OlFQUovqj3XtQ2UkZkjjAvnSFW8o+SbswzUEeCBMmpAx9LS3qrg==" + "node_modules/solc/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true }, - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/solc/node_modules/yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sc-istanbul": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", - "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", + "node_modules/solc/node_modules/yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", "dev": true, "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" } }, - "node_modules/sc-istanbul/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/solidity-coverage": { + "version": "0.7.22", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.22.tgz", + "integrity": "sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@solidity-parser/parser": "^0.14.0", + "@truffle/provider": "^0.2.24", + "chalk": "^2.4.2", + "death": "^1.1.0", + "detect-port": "^1.3.0", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.15", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.0" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" } }, - "node_modules/sc-istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": "*" + "node": ">=6 <7 || >=8" } }, - "node_modules/sc-istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/solidity-coverage/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/sc-istanbul/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/sc-istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "node_modules/solidity-coverage/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/sc-istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/sort-any": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-any/-/sort-any-2.0.0.tgz", + "integrity": "sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "dev": true, + "optional": true, "dependencies": { - "has-flag": "^1.0.0" + "amdefine": ">=0.0.4" }, "engines": { "node": ">=0.8.0" } }, - "node_modules/sc-istanbul/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/scryptsy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", - "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" - }, - "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "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, - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, "engines": { - "node": ">=10.0.0" + "node": ">=0.10.0" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.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==", + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "dependencies": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "type-fest": "^0.7.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" } }, - "node_modules/servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", "dev": true, - "dependencies": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true, - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "dev": true, + "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==", "dependencies": { - "buffer": "6.0.3" + "safe-buffer": "~5.2.0" } }, - "node_modules/sha3/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "engines": { + "node": ">=0.6.19" } }, - "node_modules/shebang-command": { + "node_modules/string-format": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "ansi-regex": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-utf8": "^0.2.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", - "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "dev": true, "dependencies": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/simple-get/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=4" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" } }, - "node_modules/snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", + "node_modules/swarm-js": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", + "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", "dev": true, "dependencies": { - "no-case": "^2.2.0" + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^11.8.5", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" } }, - "node_modules/sodium-native": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", - "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", - "hasInstallScript": true, + "node_modules/swarm-js/node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, "dependencies": { - "node-gyp-build": "^4.3.0" + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/sodium-randbytes": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/sodium-randbytes/-/sodium-randbytes-0.14.0.tgz", - "integrity": "sha512-X5HXTHiorRs8Jte7+SEwxnX0ZPmDdU3TxYIIOoTklEgdiFELtQ1CwwyBBePPZlN0T+XDNBlNaikPRarfT0cK/A==", - "dependencies": { - "@types/sodium-native": "2.3.5", - "sodium-native": "3.3.0" + "node_modules/swarm-js/node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" } }, - "node_modules/solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", + "node_modules/swarm-js/node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "dependencies": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - }, - "bin": { - "solcjs": "solcjs" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "node_modules/solc/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/swarm-js/node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/solc/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "node_modules/swarm-js/node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.19.0" } }, - "node_modules/solc/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "node_modules/swarm-js/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/solc/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/swarm-js/node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/solc/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "dependencies": { + "get-port": "^3.1.0" + } }, - "node_modules/solc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10.0.0" } }, - "node_modules/solc/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=8" } }, - "node_modules/solc/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/solc/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/solc/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/table/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, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=8" } }, - "node_modules/solc/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/solc/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/table/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/solc/node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "node_modules/table/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/solc/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/solc/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/solc/node_modules/yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", + "node_modules/table/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, - "dependencies": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/solc/node_modules/yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/solidity-coverage": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.7.22.tgz", - "integrity": "sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw==", + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "@solidity-parser/parser": "^0.14.0", - "@truffle/provider": "^0.2.24", - "chalk": "^2.4.2", - "death": "^1.1.0", - "detect-port": "^1.3.0", - "fs-extra": "^8.1.0", - "ghost-testrpc": "^0.0.2", - "global-modules": "^2.0.0", - "globby": "^10.0.1", - "jsonschema": "^1.2.4", - "lodash": "^4.17.15", - "node-emoji": "^1.10.0", - "pify": "^4.0.1", - "recursive-readdir": "^2.2.2", - "sc-istanbul": "^0.4.5", - "semver": "^7.3.4", - "shelljs": "^0.8.3", - "web3-utils": "^1.3.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "bin": { - "solidity-coverage": "plugins/bin.js" + "engines": { + "node": ">=8" } }, - "node_modules/solidity-coverage/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=8" } }, - "node_modules/solidity-coverage/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==", + "node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "engines": { - "node": ">=10" + "node": ">=4.5" } }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "node_modules/testrpc": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", + "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", + "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on.", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/solidity-coverage/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true }, - "node_modules/sort-any": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-any/-/sort-any-2.0.0.tgz", - "integrity": "sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dev": true, - "optional": true, "dependencies": { - "amdefine": ">=0.0.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.12" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, - "node_modules/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==", + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "es5-ext": "~0.10.46", + "next-tick": "1" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/title-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", + "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "no-case": "^2.2.0", + "upper-case": "^1.0.3" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/sshpk/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true, - "dependencies": { - "type-fest": "^0.7.1" - }, "engines": { "node": ">=6" } }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=8.0" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=0.6" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=6" } }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/ts-command-line-args": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz", + "integrity": "sha512-Ff7Xt04WWCjj/cmPO9eWTJX3qpBZWuPWyQYG1vnxJao+alWWYjwJBc5aYz3h5p5dE08A6AnpkgiCtP/0KXXBYw==", + "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "@morgan-stanley/ts-mocking-bird": "^0.6.2", + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" } }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.6.19" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/ts-command-line-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/ts-command-line-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-command-line-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "node_modules/ts-command-line-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "typescript": ">=3.7.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.3.1" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "dependencies": { - "is-utf8": "^0.2.0" + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "is-hex-prefixed": "1.0.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">= 0.8.0" } }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "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, "engines": { "node": ">=4" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", + "node_modules/typechain": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz", + "integrity": "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==", "dev": true, "dependencies": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" } }, - "node_modules/swarm-js": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", - "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^11.8.5", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/swarm-js/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { "node": ">=10" } }, - "node_modules/swarm-js/node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "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==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=10.6.0" + "node": ">=4.2.0" } }, - "node_modules/swarm-js/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/swarm-js/node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" }, "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=0.8.0" } }, - "node_modules/swarm-js/node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "node_modules/undici": { + "version": "5.28.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", + "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", "dev": true, "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=14.0" } }, - "node_modules/swarm-js/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 4.0.0" } }, - "node_modules/swarm-js/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, + "node_modules/unorm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", "engines": { - "node": ">=8" + "node": ">= 0.4.0" } }, - "node_modules/sync-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", - "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "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, - "dependencies": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.8" } }, - "node_modules/sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "node_modules/upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", "dev": true, "dependencies": { - "get-port": "^3.1.0" + "upper-case": "^1.1.1" } }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" + "punycode": "^2.1.0" } }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "prepend-http": "^2.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=4" } }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, + "node_modules/url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", + "dev": true + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, "engines": { - "node": ">=8" + "node": ">=6.14.2" } }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "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==", "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "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==" + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/table/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==", + "node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { - "color-convert": "^2.0.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/web3": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.4.tgz", + "integrity": "sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "web3-bzz": "1.10.4", + "web3-core": "1.10.4", + "web3-eth": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-shh": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8.0.0" } }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/web3-bzz": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.4.tgz", + "integrity": "sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==", "dev": true, + "hasInstallScript": true, "dependencies": { - "color-name": "~1.1.4" + "@types/node": "^12.12.6", + "got": "12.1.0", + "swarm-js": "^0.1.40" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.0.0" } }, - "node_modules/table/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==", + "node_modules/web3-bzz/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/web3-core": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.4.tgz", + "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", + "dev": true, + "dependencies": { + "@types/bn.js": "^5.1.1", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-requestmanager": "1.10.4", + "web3-utils": "1.10.4" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/web3-core-helpers": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", "dev": true, + "dependencies": { + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" + }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "node_modules/web3-core-helpers/node_modules/web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/table/node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/web3-core-method": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.4.tgz", + "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", "dev": true, + "dependencies": { + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/web3-core-method/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-method/node_modules/web3-core-promievent": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4" }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/web3-core-method/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/web3-core-promievent": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "eventemitter3": "4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "node_modules/web3-core-requestmanager": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.4.tgz", + "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", "dev": true, "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" + "util": "^0.12.5", + "web3-core-helpers": "1.10.4", + "web3-providers-http": "1.10.4", + "web3-providers-ipc": "1.10.4", + "web3-providers-ws": "1.10.4" }, "engines": { - "node": ">=4.5" + "node": ">=8.0.0" } }, - "node_modules/testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on.", - "dev": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "node_modules/web3-core-requestmanager/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "@types/concat-stream": "^1.6.0", - "@types/form-data": "0.0.33", - "@types/node": "^8.0.0", - "@types/qs": "^6.2.31", - "caseless": "~0.12.0", - "concat-stream": "^1.6.0", - "form-data": "^2.2.0", - "http-basic": "^8.1.1", - "http-response-object": "^3.0.1", - "promise": "^8.0.0", - "qs": "^6.4.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, - "node_modules/then-request/node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", - "dev": true - }, - "node_modules/then-request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "node_modules/web3-core-requestmanager/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">= 0.12" + "node": ">=8.0.0" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "node_modules/web3-core-subscriptions": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.4.tgz", + "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", "dev": true, + "dependencies": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.10.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "node_modules/web3-core-subscriptions/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", + "dev": true, "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", + "node_modules/web3-core-subscriptions/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/web3-core/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/web3-core/node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/web3-core/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=0.6.0" + "node": ">=8.0.0" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "node_modules/web3-core/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/web3-eth": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.4.tgz", + "integrity": "sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-accounts": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-eth-ens": "1.10.4", + "web3-eth-iban": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=8.0" + "node": ">=8.0.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/web3-eth-abi": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz", + "integrity": "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==", "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.10.0" + }, "engines": { - "node": ">=0.6" + "node": ">=8.0.0" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/web3-eth-abi/node_modules/web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" }, "engines": { - "node": ">=0.8" + "node": ">=8.0.0" } }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/web3-eth-accounts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.4.tgz", + "integrity": "sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==", "dev": true, + "dependencies": { + "@ethereumjs/common": "2.6.5", + "@ethereumjs/tx": "3.5.2", + "@ethereumjs/util": "^8.1.0", + "eth-lib": "0.2.8", + "scrypt-js": "^3.0.1", + "uuid": "^9.0.0", + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "node_modules/web3-eth-accounts/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==", "dev": true }, - "node_modules/ts-command-line-args": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz", - "integrity": "sha512-Ff7Xt04WWCjj/cmPO9eWTJX3qpBZWuPWyQYG1vnxJao+alWWYjwJBc5aYz3h5p5dE08A6AnpkgiCtP/0KXXBYw==", + "node_modules/web3-eth-accounts/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", "dev": true, "dependencies": { - "@morgan-stanley/ts-mocking-bird": "^0.6.2", - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/web3-eth-accounts/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { - "write-markdown": "dist/write-markdown.js" + "uuid": "dist/bin/uuid" } }, - "node_modules/ts-command-line-args/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/web3-eth-accounts/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8.0.0" } }, - "node_modules/ts-command-line-args/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/web3-eth-accounts/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts/node_modules/web3-eth-iban/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/web3-eth-contract": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.4.tgz", + "integrity": "sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==", + "dev": true, + "dependencies": { + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-utils": "1.10.4" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/ts-command-line-args/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/web3-eth-contract/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.0.0" } }, - "node_modules/ts-command-line-args/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ts-command-line-args/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/web3-eth-contract/node_modules/web3-core-promievent": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "dev": true, + "dependencies": { + "eventemitter3": "4.0.4" + }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/ts-command-line-args/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/web3-eth-contract/node_modules/web3-eth-abi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "node_modules/web3-eth-contract/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, - "peerDependencies": { - "typescript": ">=3.7.0" + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "node_modules/web3-eth-ens": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.4.tgz", + "integrity": "sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==", "dev": true, "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-utils": "1.10.4" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "engines": { + "node": ">=8.0.0" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/web3-eth-ens/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, + "dependencies": { + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">=0.3.1" + "node": ">=8.0.0" } }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "node_modules/web3-eth-ens/node_modules/web3-core-promievent": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "dev": true, "dependencies": { - "safe-buffer": "^5.0.1" + "eventemitter3": "4.0.4" }, "engines": { - "node": "*" + "node": ">=8.0.0" } }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/web3-eth-ens/node_modules/web3-eth-abi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.10.4" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8.0.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/web3-eth-ens/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/web3-eth-iban": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/web3-eth-iban/node_modules/web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8.0.0" } }, - "node_modules/typechain": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.1.1.tgz", - "integrity": "sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ==", + "node_modules/web3-eth-personal": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.4.tgz", + "integrity": "sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==", "dev": true, "dependencies": { - "@types/prettier": "^2.1.1", - "debug": "^4.3.1", - "fs-extra": "^7.0.0", - "glob": "7.1.7", - "js-sha3": "^0.8.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "prettier": "^2.3.1", - "ts-command-line-args": "^2.2.0", - "ts-essentials": "^7.0.1" - }, - "bin": { - "typechain": "dist/cli/cli.js" + "@types/node": "^12.12.6", + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, - "peerDependencies": { - "typescript": ">=4.3.0" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/typechain/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/web3-eth-personal/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/web3-eth-personal/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.0.0" } }, - "node_modules/typechain/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/web3-eth-personal/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=10" + "node": ">=8.0.0" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "node_modules/web3-eth/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/web3-eth/node_modules/web3-eth-abi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", + "dev": true, "dependencies": { - "is-typedarray": "^1.0.0" + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.10.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "node_modules/web3-eth/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=4.2.0" + "node": ">=8.0.0" } }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "node_modules/web3-net": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.4.tgz", + "integrity": "sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==", "dev": true, + "dependencies": { + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "node_modules/web3-providers-http": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.4.tgz", + "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" + "dependencies": { + "abortcontroller-polyfill": "^1.7.5", + "cross-fetch": "^4.0.0", + "es6-promise": "^4.2.8", + "web3-core-helpers": "1.10.4" }, "engines": { - "node": ">=0.8.0" + "node": ">=8.0.0" } }, - "node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true + "node_modules/web3-providers-http/node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.12" + } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "node_modules/web3-providers-http/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/undici": { - "version": "5.21.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.2.tgz", - "integrity": "sha512-f6pTQ9RF4DQtwoWSaC42P/NKlUjvezVvd9r155ohqkwFNRyBKM3f3pcty3ouusefNRyM25XhIQEbeQ46sZDJfQ==", + "node_modules/web3-providers-http/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "dependencies": { - "busboy": "^1.6.0" + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=12.18" + "node": ">=8.0.0" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/web3-providers-ipc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.4.tgz", + "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", "dev": true, + "dependencies": { + "oboe": "2.1.5", + "web3-core-helpers": "1.10.4" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=8.0.0" } }, - "node_modules/unorm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", + "node_modules/web3-providers-ipc/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", + "dev": true, + "dependencies": { + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">= 0.4.0" + "node": ">=8.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==", + "node_modules/web3-providers-ipc/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" + }, "engines": { - "node": ">= 0.8" + "node": ">=8.0.0" } }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, - "node_modules/upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "node_modules/web3-providers-ws": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.4.tgz", + "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", "dev": true, "dependencies": { - "upper-case": "^1.1.1" + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.10.4", + "websocket": "^1.0.32" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/web3-providers-ws/node_modules/web3-core-helpers": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "node_modules/web3-providers-ws/node_modules/web3-eth-iban": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "dependencies": { - "prepend-http": "^2.0.0" + "bn.js": "^5.2.1", + "web3-utils": "1.10.4" }, "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", - "dev": true - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "node_modules/web3-shh": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.4.tgz", + "integrity": "sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==", + "dev": true, "hasInstallScript": true, "dependencies": { - "node-gyp-build": "^4.3.0" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-net": "1.10.4" }, "engines": { - "node": ">=6.14.2" + "node": ">=8.0.0" } }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true - }, - "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==", + "node_modules/web3-utils": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "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==" - }, - "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=8.0.0" } }, - "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==", + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", "dev": true, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/web3-utils/node_modules/@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "node_modules/web3-utils/node_modules/@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" } }, - "node_modules/web3": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.9.0.tgz", - "integrity": "sha512-E9IvVy/d2ozfQQsCiV+zh/LmlZGv9fQxI0UedDVjm87yOKf4AYbBNEn1iWtHveiGzAk2CEMZMUzAZzaQNSSYog==", - "dev": true, - "hasInstallScript": true, + "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==" + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", "dependencies": { - "web3-bzz": "1.9.0", - "web3-core": "1.9.0", - "web3-eth": "1.9.0", - "web3-eth-personal": "1.9.0", - "web3-net": "1.9.0", - "web3-shh": "1.9.0", - "web3-utils": "1.9.0" + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" }, "engines": { - "node": ">=8.0.0" + "node": ">=4.0.0" } }, - "node_modules/web3-bzz": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.9.0.tgz", - "integrity": "sha512-9Zli9dikX8GdHwBb5/WPzpSVuy3EWMKY3P4EokCQra31fD7DLizqAAaTUsFwnK7xYkw5ogpHgelw9uKHHzNajg==", - "dev": true, - "hasInstallScript": true, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@types/node": "^12.12.6", - "got": "12.1.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" + "ms": "2.0.0" } }, - "node_modules/web3-bzz/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/web3-core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.9.0.tgz", - "integrity": "sha512-DZ+TPmq/ZLlx4LSVzFgrHCP/QFpKDbGWO4HoquZSdu24cjk5SZ+FEU1SZB2OaK3/bgBh+25mRbmv8y56ysUu1w==", - "dev": true, + "node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "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==", "dependencies": { - "@types/bn.js": "^5.1.1", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-requestmanager": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=8.0.0" + "node": ">= 8" } }, - "node_modules/web3-core-helpers/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dev": true, "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/web3-core-method": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.9.0.tgz", - "integrity": "sha512-sswbNsY2xRBBhGeaLt9c/eDc+0yDDhi6keUBAkgIRa9ueSx/VKzUY9HMqiV6bXDcGT2fJyejq74FfEB4lc/+/w==", + "node_modules/window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", "dev": true, - "dependencies": { - "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.9.0", - "web3-core-promievent": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-utils": "1.9.0" + "bin": { + "window-size": "cli.js" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.10.0" } }, - "node_modules/web3-core-method/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/web3-core-method/node_modules/web3-core-promievent": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.9.0.tgz", - "integrity": "sha512-PHG1Mn23IGwMZhnPDN8dETKypqsFbHfiyRqP+XsVMPmTHkVfzDQTCBU/c2r6hUktBDoGKut5xZQpGfhFk71KbQ==", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dev": true, "dependencies": { - "eventemitter3": "4.0.4" + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/web3-core-method/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", - "dev": true, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "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==", "dependencies": { - "eventemitter3": "4.0.4" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/web3-core-requestmanager": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.9.0.tgz", - "integrity": "sha512-hcJ5PCtTIJpj+8qWxoseqlCovDo94JJjTX7dZOLXgwp8ah7E3WRYozhGyZocerx+KebKyg1mCQIhkDpMwjfo9Q==", - "dev": true, - "dependencies": { - "util": "^0.12.5", - "web3-core-helpers": "1.9.0", - "web3-providers-http": "1.9.0", - "web3-providers-ipc": "1.9.0", - "web3-providers-ws": "1.9.0" - }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-core-requestmanager/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", - "dev": true, + "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==", "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/web3-core-requestmanager/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", - "dev": true, + "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==", "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8.0.0" + "node": ">=7.0.0" } }, - "node_modules/web3-core-subscriptions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.9.0.tgz", - "integrity": "sha512-MaIo29yz7hTV8X8bioclPDbHFOVuHmnbMv+D3PDH12ceJFJAXGyW8GL5KU1DYyWIj4TD1HM4WknyVA/YWBiiLA==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.9.0" - }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/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==" + }, + "node_modules/wrap-ansi/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==", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-core-subscriptions/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", - "dev": true, + "node_modules/wrap-ansi/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==", "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-core-subscriptions/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", - "dev": true, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-core/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/web3-core/node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "dev": true, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, "engines": { - "node": "*" + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/web3-core/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", "dev": true, "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" } }, - "node_modules/web3-core/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "node_modules/xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", "dev": true, "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" } }, - "node_modules/web3-eth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.9.0.tgz", - "integrity": "sha512-c5gSWk9bLNr6VPATHmZ1n7LTIefIZQnJMzfnvkoBcIFGKJbGmsuRhv6lEXsKdAO/FlqYnSbaw3fOq1fVFiIOFQ==", + "node_modules/xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", "dev": true, "dependencies": { - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-eth-abi": "1.9.0", - "web3-eth-accounts": "1.9.0", - "web3-eth-contract": "1.9.0", - "web3-eth-ens": "1.9.0", - "web3-eth-iban": "1.9.0", - "web3-eth-personal": "1.9.0", - "web3-net": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "xhr-request": "^1.1.0" } }, - "node_modules/web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", + "node_modules/xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", "dev": true, "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" + "cookiejar": "^2.1.1" } }, - "node_modules/web3-eth-abi/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=0.4.0" } }, - "node_modules/web3-eth-accounts": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.9.0.tgz", - "integrity": "sha512-VeIZVevmnSll0AC1k5F/y398ZE89d1SRuYk8IewLUhL/tVAsFEsjl2SGgm0+aDcHmgPrkW+qsCJ+C7rWg/N4ZA==", + "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, - "dependencies": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.1.5", - "scrypt-js": "^3.0.1", - "uuid": "^9.0.0", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=0.4" } }, - "node_modules/web3-eth-accounts/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==", - "dev": true - }, - "node_modules/web3-eth-accounts/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" } }, - "node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" } }, - "node_modules/web3-eth-accounts/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">= 14" } }, - "node_modules/web3-eth-accounts/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", - "dev": true, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12" } }, - "node_modules/web3-eth-accounts/node_modules/web3-eth-iban/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/web3-eth-contract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.9.0.tgz", - "integrity": "sha512-+j26hpSaEtAdUed0TN5rnc+YZOcjPxMjFX4ZBKatvFkImdbVv/tzTvcHlltubSpgb2ZLyZ89lSL6phKYwd2zNQ==", + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "dependencies": { - "@types/bn.js": "^5.1.1", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-promievent": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-eth-abi": "1.9.0", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=10" } }, - "node_modules/web3-eth-contract/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=10" } }, - "node_modules/web3-eth-contract/node_modules/web3-core-promievent": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.9.0.tgz", - "integrity": "sha512-PHG1Mn23IGwMZhnPDN8dETKypqsFbHfiyRqP+XsVMPmTHkVfzDQTCBU/c2r6hUktBDoGKut5xZQpGfhFk71KbQ==", + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/web3-eth-contract/node_modules/web3-eth-abi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.9.0.tgz", - "integrity": "sha512-0BLQ3FKMrzJkA930jOX3fMaybAyubk06HChclLpiR0NWmgWXm1tmBrJdkyRy2ZTZpmfuZc9xTFRfl0yZID1voA==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.9.0" - }, + "node_modules/yargs/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==", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-eth-contract/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, + "node_modules/yargs/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==" + }, + "node_modules/yargs/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==", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-eth-ens": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.9.0.tgz", - "integrity": "sha512-LOJZeN+AGe9arhuExnrPPFYQr4WSxXEkpvYIlst/joOEUNLDwfndHnJIK6PI5mXaYSROBtTx6erv+HupzGo7vA==", - "dev": true, + "node_modules/yargs/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==", "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-promievent": "1.9.0", - "web3-eth-abi": "1.9.0", - "web3-eth-contract": "1.9.0", - "web3-utils": "1.9.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-eth-ens/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", - "dev": true, + "node_modules/yargs/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==", "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/web3-eth-ens/node_modules/web3-core-promievent": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.9.0.tgz", - "integrity": "sha512-PHG1Mn23IGwMZhnPDN8dETKypqsFbHfiyRqP+XsVMPmTHkVfzDQTCBU/c2r6hUktBDoGKut5xZQpGfhFk71KbQ==", - "dev": true, - "dependencies": { - "eventemitter3": "4.0.4" - }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { - "node": ">=8.0.0" + "node": ">=12" } }, - "node_modules/web3-eth-ens/node_modules/web3-eth-abi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.9.0.tgz", - "integrity": "sha512-0BLQ3FKMrzJkA930jOX3fMaybAyubk06HChclLpiR0NWmgWXm1tmBrJdkyRy2ZTZpmfuZc9xTFRfl0yZID1voA==", + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=6" } }, - "node_modules/web3-eth-ens/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "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, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, "engines": { - "node": ">=8.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", + } + }, + "dependencies": { + "@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.8.2" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "regenerator-runtime": "^0.13.11" } }, - "node_modules/web3-eth-iban/node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "@chainsafe/as-sha256": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true + }, + "@chainsafe/persistent-merkle-tree": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@chainsafe/as-sha256": "^0.3.1" } }, - "node_modules/web3-eth-personal": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.9.0.tgz", - "integrity": "sha512-r9Ldo/luBqJlv1vCUEQnUS+C3a3ZdbYxVHyfDkj6RWMyCqqo8JE41HWE+pfa0RmB1xnGL2g8TbYcHcqItck/qg==", + "@chainsafe/ssz": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", "dev": true, - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-net": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.4.2", + "case": "^1.6.3" } }, - "node_modules/web3-eth-personal/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/web3-eth-personal/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@jridgewell/trace-mapping": "0.3.9" } }, - "node_modules/web3-eth-personal/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "@ensdomains/address-encoder": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", + "integrity": "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "requires": { + "bech32": "^1.1.3", + "blakejs": "^1.1.0", + "bn.js": "^4.11.8", + "bs58": "^4.0.1", + "crypto-addr-codec": "^0.1.7", + "nano-base32": "^1.0.1", + "ripemd160": "^2.0.2" }, - "engines": { - "node": ">=8.0.0" + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, - "node_modules/web3-eth/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "@ensdomains/ens": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", + "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "bluebird": "^3.5.2", + "eth-ens-namehash": "^2.0.8", + "solc": "^0.4.20", + "testrpc": "0.0.1", + "web3-utils": "^1.0.0-beta.31" } }, - "node_modules/web3-eth/node_modules/web3-eth-abi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.9.0.tgz", - "integrity": "sha512-0BLQ3FKMrzJkA930jOX3fMaybAyubk06HChclLpiR0NWmgWXm1tmBrJdkyRy2ZTZpmfuZc9xTFRfl0yZID1voA==", + "@ensdomains/ensjs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz", + "integrity": "sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==", "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@babel/runtime": "^7.4.4", + "@ensdomains/address-encoder": "^0.1.7", + "@ensdomains/ens": "0.4.5", + "@ensdomains/resolver": "0.2.4", + "content-hash": "^2.5.2", + "eth-ens-namehash": "^2.0.8", + "ethers": "^5.0.13", + "js-sha3": "^0.8.0" } }, - "node_modules/web3-eth/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "@ensdomains/resolver": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", + "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", + "dev": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "eslint-visitor-keys": "^3.3.0" } }, - "node_modules/web3-net": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.9.0.tgz", - "integrity": "sha512-L+fDZFgrLM5Y15aonl2q6L+RvfaImAngmC0Jv45hV2FJ5IfRT0/2ob9etxZmvEBWvOpbqSvghfOhJIT3XZ37Pg==", + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, - "dependencies": { - "web3-core": "1.9.0", - "web3-core-method": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" } }, - "node_modules/web3-providers-http": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.9.0.tgz", - "integrity": "sha512-5+dMNDAE0rRFz6SJpfnBqlVi2J5bB/Ivr2SanMt2YUrkxW5t8betZbzVwRkTbwtUvkqgj3xeUQzqpOttiv+IqQ==", + "@eslint/js": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "dev": true + }, + "@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", "dev": true, - "dependencies": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", - "es6-promise": "^4.2.8", - "web3-core-helpers": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" } }, - "node_modules/web3-providers-http/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==", + "@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true + }, + "@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", "dev": true, - "dependencies": { - "node-fetch": "2.6.7" + "requires": { + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, - "node_modules/web3-providers-http/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==", + "@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "requires": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true + "dependencies": { + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true + }, + "@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "dev": true, + "requires": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "dev": true, + "requires": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "dev": true, + "requires": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" + } } } }, - "node_modules/web3-providers-http/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/web3-providers-http/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, - "node_modules/web3-providers-ipc": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.9.0.tgz", - "integrity": "sha512-cPXU93Du40HCylvjaa5x62DbnGqH+86HpK/+kMcFIzF6sDUBhKpag2tSbYhGbj7GMpfkmDTUiiMLdWnFV6+uBA==", + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "dev": true, - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/web3-providers-ipc/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, - "node_modules/web3-providers-ipc/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bytes": "^5.7.0" } }, - "node_modules/web3-providers-ws": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.9.0.tgz", - "integrity": "sha512-JRVsnQZ7j2k1a2yzBNHe39xqk1ijOv01dfIBFw52VeEkSRzvrOcsPIM/ttSyBuJqt70ntMxXY0ekCrqfleKH/w==", + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "dev": true, - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.9.0", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/web3-providers-ws/node_modules/web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "dev": true, - "dependencies": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" } }, - "node_modules/web3-providers-ws/node_modules/web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "web3-utils": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/web3-shh": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.9.0.tgz", - "integrity": "sha512-bIBZlralgz4ICCrwkefB2nPPJWfx28NuHIpjB7d9ADKynElubQuqudYhKtSEkKXACuME/BJm0pIFJcJs/gDnMg==", + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-net": "1.9.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0" } }, - "node_modules/web3-utils": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.9.0.tgz", - "integrity": "sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ==", + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "dev": true - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" } }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - }, - "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==", + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, - "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==", + "@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + } } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "dev": true }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, - "node_modules/window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", "dev": true, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" + "requires": { + "@ethersproject/logger": "^5.7.0" } }, - "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==", + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "dev": true, - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } }, - "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==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrap-ansi/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==" - }, - "node_modules/wrap-ansi/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==" - }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" } }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "dev": true, - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "dev": true, - "dependencies": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, - "node_modules/xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "dev": true, - "dependencies": { - "xhr-request": "^1.1.0" + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "dev": true, - "dependencies": { - "cookiejar": "^2.1.1" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "dev": true }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, - "engines": { - "node": ">=0.4" + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, - "node_modules/yallist": { + "@jridgewell/resolve-uri": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true }, - "node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "engines": { - "node": ">= 14" + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } } }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "@morgan-stanley/ts-mocking-bird": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz", + "integrity": "sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA==", "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + "requires": { + "lodash": "^4.17.16", + "uuid": "^7.0.3" }, - "engines": { - "node": ">=10" + "dependencies": { + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "dev": true + } } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@noble/hashes": "1.3.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==" - }, - "node_modules/yargs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true + } } }, - "node_modules/yargs/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } + "@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "@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, - "engines": { - "node": ">=6" + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "@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": { - "regenerator-runtime": "^0.13.11" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "@chainsafe/as-sha256": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", - "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", - "dev": true - }, - "@chainsafe/persistent-merkle-tree": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", - "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "@nomicfoundation/ethereumjs-block": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz", + "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==", "dev": true, "requires": { - "@chainsafe/as-sha256": "^0.3.1" + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1" } }, - "@chainsafe/ssz": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", - "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "@nomicfoundation/ethereumjs-blockchain": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz", + "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==", "dev": true, "requires": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.4.2", - "case": "^1.6.3" + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-ethash": "3.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" } }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "@nomicfoundation/ethereumjs-common": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz", + "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "0.3.9" + "@nomicfoundation/ethereumjs-util": "9.0.1", + "crc-32": "^1.2.0" } }, - "@ensdomains/address-encoder": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", - "integrity": "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==", + "@nomicfoundation/ethereumjs-ethash": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz", + "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==", "dev": true, "requires": { - "bech32": "^1.1.3", - "blakejs": "^1.1.0", - "bn.js": "^4.11.8", - "bs58": "^4.0.1", - "crypto-addr-codec": "^0.1.7", - "nano-base32": "^1.0.1", - "ripemd160": "^2.0.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "@ensdomains/ens": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", - "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", - "dev": true, - "requires": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" } }, - "@ensdomains/ensjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.1.0.tgz", - "integrity": "sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==", + "@nomicfoundation/ethereumjs-evm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz", + "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4", - "@ensdomains/address-encoder": "^0.1.7", - "@ensdomains/ens": "0.4.5", - "@ensdomains/resolver": "0.2.4", - "content-hash": "^2.5.2", - "eth-ens-namehash": "^2.0.8", - "ethers": "^5.0.13", - "js-sha3": "^0.8.0" + "@ethersproject/providers": "^5.7.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" } }, - "@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", + "@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz", + "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==", "dev": true }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "@nomicfoundation/ethereumjs-statemanager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz", + "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==", "dev": true, "requires": { - "eslint-visitor-keys": "^3.3.0" + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" } }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "@nomicfoundation/ethereumjs-trie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz", + "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==", "dev": true, "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" } }, - "@eslint/js": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", - "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", - "dev": true - }, - "@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "@nomicfoundation/ethereumjs-tx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz", + "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==", "dev": true, "requires": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "@chainsafe/ssz": "^0.9.2", + "@ethersproject/providers": "^5.7.2", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "ethereum-cryptography": "0.1.3" } }, - "@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "@nomicfoundation/ethereumjs-util": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz", + "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==", "dev": true, "requires": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@chainsafe/ssz": "^0.10.0", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "@chainsafe/persistent-merkle-tree": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", + "dev": true, + "requires": { + "@chainsafe/as-sha256": "^0.3.1" + } + }, + "@chainsafe/ssz": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", + "dev": true, + "requires": { + "@chainsafe/as-sha256": "^0.3.1", + "@chainsafe/persistent-merkle-tree": "^0.5.0" + } + } } }, - "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "@nomicfoundation/ethereumjs-vm": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz", + "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==", "dev": true, "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@nomicfoundation/ethereumjs-block": "5.0.1", + "@nomicfoundation/ethereumjs-blockchain": "7.0.1", + "@nomicfoundation/ethereumjs-common": "4.0.1", + "@nomicfoundation/ethereumjs-evm": "2.0.1", + "@nomicfoundation/ethereumjs-rlp": "5.0.1", + "@nomicfoundation/ethereumjs-statemanager": "2.0.1", + "@nomicfoundation/ethereumjs-trie": "6.0.1", + "@nomicfoundation/ethereumjs-tx": "5.0.1", + "@nomicfoundation/ethereumjs-util": "9.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" } }, - "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "@nomicfoundation/hardhat-chai-matchers": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", + "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "@ethersproject/abi": "^5.1.2", + "@types/chai-as-promised": "^7.1.3", + "chai-as-promised": "^7.1.1", + "deep-eql": "^4.0.1", + "ordinal": "^1.0.3" } }, - "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "@nomicfoundation/hardhat-network-helpers": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz", + "integrity": "sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "ethereumjs-util": "^7.1.4" } }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "@nomicfoundation/hardhat-toolbox": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-1.0.2.tgz", + "integrity": "sha512-8CEgWSKUK2aMit+76Sez8n7UB0Ze1lwT+LcWxj4EFP30lQWOwOws048t6MTPfThH0BlSWjC6hJRr0LncIkc1Sw==", "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } + "requires": {} }, - "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" } }, - "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } + "optional": true }, - "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", "dev": true, - "requires": { - "@ethersproject/logger": "^5.7.0" - } + "optional": true }, - "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0" - } + "optional": true }, - "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", "dev": true, - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } + "optional": true }, - "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } + "optional": true }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } + "optional": true }, - "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - }, - "dependencies": { - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - } - } + "optional": true }, - "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } + "optional": true }, - "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "dev": true, + "optional": true }, - "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", "dev": true, - "requires": { - "@ethersproject/logger": "^5.7.0" - } + "optional": true }, - "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "@nomiclabs/hardhat-ethers": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.2.tgz", + "integrity": "sha512-NLDlDFL2us07C0jB/9wzvR0kuLivChJWCXTKcj3yqjZqMoYp7g7wwS157F70VHx/+9gHIBGzak5pKDwG8gEefA==", "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } + "requires": {} }, - "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "@nomiclabs/hardhat-etherscan": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz", + "integrity": "sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==", "dev": true, "requires": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" } }, - "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "@nomiclabs/hardhat-web3": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-web3/-/hardhat-web3-2.0.0.tgz", + "integrity": "sha512-zt4xN+D+fKl3wW2YlTX3k9APR3XZgPkxJYf36AcliJn3oujnKEVRZaHu0PhgLjO+gR+F/kiYayo9fgd2L8970Q==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" + "@types/bignumber.js": "^5.0.0" } }, - "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "@openzeppelin/contract-loader": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz", + "integrity": "sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "@openzeppelin/contracts": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", + "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==", + "dev": true + }, + "@openzeppelin/test-helpers": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz", + "integrity": "sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@openzeppelin/contract-loader": "^0.6.2", + "@truffle/contract": "^4.0.35", + "ansi-colors": "^3.2.3", + "chai": "^4.2.0", + "chai-bn": "^0.2.1", + "ethjs-abi": "^0.2.1", + "lodash.flatten": "^4.4.0", + "semver": "^5.6.0", + "web3": "^1.2.5", + "web3-utils": "^1.2.5" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true, + "peer": true + }, + "chai-bn": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz", + "integrity": "sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==", + "dev": true, + "requires": {} + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } } }, - "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@scure/base": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "dev": true + }, + "@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" } }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" } }, - "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", "dev": true, "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, - "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@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==", + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true + "@solidity-parser/parser": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "@truffle/abi-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-1.0.3.tgz", + "integrity": "sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "change-case": "3.0.2", + "fast-check": "3.1.1", + "web3-utils": "1.10.0" + }, + "dependencies": { + "web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } } }, - "@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "@truffle/blockchain-utils": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.9.tgz", + "integrity": "sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==", + "dev": true + }, + "@truffle/codec": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.17.3.tgz", + "integrity": "sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==", "dev": true, "requires": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" + "@truffle/abi-utils": "^1.0.3", + "@truffle/compile-common": "^0.9.8", + "big.js": "^6.0.3", + "bn.js": "^5.1.3", + "cbor": "^5.2.0", + "debug": "^4.3.1", + "lodash": "^4.17.21", + "semver": "^7.5.4", + "utf8": "^3.0.0", + "web3-utils": "1.10.0" }, "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true + }, + "cbor": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", + "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", "dev": true, "requires": { - "@types/node": "*" + "bignumber.js": "^9.0.1", + "nofilter": "^1.0.4" } }, - "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==", + "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" + } + }, + "nofilter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", + "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", "dev": true }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" + "lru-cache": "^6.0.0" } + }, + "web3-utils": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, - "@morgan-stanley/ts-mocking-bird": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz", - "integrity": "sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA==", + "@truffle/compile-common": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.8.tgz", + "integrity": "sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==", "dev": true, "requires": { - "lodash": "^4.17.16", - "uuid": "^7.0.3" - }, - "dependencies": { - "uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "dev": true - } + "@truffle/error": "^0.2.2", + "colors": "1.4.0" } }, - "@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", - "dev": true - }, - "@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@nomicfoundation/ethereumjs-block": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz", - "integrity": "sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1" - } - }, - "@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz", - "integrity": "sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-ethash": "3.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" - } - }, - "@nomicfoundation/ethereumjs-common": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz", - "integrity": "sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-util": "9.0.1", - "crc-32": "^1.2.0" - } - }, - "@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz", - "integrity": "sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.0.23", - "ethereum-cryptography": "0.1.3" - } - }, - "@nomicfoundation/ethereumjs-evm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz", - "integrity": "sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==", - "dev": true, - "requires": { - "@ethersproject/providers": "^5.7.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - } - }, - "@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz", - "integrity": "sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==", - "dev": true - }, - "@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz", - "integrity": "sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" - } - }, - "@nomicfoundation/ethereumjs-trie": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz", - "integrity": "sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "readable-stream": "^3.6.0" - } - }, - "@nomicfoundation/ethereumjs-tx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz", - "integrity": "sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==", - "dev": true, - "requires": { - "@chainsafe/ssz": "^0.9.2", - "@ethersproject/providers": "^5.7.2", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "ethereum-cryptography": "0.1.3" - } - }, - "@nomicfoundation/ethereumjs-util": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz", - "integrity": "sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==", - "dev": true, - "requires": { - "@chainsafe/ssz": "^0.10.0", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "ethereum-cryptography": "0.1.3" - }, - "dependencies": { - "@chainsafe/persistent-merkle-tree": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", - "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", - "dev": true, - "requires": { - "@chainsafe/as-sha256": "^0.3.1" - } - }, - "@chainsafe/ssz": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", - "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", - "dev": true, - "requires": { - "@chainsafe/as-sha256": "^0.3.1", - "@chainsafe/persistent-merkle-tree": "^0.5.0" - } - } - } - }, - "@nomicfoundation/ethereumjs-vm": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz", - "integrity": "sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-block": "5.0.1", - "@nomicfoundation/ethereumjs-blockchain": "7.0.1", - "@nomicfoundation/ethereumjs-common": "4.0.1", - "@nomicfoundation/ethereumjs-evm": "2.0.1", - "@nomicfoundation/ethereumjs-rlp": "5.0.1", - "@nomicfoundation/ethereumjs-statemanager": "2.0.1", - "@nomicfoundation/ethereumjs-trie": "6.0.1", - "@nomicfoundation/ethereumjs-tx": "5.0.1", - "@nomicfoundation/ethereumjs-util": "9.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - } - }, - "@nomicfoundation/hardhat-chai-matchers": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", - "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" - } - }, - "@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz", - "integrity": "sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q==", - "dev": true, - "requires": { - "ethereumjs-util": "^7.1.4" - } - }, - "@nomicfoundation/hardhat-toolbox": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-1.0.2.tgz", - "integrity": "sha512-8CEgWSKUK2aMit+76Sez8n7UB0Ze1lwT+LcWxj4EFP30lQWOwOws048t6MTPfThH0BlSWjC6hJRr0LncIkc1Sw==", - "dev": true, - "requires": {} - }, - "@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "requires": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "dev": true, - "optional": true - }, - "@nomiclabs/hardhat-ethers": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.2.tgz", - "integrity": "sha512-NLDlDFL2us07C0jB/9wzvR0kuLivChJWCXTKcj3yqjZqMoYp7g7wwS157F70VHx/+9gHIBGzak5pKDwG8gEefA==", - "dev": true, - "requires": {} - }, - "@nomiclabs/hardhat-etherscan": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz", - "integrity": "sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "chalk": "^2.4.2", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash": "^4.17.11", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" - } - }, - "@nomiclabs/hardhat-web3": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-web3/-/hardhat-web3-2.0.0.tgz", - "integrity": "sha512-zt4xN+D+fKl3wW2YlTX3k9APR3XZgPkxJYf36AcliJn3oujnKEVRZaHu0PhgLjO+gR+F/kiYayo9fgd2L8970Q==", - "dev": true, - "requires": { - "@types/bignumber.js": "^5.0.0" - } - }, - "@openzeppelin/contract-loader": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz", - "integrity": "sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "@openzeppelin/contracts": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.3.tgz", - "integrity": "sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg==", - "dev": true - }, - "@openzeppelin/test-helpers": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz", - "integrity": "sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg==", - "dev": true, - "requires": { - "@openzeppelin/contract-loader": "^0.6.2", - "@truffle/contract": "^4.0.35", - "ansi-colors": "^3.2.3", - "chai": "^4.2.0", - "chai-bn": "^0.2.1", - "ethjs-abi": "^0.2.1", - "lodash.flatten": "^4.4.0", - "semver": "^5.6.0", - "web3": "^1.2.5", - "web3-utils": "^1.2.5" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "chai-bn": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz", - "integrity": "sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==", - "dev": true, - "requires": {} - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "dev": true - }, - "@scure/bip32": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", - "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", - "dev": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "requires": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true - }, - "@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true - }, - "@solidity-parser/parser": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", - "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", - "dev": true, - "requires": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.1" - } - }, - "@truffle/abi-utils": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.3.9.tgz", - "integrity": "sha512-G5dqgwRHx5zwlXjz3QT8OJVfB2cOqWwD6DwKso0KttUt/zejhCjnkKq72rSgyeLMkz7wBB9ERLOsupLBILM8MA==", - "dev": true, - "requires": { - "change-case": "3.0.2", - "fast-check": "3.1.1", - "web3-utils": "1.8.2" - }, - "dependencies": { - "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } - } - }, - "@truffle/blockchain-utils": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.1.7.tgz", - "integrity": "sha512-1nibqGjEHC7KAyDThEFvbm2+EO8zAHee/VjCtxkYBE3ySwP50joh0QCEBjy7K/9z+icpMoDucfxmgaKToBFUgQ==", - "dev": true - }, - "@truffle/codec": { - "version": "0.14.17", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.17.tgz", - "integrity": "sha512-kD4dD86huLeaBEq5R8D1zleJEu6NsXbyYLdXl1V1TKdiO8odw5CBC6Y/+wdu5d3t1dyEYrTbhn1dqknZa52pmw==", + "@truffle/contract": { + "version": "4.6.31", + "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.31.tgz", + "integrity": "sha512-s+oHDpXASnZosiCdzu+X1Tx5mUJUs1L1CYXIcgRmzMghzqJkaUFmR6NpNo7nJYliYbO+O9/aW8oCKqQ7rCHfmQ==", "dev": true, "requires": { - "@truffle/abi-utils": "^0.3.9", - "@truffle/compile-common": "^0.9.4", - "big.js": "^6.0.3", - "bn.js": "^5.1.3", - "cbor": "^5.2.0", + "@ensdomains/ensjs": "^2.1.0", + "@truffle/blockchain-utils": "^0.1.9", + "@truffle/contract-schema": "^3.4.16", + "@truffle/debug-utils": "^6.0.57", + "@truffle/error": "^0.2.2", + "@truffle/interface-adapter": "^0.5.37", + "bignumber.js": "^7.2.1", "debug": "^4.3.1", - "lodash": "^4.17.21", - "semver": "7.3.7", - "utf8": "^3.0.0", - "web3-utils": "1.8.2" + "ethers": "^4.0.32", + "web3": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" }, "dependencies": { - "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "dev": true - }, - "cbor": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", - "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", - "dev": true, - "requires": { - "bignumber.js": "^9.0.1", - "nofilter": "^1.0.4" - } - }, - "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" - } - }, - "nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" } }, - "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", "dev": true, "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@truffle/compile-common": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.9.4.tgz", - "integrity": "sha512-mnqJB/hLiPHNf+WKwt/2MH6lv34xSG/SFCib7+ckAklutUqVLeFo8EwQxinuHNkU7LY0C+YgZXhK1WTCO5YRJQ==", - "dev": true, - "requires": { - "@truffle/error": "^0.2.0", - "colors": "1.4.0" - } - }, - "@truffle/contract": { - "version": "4.6.19", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.6.19.tgz", - "integrity": "sha512-LV4JuMWa4juySKCj4PHQ9YpP/xLXDxV2BQR/IEGIthhQb7jdo+BrwSxuRjO3kn2CtI5KxUpL99VUOTLvAz56iQ==", - "dev": true, - "requires": { - "@ensdomains/ensjs": "^2.1.0", - "@truffle/blockchain-utils": "^0.1.7", - "@truffle/contract-schema": "^3.4.13", - "@truffle/debug-utils": "^6.0.48", - "@truffle/error": "^0.2.0", - "@truffle/interface-adapter": "^0.5.31", - "bignumber.js": "^7.2.1", - "debug": "^4.3.1", - "ethers": "^4.0.32", - "web3": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" - }, - "dependencies": { "@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", @@ -18100,12 +17225,12 @@ "dev": true }, "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "requires": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "eth-lib": { @@ -18168,15 +17293,6 @@ "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", "dev": true }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, "scrypt-js": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", @@ -18196,24 +17312,24 @@ "dev": true }, "web3": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz", - "integrity": "sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", "dev": true, "requires": { - "web3-bzz": "1.8.2", - "web3-core": "1.8.2", - "web3-eth": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-shh": "1.8.2", - "web3-utils": "1.8.2" + "web3-bzz": "1.10.0", + "web3-core": "1.10.0", + "web3-eth": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-shh": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-bzz": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz", - "integrity": "sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", "dev": true, "requires": { "@types/node": "^12.12.6", @@ -18222,88 +17338,88 @@ } }, "web3-core": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz", - "integrity": "sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", "dev": true, "requires": { - "@types/bn.js": "^5.1.0", + "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-requestmanager": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-requestmanager": "1.10.0", + "web3-utils": "1.10.0" }, "dependencies": { "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true } } }, "web3-core-method": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz", - "integrity": "sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", "dev": true, "requires": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-core-requestmanager": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz", - "integrity": "sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", "dev": true, "requires": { "util": "^0.12.5", - "web3-core-helpers": "1.8.2", - "web3-providers-http": "1.8.2", - "web3-providers-ipc": "1.8.2", - "web3-providers-ws": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-providers-http": "1.10.0", + "web3-providers-ipc": "1.10.0", + "web3-providers-ws": "1.10.0" } }, "web3-core-subscriptions": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz", - "integrity": "sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" } }, "web3-eth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz", - "integrity": "sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", "dev": true, "requires": { - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-accounts": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-eth-ens": "1.8.2", - "web3-eth-iban": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-accounts": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-eth-ens": "1.10.0", + "web3-eth-iban": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-eth-accounts": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz", - "integrity": "sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", "dev": true, "requires": { "@ethereumjs/common": "2.5.0", @@ -18312,10 +17428,10 @@ "ethereumjs-util": "^7.1.5", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" }, "dependencies": { "scrypt-js": { @@ -18325,119 +17441,119 @@ "dev": true }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true } } }, "web3-eth-contract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz", - "integrity": "sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", "dev": true, "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-eth-ens": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz", - "integrity": "sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", "dev": true, "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-eth-personal": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz", - "integrity": "sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", "dev": true, "requires": { "@types/node": "^12.12.6", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-net": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz", - "integrity": "sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", "dev": true, "requires": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-providers-http": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz", - "integrity": "sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", "dev": true, "requires": { "abortcontroller-polyfill": "^1.7.3", "cross-fetch": "^3.1.4", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" } }, "web3-providers-ipc": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz", - "integrity": "sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", "dev": true, "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" } }, "web3-providers-ws": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz", - "integrity": "sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2", + "web3-core-helpers": "1.10.0", "websocket": "^1.0.32" } }, "web3-shh": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz", - "integrity": "sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", "dev": true, "requires": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-net": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-net": "1.10.0" } }, "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "requires": { "bn.js": "^5.2.1", @@ -18452,9 +17568,9 @@ } }, "@truffle/contract-schema": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.13.tgz", - "integrity": "sha512-emG7upuryYFrsPDbHqeASPWXL824M1tinhQwSPG0phSoa3g+RX9fUNNN/VPmF3tSkXLWUMhRnb7ehxnaCuRbZg==", + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.16.tgz", + "integrity": "sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==", "dev": true, "requires": { "ajv": "^6.10.0", @@ -18462,12 +17578,12 @@ } }, "@truffle/debug-utils": { - "version": "6.0.48", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.48.tgz", - "integrity": "sha512-HdK/7eH5EFrcTPeZVEgKaKkkzuZ4xsrH8yw+EoLEsScLsOEuQeKynY61NctjuU93voATWrYmV99Sfb/MRq2i2g==", + "version": "6.0.57", + "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-6.0.57.tgz", + "integrity": "sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==", "dev": true, "requires": { - "@truffle/codec": "^0.14.17", + "@truffle/codec": "^0.17.3", "@trufflesuite/chromafi": "^3.0.0", "bn.js": "^5.1.3", "chalk": "^2.4.2", @@ -18476,22 +17592,42 @@ } }, "@truffle/error": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.0.tgz", - "integrity": "sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.2.2.tgz", + "integrity": "sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==", "dev": true }, "@truffle/interface-adapter": { - "version": "0.5.31", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.31.tgz", - "integrity": "sha512-f5mOqbptQUUgHhBrBvWie4EUAUqHLN/wCBjFoP2N/QNcyvwGfdC3TSck9kjwIIFIgYgQQyAxQDGBQcjHryvxzg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz", + "integrity": "sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==", "dev": true, "requires": { "bn.js": "^5.1.3", "ethers": "^4.0.32", - "web3": "1.8.2" + "web3": "1.10.0" }, "dependencies": { + "@ethereumjs/common": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.1" + } + }, + "@ethereumjs/tx": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.5.0", + "ethereumjs-util": "^7.1.2" + } + }, "@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", @@ -18505,18 +17641,18 @@ "dev": true }, "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true }, "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "requires": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "eth-lib": { @@ -18579,15 +17715,6 @@ "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", "dev": true }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, "scrypt-js": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", @@ -18607,24 +17734,24 @@ "dev": true }, "web3": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.2.tgz", - "integrity": "sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.0.tgz", + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", "dev": true, "requires": { - "web3-bzz": "1.8.2", - "web3-core": "1.8.2", - "web3-eth": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-shh": "1.8.2", - "web3-utils": "1.8.2" + "web3-bzz": "1.10.0", + "web3-core": "1.10.0", + "web3-eth": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-shh": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-bzz": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.2.tgz", - "integrity": "sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.0.tgz", + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", "dev": true, "requires": { "@types/node": "^12.12.6", @@ -18633,80 +17760,80 @@ } }, "web3-core": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.2.tgz", - "integrity": "sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.0.tgz", + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", "dev": true, "requires": { - "@types/bn.js": "^5.1.0", + "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-requestmanager": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-requestmanager": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-core-method": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.2.tgz", - "integrity": "sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.0.tgz", + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", "dev": true, "requires": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-utils": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-core-requestmanager": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz", - "integrity": "sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz", + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", "dev": true, "requires": { "util": "^0.12.5", - "web3-core-helpers": "1.8.2", - "web3-providers-http": "1.8.2", - "web3-providers-ipc": "1.8.2", - "web3-providers-ws": "1.8.2" + "web3-core-helpers": "1.10.0", + "web3-providers-http": "1.10.0", + "web3-providers-ipc": "1.10.0", + "web3-providers-ws": "1.10.0" } }, "web3-core-subscriptions": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz", - "integrity": "sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz", + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" } }, "web3-eth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.2.tgz", - "integrity": "sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.0.tgz", + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", "dev": true, "requires": { - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-accounts": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-eth-ens": "1.8.2", - "web3-eth-iban": "1.8.2", - "web3-eth-personal": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-accounts": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-eth-ens": "1.10.0", + "web3-eth-iban": "1.10.0", + "web3-eth-personal": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-eth-accounts": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz", - "integrity": "sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz", + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", "dev": true, "requires": { "@ethereumjs/common": "2.5.0", @@ -18715,10 +17842,10 @@ "ethereumjs-util": "^7.1.5", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" }, "dependencies": { "scrypt-js": { @@ -18728,119 +17855,119 @@ "dev": true }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true } } }, "web3-eth-contract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz", - "integrity": "sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz", + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", "dev": true, "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-utils": "1.8.2" + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-eth-ens": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz", - "integrity": "sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz", + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", "dev": true, "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-promievent": "1.8.2", - "web3-eth-abi": "1.8.2", - "web3-eth-contract": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-promievent": "1.10.0", + "web3-eth-abi": "1.10.0", + "web3-eth-contract": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-eth-personal": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz", - "integrity": "sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz", + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", "dev": true, "requires": { "@types/node": "^12.12.6", - "web3-core": "1.8.2", - "web3-core-helpers": "1.8.2", - "web3-core-method": "1.8.2", - "web3-net": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-helpers": "1.10.0", + "web3-core-method": "1.10.0", + "web3-net": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-net": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.2.tgz", - "integrity": "sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.0.tgz", + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", "dev": true, "requires": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-utils": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-utils": "1.10.0" } }, "web3-providers-http": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.2.tgz", - "integrity": "sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.0.tgz", + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", "dev": true, "requires": { "abortcontroller-polyfill": "^1.7.3", "cross-fetch": "^3.1.4", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" } }, "web3-providers-ipc": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz", - "integrity": "sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz", + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", "dev": true, "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.8.2" + "web3-core-helpers": "1.10.0" } }, "web3-providers-ws": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz", - "integrity": "sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz", + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.2", + "web3-core-helpers": "1.10.0", "websocket": "^1.0.32" } }, "web3-shh": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.2.tgz", - "integrity": "sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.0.tgz", + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", "dev": true, "requires": { - "web3-core": "1.8.2", - "web3-core-method": "1.8.2", - "web3-core-subscriptions": "1.8.2", - "web3-net": "1.8.2" + "web3-core": "1.10.0", + "web3-core-method": "1.10.0", + "web3-core-subscriptions": "1.10.0", + "web3-net": "1.10.0" } }, "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "requires": { "bn.js": "^5.2.1", @@ -19706,13 +18833,25 @@ } }, "@zilliqa-js/core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@zilliqa-js/core/-/core-3.3.4.tgz", - "integrity": "sha512-5bfXrhWUYY7wtBvGA+sLGVZvTpZOavr8KbZgdODpxXnDPLNjUe6Qoy36SkSIIU4TrLk9DMmY435RWjFEANkt0Q==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@zilliqa-js/core/-/core-3.5.0.tgz", + "integrity": "sha512-sc3RaF7W4bwnLrOffuVhzmHGmXcfLGnCHxVkhJRNNkGzgjwjV9EhumtbNLinDTosvmaZY68mvSLlPkyyYEP1Yg==", "requires": { - "cross-fetch": "2.2.5", + "buffer": "^6.0.3", + "cross-fetch": "2.2.6", "mitt": "^1.1.3", "tslib": "2.3.1" + }, + "dependencies": { + "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" + } + } } }, "@zilliqa-js/crypto": { @@ -19993,16 +19132,6 @@ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -20021,19 +19150,6 @@ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, - "array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -20130,13 +19246,14 @@ "dev": true }, "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dev": true, "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "balanced-match": { @@ -20155,8 +19272,7 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -20398,20 +19514,20 @@ } }, "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" } }, "bs58": { @@ -20472,15 +19588,6 @@ "node-gyp-build": "^4.3.0" } }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -21182,12 +20289,12 @@ "dev": true }, "cross-fetch": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz", - "integrity": "sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", "requires": { - "node-fetch": "2.6.1", - "whatwg-fetch": "2.0.4" + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" } }, "cross-spawn": { @@ -21358,16 +20465,6 @@ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -21488,14 +20585,14 @@ } }, "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "requires": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" + "domhandler": "^5.0.3" } }, "dot-case": { @@ -21519,1057 +20616,569 @@ "requires": { "browserify-aes": "^1.0.6", "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" - } - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "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 - }, - "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 - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - } - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "dependencies": { - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - } - } - }, - "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-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "create-hmac": "^1.1.4" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - }, - "dependencies": { - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "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" - } - } + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", - "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", - "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 + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.38.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "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" - } - }, - "supports-color": { - "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" - } + "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==" } } }, - "eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", - "dev": true, - "requires": {} - }, - "eslint-plugin-mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", - "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", - "dev": true, - "requires": { - "eslint-utils": "^3.0.0", - "rambda": "^7.1.0" - } + "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 }, - "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } + "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 }, - "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "once": "^1.4.0" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { - "eslint-visitor-keys": "^2.0.0" + "ansi-colors": "^4.1.1" }, "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==", + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true } } }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "estraverse": "^5.1.0" + "is-arrayish": "^0.2.1" } }, - "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, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "requires": { - "estraverse": "^5.2.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" } }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { + "es6-iterator": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, - "eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", - "dev": true, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", - "dev": true - } + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", - "dev": true, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "requires": { - "@ethersproject/abi": "^5.0.0-beta.146", - "@solidity-parser/parser": "^0.14.0", - "cli-table3": "^0.5.0", - "colors": "1.4.0", - "ethereum-cryptography": "^1.0.3", - "ethers": "^4.0.40", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.14", - "markdown-table": "^1.1.3", - "mocha": "^7.1.1", - "req-cwd": "^2.0.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "sha1": "^1.1.1", - "sync-request": "^6.0.0" - }, - "dependencies": { - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "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" - } - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", "dev": true }, - "ethereum-cryptography": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", - "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", - "dev": true, - "requires": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "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" - } - }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "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 }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "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": { - "minimist": "^1.2.5" + "prelude-ls": "~1.1.2" } + } + } + }, + "eslint": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.38.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "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": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "color-convert": "^2.0.1" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "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==", + "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": { - "p-limit": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "color-convert": { + "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": { - "picomatch": "^2.0.4" + "color-name": "~1.1.4" } }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true - }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", + "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 }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "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": { - "ansi-regex": "^4.1.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "has-flag": { + "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": { + "locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "p-locate": "^5.0.0" } }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "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": { - "isexe": "^2.0.0" + "yocto-queue": "^0.1.0" } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "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": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "p-limit": "^3.0.2" } }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "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": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "ansi-regex": "^5.0.1" } }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "supports-color": { + "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" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "requires": {} + }, + "eslint-plugin-mocha": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", + "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "rambda": "^7.1.0" + } + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true + }, + "espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "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 + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dev": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + } + } + }, + "eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "requires": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "dependencies": { + "axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" } } } @@ -23131,9 +21740,9 @@ "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==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true }, "for-each": { @@ -23230,39 +21839,21 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, "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==" }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { @@ -23288,16 +21879,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -23406,15 +21987,6 @@ "type-fest": "^0.20.2" } }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, "globby": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", @@ -23489,12 +22061,6 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -23726,9 +22292,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -23767,33 +22333,12 @@ "function-bind": "^1.1.1" } }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -23982,9 +22527,9 @@ } }, "http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dev": true, "requires": { "quick-lru": "^5.1.1", @@ -24034,8 +22579,7 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { "version": "5.2.4", @@ -24091,17 +22635,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -24139,32 +22672,12 @@ "has-tostringtag": "^1.0.0" } }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -24174,16 +22687,6 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", @@ -24196,15 +22699,6 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -24256,27 +22750,12 @@ "lower-case": "^1.1.0" } }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -24294,49 +22773,12 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, "is-typed-array": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", @@ -24376,15 +22818,6 @@ "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -25092,6 +23525,12 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, + "micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "dev": true + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -25584,29 +24023,14 @@ "lodash": "^4.17.21" } }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "whatwg-url": "^5.0.0" } }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, "node-gyp-build": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", @@ -25640,9 +24064,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -25727,36 +24151,6 @@ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", - "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, "obliterator": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", @@ -26110,9 +24504,9 @@ } }, "protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -26139,6 +24533,12 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -26373,17 +24773,6 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, "req-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", @@ -26463,26 +24852,6 @@ } } }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -26494,12 +24863,6 @@ "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -26669,17 +25032,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -26802,9 +25154,9 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "send": { @@ -27201,9 +25553,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "string-width": { @@ -27329,9 +25681,9 @@ } }, "semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -27467,18 +25819,6 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -27523,39 +25863,6 @@ } } }, - "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -28013,8 +26320,7 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "ts-command-line-args": { "version": "2.5.0", @@ -28224,17 +26530,6 @@ } } }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -28274,25 +26569,13 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, "undici": { - "version": "5.21.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.2.tgz", - "integrity": "sha512-f6pTQ9RF4DQtwoWSaC42P/NKlUjvezVvd9r155ohqkwFNRyBKM3f3pcty3ouusefNRyM25XhIQEbeQ46sZDJfQ==", + "version": "5.28.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", + "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", "dev": true, "requires": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" } }, "universalify": { @@ -28439,24 +26722,24 @@ } }, "web3": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.9.0.tgz", - "integrity": "sha512-E9IvVy/d2ozfQQsCiV+zh/LmlZGv9fQxI0UedDVjm87yOKf4AYbBNEn1iWtHveiGzAk2CEMZMUzAZzaQNSSYog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.4.tgz", + "integrity": "sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==", "dev": true, "requires": { - "web3-bzz": "1.9.0", - "web3-core": "1.9.0", - "web3-eth": "1.9.0", - "web3-eth-personal": "1.9.0", - "web3-net": "1.9.0", - "web3-shh": "1.9.0", - "web3-utils": "1.9.0" + "web3-bzz": "1.10.4", + "web3-core": "1.10.4", + "web3-eth": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-shh": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-bzz": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.9.0.tgz", - "integrity": "sha512-9Zli9dikX8GdHwBb5/WPzpSVuy3EWMKY3P4EokCQra31fD7DLizqAAaTUsFwnK7xYkw5ogpHgelw9uKHHzNajg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.4.tgz", + "integrity": "sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==", "dev": true, "requires": { "@types/node": "^12.12.6", @@ -28473,18 +26756,18 @@ } }, "web3-core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.9.0.tgz", - "integrity": "sha512-DZ+TPmq/ZLlx4LSVzFgrHCP/QFpKDbGWO4HoquZSdu24cjk5SZ+FEU1SZB2OaK3/bgBh+25mRbmv8y56ysUu1w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.4.tgz", + "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", "dev": true, "requires": { "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-requestmanager": "1.9.0", - "web3-utils": "1.9.0" + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-requestmanager": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "@types/node": { @@ -28494,47 +26777,47 @@ "dev": true }, "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true }, "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-core-helpers": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz", - "integrity": "sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz", + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", "dev": true, "requires": { - "web3-eth-iban": "1.8.2", - "web3-utils": "1.8.2" + "web3-eth-iban": "1.10.0", + "web3-utils": "1.10.0" }, "dependencies": { "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "requires": { "bn.js": "^5.2.1", @@ -28549,191 +26832,191 @@ } }, "web3-core-method": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.9.0.tgz", - "integrity": "sha512-sswbNsY2xRBBhGeaLt9c/eDc+0yDDhi6keUBAkgIRa9ueSx/VKzUY9HMqiV6bXDcGT2fJyejq74FfEB4lc/+/w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.4.tgz", + "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", "dev": true, "requires": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.9.0", - "web3-core-promievent": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-utils": "1.9.0" + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-core-promievent": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.9.0.tgz", - "integrity": "sha512-PHG1Mn23IGwMZhnPDN8dETKypqsFbHfiyRqP+XsVMPmTHkVfzDQTCBU/c2r6hUktBDoGKut5xZQpGfhFk71KbQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "dev": true, "requires": { "eventemitter3": "4.0.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-core-promievent": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz", - "integrity": "sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz", + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", "dev": true, "requires": { "eventemitter3": "4.0.4" } }, "web3-core-requestmanager": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.9.0.tgz", - "integrity": "sha512-hcJ5PCtTIJpj+8qWxoseqlCovDo94JJjTX7dZOLXgwp8ah7E3WRYozhGyZocerx+KebKyg1mCQIhkDpMwjfo9Q==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.4.tgz", + "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", "dev": true, "requires": { "util": "^0.12.5", - "web3-core-helpers": "1.9.0", - "web3-providers-http": "1.9.0", - "web3-providers-ipc": "1.9.0", - "web3-providers-ws": "1.9.0" + "web3-core-helpers": "1.10.4", + "web3-providers-http": "1.10.4", + "web3-providers-ipc": "1.10.4", + "web3-providers-ws": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-core-subscriptions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.9.0.tgz", - "integrity": "sha512-MaIo29yz7hTV8X8bioclPDbHFOVuHmnbMv+D3PDH12ceJFJAXGyW8GL5KU1DYyWIj4TD1HM4WknyVA/YWBiiLA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.4.tgz", + "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.9.0" + "web3-core-helpers": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-eth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.9.0.tgz", - "integrity": "sha512-c5gSWk9bLNr6VPATHmZ1n7LTIefIZQnJMzfnvkoBcIFGKJbGmsuRhv6lEXsKdAO/FlqYnSbaw3fOq1fVFiIOFQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.4.tgz", + "integrity": "sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==", "dev": true, "requires": { - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-eth-abi": "1.9.0", - "web3-eth-accounts": "1.9.0", - "web3-eth-contract": "1.9.0", - "web3-eth-ens": "1.9.0", - "web3-eth-iban": "1.9.0", - "web3-eth-personal": "1.9.0", - "web3-net": "1.9.0", - "web3-utils": "1.9.0" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-accounts": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-eth-ens": "1.10.4", + "web3-eth-iban": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-abi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.9.0.tgz", - "integrity": "sha512-0BLQ3FKMrzJkA930jOX3fMaybAyubk06HChclLpiR0NWmgWXm1tmBrJdkyRy2ZTZpmfuZc9xTFRfl0yZID1voA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", "dev": true, "requires": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-eth-abi": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz", - "integrity": "sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz", + "integrity": "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==", "dev": true, "requires": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.2" + "web3-utils": "1.10.0" }, "dependencies": { "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "requires": { "bn.js": "^5.2.1", @@ -28748,21 +27031,21 @@ } }, "web3-eth-accounts": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.9.0.tgz", - "integrity": "sha512-VeIZVevmnSll0AC1k5F/y398ZE89d1SRuYk8IewLUhL/tVAsFEsjl2SGgm0+aDcHmgPrkW+qsCJ+C7rWg/N4ZA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.4.tgz", + "integrity": "sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==", "dev": true, "requires": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", + "@ethereumjs/common": "2.6.5", + "@ethereumjs/tx": "3.5.2", + "@ethereumjs/util": "^8.1.0", "eth-lib": "0.2.8", - "ethereumjs-util": "^7.1.5", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-utils": "1.9.0" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "bn.js": { @@ -28783,29 +27066,29 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true }, "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" }, "dependencies": { "bn.js": { @@ -28819,133 +27102,133 @@ } }, "web3-eth-contract": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.9.0.tgz", - "integrity": "sha512-+j26hpSaEtAdUed0TN5rnc+YZOcjPxMjFX4ZBKatvFkImdbVv/tzTvcHlltubSpgb2ZLyZ89lSL6phKYwd2zNQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.4.tgz", + "integrity": "sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==", "dev": true, "requires": { "@types/bn.js": "^5.1.1", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-promievent": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-eth-abi": "1.9.0", - "web3-utils": "1.9.0" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-core-promievent": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.9.0.tgz", - "integrity": "sha512-PHG1Mn23IGwMZhnPDN8dETKypqsFbHfiyRqP+XsVMPmTHkVfzDQTCBU/c2r6hUktBDoGKut5xZQpGfhFk71KbQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "dev": true, "requires": { "eventemitter3": "4.0.4" } }, "web3-eth-abi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.9.0.tgz", - "integrity": "sha512-0BLQ3FKMrzJkA930jOX3fMaybAyubk06HChclLpiR0NWmgWXm1tmBrJdkyRy2ZTZpmfuZc9xTFRfl0yZID1voA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", "dev": true, "requires": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-eth-ens": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.9.0.tgz", - "integrity": "sha512-LOJZeN+AGe9arhuExnrPPFYQr4WSxXEkpvYIlst/joOEUNLDwfndHnJIK6PI5mXaYSROBtTx6erv+HupzGo7vA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.4.tgz", + "integrity": "sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==", "dev": true, "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-promievent": "1.9.0", - "web3-eth-abi": "1.9.0", - "web3-eth-contract": "1.9.0", - "web3-utils": "1.9.0" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-core-promievent": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.9.0.tgz", - "integrity": "sha512-PHG1Mn23IGwMZhnPDN8dETKypqsFbHfiyRqP+XsVMPmTHkVfzDQTCBU/c2r6hUktBDoGKut5xZQpGfhFk71KbQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "dev": true, "requires": { "eventemitter3": "4.0.4" } }, "web3-eth-abi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.9.0.tgz", - "integrity": "sha512-0BLQ3FKMrzJkA930jOX3fMaybAyubk06HChclLpiR0NWmgWXm1tmBrJdkyRy2ZTZpmfuZc9xTFRfl0yZID1voA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", "dev": true, "requires": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-eth-iban": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz", - "integrity": "sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz", + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.8.2" + "web3-utils": "1.10.0" }, "dependencies": { "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.0.tgz", + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", "dev": true, "requires": { "bn.js": "^5.2.1", @@ -28960,17 +27243,17 @@ } }, "web3-eth-personal": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.9.0.tgz", - "integrity": "sha512-r9Ldo/luBqJlv1vCUEQnUS+C3a3ZdbYxVHyfDkj6RWMyCqqo8JE41HWE+pfa0RmB1xnGL2g8TbYcHcqItck/qg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.4.tgz", + "integrity": "sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==", "dev": true, "requires": { "@types/node": "^12.12.6", - "web3-core": "1.9.0", - "web3-core-helpers": "1.9.0", - "web3-core-method": "1.9.0", - "web3-net": "1.9.0", - "web3-utils": "1.9.0" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "@types/node": { @@ -28980,187 +27263,219 @@ "dev": true }, "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-net": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.9.0.tgz", - "integrity": "sha512-L+fDZFgrLM5Y15aonl2q6L+RvfaImAngmC0Jv45hV2FJ5IfRT0/2ob9etxZmvEBWvOpbqSvghfOhJIT3XZ37Pg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.4.tgz", + "integrity": "sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==", "dev": true, "requires": { - "web3-core": "1.9.0", - "web3-core-method": "1.9.0", - "web3-utils": "1.9.0" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-providers-http": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.9.0.tgz", - "integrity": "sha512-5+dMNDAE0rRFz6SJpfnBqlVi2J5bB/Ivr2SanMt2YUrkxW5t8betZbzVwRkTbwtUvkqgj3xeUQzqpOttiv+IqQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.4.tgz", + "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", "dev": true, "requires": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", + "abortcontroller-polyfill": "^1.7.5", + "cross-fetch": "^4.0.0", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.9.0" + "web3-core-helpers": "1.10.4" }, "dependencies": { "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, "requires": { - "whatwg-url": "^5.0.0" + "node-fetch": "^2.6.12" } }, "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-providers-ipc": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.9.0.tgz", - "integrity": "sha512-cPXU93Du40HCylvjaa5x62DbnGqH+86HpK/+kMcFIzF6sDUBhKpag2tSbYhGbj7GMpfkmDTUiiMLdWnFV6+uBA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.4.tgz", + "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", "dev": true, "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.9.0" + "web3-core-helpers": "1.10.4" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-providers-ws": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.9.0.tgz", - "integrity": "sha512-JRVsnQZ7j2k1a2yzBNHe39xqk1ijOv01dfIBFw52VeEkSRzvrOcsPIM/ttSyBuJqt70ntMxXY0ekCrqfleKH/w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.4.tgz", + "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", "dev": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.9.0", + "web3-core-helpers": "1.10.4", "websocket": "^1.0.32" }, "dependencies": { "web3-core-helpers": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.9.0.tgz", - "integrity": "sha512-NeJzylAp9Yj9xAt2uTT+kyug3X0DLnfBdnAcGZuY6HhoNPDIfQRA9CkJjLngVRlGTLZGjNp9x9eR+RyZQgUlXg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, "requires": { - "web3-eth-iban": "1.9.0", - "web3-utils": "1.9.0" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.9.0.tgz", - "integrity": "sha512-jPAm77PuEs1kE/UrrBFJdPD2PN42pwfXA0gFuuw35bZezhskYML9W4QCxcqnUtceyEA4FUn7K2qTMuCk+23fog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.9.0" + "web3-utils": "1.10.4" } } } }, "web3-shh": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.9.0.tgz", - "integrity": "sha512-bIBZlralgz4ICCrwkefB2nPPJWfx28NuHIpjB7d9ADKynElubQuqudYhKtSEkKXACuME/BJm0pIFJcJs/gDnMg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.4.tgz", + "integrity": "sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==", "dev": true, "requires": { - "web3-core": "1.9.0", - "web3-core-method": "1.9.0", - "web3-core-subscriptions": "1.9.0", - "web3-net": "1.9.0" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-net": "1.10.4" } }, "web3-utils": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.9.0.tgz", - "integrity": "sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", "dev": true, "requires": { + "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", + "ethereum-cryptography": "^2.1.2", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", "utf8": "3.0.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true + }, + "@scure/bip32": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", + "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "dev": true, + "requires": { + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "@scure/bip39": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", + "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "dev": true, + "requires": { + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.4" + } + }, + "ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "dev": true, + "requires": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" + } + } } }, "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==", - "dev": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "websocket": { "version": "1.0.34", @@ -29199,7 +27514,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -29214,25 +27528,6 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, "which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -29247,15 +27542,6 @@ "is-typed-array": "^1.1.10" } }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", @@ -29263,9 +27549,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wordwrap": { @@ -29450,9 +27736,9 @@ "dev": true }, "yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true }, "yargs": { diff --git a/contracts/experimental/burn_zrc2/package.json b/contracts/audited/burn_zrc2/package.json similarity index 98% rename from contracts/experimental/burn_zrc2/package.json rename to contracts/audited/burn_zrc2/package.json index cf9602e63..f88e28383 100644 --- a/contracts/experimental/burn_zrc2/package.json +++ b/contracts/audited/burn_zrc2/package.json @@ -26,7 +26,7 @@ "@types/cli-color": "^2.0.2", "@types/mocha": "^9.1.1", "@types/yargs": "^17.0.17", - "axios": "^0.27.2", + "axios": "^1.6.0", "chai": "^4.3.6", "chai-subset": "^1.6.0", "eslint": "^8.23.1", diff --git a/contracts/experimental/burn_zrc2/test/BurnTokensAnyZRC2.test.ts b/contracts/audited/burn_zrc2/test/BurnTokensAnyZRC2.test.ts similarity index 91% rename from contracts/experimental/burn_zrc2/test/BurnTokensAnyZRC2.test.ts rename to contracts/audited/burn_zrc2/test/BurnTokensAnyZRC2.test.ts index 85b85f938..046ebc5ac 100644 --- a/contracts/experimental/burn_zrc2/test/BurnTokensAnyZRC2.test.ts +++ b/contracts/audited/burn_zrc2/test/BurnTokensAnyZRC2.test.ts @@ -147,12 +147,42 @@ describe("BurnAnyTokenZRC2Test", () => { it("Should be possible to undo your burn before the timeout expires", async () => { setAccount(0); await zrc2contract.Transfer(useraddress, 100); - await burncontract.ChangeBurnCancelBlocks(20); - + let burnCancelTx = await burncontract.ChangeBurnCancelBlocks(20); + expect(burnCancelTx).to.eventLogWithParams("ChangeBurnCancelBlocks", { + type: "Uint32", + vname: "new_cancel_blocks", + value: 20, + }); setAccount(1); await burncontract.UpdateBurnAllowance(zrc2contract.address, 100); await zrc2contract.Transfer(burncontract.address!, 100); - await burncontract.CancelBurn(zrc2contract.address); + let burnTx = await burncontract.CancelBurn(zrc2contract.address); + expect(burnTx).to.eventLogWithParams( + "CancelBurn", + { + type: "ByStr20", + value: zrc2contract.address.toLowerCase(), + vname: "token", + }, + { + type: "ByStr20", + value: hre.zilliqa.getAccounts()[1].address.toLowerCase(), + vname: "sender", + }, + { + type: "Uint128", + vname: "token_amount", + value: { + _hex: "0x64", + _isBigNumber: true, + }, + }, + { + type: "Bool", + vname: "success", + value: true, + } + ); const pending_burn = await burncontract.pending_burn(); const balances = await zrc2contract.balances(); @@ -200,7 +230,35 @@ describe("BurnAnyTokenZRC2Test", () => { await burncontract.UpdateBurnAllowance(zrc2contract.address, 100); await zrc2contract.Transfer(burncontract.address!, 100); - await burncontract.CancelBurn(zrc2contract.address); + { + let burnTx = await burncontract.CancelBurn(zrc2contract.address); + expect(burnTx).to.eventLogWithParams( + "CancelBurn", + { + type: "ByStr20", + value: zrc2contract.address.toLowerCase(), + vname: "token", + }, + { + type: "ByStr20", + value: hre.zilliqa.getAccounts()[1].address.toLowerCase(), + vname: "sender", + }, + { + type: "Uint128", + vname: "token_amount", + value: { + _hex: "0x00", + _isBigNumber: true, + }, + }, + { + type: "Bool", + vname: "success", + value: false, + } + ); + } const pending_burn = await burncontract.pending_burn(); const balances = await zrc2contract.balances(); diff --git a/contracts/experimental/burn_zrc2/tsconfig.json b/contracts/audited/burn_zrc2/tsconfig.json similarity index 100% rename from contracts/experimental/burn_zrc2/tsconfig.json rename to contracts/audited/burn_zrc2/tsconfig.json diff --git a/contracts/experimental/ERC20ProxyForZRC2/.env.example b/contracts/experimental/ERC20ProxyForZRC2/.env.example new file mode 100644 index 000000000..9268c1803 --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/.env.example @@ -0,0 +1 @@ +PRIVATE-KEY= diff --git a/contracts/experimental/ERC20ProxyForZRC2/.gitignore b/contracts/experimental/ERC20ProxyForZRC2/.gitignore new file mode 100644 index 000000000..9722dbfaf --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/.gitignore @@ -0,0 +1,14 @@ +node_modules +.env + +# Hardhat files +/cache +/artifacts + +# TypeChain files +/typechain +/typechain-types + +# solidity-coverage files +/coverage +/coverage.json diff --git a/contracts/experimental/ERC20ProxyForZRC2/README.md b/contracts/experimental/ERC20ProxyForZRC2/README.md new file mode 100644 index 000000000..9f7f58f5f --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/README.md @@ -0,0 +1,21 @@ +# ERC20ProxyForZRC2 Contract + +This is the contract to deploy a ERC20Proxy for a ZRC2 contract living in the scilla environment. It leverages the precompiles available in Zilliqa to interoperate between the 2 environments. + +Make sure to specify the `zrc2_address` on the deployment file for the ERC20Proxy to be correctly deployed. This allows EVM to execute all desired functions on the ZRC2 as if it were a ERC20. Implementing IERC20 means that all existing DApps and wallets should be compatible with this token. + +Make sure to also copy `.env.example` into `.env` and fill in the necessarily variables. Also ensure that `pnpm install` to install any necessary dependencies + +The following are the deployment commands: + +- Zilliqa Mainnet + + ```shell + pnpm exec hardhat run scripts/deploy.ts --network zq + ``` + +- Zilliqa Testnet + + ```shell + pnpm exec hardhat run scripts/deploy.ts --network zq-testnet + ``` diff --git a/contracts/experimental/ERC20ProxyForZRC2/contracts/ScillaConnector.sol b/contracts/experimental/ERC20ProxyForZRC2/contracts/ScillaConnector.sol new file mode 100644 index 000000000..63f86ca1b --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/contracts/ScillaConnector.sol @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.20; + +library ScillaConnector { + uint private constant CALL_SCILLA_WITH_THE_SAME_SENDER = 1; + uint private constant SCILLA_CALL_PRECOMPILE_ADDRESS = 0x5a494c53; + uint private constant SCILLA_STATE_READ_PRECOMPILE_ADDRESS = 0x5a494c92; + + /** + * @dev Calls a ZRC2 contract function with two arguments + * @param target The address of the ZRC2 contract + * @param tran_name The name of the function to call + * @param arg1 The first argument to the function + * @param arg2 The second argument to the function + */ + function call( + address target, + string memory tran_name, + address arg1, + uint128 arg2 + ) internal { + bytes memory encodedArgs = abi.encode( + target, + tran_name, + CALL_SCILLA_WITH_THE_SAME_SENDER, + arg1, + arg2 + ); + uint256 argsLength = encodedArgs.length; + + assembly { + let alwaysSuccessForThisPrecompile := call( + 21000, + SCILLA_CALL_PRECOMPILE_ADDRESS, + 0, + add(encodedArgs, 0x20), + argsLength, + 0x20, + 0 + ) + } + } + + /** + * @dev Calls a ZRC2 contract function with three arguments + * @param target The address of the ZRC2 contract + * @param tran_name The name of the function to call on the ZRC2 contract + * @param arg1 The first argument to the function + * @param arg2 The second argument to the function + * @param arg3 The third argument to the function + */ + function call( + address target, + string memory tran_name, + address arg1, + address arg2, + uint128 arg3 + ) internal { + bytes memory encodedArgs = abi.encode( + target, + tran_name, + CALL_SCILLA_WITH_THE_SAME_SENDER, + arg1, + arg2, + arg3 + ); + uint256 argsLength = encodedArgs.length; + + assembly { + let alwaysSuccessForThisPrecompile := call( + 21000, + SCILLA_CALL_PRECOMPILE_ADDRESS, + 0, + add(encodedArgs, 0x20), + argsLength, + 0x20, + 0 + ) + } + } + + /** + * @dev Reads a 128 bit integer from a ZRC2 contract + * @param target The address of the ZRC2 contract + * @param variable_name The name of the variable to read from the ZRC2 contract + * @return The value of the variable + */ + function readUint128( + address target, + string memory variable_name + ) internal view returns (uint128) { + bytes memory encodedArgs = abi.encode(target, variable_name); + uint256 argsLength = encodedArgs.length; + bytes memory output = new bytes(36); + + assembly { + let alwaysSuccessForThisPrecompile := staticcall( + 21000, + SCILLA_STATE_READ_PRECOMPILE_ADDRESS, + add(encodedArgs, 0x20), + argsLength, + add(output, 0x20), + 32 + ) + } + + return abi.decode(output, (uint128)); + } + + /** + * @dev Reads a 32 bit integer from a ZRC2 contract + * @param target The address of the ZRC2 contract + * @param variable_name The name of the variable to read from the ZRC2 contract + * @return The value of the variable + */ + function readUint32( + address target, + string memory variable_name + ) internal view returns (uint32) { + bytes memory encodedArgs = abi.encode(target, variable_name); + uint256 argsLength = encodedArgs.length; + bytes memory output = new bytes(36); + + assembly { + let alwaysSuccessForThisPrecompile := staticcall( + 21000, + SCILLA_STATE_READ_PRECOMPILE_ADDRESS, + add(encodedArgs, 0x20), + argsLength, + add(output, 0x20), + 32 + ) + } + + return abi.decode(output, (uint32)); + } + + /** + * @dev Reads a string from a ZRC2 contract + * @param target The address of the ZRC2 contract + * @param variable_name The name of the variable to read from the ZRC2 contract + * @return retVal The value of the variable + */ + function readString( + address target, + string memory variable_name + ) internal view returns (string memory retVal) { + bytes memory encodedArgs = abi.encode(target, variable_name); + uint256 argsLength = encodedArgs.length; + bool success; + bytes memory output = new bytes(128); + uint256 output_len = output.length - 4; + assembly { + success := staticcall( + 21000, + SCILLA_STATE_READ_PRECOMPILE_ADDRESS, + add(encodedArgs, 0x20), + argsLength, + add(output, 0x20), + output_len + ) + } + require(success); + + (retVal) = abi.decode(output, (string)); + return retVal; + } + + /** + * @dev Reads a 128 bit integer from a map in a ZRC2 contract + * @param variable_name The name of the map in the ZRC2 contract + * @param addressMapKey The key to the map + * @return The value associated with the key in the map + */ + function readMapUint128( + address target, + string memory variable_name, + address addressMapKey + ) internal view returns (uint128) { + bytes memory encodedArgs = abi.encode( + target, + variable_name, + addressMapKey + ); + uint256 argsLength = encodedArgs.length; + bytes memory output = new bytes(36); + + assembly { + let alwaysSuccessForThisPrecompile := staticcall( + 21000, + SCILLA_STATE_READ_PRECOMPILE_ADDRESS, + add(encodedArgs, 0x20), + argsLength, + add(output, 0x20), + 32 + ) + } + + return abi.decode(output, (uint128)); + } + + /** + * @dev Reads a 128 bit integer from a nested map in a ZRC2 contract + * @param target The address of the ZRC2 contract + * @param variable_name The name of the map in the ZRC2 contract + * @param firstMapKey The first key to the map + * @param secondMapKey The second key to the map + * @return The value associated with the keys in the map + */ + function readNestedMapUint128( + address target, + string memory variable_name, + address firstMapKey, + address secondMapKey + ) internal view returns (uint128) { + bytes memory encodedArgs = abi.encode( + target, + variable_name, + firstMapKey, + secondMapKey + ); + uint256 argsLength = encodedArgs.length; + bytes memory output = new bytes(36); + + assembly { + let alwaysSuccessForThisPrecompile := staticcall( + 21000, + SCILLA_STATE_READ_PRECOMPILE_ADDRESS, + add(encodedArgs, 0x20), + argsLength, + add(output, 0x20), + 32 + ) + } + + return abi.decode(output, (uint128)); + } +} diff --git a/contracts/experimental/ERC20ProxyForZRC2/contracts/ZRC2ProxyForZRC2.sol b/contracts/experimental/ERC20ProxyForZRC2/contracts/ZRC2ProxyForZRC2.sol new file mode 100644 index 000000000..4332aeb78 --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/contracts/ZRC2ProxyForZRC2.sol @@ -0,0 +1,116 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.20; + +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import {ScillaConnector} from "./ScillaConnector.sol"; + +contract ZRC2ProxyForZRC2 is IERC20 { + using ScillaConnector for address; + using SafeCast for uint256; + + address public zrc2_proxy; + + // Additional variables useful for wallets + uint8 public decimals; + string public symbol; + string public name; + + /** + * @notice Constructs a new ZRC2Proxy contract + * @param zrc2_address The address of the underlying ZRC2 contract + */ + constructor(address zrc2_address) { + zrc2_proxy = zrc2_address; + + symbol = zrc2_proxy.readString("symbol"); + decimals = uint256(zrc2_proxy.readUint32("decimals")).toUint8(); + name = zrc2_proxy.readString("name"); + } + + /** + * @notice Get the total supply of tokens + * @return The total supply of tokens + */ + function totalSupply() external view returns (uint256) { + return zrc2_proxy.readUint128("total_supply"); + } + + /** + * @notice Get the token balance for a specific account + * @param tokenOwner The address of the account + * @return The balance of the account + */ + function balanceOf(address tokenOwner) external view returns (uint256) { + return zrc2_proxy.readMapUint128("balances", tokenOwner); + } + + /** + * @notice Transfer tokens to a specified address + * @param to The address to transfer to + * @param tokens The amount of tokens to transfer + * @return true if transfer was successful + */ + function transfer(address to, uint256 tokens) external returns (bool) { + zrc2_proxy.call("Transfer", to, tokens.toUint128()); + return true; + } + + /** + * @notice Transfer tokens from one address to another + * @param from The address to transfer from + * @param to The address to transfer to + * @param tokens The amount of tokens to transfer + * @return true if transfer was successful + */ + function transferFrom( + address from, + address to, + uint256 tokens + ) external returns (bool) { + zrc2_proxy.call("TransferFrom", from, to, tokens.toUint128()); + return true; + } + + /** + * @notice Check the amount of tokens that an owner has allowed a spender to use + * @param tokenOwner The address of the token owner + * @param spender The address of the spender + * @return The amount of tokens remaining for the spender + */ + function allowance( + address tokenOwner, + address spender + ) external view returns (uint256) { + return + zrc2_proxy.readNestedMapUint128("allowances", tokenOwner, spender); + } + + /** + * @notice Approve a spender to spend a certain amount of tokens + * @param spender The address of the spender + * @param new_allowance The new allowance for the spender + * @return true if approval was successful + */ + function approve( + address spender, + uint256 new_allowance + ) external returns (bool) { + uint256 current_allowance = this.allowance(msg.sender, spender); + + if (current_allowance >= new_allowance) { + zrc2_proxy.call( + "DecreaseAllowance", + spender, + (current_allowance - new_allowance).toUint128() + ); + } else { + zrc2_proxy.call( + "IncreaseAllowance", + spender, + (new_allowance - current_allowance).toUint128() + ); + } + return true; + } +} diff --git a/contracts/experimental/ERC20ProxyForZRC2/hardhat.config.ts b/contracts/experimental/ERC20ProxyForZRC2/hardhat.config.ts new file mode 100644 index 000000000..5b9ba3095 --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/hardhat.config.ts @@ -0,0 +1,23 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +import "dotenv/config"; + +if (!process.env.PRIVATE_KEY) { + throw new Error("PRIVATE_KEY not set"); +} + +const config: HardhatUserConfig = { + solidity: "0.8.20", + networks: { + "zq-testnet": { + url: "https://dev-api.zilliqa.com", + accounts: [process.env.PRIVATE_KEY ?? ""], + }, + zq: { + url: "https://api.zilliqa.com", + accounts: [process.env.PRIVATE_KEY ?? ""], + }, + }, +}; + +export default config; diff --git a/contracts/experimental/ERC20ProxyForZRC2/package.json b/contracts/experimental/ERC20ProxyForZRC2/package.json new file mode 100644 index 000000000..cd814c41f --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/package.json @@ -0,0 +1,37 @@ +{ + "name": "ERC20ProxyForZRC2", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "compile": "hardhat compile" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.2", + "@nomicfoundation/hardhat-ethers": "^3.0.5", + "@nomicfoundation/hardhat-network-helpers": "^1.0.9", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.1", + "@typechain/ethers-v6": "^0.5.1", + "@typechain/hardhat": "^9.1.0", + "@types/chai": "^4.3.10", + "@types/mocha": ">=10.0.4", + "@types/node": ">=20.9.0", + "chai": "^4.3.10", + "dotenv": "^16.4.1", + "ethers": "^6.8.1", + "hardhat": "^2.19.4", + "hardhat-gas-reporter": "^1.0.9", + "solidity-coverage": "^0.8.5", + "ts-node": ">=10.9.1", + "typechain": "^8.3.2", + "typescript": ">=5.2.2" + }, + "dependencies": { + "@openzeppelin/contracts": "^5.0.1" + } +} diff --git a/contracts/experimental/ERC20ProxyForZRC2/scripts/deploy.ts b/contracts/experimental/ERC20ProxyForZRC2/scripts/deploy.ts new file mode 100644 index 000000000..d6643eaa2 --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/scripts/deploy.ts @@ -0,0 +1,25 @@ +import { ethers } from "hardhat"; + +async function main() { + const zrc2Address: `0x${string}` = + "0x8b4939cc7988fdc11e30a2b7e9d26362d1cb1aa3"; + + const contract = await ethers.deployContract( + "ZRC2ProxyForZRC2", + [zrc2Address], + { + gasLimit: 1_000_000, + } + ); + + await contract.waitForDeployment(); + + console.log("ZRC2ProxyForZRC2 deployed to:", await contract.getAddress()); +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/contracts/experimental/ERC20ProxyForZRC2/tsconfig.json b/contracts/experimental/ERC20ProxyForZRC2/tsconfig.json new file mode 100644 index 000000000..574e785c7 --- /dev/null +++ b/contracts/experimental/ERC20ProxyForZRC2/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} diff --git a/contracts/reward_control/artifacts/scilla.cache b/contracts/reward_control/artifacts/scilla.cache new file mode 100644 index 000000000..a61bd9211 --- /dev/null +++ b/contracts/reward_control/artifacts/scilla.cache @@ -0,0 +1 @@ +{"contracts/scilla/rewards_params.scilla":{"hash":"1daa4976a20d0885f002dc0cc312bab6","path":"contracts/scilla/rewards_params.scilla","parsedContract":{"name":"RewardsParams","transitions":[{"type":"CompProc","name":"ThrowError","params":[{"typeJSON":{"ctor":"Error","argtypes":[]},"type":"Error","name":"err"}]},{"type":"CompProc","name":"IsAdmin","params":[{"name":"initiator","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"UpdateAdmin","params":[{"name":"admin","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"ClaimAdmin","params":[]},{"type":"CompTrans","name":"ChangeBaseReward","params":[{"name":"base_reward_val","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"ChangeLookupReward","params":[{"name":"lookup_reward_val","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"ChangeNodeReward","params":[{"name":"node_reward_val","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"ChangeCoinbaseReward","params":[{"name":"coinbase_reward_val","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"ChangeRewardEachMulInMillis","params":[{"name":"reward_in_millis","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"ChangeBaseRewardMulInMillis","params":[{"name":"reward_in_millis","typeJSON":"Uint32","type":"Uint32"}]}],"fields":[{"type":"ByStr20","name":"contractadmin"},{"typeJSON":{"ctor":"Option","argtypes":[{"name":"","typeJSON":"ByStr20","type":"ByStr20"}]},"type":"Option ByStr20","name":"stagingcontractadmin"},{"type":"Uint128","name":"coinbase_reward_per_ds"},{"type":"Uint32","name":"base_reward_in_percent"},{"type":"Uint32","name":"lookup_reward_in_percent"},{"type":"Uint32","name":"node_reward_in_percent"},{"type":"Uint32","name":"percent_precision"},{"type":"Uint32","name":"reward_each_mul_in_millis"},{"type":"Uint32","name":"base_reward_mul_in_millis"}],"constructorParams":[{"type":"ByStr20","name":"init_admin"}],"ctors":[{"typename":"Error","ctorname":"AdminValidationFailed","argtypes":[]},{"typename":"Error","ctorname":"StagingAdminNotExist","argtypes":[]},{"typename":"Error","ctorname":"StagingAdminValidationFailed","argtypes":[]}]}},"contracts/scilla/msw_rewards_param.scilla":{"hash":"c7d342c320ff66b88a2fdf534ae119cc","path":"contracts/scilla/msw_rewards_param.scilla","parsedContract":{"name":"MultiSigWalletRewardsParam","transitions":[{"type":"CompProc","name":"Throw","params":[{"typeJSON":{"ctor":"Error","argtypes":[]},"type":"Error","name":"err"}]},{"type":"CompProc","name":"AddSignature","params":[{"name":"transaction_id","typeJSON":"Uint32","type":"Uint32"},{"name":"signee","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompProc","name":"SubmitTransaction","params":[{"typeJSON":{"ctor":"Transaction","argtypes":[]},"type":"Transaction","name":"transaction"}]},{"type":"CompProc","name":"DeleteTransaction","params":[{"name":"transaction_id","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompProc","name":"ExecuteNativeTransaction","params":[{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"},{"name":"tag","typeJSON":"String","type":"String"}]},{"type":"CompProc","name":"ExecuteCustomTransaction","params":[{"name":"contract_address","typeJSON":"ByStr20","type":"ByStr20"},{"typeJSON":{"ctor":"MultiSigTransition","argtypes":[]},"type":"MultiSigTransition","name":"transaction"}]},{"type":"CompTrans","name":"SubmitNativeTransaction","params":[{"name":"recipient","typeJSON":"ByStr20","type":"ByStr20"},{"name":"amount","typeJSON":"Uint128","type":"Uint128"},{"name":"tag","typeJSON":"String","type":"String"}]},{"type":"CompProc","name":"SubmitCustomTransaction","params":[{"name":"contract_address","typeJSON":"ByStr20","type":"ByStr20"},{"typeJSON":{"ctor":"MultiSigTransition","argtypes":[]},"type":"MultiSigTransition","name":"transaction"}]},{"type":"CompTrans","name":"SignTransaction","params":[{"name":"transaction_id","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"RevokeSignature","params":[{"name":"transaction_id","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"ExecuteTransaction","params":[{"name":"transaction_id","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"SubmitCustomUpdateAdminTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"admin","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"SubmitCustomClaimAdminTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"}]},{"type":"CompTrans","name":"SubmitCustomChangeBaseRewardTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"base_reward_val","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"SubmitCustomChangeLookupRewardTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"lookup_reward_val","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"SubmitCustomChangeNodeRewardTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"node_reward_val","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"SubmitCustomChangeCoinbaseRewardTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"coinbase_reward_val","typeJSON":"Uint128","type":"Uint128"}]},{"type":"CompTrans","name":"SubmitCustomChangeRewardEachMulInMillisTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"reward_in_millis","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"SubmitCustomChangeBaseRewardMulInMillisTransaction","params":[{"name":"calleeContract","typeJSON":"ByStr20","type":"ByStr20"},{"name":"reward_in_millis","typeJSON":"Uint32","type":"Uint32"}]},{"type":"CompTrans","name":"AddFunds","params":[]}],"fields":[{"type":"Map","name":"owners"},{"type":"Uint32","name":"transaction_count"},{"type":"Map","name":"transactions"},{"type":"Map","name":"signatures"},{"type":"Map","name":"signature_counts"}],"constructorParams":[{"typeJSON":{"ctor":"List","argtypes":[{"name":"","typeJSON":"ByStr20","type":"ByStr20"}]},"type":"List ByStr20","name":"owner_list"},{"type":"Uint32","name":"num_of_required_signatures"}],"ctors":[{"typename":"MultiSigTransition","ctorname":"UpdateAdmin","argtypes":[{"name":"","typeJSON":"ByStr20","type":"ByStr20"}]},{"typename":"MultiSigTransition","ctorname":"ClaimAdmin","argtypes":[]},{"typename":"MultiSigTransition","ctorname":"ChangeBaseReward","argtypes":[{"name":"","typeJSON":"Uint32","type":"Uint32"}]},{"typename":"MultiSigTransition","ctorname":"ChangeLookupReward","argtypes":[{"name":"","typeJSON":"Uint32","type":"Uint32"}]},{"typename":"MultiSigTransition","ctorname":"ChangeNodeReward","argtypes":[{"name":"","typeJSON":"Uint32","type":"Uint32"}]},{"typename":"MultiSigTransition","ctorname":"ChangeCoinbaseReward","argtypes":[{"name":"","typeJSON":"Uint128","type":"Uint128"}]},{"typename":"MultiSigTransition","ctorname":"ChangeRewardEachMulInMillis","argtypes":[{"name":"","typeJSON":"Uint32","type":"Uint32"}]},{"typename":"MultiSigTransition","ctorname":"ChangeBaseRewardMulInMillis","argtypes":[{"name":"","typeJSON":"Uint32","type":"Uint32"}]},{"typename":"Transaction","ctorname":"NativeTransaction","argtypes":[{"name":"","typeJSON":"ByStr20","type":"ByStr20"},{"name":"","typeJSON":"Uint128","type":"Uint128"},{"name":"","typeJSON":"String","type":"String"}]},{"typename":"Transaction","ctorname":"CustomTransaction","argtypes":[{"name":"","typeJSON":"ByStr20","type":"ByStr20"},{"typeJSON":{"ctor":"MultiSigTransition","argtypes":[]},"type":"MultiSigTransition"}]},{"typename":"Error","ctorname":"NotAllowedToSignError","argtypes":[]},{"typename":"Error","ctorname":"NotAllowedToExecuteError","argtypes":[]},{"typename":"Error","ctorname":"NotAllowedToSubmitError","argtypes":[]},{"typename":"Error","ctorname":"TransactionNotFoundError","argtypes":[]},{"typename":"Error","ctorname":"SigNotFoundError","argtypes":[]},{"typename":"Error","ctorname":"SigFoundError","argtypes":[]},{"typename":"Error","ctorname":"NotEnoughSigCountError","argtypes":[]},{"typename":"Error","ctorname":"InsufficientFundsError","argtypes":[]},{"typename":"Error","ctorname":"InvalidAmountError","argtypes":[]},{"typename":"Error","ctorname":"InconsistentSigCountError","argtypes":[]}]}}} \ No newline at end of file diff --git a/contracts/reward_control/cache/solidity-files-cache.json b/contracts/reward_control/cache/solidity-files-cache.json new file mode 100644 index 000000000..cb236ef8b --- /dev/null +++ b/contracts/reward_control/cache/solidity-files-cache.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-cache-2", + "files": {} +} diff --git a/contracts/reward_control/contracts/scilla/msw_rewards_param.scilla b/contracts/reward_control/contracts/scilla/msw_rewards_param.scilla new file mode 100644 index 000000000..65cdaec3e --- /dev/null +++ b/contracts/reward_control/contracts/scilla/msw_rewards_param.scilla @@ -0,0 +1,405 @@ +(* SPDX-License-Identifier: GPL-3.0 *) +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) + +import ListUtils BoolUtils +library MultiSigWallet + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(* --- gen start --- *) +type MultiSigTransition = + | UpdateAdmin of (ByStr20) + | ClaimAdmin + | ChangeBaseReward of (Uint32) + | ChangeLookupReward of (Uint32) + | ChangeNodeReward of (Uint32) + | ChangeCoinbaseReward of (Uint128) + | ChangeRewardEachMulInMillis of (Uint32) + | ChangeBaseRewardMulInMillis of (Uint32) + +let custom_transaction_msg = fun (r: ByStr20) => fun (t: MultiSigTransition) => let msg = match t with + | UpdateAdmin admin => { + admin: admin; + _tag: "UpdateAdmin"; _amount: Uint128 0; _recipient: r + } + | ClaimAdmin => { + _tag: "ClaimAdmin"; _amount: Uint128 0; _recipient: r + } + | ChangeBaseReward base_reward_val => { + base_reward_val: base_reward_val; + _tag: "ChangeBaseReward"; _amount: Uint128 0; _recipient: r + } + | ChangeLookupReward lookup_reward_val => { + lookup_reward_val: lookup_reward_val; + _tag: "ChangeLookupReward"; _amount: Uint128 0; _recipient: r + } + | ChangeNodeReward node_reward_val => { + node_reward_val: node_reward_val; + _tag: "ChangeNodeReward"; _amount: Uint128 0; _recipient: r + } + | ChangeCoinbaseReward coinbase_reward_val => { + coinbase_reward_val: coinbase_reward_val; + _tag: "ChangeCoinbaseReward"; _amount: Uint128 0; _recipient: r + } + | ChangeRewardEachMulInMillis reward_in_millis => { + reward_in_millis: reward_in_millis; + _tag: "ChangeRewardEachMulInMillis"; _amount: Uint128 0; _recipient: r + } + | ChangeBaseRewardMulInMillis reward_in_millis => { + reward_in_millis: reward_in_millis; + _tag: "ChangeBaseRewardMulInMillis"; _amount: Uint128 0; _recipient: r + } + end in one_msg msg +(* --- gen end --- *) + +let true = True +let zero_uint32 = Uint32 0 +let one_uint32 = Uint32 1 + +type Transaction = + | NativeTransaction of ByStr20 Uint128 String + | CustomTransaction of ByStr20 MultiSigTransition + +type Error = + | NotAllowedToSignError + | NotAllowedToExecuteError + | NotAllowedToSubmitError + | TransactionNotFoundError + | SigNotFoundError + | SigFoundError + | NotEnoughSigCountError + | InsufficientFundsError + | InvalidAmountError + | InconsistentSigCountError + +let make_error = +fun (result: Error) => + let result_code = + match result with + | NotAllowedToSignError => Int32 -1 + | NotAllowedToExecuteError => Int32 -2 + | NotAllowedToSubmitError => Int32 -3 + | TransactionNotFoundError => Int32 -4 + | SigNotFoundError => Int32 -5 + | SigFoundError => Int32 -6 + | NotEnoughSigCountError => Int32 -7 + | InsufficientFundsError => Int32 -8 + | InvalidAmountError => Int32 -9 + | InconsistentSigCountError => Int32 -10 + end + in + { _exception: "Error"; code: result_code } + +(* Make map of owners *) +let make_owners_map = + fun (owners: List ByStr20) => + let init = Emp ByStr20 Bool in + let iter = + fun (acc: Map ByStr20 Bool) => + fun (cur_owner: ByStr20) => + (* Add owner unconditionally. We check for duplicates later *) + builtin put acc cur_owner true in + let folder = @list_foldl ByStr20 (Map ByStr20 Bool) in + folder iter init owners + +contract MultiSigWalletRewardsParam +( + owner_list: List ByStr20, + num_of_required_signatures: Uint32 +) +with + let len = @list_length ByStr20 in + let no_of_owners = len owner_list in + let owners_ok = builtin lt zero_uint32 no_of_owners in + let required_sigs_not_too_low = builtin lt zero_uint32 num_of_required_signatures in + let required_sigs_too_high = builtin lt no_of_owners num_of_required_signatures in + let required_sigs_not_too_high = negb required_sigs_too_high in + let required_sigs_ok = andb required_sigs_not_too_high required_sigs_not_too_low in + let all_ok = andb required_sigs_ok owners_ok in + (* Building the owners map is expensive, so avoid checking the owners map until *) + (* everything else has been checked *) + match all_ok with + | True => + let owners_map = make_owners_map owner_list in + let size_of_owners_map = builtin size owners_map in + builtin eq size_of_owners_map no_of_owners + | False => + False + end +=> + +field owners: Map ByStr20 Bool = make_owners_map owner_list + +field transaction_count: Uint32 = Uint32 0 + +field transactions: Map Uint32 Transaction = Emp Uint32 Transaction + +field signatures: Map Uint32 (Map ByStr20 Bool) = Emp Uint32 (Map ByStr20 Bool) + +field signature_counts: Map Uint32 Uint32 = Emp Uint32 Uint32 + +procedure Throw(err: Error) + e = make_error err; + throw e +end + +procedure AddSignature(transaction_id: Uint32, signee: ByStr20) + has_sig <- exists signatures[transaction_id][signee]; + match has_sig with + | True => + err = SigFoundError; + Throw err + | False => + maybe_count <- signature_counts[transaction_id]; + match maybe_count with + | None => + (* 0 signatures *) + signature_counts[transaction_id] := one_uint32 + | Some count => + new_count = builtin add count one_uint32; + signature_counts[transaction_id] := new_count + end; + + signatures[transaction_id][signee] := true; + + e = { _eventname: "AddSignature"; transaction_id: transaction_id }; + event e + end +end + +procedure SubmitTransaction(transaction: Transaction) + is_owner <- exists owners[_sender]; + match is_owner with + | False => + err = NotAllowedToSubmitError; + Throw err + | True => + count <- transaction_count; + transactions[count] := transaction; + + (* Sender implicitly signs *) + AddSignature count _sender; + + new_count = builtin add count one_uint32; + transaction_count := new_count; + + e = { _eventname: "SubmitTransaction"; transaction_id: count }; + event e + end +end + +procedure DeleteTransaction(transaction_id: Uint32) + delete transactions[transaction_id]; + delete signatures[transaction_id]; + delete signature_counts[transaction_id] +end + +procedure ExecuteNativeTransaction(recipient: ByStr20, amount: Uint128, tag: String) + (* Only the recipient or an owner can execute the transaction *) + recipient_is_sender = builtin eq recipient _sender; + is_owner <- exists owners[_sender]; + is_allowed = orb recipient_is_sender is_owner; + match is_allowed with + | False => + err = NotAllowedToExecuteError; + Throw err + | True => + (* Check for sufficient funds *) + bal <- _balance; + is_not_enough = builtin lt bal amount; + match is_not_enough with + | True => + err = InsufficientFundsError; + Throw err + | False => + (* Transaction approved, and enough money available. *) + (* Execute transaction *) + msg = { _tag: tag; _recipient: recipient; _amount: amount }; + msgs = one_msg msg; + send msgs + end + end +end + +procedure ExecuteCustomTransaction(contract_address: ByStr20, transaction: MultiSigTransition) + (* Only owners may execute *) + is_owner <- exists owners[_sender]; + match is_owner with + | False => + err = NotAllowedToExecuteError; + Throw err + | True => + msg = custom_transaction_msg contract_address transaction; + send msg + end +end + +transition SubmitNativeTransaction(recipient: ByStr20, amount: Uint128, tag: String) + zero_uint128 = Uint128 0; + is_zero = builtin eq amount zero_uint128; + match is_zero with + | True => + err = InvalidAmountError; + Throw err + | False => + transaction = NativeTransaction recipient amount tag; + SubmitTransaction transaction + end +end + +procedure SubmitCustomTransaction(contract_address: ByStr20, transaction: MultiSigTransition) + tx = CustomTransaction contract_address transaction; + SubmitTransaction tx +end + +transition SignTransaction(transaction_id: Uint32) + (* Only owners are allowed to sign off transactions *) + is_owner <- exists owners[_sender]; + match is_owner with + | False => + err = NotAllowedToSignError; + Throw err + | True => + (* Transaction must have been submitted *) + has_transaction <- exists transactions[transaction_id]; + match has_transaction with + | False => + err = TransactionNotFoundError; + Throw err + | True => + AddSignature transaction_id _sender + end + end +end + +transition RevokeSignature(transaction_id: Uint32) + has_sig <- exists signatures[transaction_id][_sender]; + match has_sig with + | False => + err = SigNotFoundError; + Throw err + | True => + maybe_count <- signature_counts[transaction_id]; + match maybe_count with + | None => + err = InconsistentSigCountError; + Throw err + | Some count => + is_zero = builtin eq count zero_uint32; + match is_zero with + | True => + err = InconsistentSigCountError; + Throw err + | False => + new_count = builtin sub count one_uint32; + signature_counts[transaction_id] := new_count; + + delete signatures[transaction_id][_sender]; + + e = { _eventname: "RevokeSignature"; transaction_id: transaction_id }; + event e + end + end + end +end + +transition ExecuteTransaction(transaction_id: Uint32) + maybe_transaction <- transactions[transaction_id]; + match maybe_transaction with + | None => + err = TransactionNotFoundError; + Throw err + | Some transaction => + maybe_sig_count <- signature_counts[transaction_id]; + match maybe_sig_count with + | None => + (* Signature count not found, even though the transaction exists. *) + err = InconsistentSigCountError; + Throw err + | Some sig_count => + not_enough_signatures = builtin lt sig_count num_of_required_signatures; + match not_enough_signatures with + | True => + err = NotEnoughSigCountError; + Throw err + | False => + match transaction with + | NativeTransaction recipient amount tag => + ExecuteNativeTransaction recipient amount tag + | CustomTransaction contract_address transaction => + ExecuteCustomTransaction contract_address transaction + end; + (* Remove transaction and signatures. *) + (* Note: The transaction may have failed, but without a callback *) + (* we have no way of detecting whether it did *) + DeleteTransaction transaction_id + end + end + end +end + +(***************************************************) +(* Multisig Housekeeping Transitions *) +(***************************************************) + +(* Submit a new UpdateAdmin request *) +transition SubmitCustomUpdateAdminTransaction (calleeContract : ByStr20, admin: ByStr20) + transaction = UpdateAdmin admin; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ClaimAdmin request *) +transition SubmitCustomClaimAdminTransaction (calleeContract : ByStr20) + transaction = ClaimAdmin; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ChangeBaseReward request *) +transition SubmitCustomChangeBaseRewardTransaction (calleeContract : ByStr20, base_reward_val: Uint32) + transaction = ChangeBaseReward base_reward_val; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ChangeLookupReward request *) +transition SubmitCustomChangeLookupRewardTransaction (calleeContract : ByStr20, lookup_reward_val: Uint32) + transaction = ChangeLookupReward lookup_reward_val; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ChangeNodeReward request *) +transition SubmitCustomChangeNodeRewardTransaction (calleeContract : ByStr20, node_reward_val: Uint32) + transaction = ChangeNodeReward node_reward_val; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ChangeCoinbaseReward request *) +transition SubmitCustomChangeCoinbaseRewardTransaction (calleeContract : ByStr20, coinbase_reward_val: Uint128) + transaction = ChangeCoinbaseReward coinbase_reward_val; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ChangeRewardEachMulInMillis request *) +transition SubmitCustomChangeRewardEachMulInMillisTransaction (calleeContract: ByStr20, reward_in_millis: Uint32) + transaction = ChangeRewardEachMulInMillis reward_in_millis; + SubmitCustomTransaction calleeContract transaction +end + +(* Submit a new ChangeBaseRewardInMillis request *) +transition SubmitCustomChangeBaseRewardMulInMillisTransaction (calleeContract: ByStr20, reward_in_millis: Uint32) + transaction = ChangeBaseRewardMulInMillis reward_in_millis; + SubmitCustomTransaction calleeContract transaction +end + + +transition AddFunds() + accept; + e = { _eventname: "AddFunds"; sender: _sender; amount: _amount }; + event e +end diff --git a/contracts/reward_control/contracts/scilla/rewards_params.scilla b/contracts/reward_control/contracts/scilla/rewards_params.scilla new file mode 100644 index 000000000..ac98173a5 --- /dev/null +++ b/contracts/reward_control/contracts/scilla/rewards_params.scilla @@ -0,0 +1,176 @@ +scilla_version 0 + +import ListUtils IntUtils PairUtils + +library RewardsParams + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(* Error events *) +type Error = +| AdminValidationFailed +| StagingAdminNotExist +| StagingAdminValidationFailed + +let make_error = + fun (result : Error) => + let result_code = + match result with + | AdminValidationFailed => Int32 -1 + | StagingAdminNotExist => Int32 -2 + | StagingAdminValidationFailed => Int32 -3 + end + in + { _exception : "Error"; code : result_code } + +let twenty = Uint32 2000 +let forty = Uint32 4000 +let one_hundred = Uint32 100 +let coinbase_default = Uint128 204000000000000000 + +let reward_each_mul_default_in_millis = Uint32 1668 +let base_reward_mul_default_in_millis = Uint32 4726 + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract RewardsParams +( + init_admin: ByStr20 +) + +(* Mutable fields *) +field contractadmin: ByStr20 = init_admin +field stagingcontractadmin: Option ByStr20 = None {ByStr20} + +field coinbase_reward_per_ds: Uint128 = coinbase_default + +(* Reward percentages, scaled by percent_precision - 100 means % * 100 *) +field base_reward_in_percent : Uint32 = twenty +field lookup_reward_in_percent : Uint32 = forty +field node_reward_in_percent : Uint32 = forty +field percent_precision : Uint32 = one_hundred + +(* The denominator here is a fixed 1000 *) +field reward_each_mul_in_millis : Uint32 = reward_each_mul_default_in_millis +field base_reward_mul_in_millis : Uint32 = base_reward_mul_default_in_millis + +(* Procedures *) + +procedure ThrowError(err: Error) + e = make_error err; + throw e +end + +(* Check if the initiator is admin *) + +procedure IsAdmin(initiator: ByStr20) + contractadmin_tmp <- contractadmin; + is_admin = builtin eq initiator contractadmin_tmp; + match is_admin with + | True => + | False => + e = AdminValidationFailed; + ThrowError e + end +end + +(***************************************) +(* Transitions *) +(***************************************) + +(* @dev: Start a proposal for new contract admin. Used by admin only. *) +(* @param admin: New admin value *) +(* @multi-sig *) +transition UpdateAdmin(admin: ByStr20) + IsAdmin _sender; + staging_admin = Some {ByStr20} admin; + stagingcontractadmin := staging_admin +end + +(* @dev: Claim to be the new admin of contract. *) +(* @multi-sig *) +transition ClaimAdmin() + staging_admin <- stagingcontractadmin; + match staging_admin with + | Some admin => + e = { _eventname: "ClaimAdminOne"; new_admin: admin; sender: _sender }; + event e; + + is_valid = builtin eq _sender admin; + match is_valid with + | True => + contractadmin := admin; + staging_admin_temp = None {ByStr20}; + stagingcontractadmin := staging_admin_temp; + e = { _eventname: "ClaimAdmin"; new_admin: admin }; + event e + | False => + e = StagingAdminValidationFailed; + ThrowError e + end + | None => + e = StagingAdminNotExist; + ThrowError e + end +end + +(* @dev: Change the base reward percent *) +(* @dev: Can be called only by the contractadmin *) +(* @param base_reward: The base reward percent to change to *) + +(* @multi-sig *) +transition ChangeBaseReward(base_reward_val: Uint32) + IsAdmin _sender; + base_reward_in_percent := base_reward_val +end + +(* @dev: Change the lookup reward percent *) +(* @dev: Can be called only by the contractadmin *) +(* @param base_reward: The lookup reward percent to change to *) + +(* @multi-sig *) +transition ChangeLookupReward(lookup_reward_val: Uint32) + IsAdmin _sender; + lookup_reward_in_percent := lookup_reward_val +end + +(* @multi-sig *) +transition ChangeNodeReward(node_reward_val: Uint32) + IsAdmin _sender; + node_reward_in_percent := node_reward_val +end + +(* @dev: Change the coinbase reward percent *) +(* @dev: Can be called only by the contractadmin *) +(* @param coinbase_reward_val: The coinbase reward to change to, in Qa *) + +(* @multi-sig *) +transition ChangeCoinbaseReward(coinbase_reward_val: Uint128) + IsAdmin _sender; + coinbase_reward_per_ds := coinbase_reward_val +end + +(* @dev: Change the reward ratio awarded to fast miners per ZIP-23 *) +(* @dev: Can be called only by the contract admin *) +(* @param reward_in_millis: The amount to multiply fast miner rewards multiplied by 1000, so 1.6 is represented as 1600 *) + +(* @multi-sig *) +transition ChangeRewardEachMulInMillis(reward_in_millis: Uint32) + IsAdmin _sender; + reward_each_mul_in_millis := reward_in_millis +end + +(* @dev: Change the reward ratio awarded to fast miners per ZIP-23 *) +(* @dev: Can be called only by the contract admin *) +(* @param reward_in_millis: The amount to multiply base miner rewards multiplied by 1000, so 1.6 is represented as 1600 *) + +(* @multi-sig *) +transition ChangeBaseRewardMulInMillis(reward_in_millis: Uint32) + IsAdmin _sender; + base_reward_mul_in_millis := reward_in_millis +end diff --git a/contracts/reward_control/hardhat.config.ts b/contracts/reward_control/hardhat.config.ts new file mode 100644 index 000000000..8ad5e2cb2 --- /dev/null +++ b/contracts/reward_control/hardhat.config.ts @@ -0,0 +1,135 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +import "@nomicfoundation/hardhat-ethers"; +import "hardhat-scilla-plugin"; +// import "./utils/deploy-task.ts"; +import "hardhat-deploy"; +import * as configUtils from "./utils/config.ts"; + +const chai = require("chai"); +const { scillaChaiEventMatcher } = require("hardhat-scilla-plugin"); +chai.use(scillaChaiEventMatcher); + +// 33101 / 814D - testnet (333 for ZIL) +// 32769 / 8001 - main net ( 1 for ZIL) +// 32990 / 80DE - isolated local server (222 for ZIL) +// 0x82BC - zblockchain localdev +// + +const config: HardhatUserConfig = { + solidity: "0.8.19", + defaultNetwork: "isolated_server", + networks: { + devnet: { + url: "https://api.devnet.zilliqa.com", + websocketUrl: "ws://api.devnet.zilliqa.com/", + accounts: [ + "db11cfa086b92497c8ed5a4cc6edb3a5bfe3a640c43ffb9fc6aa0873c56f2ee3", + "e53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + ], + chainId: 0x8269, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false, + }, + zblockchain_isolated: { + url: "http://localhost:12005", + websocketUrl: "ws://localhost:12005/", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "e53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + ], + chainId: 0x80de, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false, + }, + zblockchain: { + url: "http://localhost:12003", + websocketUrl: "ws://localhost:12003/", + accounts: [ + "db11cfa086b92497c8ed5a4cc6edb3a5bfe3a640c43ffb9fc6aa0873c56f2ee3", + "e53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + ], + chainId: 0x82bc, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false, + }, + isolated_server: { + url: "http://localhost:5555/", + websocketUrl: "ws://localhost:5555/", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "e53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + ], + chainId: 0x8001, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false, + }, + ganache: { + url: "http://localhost:7545", + websocketUrl: "ws://localhost:7545", + chainId: 1337, + web3ClientVersion: "Ganache/v7.4.1/EthereumJS TestRPC/v7.4.1/ethereum-js", + protocolVersion: 0x3f, + accounts: [ + // memonic: guard same cactus near figure photo remove letter target alien initial remove + "67545ce31f5ca86719cf3743730435768515ebf014f84811463edcf7dcfaf91e", + "9be4f8840833f64d4881027f4a53961d75bc649ac4801b33f746487ca8873f14", + "32a75b674cc41405c914de1fe7b031b832dfd9203e1a287d09122bab689519e3", + "dd8ce58f8cecd59fde7000fff9944908e89364b2ef36921c35725957617ddd32", + ], + zilliqaNetwork: false, + miningState: true, + }, + public_testnet: { + url: "https://dev-api.zilliqa.com", + websocketUrl: "https://dev-api.zilliqa.com", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "e53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + ], + chainId: 33101, + zilliqaNetwork: true, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + miningState: false, + }, + localdev: { + url: "http://localhost:5556", + websocketUrl: "ws://localdev-l2api.localdomain", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "e53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + ], + chainId: 0x8001, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false, + }, + }, + mocha: { + timeout: 500000, + }, +}; + +export default config; diff --git a/contracts/reward_control/package.json b/contracts/reward_control/package.json new file mode 100644 index 000000000..dd86c3c23 --- /dev/null +++ b/contracts/reward_control/package.json @@ -0,0 +1,25 @@ +{ + "name": "contracts", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "pnpm hardhat test" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.2", + "@nomicfoundation/hardhat-ethers": "^3.0.4", + "@nomicfoundation/hardhat-toolbox": "^3.0.0", + "ethers": "^6.8.0", + "hardhat": "^2.18.1", + "hardhat-deploy": "^0.11.42", + "hardhat-scilla-plugin": "^3.7.1", + "yaml": "^2.3.1" + }, + "dependencies": { + "yaml": "^2.3.1" + } +} diff --git a/contracts/reward_control/pnpm-lock.yaml b/contracts/reward_control/pnpm-lock.yaml new file mode 100644 index 000000000..de95e0ff4 --- /dev/null +++ b/contracts/reward_control/pnpm-lock.yaml @@ -0,0 +1,4912 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + yaml: + specifier: ^2.3.1 + version: 2.3.3 + devDependencies: + '@nomicfoundation/hardhat-chai-matchers': + specifier: ^2.0.2 + version: 2.0.2(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.10)(ethers@6.8.0)(hardhat@2.18.1) + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.4 + version: 3.0.4(ethers@6.8.0)(hardhat@2.18.1) + '@nomicfoundation/hardhat-toolbox': + specifier: ^3.0.0 + version: 3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.2)(@nomicfoundation/hardhat-ethers@3.0.4)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomicfoundation/hardhat-verify@1.1.1)(@typechain/ethers-v6@0.4.3)(@typechain/hardhat@8.0.3)(@types/chai@4.3.8)(@types/mocha@10.0.2)(@types/node@20.8.6)(chai@4.3.10)(ethers@6.8.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.18.1)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.2)(typescript@5.2.2) + ethers: + specifier: ^6.8.0 + version: 6.8.0 + hardhat: + specifier: ^2.18.1 + version: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + hardhat-deploy: + specifier: ^0.11.42 + version: 0.11.42 + hardhat-scilla-plugin: + specifier: ^3.7.1 + version: 3.7.1(@zilliqa-js/zilliqa@3.4.4)(hardhat@2.18.1) + +packages: + + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: true + + /@chainsafe/as-sha256@0.3.1: + resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} + dev: true + + /@chainsafe/persistent-merkle-tree@0.4.2: + resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: true + + /@chainsafe/persistent-merkle-tree@0.5.0: + resolution: {integrity: sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: true + + /@chainsafe/ssz@0.10.2: + resolution: {integrity: sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.5.0 + dev: true + + /@chainsafe/ssz@0.9.4: + resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.4.2 + case: 1.6.3 + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: true + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + dev: true + + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: true + + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + dev: true + + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + dev: true + + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: true + + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + dev: true + + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + dev: true + + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + dev: true + + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: true + + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: true + + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + dev: true + + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: true + + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + dev: true + + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: true + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: true + + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: true + + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: true + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@fastify/busboy@2.0.0: + resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + engines: {node: '>=14'} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@metamask/eth-sig-util@4.0.1: + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: true + + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 + dev: true + + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + dependencies: + '@noble/hashes': 1.3.2 + dev: true + + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: true + + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: true + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: true + + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@nomicfoundation/ethereumjs-block@5.0.2: + resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-blockchain@7.0.2: + resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-ethash': 3.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + abstract-level: 1.0.3 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + level: 8.0.0 + lru-cache: 5.1.1 + memory-level: 1.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-common@4.0.2: + resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.2 + crc-32: 1.2.2 + dev: true + + /@nomicfoundation/ethereumjs-ethash@3.0.2: + resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + abstract-level: 1.0.3 + bigint-crypto-utils: 3.3.0 + ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-evm@2.0.2: + resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} + engines: {node: '>=14'} + dependencies: + '@ethersproject/providers': 5.7.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-rlp@5.0.2: + resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /@nomicfoundation/ethereumjs-statemanager@2.0.2: + resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 + js-sdsl: 4.4.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-trie@6.0.2: + resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@types/readable-stream': 2.3.15 + ethereum-cryptography: 0.1.3 + readable-stream: 3.6.2 + dev: true + + /@nomicfoundation/ethereumjs-tx@5.0.2: + resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} + engines: {node: '>=14'} + dependencies: + '@chainsafe/ssz': 0.9.4 + '@ethersproject/providers': 5.7.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-util@9.0.2: + resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} + engines: {node: '>=14'} + dependencies: + '@chainsafe/ssz': 0.10.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + ethereum-cryptography: 0.1.3 + dev: true + + /@nomicfoundation/ethereumjs-vm@7.0.2: + resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/hardhat-chai-matchers@2.0.2(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.10)(ethers@6.8.0)(hardhat@2.18.1): + resolution: {integrity: sha512-9Wu9mRtkj0U9ohgXYFbB/RQDa+PcEdyBm2suyEtsJf3PqzZEEjLUZgWnMjlFhATMk/fp3BjmnYVPrwl+gr8oEw==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@6.8.0)(hardhat@2.18.1) + '@types/chai-as-promised': 7.1.6 + chai: 4.3.10 + chai-as-promised: 7.1.1(chai@4.3.10) + deep-eql: 4.1.3 + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + ordinal: 1.0.3 + dev: true + + /@nomicfoundation/hardhat-ethers@3.0.4(ethers@6.8.0)(hardhat@2.18.1): + resolution: {integrity: sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + dependencies: + debug: 4.3.4(supports-color@8.1.1) + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.18.1): + resolution: {integrity: sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==} + peerDependencies: + hardhat: ^2.9.5 + dependencies: + ethereumjs-util: 7.1.5 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + dev: true + + /@nomicfoundation/hardhat-toolbox@3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.2)(@nomicfoundation/hardhat-ethers@3.0.4)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomicfoundation/hardhat-verify@1.1.1)(@typechain/ethers-v6@0.4.3)(@typechain/hardhat@8.0.3)(@types/chai@4.3.8)(@types/mocha@10.0.2)(@types/node@20.8.6)(chai@4.3.10)(ethers@6.8.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.18.1)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.2)(typescript@5.2.2): + resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==} + peerDependencies: + '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-network-helpers': ^1.0.0 + '@nomicfoundation/hardhat-verify': ^1.0.0 + '@typechain/ethers-v6': ^0.4.0 + '@typechain/hardhat': ^8.0.0 + '@types/chai': ^4.2.0 + '@types/mocha': '>=9.1.0' + '@types/node': '>=12.0.0' + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: '>=8.0.0' + typechain: ^8.2.0 + typescript: '>=4.5.0' + dependencies: + '@nomicfoundation/hardhat-chai-matchers': 2.0.2(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.10)(ethers@6.8.0)(hardhat@2.18.1) + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@6.8.0)(hardhat@2.18.1) + '@nomicfoundation/hardhat-network-helpers': 1.0.9(hardhat@2.18.1) + '@nomicfoundation/hardhat-verify': 1.1.1(hardhat@2.18.1) + '@typechain/ethers-v6': 0.4.3(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2) + '@typechain/hardhat': 8.0.3(@typechain/ethers-v6@0.4.3)(ethers@6.8.0)(hardhat@2.18.1)(typechain@8.3.2) + '@types/chai': 4.3.8 + '@types/mocha': 10.0.2 + '@types/node': 20.8.6 + chai: 4.3.10 + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + hardhat-gas-reporter: 1.0.9(hardhat@2.18.1) + solidity-coverage: 0.8.5(hardhat@2.18.1) + ts-node: 10.9.1(@types/node@20.8.6)(typescript@5.2.2) + typechain: 8.3.2(typescript@5.2.2) + typescript: 5.2.2 + dev: true + + /@nomicfoundation/hardhat-verify@1.1.1(hardhat@2.18.1): + resolution: {integrity: sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==} + peerDependencies: + hardhat: ^2.0.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + cbor: 8.1.0 + chalk: 2.4.2 + debug: 4.3.4(supports-color@8.1.1) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + lodash.clonedeep: 4.5.0 + semver: 6.3.1 + table: 6.8.1 + undici: 5.28.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: + resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1: + resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1: + resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1: + resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1: + resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1: + resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1: + resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1: + resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1: + resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1: + resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer@0.1.1: + resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + engines: {node: '>= 12'} + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + dev: true + + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + dev: true + + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + dev: true + + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + dev: true + + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + dev: true + + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: true + + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: true + + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: true + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: true + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: true + + /@scure/base@1.1.3: + resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} + dev: true + + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.3 + dev: true + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.3 + dev: true + + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.3 + dev: true + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.3 + dev: true + + /@sentry/core@5.30.0: + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/hub@5.30.0: + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/minimal@5.30.0: + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/node@5.30.0: + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sentry/tracing@5.30.0: + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/types@5.30.0: + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + dev: true + + /@sentry/utils@5.30.0: + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@solidity-parser/parser@0.14.5: + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + dependencies: + antlr4ts: 0.5.0-alpha.4 + dev: true + + /@solidity-parser/parser@0.16.1: + resolution: {integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==} + dependencies: + antlr4ts: 0.5.0-alpha.4 + dev: true + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@typechain/ethers-v6@0.4.3(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2): + resolution: {integrity: sha512-TrxBsyb4ryhaY9keP6RzhFCviWYApcLCIRMPyWaKp2cZZrfaM3QBoxXTnw/eO4+DAY3l+8O0brNW0WgeQeOiDA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.1 + typescript: '>=4.7.0' + dependencies: + ethers: 6.8.0 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.2.2) + typechain: 8.3.2(typescript@5.2.2) + typescript: 5.2.2 + dev: true + + /@typechain/hardhat@8.0.3(@typechain/ethers-v6@0.4.3)(ethers@6.8.0)(hardhat@2.18.1)(typechain@8.3.2): + resolution: {integrity: sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng==} + peerDependencies: + '@typechain/ethers-v6': ^0.4.3 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.1 + dependencies: + '@typechain/ethers-v6': 0.4.3(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2) + ethers: 6.8.0 + fs-extra: 9.1.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + typechain: 8.3.2(typescript@5.2.2) + dev: true + + /@types/bip39@2.4.2: + resolution: {integrity: sha512-Vo9lqOIRq8uoIzEVrV87ZvcIM0PN9t0K3oYZ/CS61fIYKCBdOIM7mlWzXuRvSXrDtVa1uUO2w1cdfufxTC0bzg==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/bn.js@4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/bn.js@5.1.2: + resolution: {integrity: sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/chai-as-promised@7.1.6: + resolution: {integrity: sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA==} + dependencies: + '@types/chai': 4.3.8 + dev: true + + /@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.8 + dev: true + + /@types/chai@4.3.8: + resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} + dev: true + + /@types/concat-stream@1.6.1: + resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/form-data@0.0.33: + resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.8.6 + dev: true + + /@types/hdkey@0.7.1: + resolution: {integrity: sha512-4Kkr06hq+R8a9EzVNqXGOY2x1xA7dhY6qlp6OvaZ+IJy1BCca1Cv126RD9X7CMJoXoLo8WvAizy8gQHpqW6K0Q==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/long@4.0.2: + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + dev: true + + /@types/lru-cache@5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + dev: true + + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + + /@types/mocha@10.0.2: + resolution: {integrity: sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==} + dev: true + + /@types/node@10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: true + + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + dev: true + + /@types/node@20.8.6: + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + dependencies: + undici-types: 5.25.3 + dev: true + + /@types/node@8.10.66: + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + dev: true + + /@types/pbkdf2@3.1.0: + resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true + + /@types/qs@6.9.8: + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + dev: true + + /@types/readable-stream@2.3.15: + resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} + dependencies: + '@types/node': 20.8.6 + safe-buffer: 5.1.2 + dev: true + + /@types/secp256k1@4.0.4: + resolution: {integrity: sha512-oN0PFsYxDZnX/qSJ5S5OwaEDTYfekhvaM5vqui2bu1AA39pKofmgL104Q29KiOXizXS2yLjSzc5YdTyMKdcy4A==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/sodium-native@2.3.5: + resolution: {integrity: sha512-a3DAIpW8+36XAY8aIR36JBQQsfOabxHuJwx11DL/PTvnbwEWPAXW66b8QbMi0r2vUnkOfREsketxdvjBmQxqDQ==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@types/websocket@1.0.4: + resolution: {integrity: sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==} + dependencies: + '@types/node': 20.8.6 + dev: true + + /@zilliqa-js/account@3.4.4: + resolution: {integrity: sha512-fZ2I8Q3ZwR7jb0eKIykKeogaVls8Taoy+ceLLUyNR8SEpHxBsWDQYckJLl+iOVMwv51468JYQJEqqMJz1Kfytw==} + dependencies: + '@types/bip39': 2.4.2 + '@types/hdkey': 0.7.1 + '@zilliqa-js/core': 3.4.4 + '@zilliqa-js/crypto': 3.4.4 + '@zilliqa-js/proto': 3.4.4 + '@zilliqa-js/util': 3.4.4 + bip39: 2.6.0 + buffer: 6.0.3 + hash.js: 1.1.7 + hdkey: 1.1.2 + tslib: 2.3.1 + transitivePeerDependencies: + - encoding + dev: true + + /@zilliqa-js/blockchain@3.4.4: + resolution: {integrity: sha512-4uSHEP5bGMNAcBWTpexLWL4uf3nssXiKQMYpZCUuPDI45DRmsMuWRtCN2Izo0nwXRGOjRCWsha6bl5cqofG2qA==} + dependencies: + '@zilliqa-js/account': 3.4.4 + '@zilliqa-js/core': 3.4.4 + '@zilliqa-js/crypto': 3.4.4 + '@zilliqa-js/util': 3.4.4 + tslib: 2.3.1 + utility-types: 3.10.0 + transitivePeerDependencies: + - encoding + dev: true + + /@zilliqa-js/contract@3.4.4: + resolution: {integrity: sha512-VMIs5DBSx1hudjTYe8fIEEOfTPz4u4qrcuXBrBUiUtHFFhGoeoecB/NFr0qQ1n2+3BtIsFdYa8Bw4rlA15hDzQ==} + dependencies: + '@zilliqa-js/account': 3.4.4 + '@zilliqa-js/blockchain': 3.4.4 + '@zilliqa-js/core': 3.4.4 + '@zilliqa-js/crypto': 3.4.4 + '@zilliqa-js/util': 3.4.4 + bn.js: 4.12.0 + buffer-from: 1.1.2 + cross-fetch: 2.2.5 + hash.js: 1.1.7 + node-fetch: 3.3.2 + tslib: 2.3.1 + utility-types: 2.1.0 + transitivePeerDependencies: + - encoding + dev: true + + /@zilliqa-js/core@3.4.4: + resolution: {integrity: sha512-vbvvdrkE4YJqpC599wAGrsChOMYIFMJSFwMWYQpCk4ly9SoiP3rY1LpIBb4yxUjO6ALzUEmJuYiDlWVnf1vp5A==} + dependencies: + buffer: 6.0.3 + cross-fetch: 2.2.6 + mitt: 1.2.0 + tslib: 2.3.1 + transitivePeerDependencies: + - encoding + dev: true + + /@zilliqa-js/crypto@3.4.4: + resolution: {integrity: sha512-XSzNdY3i+vq3U5E/IQRqJtoNxf0L6HXKZVnsHMiF63pgOTE8yxqmwUm3aFTmHCI1No/NDrNzQcSM5gbo1wTmPg==} + dependencies: + '@zilliqa-js/util': 3.4.4 + aes-js: 3.1.2 + buffer: 6.0.3 + elliptic: 6.5.4 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + pbkdf2: 3.1.2 + scrypt-js: 3.0.1 + scryptsy: 2.1.0 + sodium-randbytes: 0.14.0 + tslib: 2.3.1 + uuid: 8.3.2 + dev: true + + /@zilliqa-js/proto@3.4.4: + resolution: {integrity: sha512-Jl9k977rCt1X4/lRpsf/QNVN5nc85p+J08zqS9hah9BzvB69Vk+G7ExrKkkO5jFD06PGyPo6aKGB9pPN+izx5Q==} + dependencies: + protobufjs: 6.11.4 + dev: true + + /@zilliqa-js/subscriptions@3.4.4: + resolution: {integrity: sha512-P0cRk3Wwi81VmKAzOB6wBBWEKkiJ1vrBIliKP2iqAptdOou1TKA+0ZeM3n0ZLR3jLwS2Xjq+6xkv26PlA7G0bQ==} + dependencies: + '@types/websocket': 1.0.4 + buffer: 6.0.3 + camelcase: 5.0.0 + mitt: 1.2.0 + tslib: 2.3.1 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: true + + /@zilliqa-js/util@3.4.4: + resolution: {integrity: sha512-Gp9Am0E9J3iE8E9oGmmjQx/ko+iLWXyKdRLNHsgO4jfJLLbWxZueedOGlKlOG7Y+/z0sDjljXBRuAP7BoTfcAQ==} + dependencies: + bn.js: 4.12.0 + camelcase: 5.3.1 + long: 4.0.0 + tslib: 2.3.1 + dev: true + + /@zilliqa-js/zilliqa@3.4.4: + resolution: {integrity: sha512-jh7uMHqEU+IpM1Ln+f0qEFmu3gtw8/ZDT83LTDX6KHoDJb8uEh3o0KYyDFCUMrXbQJiHp8XoUyUY7doyHpQpRg==} + dependencies: + '@zilliqa-js/account': 3.4.4 + '@zilliqa-js/blockchain': 3.4.4 + '@zilliqa-js/contract': 3.4.4 + '@zilliqa-js/core': 3.4.4 + '@zilliqa-js/crypto': 3.4.4 + '@zilliqa-js/proto': 3.4.4 + '@zilliqa-js/subscriptions': 3.4.4 + '@zilliqa-js/util': 3.4.4 + buffer: 6.0.3 + tslib: 2.3.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + dev: true + + /abstract-level@1.0.3: + resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: true + + /adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + dev: true + + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + dev: true + + /aes-js@3.1.2: + resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + dev: true + + /aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + requiresBuild: true + dev: true + optional: true + + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /axios@0.21.4(debug@4.3.4): + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: true + + /axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: true + + /bigint-crypto-utils@3.3.0: + resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} + engines: {node: '>=14.0.0'} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: true + + /bip39@2.6.0: + resolution: {integrity: sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg==} + dependencies: + create-hash: 1.2.0 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + unorm: 1.6.0 + dev: true + + /bip66@1.1.5: + resolution: {integrity: sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: true + + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: true + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browser-level@1.0.1: + resolution: {integrity: sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==} + dependencies: + abstract-level: 1.0.3 + catering: 2.1.1 + module-error: 1.0.2 + run-parallel-limit: 1.1.0 + dev: true + + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.9 + dev: true + + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.1 + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.1 + dev: true + + /camelcase@5.0.0: + resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /case@1.6.3: + resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /catering@2.1.1: + resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} + engines: {node: '>=6'} + dev: true + + /cbor@8.1.0: + resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} + engines: {node: '>=12.19'} + dependencies: + nofilter: 3.1.0 + dev: true + + /chai-as-promised@7.1.1(chai@4.3.10): + resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} + peerDependencies: + chai: '>= 2.1.2 < 5' + dependencies: + chai: 4.3.10 + check-error: 1.0.3 + dev: true + + /chai-subset@1.6.0: + resolution: {integrity: sha512-K3d+KmqdS5XKW5DWPd5sgNffL3uxdDe+6GdnJh3AYPhwnBGRY5urfvfcbRtWIvvpz+KxkL9FeBB6MZewLUNwug==} + engines: {node: '>=4'} + dev: true + + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /classic-level@1.3.0: + resolution: {integrity: sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==} + engines: {node: '>=12'} + requiresBuild: true + dependencies: + abstract-level: 1.0.3 + catering: 2.1.1 + module-error: 1.0.2 + napi-macros: 2.2.2 + node-gyp-build: 4.6.1 + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-color@2.0.3: + resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + memoizee: 0.4.15 + timers-ext: 0.1.7 + dev: true + + /cli-table3@0.5.1: + resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} + engines: {node: '>=6'} + dependencies: + object-assign: 4.1.1 + string-width: 2.1.1 + optionalDependencies: + colors: 1.4.0 + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: true + + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + dev: true + + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: true + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-fetch@2.2.5: + resolution: {integrity: sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w==} + dependencies: + node-fetch: 2.6.1 + whatwg-fetch: 2.0.4 + dev: true + + /cross-fetch@2.2.6: + resolution: {integrity: sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 2.0.4 + transitivePeerDependencies: + - encoding + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: true + + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: true + + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + + /death@1.1.0: + resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + dependencies: + address: 1.2.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + + /difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + dependencies: + heap: 0.2.7 + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /drbg.js@1.0.1: + resolution: {integrity: sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==} + engines: {node: '>=0.10'} + dependencies: + browserify-aes: 1.2.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: true + + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: true + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: true + + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: true + + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + dev: true + + /esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} + peerDependencies: + '@codechecks/client': ^0.1.0 + peerDependenciesMeta: + '@codechecks/client': + optional: true + dependencies: + '@solidity-parser/parser': 0.14.5 + axios: 1.5.1 + cli-table3: 0.5.1 + colors: 1.4.0 + ethereum-cryptography: 1.2.0 + ethers: 5.7.2 + fs-readdir-recursive: 1.1.0 + lodash: 4.17.21 + markdown-table: 1.1.3 + mocha: 10.2.0 + req-cwd: 2.0.0 + sha1: 1.1.1 + sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: true + + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + dev: true + + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + dependencies: + '@types/pbkdf2': 3.1.0 + '@types/secp256k1': 4.0.4 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 + dev: true + + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + dev: true + + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + dev: true + + /ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + dev: true + + /ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.4 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + dev: true + + /ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/bn.js': 5.1.2 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + dev: true + + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /ethers@6.8.0: + resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: true + + /ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + dev: true + + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + dev: true + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /fmix@0.1.0: + resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} + dependencies: + imul: 1.0.1 + dev: true + + /follow-redirects@1.15.5(debug@4.3.4): + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + + /fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + dev: true + + /fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + klaw: 1.3.1 + path-is-absolute: 1.0.1 + rimraf: 2.7.1 + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.2 + has: 1.0.4 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + dev: true + + /ghost-testrpc@0.0.2: + resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} + hasBin: true + dependencies: + chalk: 2.4.2 + node-emoji: 1.11.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /hardhat-deploy@0.11.42: + resolution: {integrity: sha512-sd0zzHV2Px2qxPCvIt0BCJm41rx/aS7ruOOXEUFe54rUk+8ViFNSSUll6BD9YaRzyfVBDMn9FT4Q40DakJ0tJA==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@types/qs': 6.9.8 + axios: 0.21.4(debug@4.3.4) + chalk: 4.1.2 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.4.1 + ethers: 5.7.2 + form-data: 4.0.0 + fs-extra: 10.1.0 + match-all: 1.2.6 + murmur-128: 0.2.1 + qs: 6.11.2 + zksync-web3: 0.14.3(ethers@5.7.2) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /hardhat-gas-reporter@1.0.9(hardhat@2.18.1): + resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} + peerDependencies: + hardhat: ^2.0.2 + dependencies: + array-uniq: 1.0.3 + eth-gas-reporter: 0.2.27 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + sha1: 1.1.1 + transitivePeerDependencies: + - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate + dev: true + + /hardhat-scilla-plugin@3.7.1(@zilliqa-js/zilliqa@3.4.4)(hardhat@2.18.1): + resolution: {integrity: sha512-/1X+Y6SLm1xE9EXTDvk463cErJ27ozf15SSYo2sfQHo1sfCqf8SWlUjTiaSyvjJwXxMUkBMcBi9YA5gcPnXUSA==} + peerDependencies: + '@zilliqa-js/zilliqa': ^3.4.3 + hardhat: ^2.18.0 + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@types/chai-subset': 1.3.3 + '@zilliqa-js/account': 3.4.4 + '@zilliqa-js/contract': 3.4.4 + '@zilliqa-js/core': 3.4.4 + '@zilliqa-js/crypto': 3.4.4 + '@zilliqa-js/util': 3.4.4 + '@zilliqa-js/zilliqa': 3.4.4 + chai-subset: 1.6.0 + cli-color: 2.0.3 + glob: 10.3.10 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + s-expression: 3.1.1 + transitivePeerDependencies: + - encoding + dev: true + + /hardhat@2.18.1(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-b55rW7Ka+fvJeg6oWuBTXoYQEUurevCCankjGNTwczwD3GnkhV9GEei7KUT+9IKmWx3lC+zyxlFxeDbg0gUoHw==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@nomicfoundation/ethereumjs-vm': 7.0.2 + '@nomicfoundation/solidity-analyzer': 0.1.1 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.2 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + chalk: 2.4.2 + chokidar: 3.5.3 + ci-info: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.4 + io-ts: 1.10.4 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.2.0 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.7.3(debug@4.3.4) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + ts-node: 10.9.1(@types/node@20.8.6)(typescript@5.2.2) + tsort: 0.0.1 + typescript: 5.2.2 + undici: 5.28.3 + uuid: 8.3.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /hdkey@1.1.2: + resolution: {integrity: sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ==} + dependencies: + bs58check: 2.1.2 + safe-buffer: 5.2.1 + secp256k1: 3.8.0 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: true + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /http-basic@8.1.3: + resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} + engines: {node: '>=6.0.0'} + dependencies: + caseless: 0.12.0 + concat-stream: 1.6.2 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-response-object@3.0.2: + resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} + dependencies: + '@types/node': 10.17.60 + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /imul@1.0.1: + resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} + engines: {node: '>=0.10.0'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + dependencies: + fp-ts: 1.19.3 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.4 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /js-sdsl@4.4.2: + resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} + dev: true + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonschema@1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + dev: true + + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + readable-stream: 3.6.2 + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /level-supports@4.0.1: + resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} + engines: {node: '>=12'} + dev: true + + /level-transcoder@1.0.1: + resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + module-error: 1.0.2 + dev: true + + /level@8.0.0: + resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} + engines: {node: '>=12'} + dependencies: + browser-level: 1.0.1 + classic-level: 1.3.0 + dev: true + + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + dependencies: + es5-ext: 0.10.62 + dev: true + + /lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + dev: true + + /match-all@1.2.6: + resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} + dev: true + + /mcl-wasm@0.7.9: + resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==} + engines: {node: '>=8.9.0'} + dev: true + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.7 + dev: true + + /memory-level@1.0.0: + resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} + engines: {node: '>=12'} + dependencies: + abstract-level: 1.0.3 + functional-red-black-tree: 1.0.1 + module-error: 1.0.2 + dev: true + + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + dependencies: + obliterator: 2.0.4 + dev: true + + /mocha@10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /module-error@1.0.2: + resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /murmur-128@0.2.1: + resolution: {integrity: sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==} + dependencies: + encode-utf8: 1.0.3 + fmix: 0.1.0 + imul: 1.0.1 + dev: true + + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + dev: true + + /nanoid@3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /napi-macros@2.2.2: + resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: true + + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: true + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + + /node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + dependencies: + lodash: 4.17.21 + dev: true + + /node-fetch@2.6.1: + resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} + engines: {node: 4.x || >=6.0.0} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + + /node-gyp-build@4.6.1: + resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + hasBin: true + dev: true + + /nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + dev: true + + /nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + dependencies: + abbrev: 1.0.9 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.13.0: + resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} + dev: true + + /obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: true + + /ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + + /parse-cache-control@1.0.1: + resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} + dev: true + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.1 + minipass: 7.0.4 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: true + + /protobufjs@6.11.4: + resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} + hasBin: true + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/long': 4.0.2 + '@types/node': 20.8.6 + long: 4.0.0 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.8 + dev: true + + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: true + + /reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + dev: true + + /req-cwd@2.0.0: + resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} + engines: {node: '>=4'} + dependencies: + req-from: 2.0.0 + dev: true + + /req-from@2.0.0: + resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: true + + /resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + dev: true + + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + dependencies: + path-parse: 1.0.7 + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.0 + dev: true + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + dependencies: + bn.js: 5.2.1 + dev: true + + /run-parallel-limit@1.1.0: + resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rustbn.js@0.2.0: + resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} + dev: true + + /s-expression@3.1.1: + resolution: {integrity: sha512-VMsW7sIvixXfIDmDll7XCePMYYY52UlUtA7OlFQUovqj3XtQ2UkZkjjAvnSFW8o+SbswzUEeCBMmpAx9LS3qrg==} + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sc-istanbul@0.4.6: + resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} + hasBin: true + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + dev: true + + /scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + dev: true + + /scryptsy@2.1.0: + resolution: {integrity: sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==} + dev: true + + /secp256k1@3.8.0: + resolution: {integrity: sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==} + engines: {node: '>=4.0.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + bip66: 1.1.5 + bn.js: 4.12.0 + create-hash: 1.2.0 + drbg.js: 1.0.1 + elliptic: 6.5.4 + nan: 2.18.0 + safe-buffer: 5.2.1 + dev: true + + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.13.0 + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /sodium-native@3.3.0: + resolution: {integrity: sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.1 + dev: true + + /sodium-randbytes@0.14.0: + resolution: {integrity: sha512-X5HXTHiorRs8Jte7+SEwxnX0ZPmDdU3TxYIIOoTklEgdiFELtQ1CwwyBBePPZlN0T+XDNBlNaikPRarfT0cK/A==} + dependencies: + '@types/sodium-native': 2.3.5 + sodium-native: 3.3.0 + dev: true + + /solc@0.7.3(debug@4.3.4): + resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + command-exists: 1.2.9 + commander: 3.0.2 + follow-redirects: 1.15.5(debug@4.3.4) + fs-extra: 0.30.0 + js-sha3: 0.8.0 + memorystream: 0.3.1 + require-from-string: 2.0.2 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + dev: true + + /solidity-coverage@0.8.5(hardhat@2.18.1): + resolution: {integrity: sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==} + hasBin: true + peerDependencies: + hardhat: ^2.11.0 + dependencies: + '@ethersproject/abi': 5.7.0 + '@solidity-parser/parser': 0.16.1 + chalk: 2.4.2 + death: 1.1.0 + detect-port: 1.5.1 + difflib: 0.2.4 + fs-extra: 8.1.0 + ghost-testrpc: 0.0.2 + global-modules: 2.0.0 + globby: 10.0.2 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + jsonschema: 1.4.1 + lodash: 4.17.21 + mocha: 10.2.0 + node-emoji: 1.11.0 + pify: 4.0.1 + recursive-readdir: 2.2.3 + sc-istanbul: 0.4.6 + semver: 7.5.4 + shelljs: 0.8.5 + web3-utils: 1.10.2 + transitivePeerDependencies: + - supports-color + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + amdefine: 1.0.1 + dev: true + optional: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + dev: true + + /string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + dependencies: + ansi-regex: 3.0.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /sync-request@6.1.0: + resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} + engines: {node: '>=8.0.0'} + dependencies: + http-response-object: 3.0.2 + sync-rpc: 1.3.6 + then-request: 6.0.2 + dev: true + + /sync-rpc@1.3.6: + resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} + dependencies: + get-port: 3.2.0 + dev: true + + /table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + dev: true + + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /then-request@6.0.2: + resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} + engines: {node: '>=6.0.0'} + dependencies: + '@types/concat-stream': 1.6.1 + '@types/form-data': 0.0.33 + '@types/node': 8.10.66 + '@types/qs': 6.9.8 + caseless: 0.12.0 + concat-stream: 1.6.2 + form-data: 2.5.1 + http-basic: 8.1.3 + http-response-object: 3.0.2 + promise: 8.3.0 + qs: 6.11.2 + dev: true + + /timers-ext@0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + dependencies: + es5-ext: 0.10.62 + next-tick: 1.1.0 + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + dev: true + + /ts-essentials@7.0.3(typescript@5.2.2): + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-node@10.9.1(@types/node@20.8.6)(typescript@5.2.2): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.8.6 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true + + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: true + + /tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + dev: true + + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: true + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: true + + /type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: true + + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: true + + /typechain@8.3.2(typescript@5.2.2): + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + dependencies: + '@types/prettier': 2.7.3 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + dev: true + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true + + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.0.0 + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unorm@1.6.0: + resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} + engines: {node: '>= 0.4.0'} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.1 + dev: true + + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utility-types@2.1.0: + resolution: {integrity: sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw==} + engines: {node: '>= 4'} + dev: true + + /utility-types@3.10.0: + resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} + engines: {node: '>= 4'} + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + + /web3-utils@1.10.2: + resolution: {integrity: sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /websocket@1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.8 + debug: 2.6.9 + es5-ext: 0.10.62 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /whatwg-fetch@2.0.4: + resolution: {integrity: sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==} + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + dev: true + + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yaeti@0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + engines: {node: '>= 14'} + dev: false + + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zksync-web3@0.14.3(ethers@5.7.2): + resolution: {integrity: sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ==} + peerDependencies: + ethers: ^5.7.0 + dependencies: + ethers: 5.7.2 + dev: true diff --git a/contracts/reward_control/pnpm-workspace.yaml b/contracts/reward_control/pnpm-workspace.yaml new file mode 100644 index 000000000..ccbac807c --- /dev/null +++ b/contracts/reward_control/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "." diff --git a/contracts/reward_control/test/TestMultiSig.ts b/contracts/reward_control/test/TestMultiSig.ts new file mode 100644 index 000000000..9d6ae08e8 --- /dev/null +++ b/contracts/reward_control/test/TestMultiSig.ts @@ -0,0 +1,371 @@ +import { anyValue } from "@nomicfoundation/hardhat-chai-matchers/withArgs"; +import { expect } from "chai"; +import hre, { ethers } from "hardhat"; +import { Contract, Signer } from "ethers"; +import hre from "hardhat"; +import { ScillaContract } from "hardhat-scilla-plugin"; +import * as utils from "../utils/utils.ts"; + +let WALLET_INDEX_0 = 0; +let WALLET_INDEX_1 = 1; +let WALLET_INDEX_2 = 2; +let WALLET_INDEX_3 = 3; +const DEBUG = false; + +interface ByStr20Type { + constructor: string; + argtypes: string[]; + arguments: string[]; +} + +function createByStr20Object(address: string): ByStr20Type { + return { + constructor: "ByStr20", + argtypes: ["ByStr20"], + arguments: [address], + }; +} + +describe(utils.TestGeneral(0, "TestMultiSigRewardsParam"), function () { + // let hello: Contract; + let scillaRewardsParamsContract: ScillaContract; + let scillaMultiSigRewardsParamContract: ScillaContract; + let scillaMultiSigRewardsParamContractNew: ScillaContract; + + before(async function () { + utils.ensureZilliqa(); + utils.setZilliqaSignerToAccountByHardhatWallet(WALLET_INDEX_0); + let owner_0 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + if (DEBUG) { + console.log(`Address 0 ${owner_0}`); + } + let owner_1 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_1); + if (DEBUG) { + console.log(`Address 1 ${owner_1}`); + } + let owner_2 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_2); + if (DEBUG) { + console.log(`Address 2 ${owner_2}`); + } + + const owner_list: string[] = [owner_0, owner_1, owner_2]; + if (DEBUG) { + console.log(owner_list); + } + if ((await hre.zilliqa.getBalanceForAddress(owner_0))[0].isZero()) { + throw Error(`Account {owner_0} is not funded`); + } + if ((await hre.zilliqa.getBalanceForAddress(owner_1))[0].isZero()) { + throw Error(`Account {owner_1} is not funded`); + } + if ((await hre.zilliqa.getBalanceForAddress(owner_2))[0].isZero()) { + throw Error(`Account {owner_2} is not funded`); + } + if (DEBUG) { + console.log(`All owners have non-zero funds: good!`); + } + let num_of_required_signatures = 2; + scillaMultiSigRewardsParamContract = await hre.deployScillaContract( + "MultiSigWalletRewardsParam", + owner_list, + num_of_required_signatures + ); + // console.log(scillaMultiSigRewardsParamContract) + utils.checkScillaTransactionSuccess(scillaMultiSigRewardsParamContract); + + const multiSigAddress = scillaMultiSigRewardsParamContract.address; + if (DEBUG) { + console.log(`MultiSig address is ${multiSigAddress}`); + } + + scillaRewardsParamsContract = await hre.deployScillaContract( + "RewardsParams", + multiSigAddress + ); + utils.checkScillaTransactionSuccess(scillaRewardsParamsContract); + + if (DEBUG) { + console.log( + `Rewards Params Contract Address: ${scillaRewardsParamsContract.address}` + ); + } + }); + + it("Contract should be deployed successfully", async function () { + expect(scillaMultiSigRewardsParamContract.address).to.be.properAddress; + expect(scillaRewardsParamsContract.address).to.be.properAddress; + }); + + it("Admin of the rewards param contract should be the multi sig wallet", async function () { + const multiSigAddress = scillaMultiSigRewardsParamContract.address; + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + multiSigAddress.toLowerCase() + ); + }); + + it("Multi sig wallet can change base reward to 25", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeBaseRewardTransaction(rewardsContractAddress, 25); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + expect(await scillaRewardsParamsContract.base_reward_in_percent()).to.be.eq( + 25 + ); + }); + + it("Multi sig wallet can change lookup reward to 35", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeLookupRewardTransaction(rewardsContractAddress, 35); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + expect( + await scillaRewardsParamsContract.lookup_reward_in_percent() + ).to.be.eq(35); + }); + + it("Multi sig wallet can change node reward to 25", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeNodeRewardTransaction(rewardsContractAddress, 25); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + expect(await scillaRewardsParamsContract.node_reward_in_percent()).to.be.eq( + 25 + ); + }); + + it("Multi sig wallet can change RewardEachMulInMillis to 1234", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeRewardEachMulInMillisTransaction( + rewardsContractAddress, + 1234 + ); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + expect( + await scillaRewardsParamsContract.reward_each_mul_in_millis() + ).to.be.eq(1234); + }); + + it("Multi sig wallet can change BaseRewardMulInMillis to 4567", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeBaseRewardMulInMillisTransaction( + rewardsContractAddress, + 4567 + ); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + expect( + await scillaRewardsParamsContract.base_reward_mul_in_millis() + ).to.be.eq(4567); + }); + + it("Multi sig wallet can change coinbase reward per ds to 180000000000000000", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeCoinbaseRewardTransaction( + rewardsContractAddress, + 180000000000000000 + ); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + expect(await scillaRewardsParamsContract.coinbase_reward_per_ds()).to.be.eq( + 180000000000000000 + ); + }); + + // negative test cases + it("A wallet that is not in the multi sig wallet list cannot submit transaction", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + let acc_3 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_3); + + const CALL_CONTRACT_FAILED = 7; + try { + let result = await scillaMultiSigRewardsParamContract + .connect(acc_3) + .SubmitCustomChangeBaseRewardTransaction(rewardsContractAddress, 25); + expect(result.receipt.success).to.be.false; + expect(result.receipt.errors["0"].length).to.equal(1); + expect(result.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + }); + + it("A wallet that is not in the multi sig wallet list cannot sign transaction", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeBaseRewardTransaction(rewardsContractAddress, 25); + expect(result.receipt.success).to.be.true; + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_3 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_3); + + const CALL_CONTRACT_FAILED = 7; + try { + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_3) + .SignTransaction(multisig_txn_id); + + expect(result_1.receipt.success).to.be.false; + expect(result_1.receipt.errors["0"].length).to.equal(1); + expect(result_1.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + }); + + it("A wallet that is not in the multi sig wallet list cannot execute transaction", async function () { + const rewardsContractAddress = scillaRewardsParamsContract.address; + + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomChangeBaseRewardTransaction(rewardsContractAddress, 25); + expect(result.receipt.success).to.be.true; + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("Multisig txn id is: ", multisig_txn_id); + } + + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + expect(result_1.receipt.success).to.be.true; + + let acc_3 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_3); + + const CALL_CONTRACT_FAILED = 7; + try { + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_3) + .ExecuteTransaction(multisig_txn_id); + + expect(result_2.receipt.success).to.be.false; + expect(result_2.receipt.errors["0"].length).to.equal(1); + expect(result_2.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + if (DEBUG) { + console.log("Error: ", error); + } + } + }); +}); diff --git a/contracts/reward_control/test/TestMultisigChangeAdmin.ts b/contracts/reward_control/test/TestMultisigChangeAdmin.ts new file mode 100644 index 000000000..c619e34b4 --- /dev/null +++ b/contracts/reward_control/test/TestMultisigChangeAdmin.ts @@ -0,0 +1,202 @@ +import { anyValue } from "@nomicfoundation/hardhat-chai-matchers/withArgs"; +import { expect } from "chai"; +import hre, { ethers } from "hardhat"; +import { Contract, Signer } from "ethers"; +import hre from "hardhat"; +import { ScillaContract } from "hardhat-scilla-plugin"; +import * as utils from "../utils/utils.ts"; + +let WALLET_INDEX_0 = 0; +let WALLET_INDEX_1 = 1; +let WALLET_INDEX_2 = 2; +let WALLET_INDEX_3 = 3; +const DEBUG = true; + +interface ByStr20Type { + constructor: string; + argtypes: string[]; + arguments: string[]; +} + +function createByStr20Object(address: string): ByStr20Type { + return { + constructor: "ByStr20", + argtypes: ["ByStr20"], + arguments: [address], + }; +} +describe(utils.TestGeneral(0, "TestMultiSigChangeAdmin"), function () { + // let hello: Contract; + let scillaRewardsParamsContract: ScillaContract; + let scillaMultiSigRewardsParamContract: ScillaContract; + let scillaMultiSigRewardsParamContractNew: ScillaContract; + + before(async function () { + utils.ensureZilliqa(); + + utils.setZilliqaSignerToAccountByHardhatWallet(WALLET_INDEX_0); + let owner_0 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + if (DEBUG) { + console.log(`Address 0 ${owner_0}`); + } + let owner_1 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_1); + if (DEBUG) { + console.log(`Address 1 ${owner_1}`); + } + let owner_2 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_2); + if (DEBUG) { + console.log(`Address 2 ${owner_2}`); + } + + if ((await hre.zilliqa.getBalanceForAddress(owner_0))[0].isZero()) { + throw Error(`Account {owner_0} is not funded`); + } + if ((await hre.zilliqa.getBalanceForAddress(owner_1))[0].isZero()) { + throw Error(`Account {owner_1} is not funded`); + } + if ((await hre.zilliqa.getBalanceForAddress(owner_2))[0].isZero()) { + throw Error(`Account {owner_2} is not funded`); + } + const owner_list: string[] = [owner_0, owner_1, owner_2]; + if (DEBUG) { + console.log(owner_list); + } + + let non_owner = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_3); + if (DEBUG) { + console.log(`Non-owner address ${non_owner}`); + } + if ((await hre.zilliqa.getBalanceForAddress(non_owner))[0].isZero()) { + throw Error(`Account {non_owner} is not funded`); + } + if (DEBUG) { + console.log(`All owners and non-owner have non-zero funds: good!`); + } + + let num_of_required_signatures = 2; + scillaMultiSigRewardsParamContract = await hre.deployScillaContract( + "MultiSigWalletRewardsParam", + owner_list, + num_of_required_signatures + ); + // console.log(scillaMultiSigRewardsParamContract) + utils.checkScillaTransactionSuccess(scillaMultiSigRewardsParamContract); + + const multiSigAddress = scillaMultiSigRewardsParamContract.address; + if (DEBUG) { + console.log(`MultiSig address is ${multiSigAddress}`); + } + + scillaRewardsParamsContract = await hre.deployScillaContract( + "RewardsParams", + multiSigAddress + ); + utils.checkScillaTransactionSuccess(scillaRewardsParamsContract); + + if (DEBUG) { + console.log( + `Rewards Params Contract Address: ${scillaRewardsParamsContract.address}` + ); + } + }); + + // changing admin + it("Multi sig wallet can change admin to a new multisig wallet", async function () { + let owner_0 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + let owner_2 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_2); + let owner_3 = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_3); + + if (DEBUG) { + console.log(`Address 0 ${owner_0}`); + console.log(`Address 2 ${owner_2}`); + console.log(`Address 3 ${owner_3}`); + } + + const owner_list: string[] = [owner_0, owner_2, owner_3]; + + let num_of_required_signatures = 2; + let scillaMultiSigRewardsParamContractNew = await hre.deployScillaContract( + "MultiSigWalletRewardsParam", + owner_list, + num_of_required_signatures + ); + + utils.checkScillaTransactionSuccess(scillaMultiSigRewardsParamContractNew); + + const multiSigAddressNew = scillaMultiSigRewardsParamContractNew.address; + if (DEBUG) { + console.log(`New MultiSig address is ${multiSigAddressNew}`); + } + + // changing the admin wallet of the underlyiong rewards param contract to the new multisig + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + const rewardsContractAddress = scillaRewardsParamsContract.address; + let result = await scillaMultiSigRewardsParamContract + .connect(acc_0) + .SubmitCustomUpdateAdminTransaction( + rewardsContractAddress, + multiSigAddressNew + ); + const multisig_txn_id = result.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("[1] Multisig txn id is: ", multisig_txn_id); + } + + if (DEBUG) { + console.log("Get balance for idx 1"); + } + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result_1 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .SignTransaction(multisig_txn_id); + let result_2 = await scillaMultiSigRewardsParamContract + .connect(acc_1) + .ExecuteTransaction(multisig_txn_id); + + if (DEBUG) { + console.log("Get balance for idx 2"); + } + // claim the new admin + let acc_2 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_2); + if (DEBUG) { + console.log("Get balance for idx 3"); + } + let acc_3 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_3); + if (DEBUG) { + console.log("XX1"); + } + let result_3 = await scillaMultiSigRewardsParamContractNew + .connect(acc_2) + .SubmitCustomClaimAdminTransaction(rewardsContractAddress); + const multisig_txn_id_1 = result_3.receipt.event_logs[0].params[0].value; + if (DEBUG) { + console.log("[2] Multisig txn id is: ", multisig_txn_id_1); + } + + if (DEBUG) { + console.log("Signing .. "); + } + let result_4 = await scillaMultiSigRewardsParamContractNew + .connect(acc_3) + .SignTransaction(multisig_txn_id_1); + let result_5 = await scillaMultiSigRewardsParamContractNew + .connect(acc_3) + .ExecuteTransaction(multisig_txn_id_1); + + expect(scillaMultiSigRewardsParamContractNew.address).to.be.properAddress; + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + multiSigAddressNew.toLowerCase() + ); + }); +}); diff --git a/contracts/reward_control/test/TestParams.ts b/contracts/reward_control/test/TestParams.ts new file mode 100644 index 000000000..5ee9a8d7e --- /dev/null +++ b/contracts/reward_control/test/TestParams.ts @@ -0,0 +1,311 @@ +import { anyValue } from "@nomicfoundation/hardhat-chai-matchers/withArgs"; +import { expect } from "chai"; +import hre, { ethers } from "hardhat"; +import { Contract, Signer } from "ethers"; +import hre from "hardhat"; +import { ScillaContract } from "hardhat-scilla-plugin"; +import * as utils from "../utils/utils.ts"; + +let WALLET_INDEX_0 = 0; +let WALLET_INDEX_1 = 1; +let WALLET_INDEX_2 = 2; +const DEBUG = false; + +describe(utils.TestGeneral(0, "TestParams"), function () { + // let hello: Contract; + let scillaRewardsParamsContract: ScillaContract; + + before(async function () { + utils.ensureZilliqa(); + utils.setZilliqaSignerToAccountByHardhatWallet(WALLET_INDEX_0); + let owner = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + if (DEBUG) { + console.log(`Address ${owner}`); + } + scillaRewardsParamsContract = await hre.deployScillaContract( + "RewardsParams", + owner + ); + utils.checkScillaTransactionSuccess(scillaRewardsParamsContract); + + if (DEBUG) { + console.log( + `Rewards Params Contract: ${scillaRewardsParamsContract.address}` + ); + } + // console.log(`${JSON.stringify(scillaRewardsParamsContract)}`); + }); + + it("Contract should be deployed successfully", async function () { + expect(scillaRewardsParamsContract.address).to.be.properAddress; + }); + + // check the default values after contract deployment + + it("Admin should be the first wallet", async function () { + let firstAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + firstAdmin.toLowerCase() + ); + }); + + it("Percent precision should be 100", async function () { + expect(await scillaRewardsParamsContract.percent_precision()).to.be.eq(100); + }); + + it("Default base reward should be 2000", async function () { + expect(await scillaRewardsParamsContract.base_reward_in_percent()).to.be.eq( + 2000 + ); + }); + + it("Default lookup reward should be 4000", async function () { + expect( + await scillaRewardsParamsContract.lookup_reward_in_percent() + ).to.be.eq(4000); + }); + + it("Default node reward should be 4000", async function () { + expect(await scillaRewardsParamsContract.node_reward_in_percent()).to.be.eq( + 4000 + ); + }); + + it("Default coinbase reward per ds should be 204000000000000000", async function () { + expect(await scillaRewardsParamsContract.coinbase_reward_per_ds()).to.be.eq( + 204000000000000000 + ); + }); + + it("Default reward mul in millis should be 1668", async function () { + expect( + await scillaRewardsParamsContract.reward_each_mul_in_millis() + ).to.be.eq(1668); + }); + + it("Default base_reward mul in millis should be 4726", async function () { + expect( + await scillaRewardsParamsContract.base_reward_mul_in_millis() + ).to.be.eq(4726); + }); + + // changing the parameters by admin + + it("Admin can change base reward to 25", async function () { + let result1 = await scillaRewardsParamsContract.ChangeBaseReward(25); + expect(await scillaRewardsParamsContract.base_reward_in_percent()).to.be.eq( + 25 + ); + }); + + it("Admin can change lookup reward to 35", async function () { + let result1 = await scillaRewardsParamsContract.ChangeLookupReward(35); + expect( + await scillaRewardsParamsContract.lookup_reward_in_percent() + ).to.be.eq(35); + }); + + it("Admin can change node reward to 25", async function () { + let result1 = await scillaRewardsParamsContract.ChangeNodeReward(25); + expect(await scillaRewardsParamsContract.node_reward_in_percent()).to.be.eq( + 25 + ); + }); + + it("Admin can change coinbase reward per ds to 180000000000000000", async function () { + let result1 = await scillaRewardsParamsContract.ChangeCoinbaseReward( + 180000000000000000 + ); + expect(await scillaRewardsParamsContract.coinbase_reward_per_ds()).to.be.eq( + 180000000000000000 + ); + }); + + it("Admin can change reward_each_mul_in_millis to 400", async function () { + let result1 = await scillaRewardsParamsContract.ChangeRewardEachMulInMillis( + 400 + ); + expect( + await scillaRewardsParamsContract.reward_each_mul_in_millis() + ).to.be.eq(400); + }); + + it("Admin can change reward_base_mul_in_millis to 392", async function () { + let result1 = await scillaRewardsParamsContract.ChangeBaseRewardMulInMillis( + 392 + ); + expect( + await scillaRewardsParamsContract.base_reward_mul_in_millis() + ).to.be.eq(392); + }); + + // negative test cases + it("A non admin wallet cannot set base reward", async function () { + let acc_2 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_2); + + const CALL_CONTRACT_FAILED = 7; + try { + let result = await scillaRewardsParamsContract + .connect(acc_2) + .ChangeBaseReward(35); + expect(result.receipt.success).to.be.false; + expect(result.receipt.errors["0"].length).to.equal(1); + expect(result.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + + // verify that the base reward has not changed + expect(await scillaRewardsParamsContract.base_reward_in_percent()).to.be.eq( + 25 + ); + }); + + it("A non admin wallet cannot set lookup reward", async function () { + let acc_2 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_2); + + const CALL_CONTRACT_FAILED = 7; + try { + let result = await scillaRewardsParamsContract + .connect(acc_2) + .ChangeLookupReward(50); + expect(result.receipt.success).to.be.false; + expect(result.receipt.errors["0"].length).to.equal(1); + expect(result.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + + // verify that the lookup reward has not changed + expect( + await scillaRewardsParamsContract.lookup_reward_in_percent() + ).to.be.eq(35); + }); + + it("A non admin wallet cannot set coinbase reward per ds", async function () { + let acc_2 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_2); + + const CALL_CONTRACT_FAILED = 7; + try { + let result = await scillaRewardsParamsContract + .connect(acc_2) + .ChangeCoinbaseReward(190000000000000000); + expect(result.receipt.success).to.be.false; + expect(result.receipt.errors["0"].length).to.equal(1); + expect(result.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + + // verify that the coinbase reward has not changed + expect(await scillaRewardsParamsContract.coinbase_reward_per_ds()).to.be.eq( + 180000000000000000 + ); + }); + + it("A non admin wallet cannot set a new admin", async function () { + let acc_2 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_2); + let newAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_2); + + const CALL_CONTRACT_FAILED = 7; + try { + let result = await scillaRewardsParamsContract + .connect(acc_2) + .UpdateAdmin(newAdmin); + expect(result.receipt.success).to.be.false; + expect(result.receipt.errors["0"].length).to.equal(1); + expect(result.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + + // verify that the admin has not changed + let firstAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + firstAdmin.toLowerCase() + ); + }); + + // test setting new admin + it("The current admin can set a new admin", async function () { + // utils.setZilliqaSignerToAccountByHardhatWallet(WALLET_INDEX_0); + let acc_0 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_0); + let newAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_1); + if (DEBUG) { + console.log(`Admin changing to: ${newAdmin}`); + } + let result1 = await scillaRewardsParamsContract + .connect(acc_0) + .UpdateAdmin(newAdmin); + + // let us check the state of the stagingcontractadmin + let stagingcontractadmin = + await scillaRewardsParamsContract.stagingcontractadmin(); + expect(stagingcontractadmin.arguments[0]).to.equal(newAdmin.toLowerCase()); + + // this change does not change the admin, it has to be claimed by the new admin wallet + // so the admin should remain unchanged + let firstAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + firstAdmin.toLowerCase() + ); + }); + + // a negative case for claiming to be a new admin + it("A non-target wallet cannot claim new admin", async function () { + let acc_2 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_2); + + const CALL_CONTRACT_FAILED = 7; + try { + let result = await scillaRewardsParamsContract + .connect(acc_2) + .ClaimAdmin(); + expect(result.receipt.success).to.be.false; + expect(result.receipt.errors["0"].length).to.equal(1); + expect(result.receipt.errors[0][0]).to.equal(CALL_CONTRACT_FAILED); + } catch (error) { + console.log("Error: ", error); + } + + // there should be no change of admin + let firstAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_0); + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + firstAdmin.toLowerCase() + ); + + // there should be no change of staging admin + let stagingcontractadmin = + await scillaRewardsParamsContract.stagingcontractadmin(); + let targetAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_1); + expect(stagingcontractadmin.arguments[0]).to.equal( + targetAdmin.toLowerCase() + ); + }); + + // the designated wallet should be able to claim the new admin + it("Target new admin wallet can claim new admin", async function () { + let acc_1 = + utils.getZilliqaAccountForAccountByHardhatWallet(WALLET_INDEX_1); + let result2 = await scillaRewardsParamsContract.connect(acc_1).ClaimAdmin(); + let targetAdmin = + utils.getZilliqaAddressForAccountByHardhatWallet(WALLET_INDEX_1); + + expect(await scillaRewardsParamsContract.contractadmin()).to.be.eq( + targetAdmin.toLowerCase() + ); + }); +}); diff --git a/contracts/reward_control/tsconfig.json b/contracts/reward_control/tsconfig.json new file mode 100644 index 000000000..574e785c7 --- /dev/null +++ b/contracts/reward_control/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} diff --git a/contracts/reward_control/utils/config.ts b/contracts/reward_control/utils/config.ts new file mode 100644 index 000000000..0f3b23c0c --- /dev/null +++ b/contracts/reward_control/utils/config.ts @@ -0,0 +1,138 @@ +// Utilities for reading configuration files. +import * as YAML from "yaml"; +import * as fs from "fs"; + +export enum ContractType { + EVM, + Scilla, +} + +export interface ContractDescription { + name: string; + chainId: Number; + address: string; + extra: any; + contractType: ContractType; +} + +export interface Account { + privkey: string; +} + +// function getConfigFilename(relname: string): string { +// const fileName = `${process.env.Z_CONFIG}/${relname}.yaml`; +// return fileName; +// } + +// function readYaml(relname: string): any { +// const fileName = getConfigFilename(relname); +// const contents = fs.readFileSync(fileName, "utf-8"); +// const parsed = YAML.parse(contents); +// return parsed; +// } + +export function getDeploymentDescription( + forContract: string +): ContractDescription | undefined { + let fileName = getDeploymentFilename(forContract); + if (!fs.existsSync(fileName)) { + return undefined; + } + let someData = fs.readFileSync(fileName, { encoding: "utf8" }); + let result = YAML.parse(someData) as ContractDescription; + return result; +} + +// export function getSecrets(forContract: string): any { +// let fileName = getSecretsFilename(forContract); +// let someData = fs.readFileSync(fileName, { encoding: "utf8" }); +// if (someData === undefined) { +// return undefined; +// } +// let result = YAML.parse(someData); +// return result; +// } + +// export function updateDeploymentDescription(description: ContractDescription) { +// let fileName = getDeploymentFilename(description.name); +// fs.writeFileSync(fileName, YAML.stringify(description), { mode: 0o644 }); +// } + +// export function updateSecrets(name: string, secrets: any) { +// let fileName = getSecretsFilename(name); +// fs.writeFileSync(fileName, YAML.stringify(secrets), { mode: 0o644 }); +// } + +// export function getDeploymentFilename(forContract: string): string { +// let directory = `${process.env.Z_CONFIG}/deployments`; +// if (!fs.existsSync(directory)) { +// fs.mkdirSync(directory, { recursive: true, mode: 0o755 }); +// } +// return `${directory}/${forContract}.yaml`; +// } + +// export function getSecretsFilename(forContract: string): string { +// let directory = `${process.env.Z_CONFIG}/secrets`; +// if (!fs.existsSync(directory)) { +// fs.mkdirSync(directory, { recursive: true, mode: 0o755 }); +// } +// return `${directory}/${forContract}.yaml`; +// } + +// export function baseConfig(): any { +// return readYaml("base"); +// } + +// // Turn a list of .-separated key/value pairs into an object heirarchy +// export function assembleObjects(flat_map: any): any { +// let result = {}; +// for (let k in flat_map) { +// let v = flat_map[k]; +// let entries = k.split("."); +// let cur = result; +// for (let e of entries.slice(0, -1)) { +// let next = {}; +// if (e in cur) { +// next = cur[e]; +// } else { +// cur[e] = next; +// } +// cur = next; +// } +// let final = entries.pop(); +// cur[final] = v; +// } +// return result; +// } + +// export function baseSecrets(): any { +// if (!fs.existsSync(getConfigFilename("secrets.cache"))) { +// throw Error( +// "secrets.cache.yaml does not exist - run z dev compile-secrets" +// ); +// } +// let keys = readYaml("secrets.cache"); +// let obj = assembleObjects(keys); +// return obj; +// } + +export function getAccounts(): Object { + return baseSecrets().accounts; +} + +export function getPrivKeys(): string[] { + let m = Object.values(getAccounts()).map((x) => x.privkey); + return m; +} + +export function getEthChainId(): Number { + let chainId = baseConfig().chainId; + chainId = chainId | 0x8000; + return chainId; +} + +export function getZilliqaChainId(): Number { + let chainId = baseConfig().chainId; + chainId = chainId & ~0x8000; + return chainId; +} diff --git a/contracts/reward_control/utils/deploy-task.ts b/contracts/reward_control/utils/deploy-task.ts new file mode 100644 index 000000000..f4f06795a --- /dev/null +++ b/contracts/reward_control/utils/deploy-task.ts @@ -0,0 +1,32 @@ +import * as fs from "fs"; +import * as path from "path"; +import { task } from "hardhat/config"; + +task("deploy", "Deploy stuff") + .addOptionalParam("only") + .setAction(async (taskArgs) => { + let only = taskArgs.only; + let theRegex = undefined; + if (only !== undefined) { + theRegex = `^${only}$`; + } + // Find the deployment scripts. + let deployContents = fs.readdirSync(path.resolve(process.cwd(), "deploy"), { + encoding: "utf8", + }); + deployContents = deployContents + .filter((filename) => { + return filename.endsWith(".ts"); + }) + .sort(); + for (let deployFile of deployContents) { + if (only == undefined || deployFile.match(theRegex)) { + console.log(`> ${deployFile}`); + let f = await import(path.resolve(process.cwd(), "deploy", deployFile)); + await f.default(); + console.log(`Done`); + } + } + console.log(`${JSON.stringify(deployContents)}`); + console.log(taskArgs); + }); diff --git a/contracts/reward_control/utils/ensure_funding.ts b/contracts/reward_control/utils/ensure_funding.ts new file mode 100644 index 000000000..8b8129083 --- /dev/null +++ b/contracts/reward_control/utils/ensure_funding.ts @@ -0,0 +1,112 @@ +/* A script which ensures that all the accounts in secret.yaml are properly funded so they can + * either deploy or test scripts. We fund both ethereum and zilliqa accounts with the given private keys. + * + * The funding source is taken from `fundingsource: zilliqa:` and we ensure that at least `amount` ZIL is + * credited to each account. We fund from a zilliqa account because those are the accounts that get funded + * by default in test servers :-p + */ + +// I apologise for the horror below. It was originally written v quickly for ionise :-( - rrw 2023-07-20 +import { Account, Transaction, TxParams, Wallet } from "@zilliqa-js/account"; +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; +import { getSignerForAddress } from "../utils/hardhatUtils"; +import { ethers } from "hardhat"; +import { initZilliqa, Setup as ZilliqaSetup } from "hardhat-scilla-plugin"; +import { Zilliqa } from "@zilliqa-js/zilliqa"; +import { + getAddressFromPrivateKey, + toChecksumAddress, +} from "@zilliqa-js/crypto"; +import { BN, units } from "@zilliqa-js/util"; +import * as config from "./config.ts"; +import * as utils from "./utils.ts"; +import { Blockchain } from "@zilliqa-js/blockchain"; +import { Wallet } from "@zilliqa-js/wallet"; +import { Account as ZilliqaAccount } from "@zilliqa-js/account"; + +const ETHER_TO_WEI = 1000000000000000000n; + +async function getFundingRequired( + setup: ZilliqaSetup, + fundAddress: string, + amountQa: BN +): BN { + let balance = await utils.getZilBalance(setup, fundAddress); + if (balance.gte(amountQa)) { + return new BN("0"); + } + // otherwise we need to fund. + let amountToFund = amountQa.sub(balance); + return amountToFund; +} + +async function ensureZilFunding( + setup: ZilliqaSetup, + funderKey: string, + fundAddress: string, + fundingAmountQa: BN +) { + let amount = await getFundingRequired(setup, fundAddress, fundingAmountQa); + if (amount.lte(new BN("0"))) { + return; + } + // Get balance. + console.log(`${fundAddress}: + ${amount}`); + const txDefault: TxParams = { + version: setup.version, + gasPrice: setup.gasPrice, + gasLimit: setup.gasLimit, + amount: amount, + toAddr: toChecksumAddress(fundAddress), + }; + const txnData = setup.zilliqa.transactions.new(txDefault); + console.log(`Funder key ${funderKey}`); + let sender = await utils.getZilliqaBlockchainForPrivateKey(setup, funderKey); + const txn = await sender.createTransaction(txnData, 50, 5000); + if (txn.isRejected()) { + throw Error(`Funding transaction rejected: ${txn}`); + } +} + +async function main() { + let secrets = config.baseSecrets(); + let fundingPrivkey = secrets.fundingsource.zilliqa; + // console.log(`${JSON.stringify(secrets)} ${JSON.stringify(secrets.fundingsource)}`) + let fundingAmountQa = units.toQa( + secrets.fundingsource.amount, + units.Units.Zil + ); + let fundingAmountEther = BigInt(secrets.fundingsource.amount); + let fundingAmountWei = fundingAmountEther * ETHER_TO_WEI; + let fundingAddress = utils.zilliqaAddressFromPrivateKey(fundingPrivkey); + let keysToFund = config.getPrivKeys(); + console.log( + `Funding amount is ${fundingAmountQa} Qa, ${fundingAmountWei} wei` + ); + console.log(`Funding address is zil:${fundingAddress}`); + // Now get the current network url and chain id + let setup = utils.ensureZilliqa(); + + console.log("Checking accounts .. "); + for (var key of keysToFund) { + for (var address of [ + utils.zilliqaAddressFromPrivateKey(key), + utils.evmAddressFromPrivateKey(key), + ]) { + await ensureZilFunding(setup, fundingPrivkey, address, fundingAmountQa); + let amount = await getFundingRequired(setup, address, fundingAmountQa); + if (amount.gt(new BN("0"))) { + throw Error(`I couldn't fund ${address}`); + } + } + } + console.log("Done"); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/contracts/reward_control/utils/utils.ts b/contracts/reward_control/utils/utils.ts new file mode 100644 index 000000000..470bbadf9 --- /dev/null +++ b/contracts/reward_control/utils/utils.ts @@ -0,0 +1,309 @@ +/** General functions used everywhere + * + * Most of these came from ionise's hardhatUtils.ts . + */ + +import { initZilliqa } from "hardhat-scilla-plugin"; +import { expect } from "chai"; +import { Zilliqa } from "@zilliqa-js/zilliqa"; +import { ScillaContract, Setup as ZilliqaSetup } from "hardhat-scilla-plugin"; +import hre, { ethers, network } from "hardhat"; +import { getAddressFromPrivateKey } from "@zilliqa-js/crypto"; +import { BN, units } from "@zilliqa-js/util"; +import { Account, Transaction, TxParams, Wallet } from "@zilliqa-js/account"; +import { Blockchain } from "@zilliqa-js/blockchain"; +import { Wallet } from "@zilliqa-js/wallet"; +import * as configUtils from "./config.ts"; +import { Contract as EvmContract } from "ethers"; +import * as fs from "fs"; +import * as YAML from "yaml"; + +function getPrivateKey(accountIndex) { + // Access the private key for the specified account index + // console.log(hre.network.config.accounts) + if (accountIndex >= 0 && accountIndex < hre.network.config.accounts.length) { + const privateKey = hre.network.config.accounts[accountIndex]; + // console.log(`Private Key for Account ${accountIndex}: ${privateKey}`); + return privateKey; + } else { + console.error(`Account ${accountIndex} not found in the configuration`); + return ""; + } +} + +let zilliqaSetup = undefined; + +export function ensureZilliqa(): Zilliqa { + if (zilliqaSetup == undefined) { + const url = hre.network.config.url; + const chainId = hre.network.config.chainId & ~0x8000; + console.log(`Connecting to Zilliqa on ${url}, chainId ${chainId}`); + // Set the gas price to 2 - because it is in Li and otherwise the amount you need in your account + // is quite enormous. + const setup = initZilliqa( + url, + chainId, + hre.network.config.accounts, + 50, + 1000, + 2000, + 40000 + ); + zilliqaSetup = setup; + } + return zilliqaSetup; +} + +// reimplemented here for convenience. +export function zilliqaAddressFromPrivateKey(privKey: string): string { + return getAddressFromPrivateKey(privKey); +} + +export function evmAddressFromPrivateKey(privKey: string): string { + const wallet = new ethers.Wallet(privKey); + return wallet.address; +} + +export async function getEvmSignerForAccount(account: string) { + let rec = configUtils.getAccounts()[account]; + return getEvmSignerForAddress(evmAddressFromPrivateKey(rec.privkey)); +} + +export async function getZilliqaBlockchainForAccount(account: string) { + let rec = configUtils.getAccounts()[account]; + return getZilliqaBlockchainForPrivateKey(rec.privkey); +} + +export function setZilliqaSignerToAccountByHardhatWallet(accountIndex: number) { + let zho = hre.zilliqa; + let pvt_key = getPrivateKey(accountIndex); + // console.log(pvt_key) + let address = zilliqaAddressFromPrivateKey(pvt_key); + + console.log(`Setting default wallet for signing to: ${address}`); + zho.getZilliqaJSObject().wallet.setDefault(address); + hre.setActiveAccount(accountIndex); + // zho.getZilliqaJSObject().wallet.addByPrivateKey(pvt_key); +} + +export function setZilliqaSignerToAccount(account: string) { + let zho = hre.zilliqa; + let rec = configUtils.getAccounts()[account]; + let address = zilliqaAddressFromPrivateKey(rec.privkey); + zho.getZilliqaJSObject().wallet.setDefault(address); +} + +export function getZilliqaAddressForAccount(account: string): string { + let rec = configUtils.getAccounts()[account]; + let address = zilliqaAddressFromPrivateKey(rec.privkey); + return address; +} + +export function getZilliqaAddressForAccountByHardhatWallet( + accountIndex: number +): string { + let pvt_key = getPrivateKey(accountIndex); + let address = zilliqaAddressFromPrivateKey(pvt_key); + return address; +} + +export function getZilliqaAccountForAccountByHardhatWallet( + accountIndex: number +): string { + let pvt_key = getPrivateKey(accountIndex); + // let address = zilliqaAddressFromPrivateKey(pvt_key); + return new Account(pvt_key); +} + +export function getZilliqaAccountForAccount(account: string): string { + let rec = configUtils.getAccounts()[account]; + return new Account(rec.privkey); +} + +export function getEvmAddressForAccount(account: string): string { + let rec = configUtils.getAccounts()[account]; + return evmAddressFromPrivateKey(rec.privkey); +} + +export async function getEvmSignerForAddress(address: string) { + const allSigners = await ethers.getSigners(); + const selectedSigner = allSigners.find( + (s) => s.address.toLowerCase() == address.toLowerCase() + ); + if (!selectedSigner) { + throw new Error( + `No signer found for ${address}. Did you include the private key in your account list in hardhat.config.ts` + ); + } + return selectedSigner; +} + +export async function getZilliqaBlockchainForPrivateKey( + setup: ZilliqaSetup, + privKey: string +): Blockchain { + let accounts = [privKey].map((x) => new Account(x)); + const wallet = new Wallet(setup.zilliqa.provider, accounts); + const sender = new Blockchain(setup.zilliqa.provider, wallet); + return sender; +} + +export async function getZilBalance(setup: ZilliqaSetup, address: string): BN { + let balance = await setup.zilliqa.blockchain.getBalance(address); + if ( + balance["result"] !== undefined && + balance["result"]["balance"] !== undefined + ) { + return new BN(balance["result"]["balance"]); + } + return new BN("0"); +} + +export async function assertSuccess(ptx: Promise) { + const ll = logger.child({ utils: "assertSuccess" }); + + try { + const tx = await ptx; + + if (tx.confirmations < 1) { + ll.info("awaiting tx receipt"); + const receipt = await tx.wait(1); + + if (receipt.status === 0) { + ll.error({ receipt }); + throw new Error("transaction failed"); + } + + ll.info("transaction succeeded"); + } else { + /** + * tx.wait with ethere 5 gives "not an array" error + * turns out that await ptx returns transaction that + * was confirmed by just one block + */ + ll.info("transaction succeeded without waiting for receipt"); + } + } catch (e) { + ll.error(e); + throw e; + } +} + +export function TestGeneral(num: Number, desc: string) { + return TestName("GEN", num, desc); +} + +export function TestName(kind: string, num: Number, desc: string) { + let pad = num.toString().padStart(4, "0"); + return `${kind.toUpperCase()}${pad} - ${desc}`; +} + +// Check that a scilla event reported from an EVM call "looks" OK +export function validateScillaEvent( + scillaEventName: string, + contractAddress: string, + event: any +) { + expect(event["address"].toLowerCase()).to.eq(contractAddress.toLowerCase()); + const EXPECTED_TOPIC_0 = utils.keccak256( + toUtf8Bytes(scillaEventName + "(string)") + ); + expect(event["topics"][0].toLowerCase()).to.eq( + EXPECTED_TOPIC_0.toLowerCase() + ); + const decodedData = defaultAbiCoder.decode(["string"], event["data"]); + console.log(`decoded ${decodedData}`); + const scillaEvent = JSON.parse(decodedData.toString()); + expect(scillaEvent["_eventname"]).to.be.equal(scillaEventName); +} + +// Check that an EVM event reported from an EVM call "looks" OK. +export function validateEvmEvent( + evmEventName: string, + contractAddress: string, + event: any +) { + expect(event["address"].toLowerCase()).to.eq(contractAddress.toLowerCase()); + const EXPECTED_TOPIC_0 = utils.keccak256(toUtf8Bytes(evmEventName + "()")); + expect(event["topics"][0].toLowerCase()).to.eq( + EXPECTED_TOPIC_0.toLowerCase() + ); +} + +// Check that the given Zilliqa native transaction receipt was successful; throw and print complaints if it wasn't. +export function checkScillaTransactionSuccess(txn: any) { + console.log(`S ${txn.status}`); + if (txn.deployed_by.receipt !== undefined) { + console.log(`XX ${JSON.stringify(txn.deployed_by.receipt)}`); + let errs = txn.deployed_by.receipt.errors; + console.log(`E ${JSON.stringify(errs)}`); + for (var idx in errs) { + console.log(`Idx ${idx}`); + } + } +} + +export async function registerEvmDeployment( + name: string, + contract: EvmContract, + extra: any +) { + // Write a description file. + let receipt = await contract.deploymentTransaction(); + let chainId = receipt.chainId; + let address = await contract.getAddress(); + let description = { + name: name, + extra: extra, + chainid: Number(chainId), + address: address, + contractType: configUtils.ContractType.EVM, + }; + // Write out the description + configUtils.updateDeploymentDescription(description); + // @TODO - upload metadata to Sourcify +} + +export async function registerScillaDeployment( + name: string, + contract: ScillaContract, + extra: any +): configUtils.ContractDescription { + let chainId = contract.deployed_by.version >> 16; + let address = contract.address; + let description = { + name: name, + extra: extra, + chainid: Number(chainId), + address: address, + contractType: configUtils.ContractType.Scilla, + }; + configUtils.updateDeploymentDescription(description); + return description; +} + +export function assertDeployedContractData( + name: string +): configUtils.ContractDescription { + console.log(`Called!`); + let data = configUtils.getDeploymentDescription(name); + console.log(`getDeployment ${JSON.stringify(data)}`); + if (data === undefined) { + throw Error(`No deployed contract ${name}`); + } else { + console.log("Fish!"); + return data as configUtils.ContractDescription; + } +} + +export function assertDeployedSecrets(name: string): any { + let data = configUtils.getSecrets(name); + if (data === undefined) { + throw Error(`No deployed secrets ${name}`); + } + return data; +} + +export function updateDeployedSecrets(name: string, value: any) { + configUtils.updateSecrets(name, value); +} diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-current-ds-comm.md b/docs/api/blockchain-related-methods/api-blockchain-get-current-ds-comm.md new file mode 100644 index 000000000..7f28ab65f --- /dev/null +++ b/docs/api/blockchain-related-methods/api-blockchain-get-current-ds-comm.md @@ -0,0 +1,655 @@ +--- +id: api-blockchain-get-current-ds-comm +title: GetCurrentDSComm +--- + +--- + +Gives information on the public keys of DS committee members. Also, returns a parameter indicating the number of dsguards in the network. + +### Example Request + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetCurrentDSComm", + "params": [""] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": { + "CurrentDSEpoch": "35342", + "CurrentTxEpoch": "3534154", + "NumOfDSGuard": 420, + "dscomm": [ + "0x020035B739426374C5327A1224B986005297102E01C29656B8B086BF4B352C6CA9", + "0x0200834D709AD621785A90673F6011BC36ECF4CB13475237EAA2D4DEDAE7E9E554", + "0x02009A7997753BED9CC17435CBBEEAC52FACF575152FA738E98579FD22780A98B7", + "0x02011852D914FAE2B5FD0B58AFA90F2490AF374C661958A6376F0C20CE0E08F05B", + "0x02013D6697F5BEF5F65FB9A222AB58080DD2F471DAB9BF7A17664510512BFF8ED1", + "0x020177703339FDD3C56E3A5E4BAEDB253299C53BFC7A213679F9AD81ABA5BAB024", + "0x02017CACA3FCD088FAE478D3BDCDA443E4BE6B062F910CCD22D2937B35B6EBCDC7", + "0x02025543E056C090F74393C4B2E3655BB05931F63EE30623669051D96059BEF446", + "0x02028DAEA3E423C4DCBCAF42BCE5B6519B12B3B3229F62FCCB9C20495B69E6983E", + "0x0202D970B251DAE5FC44AE34F9A01269A1B2C96202693BE1809C3D7CCCDB653589", + "0x0202EE9193CDECEE54323EA75930A364C25E979B5806098255BC5142281379AFD4", + "0x020364471DFA532F0FD19CAC3932532D706515F4FCEC1B34DF524D65F39D0C5C3C", + "0x0203A26D667E94CF88C39EE1FBF697DBEC9CFB183DAE6180492070EE5E85CBA027", + "0x0204343FFEF98D8960AEDA600CAB2226221160F7E27E7882E3861AFC7A3BA744E1", + "0x0204376EDEB85BFB2D6C9F9C52C246958305846E3848C55B44CCA9531F5B411B47", + "0x02043E6A63CA1048E39BC113D38D0EA37BEB2BFD7EB0E92560556C7A7EFBD17003", + "0x02045A2256A82B10C29C16B8EF5CEF00AEE571E71F023AFD437BA766AC14F94030", + "0x02046141C396CEA62E9D1CE33BADF51A90FE418EC5EB1DC26F4DA26A36B1D7AE25", + "0x02048B330A32AA420A547442F80FD8C6CCFBEFCC1A6EC784C0B9E80372085DDD14", + "0x0204D5A9E32D12412DCAC740C11CBFE85555C3A22591BF733AF6E65C2A3E69F06D", + "0x02051A2EF65DC19363BE90595DDF76AC342ECACF82B95C8C00F67487F916A46789", + "0x020666F7885E5D75EB053BA4FC22726DA855C99B02EB377FAC6B260921F8FB63C4", + "0x02067DED254EEFCAD1ECEB12B35533856178CC6EC48AEDB5ABD7278103BBB49B20", + "0x0206B9C9B1DEBD139B1AC084C85823C81A33C03AE1BC22082B01E6D02042ACA132", + "0x0206E060B2DF64136051EC33CA582AB6C9CDD8D37A460BB696FA0905B7C11AC74C", + "0x0206E061A187F25C4AFDBE5821BCF240888A254B701253B20040CAEA511410AE5D", + "0x02076A832AB4D03BB3E8EB80D77C63F9181AF3BC20A6623EE124E36633497D6862", + "0x0207FF35CFA9F3D8336430BBD09BBF9B36C283358E8CA91FAB551ACB5FE1E38B68", + "0x020897163A6C54922EA6B3409A2222E1830666AAC43EC09009A549FDC799D53DDB", + "0x020917CD5BA6BFEBF1B08D3FA151E00D5519D250812C8C64AACD9371AD735A6884", + "0x0209289EC3EBC6AA8B52930C4767F21758D2F716FC1F4BBFE88A194E8371EDA79A", + "0x0209406A5A5B17BE0F3A19B7916FD588B14DDA3A8E8C225024C899FEB3E8E89C79", + "0x0209AC145F273A966521282DFAD1D03048B6FA8D6EAABDC05AB5633D98AEC4D0BC", + "0x0209FCBB20862B49B0283C54A9111BFC82DF327883088C4B7D4FFA24D532CA8573", + "0x020A15004E1A02DD3293A2D5AE8FCCEA3423DA0891146F008BFA18AA21F9382E41", + "0x020A647A0FBD7C869F205C4198851BDED6633A5143C4FB280AAB0D652710E65E63", + "0x020A740AC4186ECBE94DC664D19DDF1272459ADF5ADB7AB85FD347D96CC1104E58", + "0x020A7523DDF265475232770928FBB57D9B96040DA8A3E22CA93026BF19443D1356", + "0x020AAB905DD3CA869440DA76BABC897002CC940B804C2468197781141927488E47", + "0x020B6E4541A54AD123CB6D279F8719C19C36AC8638888678A83CE9326F45125437", + "0x020B77F87178D33CCDFF4DEE2DF866100C5975C644C4844402078A832752EA6552", + "0x020BA4B5F28C25494A23FCA05A9A867AB697775DA5827B5F8A4D29D8915D537806", + "0x020BB1B552E74D4E9B096F23994E37AA0E0E6A5A5DCC00BF7582AB69420565A7E9", + "0x020BE9F8C02132EF1AC5C759B7D17B53AC182EBF2D395438263CA27A11182BE700", + "0x020BF216B79DEDF6CE5AC414ACA71530C61FA06A966E0BCFB603AE8795E5E7E701", + "0x020C3C5415B450A3DACCAEAA8A9E45A8ED0A0DCF1E537155FD592DB09A67C89C12", + "0x020C76F15CCF356AC507416CEA8CC87ACA035250FEC49D396781E2F92BC7C48056", + "0x020CE7CF69397509048B8E1A2D7790374D69E4211386D6DCC1D14B161B7E5CE7A2", + "0x020DEF01F990010C432F61FC0C5B858B3F2E7685A7E660AA930783CCD476691BD5", + "0x020E0B6681FF22778B80B997CD8D9460B83785549F22D020F926B7FACCAF0C1C54", + "0x020E352980AC19E2F923582A52B091909DD0EDFAFBAD165485A8E74F9D7D804614", + "0x020E7E7DF1CF0E3DA6B4879CA0E1527EC09621711243536EC497AA43BBF8362DC5", + "0x020EF8E362E456EC4565AD0A00C43F1FBDE1DAF523FC66EDA68818BAD6782EB7F0", + "0x020F0BCC5A7597CF3962C3A8207B7C0AA31DD801F43E37C77BA24363E23946E46A", + "0x020F172817A4632A5F98D63E8828D8034D2D7D51A84B03A696F93DC12F491285F2", + "0x020F6A6B86C35C2FC9EF0E088E3BDB25B18638CCA1F50FE95DFCC9CCE8042C52D7", + "0x020FAA7260FF3D6E8EC2DD57E3E1C9284EAB686AAA57ED2E96376EEA6DB8411161", + "0x0210295D0955BBF700D7F863CE06A05D8D8CE7D53F0AB8E3D142C7A18F29185CCC", + "0x0210BCD6F0084D7018C40D007909FA01713DC61CF352FE09A7F684363321B9F5FE", + "0x0211CDC4EE0AC1D3EFBD9597C970A32F9B618E530DE24D0E3EA93D90F66712EB80", + "0x0211D4B543261321206DADEBC45840DC9D56C928918E644FD7ADA4B2F5A5541BD9", + "0x0211DB48707AEBF5BE67E0BDF74A22F605230EF084E2A20EBA073CE5CF2CB6CB3D", + "0x02121162B2769EE2C9B0C5E89F0DB3811EE6A1EF30CFC965F7BB20FFC4C3D11FA9", + "0x02127253E0BE43CD9F7ED948FDC52CC9F5761AEF266BB4A1983C729EAB5AD2B3EC", + "0x021273DDB6F647877955968EBE5EEE07F213AFA2418249086E475EBF41EDCE34AD", + "0x02129FAA327E8222AF53FB72951C77DC2C35AB97A00A6A00ABCDF6D261B745488E", + "0x0212C8309A2CE63C75F3099730A0FF851F8442EA94E48CBD100CC919BA7FD2AF1C", + "0x021305BB22D263DA9A3E76C325651F206CEE88CC7706226ADD6FDAC957F27DE998", + "0x02131F2BBD310407CE4DCE95FB2E71E88F6C9550FF940CD03FDBA99499C59862A8", + "0x02134CC19B594B1571916AABBA4475026D1B2021C19045CB2065E0D3B12706768E", + "0x021432AE4BFDCBC0B27FACEFEC3C8DDCA2C6ECC14DEB773ACB298C67DD5703EEA0", + "0x021496337EAD57A3EB03BD984333FE891BB09C9C8885B5D4EDD1E6B35DC980DCF8", + "0x0214A011B100371C45AF9EC47C842031B672142E800BC9EA8A85A16B2619D79520", + "0x0214A04F71C96E6014D32CEECC2FAD98662E6AB50664F0B13837857C2299A3DB46", + "0x0214CB94D01CCB01C33744CBAE00B42C606D09DE620D3A5F45C42FC6B2979490D1", + "0x021540B8DD756F612D07E6829498F4CD584743F03657B0F19B06B3D30FB6E4EA11", + "0x021557750D8A78CAF97B25CF9D1692CB23C2A6B12C61181EF65A6DD8893196329D", + "0x02165697894199614A2ADDA487417B202E7E7BDF6C7623D130FD1358866C91BDED", + "0x02167E9A1F7EB8A7B93A266C2BD08406E4F0BF911EB2AA3F81BCD20B80B3F32929", + "0x0216D19383BCFAAE54D13146431E1DEA20263D48C9300480A8A0E178A32F13D1D4", + "0x021740FE9FBB9B6CA3CA6C04C552D951B0C1EBF07DE7EA9F94D9D1270488D3D1FD", + "0x021794E902540F93B8EAEC46765BC8B981FCF2023CE472284EB1CCB25029EDD5BE", + "0x0217B3DCCEE0EBE9E84B59C5E0268238BA83C0BD4CF0705341FC6D45823373231C", + "0x0217C35FE119EB40CCBD0C0E6D83A849364803CC4EAC3C168D7723F436196EBD70", + "0x02183E7A1245CF7190A7E91F1C3C7545D3B077767A1D6062B35B3FA2D7292D4409", + "0x02184D5A1DAD376EB166406A9A4EE1AAE95C5C5E6A985EBC7B2667DD5A40B1FD70", + "0x02186651B9BA32FA4151ABB4F65F2824663620AC3A267D63B34E767163D79FF460", + "0x02193172419668F3A281BDA4F2AA72D2C198C2E68CED482655107E399C64858060", + "0x0219426E244A1CA0E24F9640282294702753A80CB5350DB09CC71E886944EF2CBB", + "0x0219A0209081BB1ECCD0D0B6636B214898129B6AE0D6E2A481B6769457E6D09EC7", + "0x0219B84F1F12E5235BF1CDA37D540255DB8037845C7010650550C14F9015321687", + "0x021A1AF75EAAFDA2BDAF5630317413402D65D4D6F9CB2CA9A7A941191453974DB1", + "0x021A1C6464CC0D68992518CEEA879886279B14FA0013525F4E93CB45F0E02F445B", + "0x021A6312D810BF060A945320DBFDAF758411EE4334FF98A4B15233580AD3A853F0", + "0x021AA136073E8898E9A30BD0DD101840E134B5A506A85181DAB27BDB5F9E9D9B47", + "0x021AE60ED7955AF111F430CAE35F7B413ECCB7901601957C635FC82B91A478D7A4", + "0x021AF7FCC4D8268540985C2154616BFCD511E02612742E7EB7F2AB23A9C4CE7EC6", + "0x021AFF1103DE463E34AAF6D2E0CBBE5F4C30E6D6D6FF72439B2142BF7651097744", + "0x021B0C1EEA157A95BD16F1B48E8B53D18FFCC232966C79F06A82BDDC5BBB7DC629", + "0x021B4372D109DF2EED24F26853103CCE25D55352A8804A3CDA1470BA102C38C2E8", + "0x021BE9B282F7C6BB149B0C5EE5FFE99997A6C6BD9F7AD8606D93EF66AF86012F4B", + "0x021BF2F79E1CC67AD75B138B132C47677FC034B5A2F181482C92EC2E055D348F5E", + "0x021C03378FD496346FC297453FFB795CAEED687ED9EA34985FDFA9ABF5C6A7AE25", + "0x021C42AE2F56C7795B8AB9BA74FFA60708336BE5DC052CA6B1AB3DF08DE9D0F4F6", + "0x021C88F444FE09ADDB34717598A51597394BA3A2A87FD8DF2E99347ED715544823", + "0x021CD0817974B70014091001A40770694EEFA559171D7DDA3E684D5365E792F89A", + "0x021CD65352B4A3DB0ECAB52DDF1A27060D07118DC5B447C4538E07B490B1D153AF", + "0x021D26C18589C50CF297AF2F3F52BB95DCA7F6746C87909485FFAE9E94829D389B", + "0x021D415000DCE558465BA560757170A220BCCD55FFD167DFA6FBD3B67090618F75", + "0x021DF8C61DEBCEEFF80BB6F4CEB53065EB569325055E4D002B9B0F5D9D15E0948D", + "0x021DFA1672FB671881F7F4760629A7A21D226256094332F490EC98526B839CE9AF", + "0x021E16BD746C74A824622202CB08C9F322E27E45BFD4ACD9888B1E4D0EA1CEA7A4", + "0x021E206C6C57545AE92002405D83C21192B3D4F30113663DC221D1FA4C3FA31F05", + "0x021E871CC759ABE82B1A1A4BC1ED8C9AE439F06B71EBEC2685A5A8DBD1AA5DADEF", + "0x021EE3299BB7262DB4CA451009167D700DF7D39C715FDCF26DCF5CA430C62D9D07", + "0x021F05DE8E8197EB2378C997998EB8B032F791DDC5E0900F77CD94F9902631FBE8", + "0x021F412F69C8481E46A80285CEFCEEAB90D84E1F051ECF22EE4EE7CB4904BDACB7", + "0x021F85F2113F493C05B0ABD208EFF24D9A79311D9364E7C11E15E21B12F9F25C38", + "0x02200110534969817A2A7EF6CB506800CAFCBEE89389190115C1A9363F04F4978B", + "0x022025B08AA8D2DA052D3E58F1FA362CAA8354E886D852E4FDCFB86FA720C6C97A", + "0x02204A1B77B9570A73191B5D711C3DD16941C585BE03BD8FCB5A3513E4B1F427A8", + "0x02205FB5CB5CBEFB73E3CC58448DE2A5AC2BE8F26A184627B73C0DB83AB7BAA317", + "0x0220A02324910C53F42F596DC59E6B2959DC1A7360A18BD95FB0F59B26F8C8E71A", + "0x0220C0FCB42F957108EB9138B45E0DEE44911AD246A041CF427EB714194A6E5EF8", + "0x0220D31E50B30ED49AAFFAB8800294D4531E24443C4317BCDE50DF1E9B57AB499E", + "0x0220F9600CA338ADE62D16EA51CD43042E72C90F008702091D0E67B4CDF435889A", + "0x02214E5CE6E9540D964CD842E53B527BDD719683D2083514339927C04F811B3F40", + "0x02218695384A1DC0F9B020C6E6B16E7775C0F0FC490F7BF42E5749583FDDE94C7C", + "0x0221C6F96E9837A3DBAB707A5F7A5188E45CBCDBCB1718F9DD182A61C7D6E450D8", + "0x0222175E3DFBD2AB68D464ECB0E342560DDF9DD94631937451F94114789322CBA3", + "0x02222064FC1A80BD9D228D411EBF48FE1B5703822846BB07C0FA9ECB65A4294A6A", + "0x022226B1DDC140954C69FF2BDC6CF6F02FE08DBD5FADFE80DC2F57406EF79F0640", + "0x02224778929DB45C88B1BE8D0AE080CA0E8400EECD2136F05579555DCA9BF90D62", + "0x02225D25504F0BF70AD27EFC9E10A1149D38B2F84BD73E634AD48621F571BE3D02", + "0x0223CAF179F5CA946BFAFD170721630CE970A7187D3C9F4AE492EE544A627CD113", + "0x0223DE56FBCFAB6B306E4D8775DCB50A6B7EB09AFF88072EBDE6E5141E90AE042D", + "0x0223E276FFF18295630C6C41BE9565DDC8E41B3B3E6E79CA1A6699616AD2C756AF", + "0x0224AFEC66426898ADF200C754898B2643C716770B26926497C48614EDC414B5F7", + "0x0225467CABD782C9CC2A5847891CB9D58F66DAD724F4BA4FA701E98FF9C5B2E680", + "0x02255246AA8D72AF6C4323B4F6AA75B4C6F9C51CAE5E1F68361C8A800DF8871EEA", + "0x02258008B85E0F64F5971FC75B69B0297FE02A5010EBB3A43F8B64FEAAC29C56AE", + "0x02262800246052BE04297B07871A5E34D72ECEB38AD1575517FC6F42736A4898FD", + "0x02267BCF354D13FAF99397542E806CC207231AAEF0437E5C66272EA2D5B289452C", + "0x022699248C7DD0E438196E46830103A4216E159E10C38BDE87E62959908D5EA083", + "0x0226B4395E1619D096FDDBE7F7EC0B295869C460BB2733DF8F5B0AF929BEA015FD", + "0x0226B8130B46C07EA73902930C7C22B7DCB3BFF6D80BA565102B35B3DE8E29292B", + "0x0226DDB0165A50CF0357B19FCE71BFF0029D8BC39E513851F00A084E57166C691C", + "0x0227909FCC701F9390A8C0888C98D14697E4901A7FAC395B0D6DDE6C5BBE47CBC1", + "0x0227939F72067FE1AC79276CE779A27C560391A660D42FDE0102229964F1C2C511", + "0x0227C63653018A3F22397819D6E2EECDC84DE50967AC6B84E6C365A996028CF56C", + "0x0227CECBB7A3FA69AF673599F6034D1A3580C70725C62CF828510D695A0E6A3595", + "0x0227EC27AAD4028124F1D92CA0274BB3C2E52357EC06323E0F1C067B04E2838B7D", + "0x02282F48BAC96F04A9CCC81BFD2B7AE8B180F0255DB7483876290FBB643D7B38C3", + "0x0228E92D39A82F912A36A598133FE41862ED7FAD5F23F54BCFEEDDCE8686BA15A3", + "0x022962570E2E763CECF1EC49A8C8C83E3513AB8EC0B08BCF0088B3240459D58271", + "0x022A749304BDDC9C7B6303D498006728C271B4DE7A02EC97CACB4F28BF4CFA3D06", + "0x022AEDD9963B4CD41C2024023DF70419B62A1B3108E4FA80A408B23B298076C0C2", + "0x022B609F5E8386BA8AFD0FC63F4732C0031D6395665CE60D3A8DA0748DAB6537F1", + "0x022BB400E23FB4EA7652E0AA93A09E179CCD3C84831B4FDC16E948502AAEB4A140", + "0x022BE3926543EF5D3E4C19EDDA60B629B36E79017C8B25F9045E2A545D9CB9212A", + "0x022C13CA7F4C16C7A96EFA543990DA7694E5AF093D580AC66D18B927C476F68F36", + "0x022C1F6D02B186A3BE66516049140A8621BEC8860638A72527849627276D6C7859", + "0x022C7AEA187B40A551C5F542438A857CB57C10DE1BA6144775F6ED474C4712B4EE", + "0x022CF7B077D28BE8808976E74164E2357E197056846A5051A689BE0E9FF6146F46", + "0x022D0EB26683484B2C1679FF73BE1A0CBA78E099EB96F0E3942298F21129330778", + "0x022D3DC0596915C4746D7706A6BB24F4F07D06CCCA5BAF278C0122D90376928F6F", + "0x022D6586AAA7770D6ABC4DB4FC98324982DA01810D3E0FA346BEAC83B62AC2C4E3", + "0x022D915BCD93019D7D7B97F205939784FA2DA54DFB0975542B33063E2100E0E8D4", + "0x022DCF24D4D34F19895D54C42EBAE0B86F81AF586A599CA85CC8067BD5ABA9141E", + "0x022E9DC04E261C5AACB30A8E3A6BF4C2E64EB8E40E454788FAB6CC86AD4897842F", + "0x022F1BABF72A1C22C197880685E51F4750015B118D1196EB37E33B31AF34A3677F", + "0x022F689FDBAE20449FF7716587A508597EB8C312AE336970733AD006AB77BCBD2D", + "0x022F8B765CA84033F3881DEEBFF6A2F862704CA67282ACA705EFAB492D00A84262", + "0x022FBD0D66CD14E4EC099436DF290CBEDDBB5BBF8B8FD76E89870C5BCD16991091", + "0x02304ABF1E43F64B6AB36FF047FFCA3195575122D4239998FF84CEC2379A83AD74", + "0x0230972802890E35DB4B7EB43FD4F3E1A09D856E1D63B4B2D3CD1DC92D8C2E0505", + "0x02309E626EC4BCF004078E60C4114D892BF29BF833C98027372C5B437D8067456E", + "0x023110CF5B8DF70652A3E97F370E35184FC2147736B6187FB409FAC6BB7FF20CDD", + "0x02312A58E603F121F08358EEDF55CAD235E52F4CF43175A43DC277F837EE1F2F4D", + "0x0231BA2C9A053A1B740AE9FAB49362D41928CAD9D4136C7E3E050B4E135B836F0D", + "0x0231F045306B5543EC124F0B1AF1BBA08ADEFA5C193583A8F7B189041FE0372BF7", + "0x02321FFFF22B18F92E9E18C58C5EFEA50198DF0062E41180B8201C46903A5F6DB2", + "0x023241CE9BD397AFA97ED9B46DB60F3F4D3F39B6816098AA91B16D4374CAF0DB9E", + "0x0232554823B6D75A5F00426273913AD55B0D042454D5103AB11CDC3C5C50EA4E8A", + "0x02328A6B6096BDAFC9572DF8D97059D00AB54E3760BDA0DA6A6F1C3958363DB1FF", + "0x0232AA0673A0EDF1E02EB02D982CF0B13EF0CFB4585CFC3C3DA3D59CB3A1B8E9D6", + "0x0232D6055FF1E76F571DD5A03BABBBBE2DCE01D3795674EAA67604EE98555D8D17", + "0x0232DDAF647E6D314073C7652D09609927E0A661525DA1B2BAA4F563F7CCC2D9DB", + "0x023304B4BF1BFB91CC416B161EE9EF0AB2549CBED9BECBFC1CBA576805051481C1", + "0x0233CECC9B2A5CBEA9DC189A1C532F1A548602151E01926CC3A832D6B4F75699B8", + "0x0233D6CD4E609918A9966284627675D0752F75EFA2A922540ACAB2936637006347", + "0x02340097AD16007784C8BE83E41E002BF0C94F523CCD1323230C2D4DE48186FDBD", + "0x0234911461938D461358746009FD13CD757A25FF151F23F39FF5BA3222812A34C8", + "0x0234B496BECF2A3F2EB4B6C23FB96A945B775D2006F5D67EEC6BD3579450837D93", + "0x0235090783D4DBDD4F7A4F283396F8C14FFCD4EE62BCA2A61055DDBEDFC597F1E3", + "0x02363477F424F03DA5EC5D04392D79FF0A20D895E9830B78055843E1313236B7BB", + "0x02364A8D8D9B19E51B13FD03BF90046B9B0659B74E5939222B4AD647E888487FFD", + "0x02364F25C7BE4C37D6FE20C0A6F31150007A1B6059E68E474BADE19E9251206C7B", + "0x02364FF0397B5F835C7CED689598A8C5BC9967085806839A5AAF9199D10D6DD707", + "0x0236E1040AADD29E56E5ABC14510BD880D7A29B941B69E2648C2BEF331AD60C2EA", + "0x0237893C019ABA84C26BE01CA14D3128FDBA4C61C57C40BA2F7BA198B21CE4DB58", + "0x023790FC7E8BBD7FFA897D20918CC1839372DD073F978CE62092B3653BE43202FF", + "0x02382624966FCFDB95CDD244B9863CDDB992F9E825FB41F3AC5EB6649A6928B8D7", + "0x02384A636AC52D03A5E2C6A75D9397084BEB7D72222CF89AC0DA4BF2164A3ACA10", + "0x0238615626987E28D8BFD203F17FEE1BB00999C966F97FF23F2207D470817BCE5A", + "0x023867868E084A578AFE9406AC6E3490EE6B0B18F035803EF7095335AA1C8F4588", + "0x02388BBA2C194AE107211A6540D372B499292C04865A5C8E4F009191D3C7933501", + "0x0238A98ADB44255DC26DBA3BD2BE49E2BAC34F051D6A180B7B54DF6672335DD9F4", + "0x0238F1986C4DFECED72847B15906443CBF56BC7EA43E9B9D1BC75962FE2696C2D4", + "0x02391D8F389FC2AFFA7387131D7A59818E6C710F436DDCDB8F8B257A7C5B03845B", + "0x02393D38E48D95B55B31FB8EF6FC736067CAB1E95AF4AC88B6521E4E95EBEF47EA", + "0x0239CC96A568DC91F00A0EDD97DFCB839D5BFE507859DBB8B6393044CBFF56B45E", + "0x023A36C6CD725FC25A87329CE675BB3169024454EC55425D3586F631BEFF6150BD", + "0x023A3799936B5EF6BB446D949A4831DA1663973BB2CCE6597D0F8F89E9B67A0CD5", + "0x023A549CDE37B2FF5CAB3021958ACA90358BE2760DDA25034E8AFF36E4155623C9", + "0x023A83CFED1E3C5D6CFA8A49CF3C978E5BE2AC26E7B83EC5034B1FDB59FD6A0CFB", + "0x023ABEC6465F5F41B1F4B6461A44C062E7C89A250505A442C9AE1C898CAA94A596", + "0x023ADA3D691154E002FC323445064223596D5AED2A1E53BFDE239CBE23C1F6FB89", + "0x023AFD151C2A4705D8461FCBB8BDBE191F2F440FA242BD1E850A88B9AF64E4902C", + "0x023B00E013273D613201DB5D0132BF91091D80D01085237BF70D38AC76A1CB7B98", + "0x023BBE50EA0AA13B39F82C687C78CB2AEC6D614DCE8BA0633075BB222EC0324ACA", + "0x023BBFD9C3A3EA1A21344FEBF49B7FC92EDB67DD2E93CAFE9CA448E0707D6C0723", + "0x023C42754F04732DD26351B45B9A0E3A700DC673DD2D615E5910AD711F4B4E52E3", + "0x023C6D72A764A43A86555D4E9E79134AE054971D0C4D21B846B96615299A5030F8", + "0x023CA040E3E4C753E34FB67D23FF92152ED988D58C4BB63BC4C70EFD8397201237", + "0x023D027AF794B7F8690C91E101988DA6C81CDFFB7D9BFA314542ABA76D2124AFF5", + "0x023D0BE6BE75A14BDE13A120D8F55F47F7BAB7C6B9BB990936FF58A5121EF5BF80", + "0x023D4D0DFF8EE0749717685163DB6F929D911F29A674E01ECFEF201F225D16BB0A", + "0x023E3F78820F0B68B7B6AD9DE5B1F92909F6380FF02F885917D96583BBB47CD4D0", + "0x023E8852F2157E976EA1B98D5BD528FF4E31EE6A41FF1352470D29D24C7BCE2E6E", + "0x023EB2779736A01E1313403BAF2FFC871BC03100D4270032C8A62FA39174352413", + "0x023ED92651C91B27AE8CC04AE87B6345CD7669404F4EEA23D57155F08EB013C248", + "0x023EFDD68B573C9DA92A5F795C8DC9B771DE1A24DC075503803A15822E79AC8C76", + "0x023F94E6283889C1FB383D9F673DA8772DA2CDA386812B84290C181003A70A0436", + "0x023FC07C0BBACCF186C9DBD328FE2A364AD826ACA3CD3DF597DC0AA8F7FFBF1A77", + "0x024000682EBF777F0C6A5B23C026A539282DD6F7D7756652D3745C817567410945", + "0x02400267E100EE572E28A1BF2DDBBE797219513595263B4851D95BB8D0E973C133", + "0x02407D36744829E8286F11D2AE93943F5A49DB54E2C06B64C92F1A35333CAF74F2", + "0x0240B64C7B937ED5DDFAA18663A7785065DCBCF17A501D2EE7906352F323A0D0A0", + "0x0240F43C59EA0A449BC08AF352A8AE91C69AB7850DA9F6FD67EF23E5D6B83DEF70", + "0x024156F620F62C22FABF2EF76D3B07A6EE0DEFC8C75544C08DAE194825A6665F2E", + "0x0241663BCA573AC37C0722587FACF3E2ED745C9BA5BAD36401BDF35951256FF0CF", + "0x0241C3C7676A001196C952F10FE51B4F3344E8495FC94E920B9CE27564E583DCC6", + "0x0241C839A5C219F7B03C1521456C124F1524B35E901E10B2CA92482307B06A9876", + "0x0241FD5ED053830F7B847C733CC03F8C3626253E6DE3DAB7718A5C5F5961524030", + "0x02425F73EDB1F529272DD6C3BB5CD25CCBC9C693AAF49759CD8FDB4CD04F4CAA4D", + "0x02426EC8956CD7A248760F635C00F879D77623C0778A32E7546A8050A81419BABE", + "0x02428404FE62BCC144AEE915E75AEBCEDB553E39D8FF4CF93BB0B7E6822296300A", + "0x024289C586E3D43250A7D3F53CDA16A940748F10C8FD419A214C2BF673DD1F0927", + "0x0243725BE27D735DC9FF74CE7BCBF82E357C0EAF7ED719B0383A365E7BE45C8DA2", + "0x02438F260717701BAE57C6297E9FAF9B2340A47A390D783A0D8EE41B6C5157BDE9", + "0x0243A35EA6458110CA7933505E3512883E416384EB1E19CA72667EFC130B14EF2D", + "0x0243EE8A2F24B0D8FE434D4F19376EC8C4E1EFFAAA850275691866581F727BC1F5", + "0x02447B927A1EE2987E1B17A63D20F8DBC17571D7A7EF37D185B941863C07D1BD2D", + "0x0244C8AF54F62D0A3BA5CCF4D38A8080CE74F9A20B30DF2B765EEB69F4FB15A5AD", + "0x024534AD065636C71DB7C7B95FEF1480F79B52123120BC6D7BE23B86C4B595066F", + "0x0245A6BFCEAFFD9C2FF79A89105819EA9CCC134FFBAD4357B64DC680EEAD2A9FB1", + "0x0246012289D96781C8EA77E9B498962D8DA85CCE672A7E279AEFCB91F522C3EE68", + "0x02466DFBF7444392D583E360E253935961245ACBF0D10744BC1F1F44CB0DBD080F", + "0x02470658E71A09E59031C8CB48117332FAD4DF2896E3E3DC799F6933AB458E7B02", + "0x024733E74BF855D0E0A50F2F599601DCF0BBA97FD622FDC42F0F08E93D523BB978", + "0x02477174B5A4356134F2D03553E383A1BA0D3D7B832437CEB18FE3BC2BFA467CC4", + "0x0247A6A97FCB9036916D49F42CA3FD2DE9FA01348D70F41A4B2809091948B75B52", + "0x0247D4283FB2304C397EF6E8DF6ABB047BAEAC8F195A6091D5424F07538B61D8F7", + "0x0248982A97314ADDA4B541A9DD2225CCDFC8B32002D207D355D77E3EB12AD9C581", + "0x0248A4975599D9CB3847BE46C99215E5FD9CCEB8FD81492D678C2071482AD11A21", + "0x0248AED6C9339F65FD6B361C4CB60473D97BDCFDF02AF1357908D8AEF7970E36C2", + "0x0248DFBB052B171F4BB96E86F1F567E1F7EC39A909286A570E20E6A09AF21A920B", + "0x024928D5768A33CF25A06FD40AB879D72A8021F9F1C811E4678F6CFA522A1D4318", + "0x02493616EF5B1176D799F732A5C067540BEAC0F195FBE25C97C841C3E14D6E9103", + "0x0249503872903EE4AD429940690BEF49547358E276E90BD46CD7BD15DFF4D306D2", + "0x024976B195BDD60E311641FD6024C3E4B64C5DD67B763765144D98ED8686627984", + "0x0249D827AA8227AE3C4D971365A1FD97F7E6770243DA77D964BE029E3BD97896F8", + "0x024A26BC7A0DCF8136E3A30A5DD68FB1A81C77C128AF25B9C29B1E67BF94F94787", + "0x024B91CD405ADBA2A376363D55728B6F39D90D6E15D0EF62682692802921983339", + "0x024BEA73D8AD09546FED116E21B481A9C7FE84637CAB8DEB377D0134A546F14047", + "0x024C066EBDAA57F6C43E55693B0BB2805147B7FD91C71CF85E0CD7ABC2FA6D0047", + "0x024C06B5CC80833018AB7034B0AA7D09409FE2C56BFE5E42F6BF0323A7AB3BE1E6", + "0x024C159862D2648AB66508DFE82A439EDDABFA65046004B2E93C0FF93B4C7FA80D", + "0x024C7DB29EDBE31B5CECC97C1F08470F1D0443543F14E9028C0C3DD9468ADFEEDA", + "0x024CC3275D499F904B6D6783FE92CB35C7CF4ADC94E6B087AB276267F03AA64290", + "0x024CDF3F29049076056C3784026F6D24F5173F4E1AF6C6F28CCCB7846844338C83", + "0x024D0A878905C6A84FEFDED89D8267019B9EE019172DE37BAF24F5EBEE43F5D5E8", + "0x024D3CA95C9F6B392287C421DF511B16E64E366769B96725B6F3FBAB5A2D6043D9", + "0x024D53A12EBDDE85AE5039A39596E1FBBD5BD944A3F9D43FD6308009BD268061EF", + "0x024DA00A0D82223FF98CD237E2D9BAA2C53504D0F21C740C4270A2359AA89BAFAB", + "0x024DC93610EE5298D5F2905A85E3773F5CD77F2415C7219A6661932803516A5D44", + "0x024DF05B15F189AB00DC70D962969D175543A0BD6EE3FF2949BE15C190A8C4893B", + "0x024E02E4571E6FAEBEC79B79B6ADC82B52C5D1961D84A2CF9ECFEF219AD24E8875", + "0x024E5147233EF7640E46740907537B1639B9D27C0647277314B0179E8549EA6326", + "0x024F444F96DE7CEED8D0BE7964AEE371BB42EC0704CE0BBFF8ABA222D1E4C9A329", + "0x024F5B39161611AB61ABE4E6287AA5C1FBD0EFBAB0C7F67B15AF3334A330EB3012", + "0x02500A9C191AE25724D4C5C9BDC68FE84F7C2614A9186B41713F377321312035EF", + "0x025013E5D12A0597CBBCF4A2F1FD911F38FB35E4B4F83A84702A326EA96097E4B5", + "0x02508B09C6D155BD03E56AACA46C3D10591284A0A38726942E434D9E43EA2679FA", + "0x0250CE859D5702BB57FA05C928BEF5345195034EDED01F10D23E269B3BEA0A1F41", + "0x0251431BA8A396CED2953856198B577CBBB339B9491532CC5A94630E1EE7E9EEE3", + "0x02518F0AAB1A1FCBB907152B55F6F39E7969CF3362B9B7E1F3636F8A8B5ACB48B9", + "0x0251EB33CB42B516C7EEA1391FB8394855A545D098E9D474BC964F69658F420BFA", + "0x02520FD0AE55D2ECFB9CDD5C8BF19788A7700EBC14510C3396F731DB5ABDD6BF22", + "0x02527A20154AF9267D481D83404ECA7303F87F7FB94666A4EADE6DFC04B7F72167", + "0x025283CD1C2B3CE3905CE15BC4A992E20A1587CE4AA145E9D89EBF56B9E1C4DD55", + "0x0252FFAA00AD8A3C91F40C4EA3AF2CFEA05E6C9FBF0296F7140F62F088BA5570F5", + "0x0253C627AF4B438C951B8B5D142CB56AAAB83FD3BEE21940C1F5A11A8A84AE7945", + "0x0253E6227C6975F16261D2C5AAC127E7F33A6FA9A22E7FB04EE823499BD7715432", + "0x025401717256A32BC21264DAF9288ECC3F5125063ECD41413894FDD736B1661F81", + "0x02541D7DCDF5C43C465A9FC3C039E3BE9A46FF14E60CC68BF980FA87FE8D842CE0", + "0x02545402B1D5BCADDAEF278FAEF5FD926C6917A5CB3E17FC838F863ED041B88F5A", + "0x02545D0B3E09842345F7DB0CCC8E46EA13DECD2FDE3908F1AB0B4FC31FE3162C29", + "0x0255164E412E0657F21A8766A9C7FACBC60565857F7625A506CC26D5F3BD33EEB2", + "0x02552F187A5827D6123BEEF75D1F6DAC9A86794FE4BCAC82897FE21938644D6741", + "0x0255463B570805507982056AAD3A3AFF82C67C30177147586CB89C84132082B667", + "0x0255D1855278F124921A7BB05CAC59CE3124BFA93D68854B2DB8E698439EAA90AC", + "0x0256014439E5F4A25A85616BF5167F6C9F769F62FF8CABD373FA95532EB354A556", + "0x0256402270E76D23AEDAE0497CFEE9EAD5E6828347E4D3DF0CC755AEF33874E43E", + "0x0256C0A8EBC8F3BFFBDA92C7A0B7ABA6E82DEB7200548161FB516DA305AF045D00", + "0x0256F7AB23ADC4858153EC6109D34E73458431CC808894414279741DC069CCA0DF", + "0x025754B920612474972F621747D23A54079DA31D0DCC041E0DEAEA44E050EE601F", + "0x02575A73999251B6DBD25FBCADDC1B9409E11CFA36325F866CFC0089FA74D1872D", + "0x025772842246AB82BC0F7C00B708EE2CCEA074A0DFBC8720402CA12FA864381FE7", + "0x0257A05BA525AA1D94D31CB17918F2452AF10514E753DD857A6A91547CDB70D1B6", + "0x025841E5EA673E2A6C6C3A93D79B063FBD14E0FC5BDAD57CEC3EFA2DA21E4923DF", + "0x0258480FD1B8D28F9605555202006CAD0A38B9E0DDBE4D301F86B0CC29B2B3F1B1", + "0x02586A3A1B917CE20EAD0FEBE69DB5E5D938361E2B329CC3CB250609945129606B", + "0x0258E259E506A9D5CC43124DD41AF882845663B7CE84A63E73FE1D284438FD6C76", + "0x02591DA7B93955B623C9478E5322FA489C267EA711FD07CDCEA61F5575973EBB89", + "0x02592097AD37F5B470525B55A33594266F18633BE4179E968629C06EF6C1DBF7AE", + "0x0259984570186C10E349682FBF0B5B0F6E5D3C17B63B3206F609B565D0876115EF", + "0x0259A3A0C03FF7ECACAB8300D2DD931547ECC3008A9C257BB54B8B4DC278368767", + "0x0259BFA8E68A79E0651F5A01100502AADDCFE471446435680C189F78BD3B5C6C9F", + "0x0259F0A8AE5CB0214DC16E2E485119F4AF99347176C14C1028B973EAD1C9CA4B4E", + "0x025A2E15C4C0F14EAB091AE471CEE9DDA9A1F3321623217802587AD48950C93F4F", + "0x025A4C504F7C4C9665C4F21B03F3D4EF6D33BA8D46D72A4725B883E159ABDB3C47", + "0x025A5D90641E09B20554CFA3CB1513894DBFBBA17729A122EA1CD4E4438D29D14D", + "0x025A69D6528C039EDD3680654982F08E5E640D5CD29610B84CEFFBA9DCDEF236DE", + "0x025B8FD2BA9C2C741F67950D61C406E13443E5B5AE11A22D7ACA92CAC806118E8C", + "0x025B9DAD8BF897F20F02E6116CCB722D15B8037994FF048CEA095C363732F80D57", + "0x025BBC3243615E17CD30D7EF21A4362DE5600740BF6FF7815BAA04C905C7FB176C", + "0x025BC214117EFC10918AB103AFCB4E063EB9A94B6B838BE58D8F606EE1D95DBE9B", + "0x025C6FEC457F4FDA89D7980745B1FCBC1E488C7FE735696571B2F1718FE8D66197", + "0x025CA4D4D18AE9A3676D320D3DC4589F49A6416E440B6ACACFA613F4B9EEC5BB47", + "0x025CB0B1F2121745D386F14733B03B59F27E09DB157F24131E687F9FF5E6A013AF", + "0x025D2930EE68E3EAF6F4948ADF005CFDA5A3D1D2D466577013A618511CAD268C61", + "0x025D3BCF72C89D55586DA2A45D1658A9634B5079910B09F07B1455054BD691D27A", + "0x025D4CA259460DCF3A4D857F9886161B5D1997047DFA85447ECB6574C9B6C100E8", + "0x025D88B2990723907D61558FE057A52C3BDF6EBA15BB782947AC849B2B5A38914E", + "0x025D94578FB7882EBC3EC669886CED7A56C3C1884FBC950BC0863909D83DAC1708", + "0x025D96D6F76A7C7003EACEF9ED52CDC002B657B95D944A653006EBBB8BA599857F", + "0x025DD38448621065BB5FDF56287DE9AA04876B19CED611F0325331104515101A87", + "0x025E3D8F94CAE6E9A28F7935C449AA013462C223D1EE43C15E41BAB91FE3AFED64", + "0x025E8A901F6A1B7ED8CDDB869DCE9733A7823581BDEF0D99C357D5AE147D23237A", + "0x025F402FF4FB09E5529678C5698B518C7BC1F150E7D0CC081A8374982B90834DDA", + "0x026100807AA1CD6A09B8EFEC2E9D1469D7CF8A5E66714D6CADE3798585514CBD82", + "0x02612E34015ACE7E493E26E800D5AE3399AF31DC1F0A55B2B0352543ED0478703A", + "0x026167C10F133A92F2E5A4D65EBB4881C3BD49B2F9E11F1C1AB847D347BC3C4905", + "0x02617E0C363CCD275B32ED5FC7EA14C586E7212FB75F6F17D5B101CE1650E75378", + "0x02617F9DF67672A6E56869C36FA89A6396F7293BFFA66ADFB794B3F1763BACE949", + "0x0261991E5D2FF8385AC5264B8698983ADCD3DC2CF6F33670B637DA74FA172754F2", + "0x02629CB28378EBD6B546B402113643C087A24DAC2C694637E248CBD0DF6BAE1276", + "0x0262B38989113EAA0163932D4A5AC068C1EEA624BF95D801ADC05C0A7FD5BEB42A", + "0x02631C794CFE2660600B5C2BD6D7A5F462AD798429606CA0880595A26142E8BF81", + "0x0263C2F7C0CB3B8389660B96780860386E08C29E106A8762B43618C77DF443805D", + "0x0263DBE43C70EEF95F0914648F96A8EA13631D9923587EC19E7A4816D9D89F1582", + "0x02641DCE94EFD43CB8EA790FA3D4472901BE7E09E4C1437C3CCB76C0E00CDB092F", + "0x026420EE27EF7CF385BD18AD72C39EBA94B7F84D20247A17E4D4722D5CA248CC39", + "0x02644CD85EB416B7BB87C21C8185B3B23751B26623D1CA763C4C2C06ACB05B9993", + "0x0264B4D47410867482CE8B7428208742FAA0268648534B081AFE57415201E9AA6F", + "0x0264D867B7B8C7B148BB0DF705E6BA1B1A4BD258AA5BE87E6E4FB4A4F61D91DDB5", + "0x02651D5BF0167BD64DB0E74A88FE1FBA863E9F17947A839E5455F48C8A7739C652", + "0x02652486117E65582E070BCB4C387A4B290169EC70B6D67DE8E0FC72306203E7DB", + "0x02668DDE70AE81C16398249BA3E1C09B94534AA027590877EBFF99FE153A15C2CE", + "0x0266A43756FD4A5C1032D210658F5E6A16F00F682164A1AB3EAA6786D6978FD6B4", + "0x0266AF10F44900A4E658ACEF93E5ACBED69A1AB000DD0E0C36BB877C1C219533E6", + "0x0266D7E112763CE656A674CAF592B8BECDDD034BBFB4E6800FF4E653842FF6C5ED", + "0x0266DDB552F5DD3B46755BC8D1DCB6000083F65184553F2FF7E00C819BBE56EC3D", + "0x0266DF17D643B33D9D928E75762D1DC831221598925CEAA6D68217850DF84331B9", + "0x0266FF24950957FD1989E48B19DC1DBB8E05B626AC5F18E85B35A7AC79D48D9DEA", + "0x02671A83E1B0723DE734BFA024A4DD7ED3EBA6102CDAE7005BEE9A73C788A3B720", + "0x026722455B3350C8613121B9931BCF04C5383CB31E2B7D0B0D6F9BEBB15C18B4C9", + "0x0267B965B28ADAE29D88A46E152609DD292A57A93939B7DB89B7D7DEBFC7E7D88D", + "0x0268144B29D522F98890A905816A983977C1DAC57FA26A556615EA62D1FAA532A8", + "0x026819D3B0D8552675AB58E44DD8DE8092F8EDE036A1BFD1CF106C106C391E55DA", + "0x02682FA84DAF9FFFD8F01D9235A5DB70073BCFAAA8BFC4AFB2277A83B19EA1BD57", + "0x026911BE11DA456558DF8CA9F99AE9A47491D706380960BA49471A50098834DFA1", + "0x026964CBF00EE542F5CBE80395FFEA747227BC3EFCC21D04956380180A9BE21546", + "0x026A0D779E58B25405DCCA2870A7A7BC87BAA0671572336C0C61FA182CAFB4EB0D", + "0x026A3B36EA4F4BA43F5B453A81F5A3D9C64053F9937BB1A2EDCBB770361B784038", + "0x026A50311692FB21F821D9B085AC657D5B3931DE134787EE6EB65BBFF0B50767C0", + "0x026AA08C40D121C1A8BC4760C4E92F7D607185CAF5260F8462DD71B1D9B91E6290", + "0x026ADBD0620B62366107EC7FA2D0714C9417D87091B0643DAD80804CFB24F25068", + "0x026B34B4D9B8873EB1348C4264E53C21A19E3BC2ADE52DF11F2659D786A8AD7F44", + "0x026B7DA40EB72ADB8F07BEA185CBE96AEC924F552B74B452EE01207488906DF40B", + "0x026BFB2B7E276AD142403B159FA1DF1576ED5598122FC443EEA682C8E2532E11E4", + "0x026C2AD01AD26B0D3E49005CA47013EC8C485E5D9DA3033B902B19F39F08306BBE", + "0x026CF60766ABF5D01F260B28BA62AA5BCFD842414413C057DF99EB04C5268B49AD", + "0x026D0E61493A6B3CE16F87A5348309414633B386F530DF1B5A8F4F5D56348BDAB6", + "0x026D7B4AF9935BBD5F3ABEB95B95140F7ED05EE9FF24B6E204CC654B5FC4DF994A", + "0x026DB19E7F069FD5227319C69CEB2B221E3EC53530170611A0D3F0C9CC9229D581", + "0x026DB775B3DEFE32A95E5F289AD54EEBB262FC99B77963FDC9A4B009759707C338", + "0x026DF34FEEABA8799C484D190DBC68B1F361C3AC1B48A05000F03A8C2B84B2ED0A", + "0x026F338E4F1477F106CCFAEC812EBCC90A2647B3C4E89291CF4AF5BD4655614BFC", + "0x026F5CA22F25EC7471B7FF2A9105F4D4E841C4AE5E461DFC109A45AE85FD5CC95A", + "0x026FB7BEF2A2023BAF5B3EDE96F902BC9B562C8669D8E93F17A5B36B260652527D", + "0x026FBC2532F00F7A534F2CDAE43C7B8DCB7D8BCC5D6C9E2D8FB1773C4855248384", + "0x026FE4AC7D0C7FE12678CF67FD539CF2D54DC58E8E0A7976C7DC7396DC48689FDA", + "0x027061F160678934BFB91569E9990D7F3FCAF0F2866ADE132E7B1EC7721431AA56", + "0x027078A7FCA7BA223EAA54C32E4F67C20507F838CE7F5CC9E9E2EE24965A8F8619", + "0x0270961855D01D0CEEEFF937661C2B27759A1252EC8AA1C99881F278ECCE3A600D", + "0x027097E0EBD1F500F14DD8B645F07B368BD7EFC7FB335F42548A128A60229B426A", + "0x0270B2DDE3F665BCC6655FEBFEDB5F6214D54343E7C8212A786098356D201C9D2B", + "0x027128BA39A73A0E6D68E9EFA64795E3C9A0C64CCE181465C8DB4AE729933203C1", + "0x0271685ADA238E7037C2C92F33BEDB43680E933EB2B224B419136E68DEA523359F", + "0x0271C9DA2ADA1335474F634628662949ED2D09364E1418CE7BD0348F2658F5B2F6", + "0x0271E16681A5EAC672394808EB92C5CC0BC76F0E61CE50B5DCB1F9D1D087A63F86", + "0x0271FD2F820E6F605F2C4FBDF60A7570AB0CC9265CA48FE8144EAF53609118DD5E", + "0x027246953A42101A4E9E742F37F344045128454A7C46130F61D27407AECA2C75FA", + "0x027379DD7997341D775D330F63AAB2BE02D9F695665126D7313741D6D0937CE910", + "0x0273C4032B2F4880A14A446E7288DD7E4BD7CB937F048BC31C5A036E0F6D69FA48", + "0x02741E6AC672B5EF3F347618D900D4762E3A4CE51B324F5A23C6996F31E67F7DD4", + "0x027454687AF99FF90BD13884FE7B2C126357BEF9502D6625E87EAE4F6147C45B6F", + "0x03A472EC5C4281D11B28C30B8519AF1119E223BBD34F63986680FB8BD493AC12B5", + "0x0390F60BC469E2DAA9B2FD2D2DF315B4F1D3436C96CD580ED1523A79CF12822755", + "0x0344D05BE4852875DD8B767600B1C5C8AD0A74EDA5E99A5EA7A2A199C7F10D19DD", + "0x032ED223FD99431FBA9F2378B3526AB1A858EE97D53E157278BAF7427E8424C141", + "0x031BF2C25DAB4A70A9AE135EF71FD736B12033C03E531A44BD3FDCAFAE4032F8FD", + "0x0304FF7BA4E765918ACA89FFEECC4458CFC7A8395F94EC090C42C19DD7C85D4AAF", + "0x02F94AE5F62754FF23E4608F479FDA62B7FEA0EED9DA4D037DB21A94C5726AFC64", + "0x02CD21DC4C8DB17A377219E2DDC7CFCB3DF21D44A413889D5E4F463D792C6DBE17", + "0x02660D960D145E80EB37534986A6A83A573B0E61080D2FD5496D51EA781F9CC7B6", + "0x025224ADDBA205C828657BFBF715F0273058C9EF4179625435827EBB4B4D71AFCB", + "0x024D7FB3FD2639D70295954CF06382262CB4A23522CD9DA22409C885F241EABE22", + "0x024370E939824B0DE419B722E9C463534B70B667F43B6FBC9F2D14E86A0D8A1B09", + "0x0239EF20C364DFD14BF95DDBB1ED5E88CE651D4C8BA7E074BCD42E562AA9741293", + "0x022619E63A45BB859736645AFEA76E6587B0DB7AD93BED3615490F7FD87AEB5FBA", + "0x03FF1EEEEE7E69CF494E719E9F4909F9AD478F194A176DF7D00BB2057A8C4B2897", + "0x0344A9C8FB3CC716F2E997C2D47F729E1B47E3AC4B1298AA1EDC90605EBC923626", + "0x025C3364210AA1E8811494C6F30C37C8CDC3A7A361E5945CFA8EE6857ADBB6AAEE", + "0x021FFD1E266ED6AD34A74A9FA7EC10C32C199DD4096BCA2B6945521169CEA47B79", + "0x0219A3EFE96E25C0708BEAB6AE0F344536698A5E65330BD06A304494613C4856C6", + "0x03E27DABCD844005D872CB0C8C4F67EEBA6C2CA5E865BF47D3E1AC79A13043A486", + "0x03906D48FB06EFAF97E43EC518DBB28CB33E086771A2287F9BDF34199DA0DE0D6C", + "0x03674F3C5ED0F0C0E34B830CC2D340D6A407C3FA20B220A3624BC9F88E8A7A11ED", + "0x03477A560CEC9A01AD7CDDFE29EAB717B5136BF91CF040EB6FAB500E8AC12B6476", + "0x03058E069ADCC4BCA3235CE2AFFC7A67AFC28C77F480EA82F807DECCE8F1D65265", + "0x02FAD96FFAD213DB8D8D1308781D41964AE416A699D322D40E1D1CBE2C3D712D4E", + "0x02F4B879B4562555DA47427EEC071FE73B4ED3D24D4B0CFADD2BEC04F43D6F0F54", + "0x02BB7E57A162E0684AC1D4F4BAB96A83CD8EE697C096BDBE21EDA16B7EC3403765", + "0x02B9FFF31AE35EE8E3959C69A432FF64A8B8D0DA2DF9FB32575BA0B42F24A86D31", + "0x0293EEE3FF8A9703BEA25D3B7DDD1C6CFE34F2663E3C3D7405518CD017BC080E67", + "0x0289B0089D39A4B49B8A8C21525877831A6111AED5B09A60675BCCA434BE238B59", + "0x02577A35CCFDCF3DF8449BCBD56CAD4519A7152DDCFCBFDE1548490B62316FCC40", + "0x0245ECE5512A7A501B0498F7924345C762C5C51DA9098A8A87446A00464D6AC6EC", + "0x0229AA74868BA000D3EA3F7B975C5DF14D5FF36E2511D2D99F61A92214A9A3E144", + "0x0208DF7B986167063ED3FE94EB662C82BDBC00C4F1FFE19CFA440723251120F5EC", + "0x03036C45CF9855237CD1B3F19B598D34200328B9C19F282A025056D90AF82B3D9F", + "0x02FD117FBEF969DAA86EC4AA03D58866D92F2BAA36199B4449DE28D86FE66DE703", + "0x02FC507BA8625E674B960151A867251AB409D13924EC5C8C957CD63146A45BD984", + "0x02ED3A8D19E0C164ECF312CC00751E0FED1D39AFCF9801C790DF6215FA75CDD61E", + "0x0291FC7DF67C3F05CEC2BE879A9EC010F7739E30BFF65B54F78CE753A69FC67BAC", + "0x024A1B598C654FCBFA577AAA77444D763AC67950DA4D0C142679D2FB479A160818", + "0x03D9B2484725D5FCD8D58EEFBA067D7ED11EEE9F67D0B21822B4F027BCBC52DA3C", + "0x03CAF8D80B93EAB04F5B670DEE2BC4FBB4BADDCEE636BB3B22C1E509E2EB6E09A6", + "0x034F8682C72A2429029A38F1FB42CBB9ADE2F9390ECA8C6AD2FBF846CFA971DD29", + "0x034E251868A15C84C62E2DEF853B5B13729FFE3444D273F6B3E33D369797BEA247", + "0x032611607071BFBB9610C60FAA487D110ED5DAC8351BF6FCC5D5D08888C9F8594A", + "0x02B5C6750548D929D3D1B145852E72F8952AF21C858C4484B5F9C0D794440544EB", + "0x0266C8FDC8602DC88465BE8AE347D125020229E0556FF623B72181EC1EF916E2E1", + "0x03FE181F5505330314B27F0D013A26A558A05B57859E7B84663AF2DB3D2B24DD5B", + "0x030E8E163229C24D5A090CC65102215CCF308D032D7A2A37BE95548F8CAB48868C", + "0x02C4256AB85D7123CFB24B783CF84C687B3CBE8E9B33E92B21CA12129E0E3ADA83", + "0x02B813C32820715BB8F2395952376BCD6A7281F0BE8A9DFE738D0A9EC2DA9FCB82", + "0x029681C64F31DF6C04AE99E207B9DA3AE52B266C5347E4654F48C6542A67BC9035", + "0x0295FA3C370F3398BE12945E4FD33400289A7606FAF7A9D5EA546BDCB24140DD87", + "0x0289540EBEE3170000F89EB5EE714D86B3343166AC80C23F7B13C6B66AAEFA13E1", + "0x024A3517630D481AEFAD2F3A6F47BCFD1BF41F38F96BB9B09BA7650CD3DB68D6D5", + "0x02449A59953D590419BBF6B11898A62D96602B7A44C3AAE84C9ED916B393D180E9", + "0x03F2F3DC5C34EF12164ED3303F20CEB0805E853A5FD23A13AF9B5892CD1AC6B70B", + "0x03F1D4971DC610BEE90539DC7E4D7011E05E3AF4890ECD8B4A946E7F630FB33120", + "0x03EF488CA97DD0B5F997CB63AF898A92DEB3AC34308366103604DBE5593BA10CF2", + "0x03CF94E3A23A8A78CA777BFE4695C960E3699A8D95B8CF130B8F5AFD4737C81045", + "0x03C68BCE487A9605B6510F9FE76C130D7E250990377E2FC06AED9DD2BB790AE7E5", + "0x0394FB22205E1191075B67A5DC00342AD4865BF256E7E7DE26476078CD6B397309", + "0x030B6A6A48B2DEF4F0BFF9235682498FC9D0636A187F66AE6147F6BEA8AF7F65A4", + "0x02F74DE11315EB6A53C8C7F179D2B44A851D64593A99BEE614582942E6F4B8925D", + "0x02E8E82D36070825944E65211260214707E75588026B94CAB96E4C5FC0702C5B81", + "0x02B1C6E5B77E81F3DDE2C891892CD9E1927ADC4794C309BFC059A0459A22DC536C", + "0x02AD1620FDC4DBEAABA2AE3A3F7219E2902B2BC3F6E14A34C89D2CF85B9C07210E", + "0x0268792A50F1C30D5E42072830F046A0D1A89EB70E27E01B72555E1A71BDF8F0CF", + "0x026047C501A725767B3AC0C8ECD74AF10EB423D09E399C2A3DB4F678EBAC782013", + "0x024DC7ABB01895F7AB8FDFB2EABDDEFC8ECE1C959C338079C63411C4722AB38857", + "0x024C10262EC87606034CE2C6E5256710FC7C71FD4C89200137DFBB5D3A4A7A5526", + "0x02229C45C6101BE54C78F20FA5908FE9F4309FE0538331D375189623311C984316", + "0x02198699CEE2A0BFDA62171A4A4E6A5AD897CE3BFD7CD8474E28CCA6F8E251633D", + "0x03D94BF7C34437B2DF2C44E87A0C568BF1331EED9FC1E0779163D75F2B83B20A52", + "0x0383205BDE352B680546AC00EA8B5E9C1759AD495567B18861A617129973CAC930", + "0x028E177BB5946100106EED12A0AF09D089C85791EF38F017F154A0677701928DB4", + "0x02704AEF65CBB77D9E4F83AD828BB61E1C074625CF44C94D8C2BAAE83C84982BBF", + "0x025C2E14D5164614FC3369E832AED8B9802508D6FDEB0EF072D147C8448F2C243A", + "0x0224D53990E35E176BEED6BB7AEBECDD2E5BCF5B6B8292F7FDDDDF8446A67330B3", + "0x02143D156A1FD1D4170681A7DB7BEFFCE1EEA39CC4F991AE86D56036A0C89B658E", + "0x020700AEA7DF2B9C56626717D1957A3325C7E38E7689AC090A2D2C2079F42E303D", + "0x03FE388021E3FE9BE8CC0777E22361EA1B54297D6105E89778E31903A0D8EE1856", + "0x03F3AD7480E35E04A7655BA9AF1C0A6E785894471437667DE934834B8C4B941104", + "0x03A1727EFB99CB7EF84EC6E336AB33EBB32E866D55BA9FB3E9298793439D9825F0", + "0x0385E1191724842AA8959AFA7295F8F46D27D872B882181EC9EDC42F6CC658225B", + "0x0338B76ED250D6D8ED730FE15EB2BDBEAF958AA1DC63025E11B06E0FB8B7DA7AC8", + "0x03257CBF000749D854BC5C92C59FF1888EA0D1374356152087D65C29B2FE0152CF", + "0x0322C63173E117FBD288E8D79C01B479F725A611A627E71D20D48DF831C9A4E73C", + "0x02D7985D19784C7B1462CD51B9F465437AA59B437E75F7092DC67EFC7884077561", + "0x02D3A02AE0B41DA32DDAB48B8F1AF023D0B8BBA0F0F3506926F19C94A79C13ADA0", + "0x02CB1922AC50C6C976CCAFF7E17702CD18BC498EE4572E013DAC3C8D9837743B49", + "0x028A0ED87B73A7216B31512534525DCE8CF1F435C6493651E780493CB6D797C1DA", + "0x025D91AF5B9D041BF686806E1B00F2A88B348F0F3303918B56F8CF602E07A6CB8A", + "0x02442D38DFD763680BF3FFEA38C9AE7440E4B52BE0E40F21B088EFCDD967CA6AB9", + "0x0204BF6C4E3A394FB3F4B8BAC8BC289DFAAE5E578DA939D68D7681F0ACAE745465", + "0x03C551BC0E75F84CCF5DA6FFF9E728B6F5573B1AC1B25CFA1378962B009A30F10E", + "0x03C03036213CB0F856F514E2CCE33A45F6CF9E9E9A5BA0D63CFB66736B0F4FA343", + "0x03278FEDBCB03E6A5723BAB911DBD763CC654309C88F32521F3B94463C5A75F241", + "0x031DA4EE952C5C42E74DDAF4155E422CBE87C20EF84CFA2FD37D77263AB4C991C0", + "0x031B1D2F87BEEA3B0192C4145E5504DA27B62FCCCC0432EC4577C491DF16125F78", + "0x031799644DF0103E810DF91DF4F0DA7B38C5176CF2E6C13980ED901AACD52F9EBB", + "0x02EDC0C44D5106C6D52F11D50802EFCF14F62A2A30B66F5685F8575C9C2480F841", + "0x02E15AC53B62CC12B98F2361C8A2B0B3039DFB182287B745A9562DED3C27294F4A", + "0x02C2FCF6D32D70B0CA2AE9C88A922669CA8982CA2FABD4BA3C987E4B990C6DCE19", + "0x0273834F712CA118A52F7FADE13599039DF726F0C4E7D7D830696ED4ED093CFBA2", + "0x02540E758C3DE8BB24589732644EAE5CED3A512AEA387C32B098C40BB111C0128B", + "0x0241A5AD818E0D8A6BFE2998A986C8D194BDC7631717101B811EF7AFD2824264CC", + "0x0235D112F1BF36C047E757E4D0A16AFF248D1203172A507CA06A2422D736CC7481", + "0x020E5B630D99D1D2FE7597620AF35F10710058B5A6A41BA08A3B2CAACD5AC31D5A", + "0x03F9A4A7FA44F593AFA960A7ED677518C19C7AFAECD223B0DC9B868C22DF1C9DE8", + "0x03E1065A452DF8233050BD25B031D671D74F1C7F7710C837FEA349CF64D77D2331", + "0x03C8762E8C7AEB7CC2138F4EC6F88F26C8E247DEE82E0D429A42257487BFC09662", + "0x0377521AFA2B30149D2D0269EFEB7988C6D94F732636B66686F5E2E1779D4BCE5A", + "0x03492D16D394C4A448E92D304B46376E4B57C9E6AA3A3020E4DC9BC2387527B243", + "0x031D4CB92DA25707A4D00CAC7DCF99C87A0D93154D26FF0165860B36E2CE61200E", + "0x030F5CA8A8AA815AED21B27503F368E46082C5E960F71DE91C11E769514EBBAF11", + "0x02E09A14BBB50BFCE8C123930716A7FE17297944DCABFBB9D0692A157CB468BD2E", + "0x02CD100BE867AD6D1EF3381C23D2A07900058CE156DB69A9863C02D2A036F48A3F", + "0x02A67D4F5703CBCEE2CF3FABAFB12BAE0802BC60466392B45CCF11E23F68E9790C", + "0x03FB2FC203021911C6F1991A06C74DB43AC0E9E94F3F8635AEF0ED95D2383EEEE8", + "0x035B0B1A82CA36841D04AEA05AA56963671A8FEA295EF61EA875B6F75AF34B11DA", + "0x0316378E159E5937850452B9008C9385DE6A5D4C65D4167E47FDB8C351D76184B0", + "0x02F6860CED06E1241263F3C4FA1A27ECDEE4D7E4E6F08CDA9B8507F1EF2F5AD3FE", + "0x02F34C10080DC01A276666BA5852E2A60F2D950D4A415FA25442A0B2A610DF24A2", + "0x02EE268D0D3F11ECA1B89015977B1F90C5CFA9272AFF67F80E20C2830B73C9319D", + "0x027A436E147FA81E0753C99C47E2C0CB52DC607F517DA45A3663E26009C1D405F9", + "0x026685CD55A7409E895B6B21E26CA4B1D8DF904399E03522FA3B2897407AABAA24", + "0x03F447D5360599AABBA05FD81AC32194695072075124F079A6AB304C58A5DC86C4", + "0x03CCB5DDAAC38F74CA08F787197D0682DD7341DAF3EA31D3BF2FA618ED7D029B0F", + "0x03C83FDDC83D7ACB8E87C5F98A5D962389E10C3A3C15C0EFE82471E6F48C04235B", + "0x031E61F3AD7308EA53223CD160606905CC98839098222016D0C69CF8AF147619ED", + "0x02F2D41F4D25BBEC67FFA24800C6FC7F2BDEA02791178D345BEBB9B3E48CA1235D", + "0x02CD61198B816EC3370C2846C3F272177BFC5223BDBA743BBA8CC65C086D2B3244", + "0x028716D2AE4137C44C18451F551F65C438D1B61585AAE18CB6CA2CA890EA288623", + "0x02838ACE2242D795AE5CD6429663365C322A50361D7CD29FEEE14405AE7F62E290", + "0x0243DD133B49D6FEE6418D57F7590F6C9D871EDDB00C26F2531837A83BB14A1959", + "0x0201DCDBBD56EB6E0C3FF415E804AA6FD97EBA5986BE8CDE1F581F03FA63E085FF", + "0x03F1AEAC79E4679933593CB0C824C731B8A22CFB6E9376C8A0271303E530FB5B08", + "0x03EB2C6006DC56410DB3168B038A22CCFBA89DC997ED8C48979957742F632B9CEB", + "0x03BE43C37ECD4328593531FAE5620DC1AA579CB885E9730FE00FDD281B21CF4F9F", + "0x038CA3C21669712BD6A2EBC6BAE5F85132E35E45B44CC41B866AF6C6B3301A7B30", + "0x034D4577232E01F64613D7065EA85526FC1C82188668758EAEE2777AB13FFC4A85", + "0x03346165311FD99E665C5C403A94BE843019B8DF58F2B94EA0EB59BFCC44F29D5C", + "0x0315F383F1716F03CDE811F0B521F247638D48CE7B96ACA6345250C9B7ABD7D74A", + "0x0307FFB1D43ECC7DA67CB9C88BDD8C8C96600FC1D96B20224714297E9F114B7414", + "0x02F4337FFE6591F1610EE4E77A20FD4C2DDB96351CA3D1D29AF18DEB72428B328C", + "0x029D1C25BD8BCA4B19DA191D176BD5B66828349EBA1F759EB4FDCB9EAC312A156E", + "0x026D011A32B4DD6120FA60F4197CB9D73C15C18D4F1EF9DCD67F848947BD9CD4C9", + "0x026AB53271B7C5690C955846419E5F8E981E2FD4581AE1A585B0FCE73C33C34B17", + "0x02440DE92EFA62BAC90023A9B91A773445B65355639A0A0C77DC36BE4F25730565", + "0x02015B544DFA85A34F66BDAF440DBF843D2DF8757430033BBBE13FC8D5B8FD5CD3", + "0x03BC4C5F0DA938C30D2687B85A31930397D00C385F3575E1D3184B3EAEDB19EC0D", + "0x033EC8DB415F58C225892F910FDED0384DD356FE51C7614BD9B73E56759089249D", + "0x02C1A453AC19D4C2678DF70B530D184F207F925FC3B21249CCE95ADF1F12D063BC", + "0x0295E02E34001508FCF38E615AD6C1E5FE6F791E5EB9EA8C3025A0F64CE3157740", + "0x03C32488973AB5B9AE88322B0BF4D43C785B8A7EB4B190D10877D815E2B2CAF8E8", + "0x033C81D524539DFC2B5BA9F340B4487B52B9CE90FDE030F59107E6B77CF38AEAEB", + "0x03039B9EF899339153360A677E56F1489CC660FD440EB30A812CF0BC05A352D245", + "0x02D4100FC99A5B6D4372A9C1A7D352BBDE8055146CB26E0C697CBC46645853235E", + "0x029A6E3EBD77F64B4CF3C3EDBF154A7722D7DB7E673F5208C33564A6491B9E7933", + "0x0268A650713168930D4C8CD807A475EEE8FC8C8E9ED0A4CCE69AB68633F1B22408", + "0x026598F052642F439419597E60B5913DFEF943AD2EA4EE9C926E3DE5B64EEC548E", + "0x0238289484641172D58F029847CA94A5513895C2262512A24079F1E485EE497530", + "0x022C9394AE30594C1A99A45C5B050EE62673FD5367DC9A71052D7306AF49409610", + "0x020FD8E4C71589CF65F0D594C00478BEEEB09806DCC9A146280C1C6049A58751C9", + "0x03F4151171F4984BE22415D05AA2C612CA2B3228E2B00C21519B632195A2F2DA83", + "0x03C48C1C64A583BEF263CD813999508A0984FD0A8F3439F399ED5753A723957BF4", + "0x03C1EF5B58EB2ADC9DD29F7172929EA8CB5DAB8091E2923A4A3FE6F1BA127253BA", + "0x03870CB9C79E37120EE442BAE36B156A18B30627F7B27CBCCFC1F3B2870BB4A721", + "0x036784618DDA168FD9D5A94BFF32DCE2849565DC032B7AF3031400F13B5ABE82F7", + "0x02F3EADB8F5DF480C1B495AB75B1985FA5587A9B5C0817F7A335FC6838C0399489", + "0x02BAE62FB0FDB8A678CC29B9590051545E1AC3481211FFAEA780AF79085E390F27", + "0x028C75DDC80F1D81EA78F2ED8FC21E2CBB19908A4C36C71A590C2631FC6685926B", + "0x02746F3D1D64F6E60BC4E883D9EDDE41BF723949C1F0263DCF4C0B9E8E3C334AD6", + "0x025A80A72494A92B2318C5E8D00780B20D39AEC9247E74EA49F25F537220B72D0C", + "0x024F5796CB7DD848A65FFCE88636E1447C4F2ED9691303B4E9D9A095C8BFEDCE17", + "0x0214E6DA12860E8BB608ABB46D9E6BDD2D32C53E8175063FC0B4F2895A8C27B38F", + "0x03E64697B2E93D2B805050BCE597D1B7081E53E8B2AF3AAB5F60772A550F8650A5", + "0x03CB07D1C3A2D51E0775DA905E43AEC9A5BA5B3EC979A43EF2D534063F8E8BECA5", + "0x03ACA33B508266A7FF17A6F766BAE831DFE5AF21B591897E201C7E99CF92136FF8" + ] + } +} +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | -------------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetCurrentDSComm"` | +| `params` | string | Required | Empty string `""` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-ds-block.md b/docs/api/blockchain-related-methods/api-blockchain-get-ds-block.md index ec34374ef..6a73b7efc 100644 --- a/docs/api/blockchain-related-methods/api-blockchain-get-ds-block.md +++ b/docs/api/blockchain-related-methods/api-blockchain-get-ds-block.md @@ -5,9 +5,11 @@ title: GetDsBlock --- -Returns the details of a specified Directory Service block. +There are two variations of the API - `GetDsBlock` and `GetDsBlockVerbose`. -### Example Request +Returns the details of a specified Directory Service block. In verbose mode, additional information will be included in the response. + +### Example Request-1 === "cURL" @@ -70,7 +72,6 @@ Returns the details of a specified Directory Service block. "Difficulty": 95, "DifficultyDS": 156, "GasPrice": "2000000000", - "LeaderPubKey": "0x026100807AA1CD6A09B8EFEC2E9D1469D7CF8A5E66714D6CADE3798585514CBD82", "PoWWinners": [ "0x0207184EB580333132787B360CA6D93290000C9F71E0B6A02C4412E7148FB1AF81", "0x0285B572471A9D3BA729719ED2EEE86395D3B8F243572E9099A5E8B750F46092A7", @@ -90,6 +91,115 @@ Returns the details of a specified Directory Service block. } ``` +### Example Request-2 + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetDsBlockVerbose", + "params": ["9000"] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response-2 + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": { + "B1": [ + false, + false, + false + // Output truncated + ], + "B2": [ + false, + false + // Output truncated + ], + "CS1": "FBA696961142862169D03EED67DD302EAB91333CBC4EEFE7EDB230515DA31DC1B9746EEEE5E7C105685E22C483B1021867B3775D30215CA66D5D81543E9FE8B5", + "PrevDSHash": "585373fb2c607b324afbe8f592e43b40d0091bbcef56c158e0879ced69648c8e", + "header": { + "BlockNum": "9000", + "CommitteeHash": "da38b3b21b26b71835bb1545246a0a248f97003de302ae20d70aeaf854403029", + "Difficulty": 95, + "DifficultyDS": 156, + "EpochNum": "899900", + "GasPrice": "2000000000", + "MembersEjected": [ + "0x02572A2FCD59F8115297B399F76D7ACCFDA7E82AC53702063C3A61FB4D85E0D0C1", + "0x029933F07FF634654C2ECB17A90EAD00CF9EE9F75395E206660CCEFB21874ECEA1", + "0x02AAD92E5A3C9D8ECB364225719478B51026DD5C786BF7312C5C9765353BC4C98B" + ], + "PoWWinners": [ + "0x0207184EB580333132787B360CA6D93290000C9F71E0B6A02C4412E7148FB1AF81", + "0x0285B572471A9D3BA729719ED2EEE86395D3B8F243572E9099A5E8B750F46092A7", + "0x02C1D8C0C7884E65A22FFD76DF9ACC2EA3551133E4ADD59C2DF74F327E09F709FF", + "0x02D728E77C8DA14E900BA8A2014A0D4B5512C6BABCCB77B83F21381437E0038F44", + "0x0321B0E1A20F02C99394DD24B34AB4E79AE6CBF0C689C222F246431A764D6B59DB", + "0x038A724504899CCCA068BD165AE15CE2947667225C72912039CEE4EF3992334843", + "0x03AB477A7A895DD4E84F240A2F1FCF5F86B1A3D59B6AD3065C18CD69729D089959", + "0x03B29C7F3F85329B0621914AB0367BA78135889FB8E4F937DDB7DAA8123AD4DF3C", + "0x03E82B00B53ECC10073404E844841C519152E500A655EEF1D8EAD6612ABDF5B552" + ], + "PoWWinnersIP": [ + { + "IP": "34.212.122.139", + "port": 33133 + }, + { + "IP": "34.214.85.15", + "port": 33133 + }, + { + "IP": "54.148.246.51", + "port": 33133 + }, + { + "IP": "54.218.112.25", + "port": 33133 + }, + { + "IP": "54.184.108.224", + "port": 33133 + }, + { + "IP": "34.211.53.138", + "port": 33133 + }, + { + "IP": "44.234.38.187", + "port": 33133 + }, + { + "IP": "44.234.126.143", + "port": 33133 + }, + { + "IP": "34.223.254.106", + "port": 33133 + } + ], + "PrevHash": "585373fb2c607b324afbe8f592e43b40d0091bbcef56c158e0879ced69648c8e", + "ReservedField": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "SWInfo": { + "Scilla": [0, 0, 0, "0", 0], + "Zilliqa": [0, 0, 0, "0", 0] + }, + "ShardingHash": "3216a33bfd4801e1907e72c7d529cef99c38d57cd281d0e9d726639fd9882d25", + "Timestamp": "1606443830834512", + "Version": 2 + }, + "signature": "7EE023C56602A17F2C8ABA2BEF290386D7C2CE1ABD8E3621573802FA67B243DE60B3EBEE5C4CCFDB697C80127B99CB384DAFEB44F70CD7569F2816DB950877BB" + } +} +``` + ### HTTP Request | Chain(s) | URL(s) | @@ -105,5 +215,5 @@ Returns the details of a specified Directory Service block. | --------- | ------ | -------- | ---------------------------------------------------- | | `id` | string | Required | `"1"` | | `jsonrpc` | string | Required | `"2.0"` | -| `method` | string | Required | `"GetDsBlock"` | +| `method` | string | Required | `"GetDsBlock"` Or `"GetDsBlockVerbose"` | | `params` | string | Required | Specified DS block number to return. Example: `"40"` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-node-type.md b/docs/api/blockchain-related-methods/api-blockchain-get-node-type.md new file mode 100644 index 000000000..c0ef22bb7 --- /dev/null +++ b/docs/api/blockchain-related-methods/api-blockchain-get-node-type.md @@ -0,0 +1,49 @@ +--- +id: api-blockchain-get-node-type +title: GetNodeType +--- + +--- + +Returns node type. The possible return values are: + +- `"Not in network, synced till epoch [epoch number]"` if the server has not joined the network and is synced until a specific epoch. +- `"Seed"` if the server is in lookup node mode and is an archival lookup node. +- `"Lookup"` if the server is in lookup node mode + +### Example Request + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetNodeType", + "params": [""] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response + +```json +{ "id": "1", "jsonrpc": "2.0", "result": "Seed" } +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | ----------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetNodeType"` | +| `params` | string | Required | Empty string `""` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-num-peers.md b/docs/api/blockchain-related-methods/api-blockchain-get-num-peers.md new file mode 100644 index 000000000..0e097f41a --- /dev/null +++ b/docs/api/blockchain-related-methods/api-blockchain-get-num-peers.md @@ -0,0 +1,45 @@ +--- +id: api-blockchain-get-num-peers +title: GetNumPeers +--- + +--- + +Returns total number of peers including committee peers. + +### Example Request + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetNumPeers", + "params": [""] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response + +```json +{ "id": "1", "jsonrpc": "2.0", "result": 600 } +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | ----------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetNumPeers"` | +| `params` | string | Required | Empty string `""` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-sharding-structure.md b/docs/api/blockchain-related-methods/api-blockchain-get-sharding-structure.md new file mode 100644 index 000000000..f1867afbf --- /dev/null +++ b/docs/api/blockchain-related-methods/api-blockchain-get-sharding-structure.md @@ -0,0 +1,45 @@ +--- +id: api-blockchain-get-sharding-structure +title: GetShardingStructure +--- + +--- + +Retrieves the sharding structure from the lookup server. + +### Example Request + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetShardingStructure", + "params": [""] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response + +```json +{ "id": "1", "jsonrpc": "2.0", "result": { "NumPeers": [0] } } +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | ------------------------ | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetShardingStructure"` | +| `params` | string | Required | Empty string `""` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-software-version.md b/docs/api/blockchain-related-methods/api-blockchain-get-software-version.md new file mode 100644 index 000000000..8277d98bd --- /dev/null +++ b/docs/api/blockchain-related-methods/api-blockchain-get-software-version.md @@ -0,0 +1,52 @@ +--- +id: api-blockchain-get-software-version +title: GetVersion +--- + +--- + +Returns the software version of the Zilliqa node. Additionally, returns a commit id if defined. + +### Example Request + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetVersion", + "params": [""] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": { + "Commit": "", + "Version": "v9.0.1" + } +} +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | ----------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetVersion"` | +| `params` | string | Required | Empty string `""` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-total-coin-supply.md b/docs/api/blockchain-related-methods/api-blockchain-get-total-coin-supply.md index 66487199a..fa8ca44f6 100644 --- a/docs/api/blockchain-related-methods/api-blockchain-get-total-coin-supply.md +++ b/docs/api/blockchain-related-methods/api-blockchain-get-total-coin-supply.md @@ -5,10 +5,15 @@ title: GetTotalCoinSupply --- -Returns the total supply (ZIL) of coins in the network. This is represented as a +There are two variations of the API - `GetTotalCoinSupply` and `GetTotalCoinSupplyAsInt`. + +`GetTotalCoinSupply` Returns the total supply (ZIL) of coins in the network. This is represented as a `String`. -### Example Request +`GetTotalCoinSupplyAsInt` Returns the total supply (ZIL) of coins in the network. This is represented as a +`Rounded Number`. + +### Example Request-1 === "cURL" @@ -69,7 +74,7 @@ Returns the total supply (ZIL) of coins in the network. This is represented as a } ``` -### Example Response +### Example Response-1 ```json { @@ -79,6 +84,33 @@ Returns the total supply (ZIL) of coins in the network. This is represented as a } ``` +### Example Request-2 + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetTotalCoinSupplyAsInt", + "params": [""] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response-2 + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": 13452081092 +} +``` + +!!! note + + `GetTotalCoinSupplyAsInt` is not avaliable to call through SDKs. + ### HTTP Request | Chain(s) | URL(s) | @@ -90,9 +122,9 @@ Returns the total supply (ZIL) of coins in the network. This is represented as a ### Arguments -| Parameter | Type | Required | Description | -| --------- | ------ | -------- | ---------------------- | -| `id` | string | Required | `"1"` | -| `jsonrpc` | string | Required | `"2.0"` | -| `method` | string | Required | `"GetTotalCoinSupply"` | -| `params` | string | Required | Empty string `""` | +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | ------------------------------------------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetTotalCoinSupply or GetTotalCoinSupplyAsInt"` | +| `params` | string | Required | Empty string `""` | diff --git a/docs/api/blockchain-related-methods/api-blockchain-get-tx-block.md b/docs/api/blockchain-related-methods/api-blockchain-get-tx-block.md index 001a78e4b..ea2c9e50e 100644 --- a/docs/api/blockchain-related-methods/api-blockchain-get-tx-block.md +++ b/docs/api/blockchain-related-methods/api-blockchain-get-tx-block.md @@ -5,9 +5,11 @@ title: GetTxBlock --- -Returns the details of a specified Transaction block. +There are two variations of the API - `GetTsBlock` and `GetTsBlockVerbose`. -### Example Request +Returns the details of a specified Transaction block. In verbose mode, additional information will be included in the response. + +### Example Request-1 === "cURL" @@ -58,7 +60,7 @@ Returns the details of a specified Transaction block. } ``` -### Example Response +### Example Response-1 !!! note @@ -104,7 +106,6 @@ Returns the details of a specified Transaction block. "GasLimit": "650000", "GasUsed": "25517", "MbInfoHash": "b2a862649507a9d86b21246b1538aa237c75f65cf7ef9a512e03ba39d0e62933", - "MinerPubKey": "0x02134CC19B594B1571916AABBA4475026D1B2021C19045CB2065E0D3B12706768E", "NumMicroBlocks": 4, "NumPages": 5, "NumTxns": 10022, @@ -120,6 +121,115 @@ Returns the details of a specified Transaction block. } ``` +### Example Request-2 + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetTxBlockVerbose", + "params": ["1002353"] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response-2 + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": { + "B1": [ + false, + false, + false + // Output truncated + ], + "B2": [ + false, + false + // Output truncated + ], + "CS1": "FBA696961142862169D03EED67DD302EAB91333CBC4EEFE7EDB230515DA31DC1B9746EEEE5E7C105685E22C483B1021867B3775D30215CA66D5D81543E9FE8B5", + "PrevDSHash": "585373fb2c607b324afbe8f592e43b40d0091bbcef56c158e0879ced69648c8e", + "header": { + "BlockNum": "9000", + "CommitteeHash": "da38b3b21b26b71835bb1545246a0a248f97003de302ae20d70aeaf854403029", + "Difficulty": 95, + "DifficultyDS": 156, + "EpochNum": "899900", + "GasPrice": "2000000000", + "MembersEjected": [ + "0x02572A2FCD59F8115297B399F76D7ACCFDA7E82AC53702063C3A61FB4D85E0D0C1", + "0x029933F07FF634654C2ECB17A90EAD00CF9EE9F75395E206660CCEFB21874ECEA1", + "0x02AAD92E5A3C9D8ECB364225719478B51026DD5C786BF7312C5C9765353BC4C98B" + ], + "PoWWinners": [ + "0x0207184EB580333132787B360CA6D93290000C9F71E0B6A02C4412E7148FB1AF81", + "0x0285B572471A9D3BA729719ED2EEE86395D3B8F243572E9099A5E8B750F46092A7", + "0x02C1D8C0C7884E65A22FFD76DF9ACC2EA3551133E4ADD59C2DF74F327E09F709FF", + "0x02D728E77C8DA14E900BA8A2014A0D4B5512C6BABCCB77B83F21381437E0038F44", + "0x0321B0E1A20F02C99394DD24B34AB4E79AE6CBF0C689C222F246431A764D6B59DB", + "0x038A724504899CCCA068BD165AE15CE2947667225C72912039CEE4EF3992334843", + "0x03AB477A7A895DD4E84F240A2F1FCF5F86B1A3D59B6AD3065C18CD69729D089959", + "0x03B29C7F3F85329B0621914AB0367BA78135889FB8E4F937DDB7DAA8123AD4DF3C", + "0x03E82B00B53ECC10073404E844841C519152E500A655EEF1D8EAD6612ABDF5B552" + ], + "PoWWinnersIP": [ + { + "IP": "34.212.122.139", + "port": 33133 + }, + { + "IP": "34.214.85.15", + "port": 33133 + }, + { + "IP": "54.148.246.51", + "port": 33133 + }, + { + "IP": "54.218.112.25", + "port": 33133 + }, + { + "IP": "54.184.108.224", + "port": 33133 + }, + { + "IP": "34.211.53.138", + "port": 33133 + }, + { + "IP": "44.234.38.187", + "port": 33133 + }, + { + "IP": "44.234.126.143", + "port": 33133 + }, + { + "IP": "34.223.254.106", + "port": 33133 + } + ], + "PrevHash": "585373fb2c607b324afbe8f592e43b40d0091bbcef56c158e0879ced69648c8e", + "ReservedField": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "SWInfo": { + "Scilla": [0, 0, 0, "0", 0], + "Zilliqa": [0, 0, 0, "0", 0] + }, + "ShardingHash": "3216a33bfd4801e1907e72c7d529cef99c38d57cd281d0e9d726639fd9882d25", + "Timestamp": "1606443830834512", + "Version": 2 + }, + "signature": "7EE023C56602A17F2C8ABA2BEF290386D7C2CE1ABD8E3621573802FA67B243DE60B3EBEE5C4CCFDB697C80127B99CB384DAFEB44F70CD7569F2816DB950877BB" + } +} +``` + ### HTTP Request | Chain(s) | URL(s) | @@ -131,9 +241,9 @@ Returns the details of a specified Transaction block. ### Arguments -| Parameter | Type | Required | Description | -| --------- | ------ | -------- | -------------------------------------------------------- | -| `id` | string | Required | `"1"` | -| `jsonrpc` | string | Required | `"2.0"` | -| `method` | string | Required | `"GetTxBlock"` | -| `params` | string | Required | Specifed TX block number to return. Example: `"1002353"` | +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | --------------------------------------------------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetTxBlock"` or `"GetTxBlockVerbose"` | +| `params` | string | Required | Specified TX block number to return. Example: `"1002353"` | diff --git a/docs/api/introduction/api-endpoints.md b/docs/api/introduction/api-endpoints.md new file mode 100644 index 000000000..017a53879 --- /dev/null +++ b/docs/api/introduction/api-endpoints.md @@ -0,0 +1,39 @@ +--- +id: api-endpoints +title: API Endpoints +keywords: + - api + - introduction + - endpoints +description: Zilliqa API Endpoints +--- + +--- + +You can use the following endpoints to interact with the Zilliqa API, either via EVM or the +[Zilliqa JSON API](./api-introduction.md). + +| Chain(s) | Zilliqa API Chain Id | EVM Chain Id | URL(s) | +| ------------------------------------------- | -------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | 1 | 32769 | [https://api.zilliqa.com/](https://api.zilliqa.com/) or [http://evm-api-filters.zilliqa.com/](http://evm-api-filters.zilliqa.com/) (if using eth_subscribe) | +| **Developer testnet** | 333 | 33101 | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) or [http://evm-api-filters-dev.zilliqa.com/](http://evm-api-filters-dev.zilliqa.com/) (if using eth_subscribe) | +| **Developer testnet (new endpoints names)** | 333 | 33101 | [https://api.testnet.zilliqa.com/](https://api.testnet.zilliqa.com/) or [http://evm-api-filters.testnet.zilliqa.com/](http://evm-api-filters.testnet.zilliqa.com/) (if using eth_subscribe) | +| \*\*Developer devnet | 617 | 33385 | [https://api.devnet.zilliqa.com/](https://api.devnet.zilliqa.com/) or [http://evm-api-filters.devnet.zilliqa.com/](http://evm-api-filters.devnet.zilliqa.com/) (if using eth_subscribe) | +| **Isolated server** | 222 | 32990 | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +You can use the following block explorers for the various networks + +| Chain(s) | Explorer link | +| --------------------- | ---------------------------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [Viewblock explorer](https://viewblock.io/zilliqa) | +| | [Devex explorer](https://devex.zilliqa.com/) | +| | [Ethereal EVM explorer](https://evmx.zilliqa.com/overview) | +| **Developer testnet** | [ViewBlock testnet explorer](https://viewblock.io/zilliqa?network=testnet) | +| | [DevEx testnet explorer](https://devex.zilliqa.com/?network=https%3A%2F%2Fdev-api.zilliqa.com) | +| | [Ethereal EVM explorer](https://evmx-dev.zilliqa.com/overview) | +| | [Otterscan EVM explorer](https://otterscan.testnet.zilliqa.com) | +| **Developer devnet** | [DevEx Devnet explorer](https://devex.zilliqa.com/?network=https%3A%2F%2Fapi.devnet.zilliqa.com) | +| | [Otterscan EVM explorer](https://otterscan.devnet.zilliqa.com) | +| **Isolated server** | [Isolated server explorer](https://devex.zilliqa.com/?network=https%3A%2F%2Fzilliqa-isolated-server.zilliqa.com) | + +You can use [Zilliqa Status](https://status.zilliqa.com/) to check the current state of each service and the [faucet services](../../developers/developer-toolings/dev-tools-faucet.md) to add ZIL to your account. diff --git a/docs/api/introduction/api-introduction.md b/docs/api/introduction/api-introduction.md index e1756bb8d..0df389e3c 100644 --- a/docs/api/introduction/api-introduction.md +++ b/docs/api/introduction/api-introduction.md @@ -4,32 +4,14 @@ title: Introduction keywords: - api - introduction -description: Zilliqa JSON RPC API +description: Zilliqa API introduction --- --- -[JSON-RPC](https://en.wikipedia.org/wiki/JSON-RPC) is a remote procedure call -protocol encoded in JSON. You can use this API to access data from the Zilliqa -nodes. The JSON-RPC API server runs on: - -| Chain(s) | URL(s) | -| --------------------- | -------------------------------------------------------------------------------------------- | -| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | -| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | -| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | -| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | - -You can use the following block explorers for the various networks - -| Chain(s) | Explorer link | -| --------------------- | ---------------------------------------------------------------------------------------------------------------- | -| **Zilliqa mainnet** | [Viewblock explorer](https://viewblock.io/zilliqa)\ | -| | [Devex explorer](https://devex.zilliqa.com/) | -| **Developer testnet** | [ViewBlock testnet explorer](https://viewblock.io/zilliqa?network=testnet) \ | -| | [DevEx testnet explorer](https://devex.zilliqa.com/?network=https%3A%2F%2Fdev-api.zilliqa.com) | -| **Local testnet** | [Local explorer](https://devex.zilliqa.com/?network=http%3A%2F%2Flocalhost%3A4201%2F) | -| **Isolated server** | [Isolated server explorer](https://devex.zilliqa.com/?network=https%3A%2F%2Fzilliqa-isolated-server.zilliqa.com) | +The Zilliqa API is available via +[JSON-RPC](https://en.wikipedia.org/wiki/JSON-RPC), a remote procedure +call protocol encoded in JSON. All API calls are POST requests. diff --git a/docs/api/introduction/evm-methods.md b/docs/api/introduction/evm-methods.md new file mode 100644 index 000000000..d4aab9cf8 --- /dev/null +++ b/docs/api/introduction/evm-methods.md @@ -0,0 +1,12 @@ +--- +id: api-evm-methods +title: API EVM methods +keywords: + - api + - evm +description: API EVM methods +--- + +--- + +See our [EVM documentation](../../zilevm/protocol/developer-rpc.md) for details of the supported EVM RPC methods. diff --git a/docs/api/transaction-related-methods/api-transaction-get-soft-confirmed-tx.md b/docs/api/transaction-related-methods/api-transaction-get-soft-confirmed-tx.md new file mode 100644 index 000000000..b8c2f828f --- /dev/null +++ b/docs/api/transaction-related-methods/api-transaction-get-soft-confirmed-tx.md @@ -0,0 +1,63 @@ +--- +id: api-transaction-get-soft-confirmed-tx +title: GetSoftConfirmedTransaction +--- + +--- + +Returns the details of a specified Transaction. + +### Example Request + +=== "cURL" + + ```shell + curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetSoftConfirmedTransaction", + "params": ["cd8727674bc05e0ede405597a218164e1c13c7103b9d0ba43586785f3d8cede5"] + }' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" + ``` + +### Example Response + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": { + "ID": "cd8727674bc05e0ede405597a218164e1c13c7103b9d0ba43586785f3d8cede5", + "amount": "24999000000000", + "gasLimit": "1", + "gasPrice": "1000000000", + "nonce": "1", + "receipt": { + "cumulative_gas": "1", + "epoch_num": "589763", + "success": true + }, + "signature": "0x593454623A6CE0FEA287E42583445B140F696F79CA508762B8AB44F202686CFA115A2AC36C31E643C9EB0D46A4E6CA8C4EEFD78D7E9A25220DC512C13C9600F0", + "toAddr": "9148616bfdfab321bdd626682a8c446e193eabb2", + "version": "65537" + } +} +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | -------------------------------------------------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetSoftConfirmedTransaction"` | +| `params` | string | Required | Transaction hash of 32 bytes of a specified transaction. | diff --git a/docs/assets/img/chainlink/remix-compiler.png b/docs/assets/img/chainlink/remix-compiler.png new file mode 100644 index 000000000..0617c7d61 Binary files /dev/null and b/docs/assets/img/chainlink/remix-compiler.png differ diff --git a/docs/assets/img/chainlink/remix-deployed-contracts.png b/docs/assets/img/chainlink/remix-deployed-contracts.png new file mode 100644 index 000000000..7501df438 Binary files /dev/null and b/docs/assets/img/chainlink/remix-deployed-contracts.png differ diff --git a/docs/assets/img/chainlink/remix-file-explorer.png b/docs/assets/img/chainlink/remix-file-explorer.png new file mode 100644 index 000000000..bad1751d5 Binary files /dev/null and b/docs/assets/img/chainlink/remix-file-explorer.png differ diff --git a/docs/assets/img/chainlink/remix-transactions-0.png b/docs/assets/img/chainlink/remix-transactions-0.png new file mode 100644 index 000000000..af8d85558 Binary files /dev/null and b/docs/assets/img/chainlink/remix-transactions-0.png differ diff --git a/docs/assets/img/chainlink/remix-transactions-1.png b/docs/assets/img/chainlink/remix-transactions-1.png new file mode 100644 index 000000000..fd70e4aa9 Binary files /dev/null and b/docs/assets/img/chainlink/remix-transactions-1.png differ diff --git a/docs/developers/developer-toolings/dev-tools-faucet.md b/docs/developers/developer-toolings/dev-tools-faucet.md index f9196f6f0..39bc1175f 100644 --- a/docs/developers/developer-toolings/dev-tools-faucet.md +++ b/docs/developers/developer-toolings/dev-tools-faucet.md @@ -24,6 +24,17 @@ receive 300 testnet $ZIL once the transaction is confirmed. The faucet is accessible at [https://dev-wallet.zilliqa.com/faucet](https://dev-wallet.zilliqa.com/faucet) +## Devnet Faucet + +In order to deploy a contract to Zilliqa's devnet and send transactions, you +will need testnet $ZIL in your account. + +Enter the your wallet address faucet website, you will receive 100 devnet $ZIL +once the transaction is confirmed. + +The devnet faucet is accessible at +[https://faucet.devnet.zilliqa.com](https://faucet.devnet.zilliqa.com) + ## Source Code If you are interested in looking into the implementation of the faucet, you can diff --git a/docs/developers/developer-toolings/dev-tools-scillaparser.md b/docs/developers/developer-toolings/dev-tools-scillaparser.md new file mode 100644 index 000000000..31abb8de3 --- /dev/null +++ b/docs/developers/developer-toolings/dev-tools-scillaparser.md @@ -0,0 +1,65 @@ +--- +id: dev-tools-scillaparser +title: Scilla-Parser +keywords: + - rust + - scilla-parser + - scilla +description: Rust parser for scilla +--- + +--- + +## rs-scilla-parser + +[rs-scilla-parser](https://github.com/Zilliqa/rs-scilla-parser) is a Rust-based library to parse scilla contracts. + +The current version of the library parses a given contract and extract: + +- The contract name +- Initial parameters needed to deploy the contract +- The contract's fields +- The contract's transitions + +### Source Code + +The Github repository can be found at +[https://github.com/Zilliqa/rs-scilla-parser](https://github.com/Zilliqa/rs-scilla-parser) + +### Documentation + +The official documentation can be found at [docs.rs](https://docs.rs/scilla-parser/latest/scilla_parser/) + +### Installation + +Run the following command to add rs-scilla-parser to your Rust based project: + +```bash +cargo add rs-scilla-parser +``` + +### Examples + +To parse [HelloWorld.scilla](https://github.com/Zilliqa/rs-scilla-parser/blob/main/tests/contracts/HelloWorld.scilla) contract: + +```rust + use scilla_parser::{Contract, Field, FieldList, Transition, TransitionList, Type}; + + let contract_path = PathBuf::from("tests/contracts/HelloWorld.scilla"); + let contract = Contract::parse(&contract_path).unwrap(); + + assert_eq!( + contract, + Contract { + name: "HelloWorld".to_string(), + init_params: FieldList(vec![Field::new("owner", Type::ByStr(20))]), + fields: FieldList(vec![Field::new("welcome_msg", Type::String)]), + transitions: TransitionList(vec![ + Transition::new("setHello", FieldList(vec![Field::new("msg", Type::String)])), + Transition::new_without_param("getHello") + ]) + } + ); +``` + +For more examples, take a look at the [project's tests](https://github.com/Zilliqa/rs-scilla-parser/blob/main/tests/full_contract_tests.rs). diff --git a/docs/developers/developer-toolings/sdks/dev-tools-gozilliqa.md b/docs/developers/developer-toolings/sdks/dev-tools-gozilliqa.md index 643663e13..ca3ebd51b 100644 --- a/docs/developers/developer-toolings/sdks/dev-tools-gozilliqa.md +++ b/docs/developers/developer-toolings/sdks/dev-tools-gozilliqa.md @@ -38,6 +38,7 @@ Run the following to clone the repository to your local machine git clone[https://github.com/Zilliqa/gozilliqa-sdk.git](https://github.com/Zilliqa/gozilliqa-sdk.git)``` > If you wish to use the release version, please switch your branch to the particular release version. You can find out more information about the releases at [https://github.com/Zilliqa/gozilliqa-sdk/releases](https://github.com/Zilliqa/gozilliqa-sdk/releases) +```` ## Installation @@ -47,7 +48,7 @@ Install the dependent libraries: ```go go get ./... -```` +``` The SDK itself cannot be built into a binary as it does not contains any `main` function, you can directly add it to your own project as a library. Also, we diff --git a/docs/developers/developer-toolings/sdks/dev-tools-java.md b/docs/developers/developer-toolings/sdks/dev-tools-java.md index 2da989b42..cb1b33885 100644 --- a/docs/developers/developer-toolings/sdks/dev-tools-java.md +++ b/docs/developers/developer-toolings/sdks/dev-tools-java.md @@ -17,7 +17,7 @@ description: Zilliqa Java SDK LaksaJ ## Source Code The Github repository can be found at -[https://github.com/FireStack-Lab/LaksaJ](https://github.com/FireStack-Lab/LaksaJ) +[https://github.com/Zilliqa/zilliqa-developer](https://github.com/Zilliqa/zilliqa-developer/tree/main/products/laksaj) ## Getting Started (Installation and Packages Explained) @@ -28,9 +28,9 @@ building the `jar` file. ```xml - org.firestack + com.zilliqa laksaj - 1.0.5-RELEASE + 2.0.0 ``` @@ -39,7 +39,7 @@ building the `jar` file. ```groovy dependencies { - compile group: 'org.firestack', name: 'laksaj', version: '1.0.5-RELEASE' + compile group: 'org.zilliqa', name: 'laksaj', version: '2.0.0' } ``` @@ -48,16 +48,16 @@ dependencies { First clone the `laksaj` repository -````bash -git clone[https://github.com/FireStack-Lab/LaksaJ.git](https://github.com/FireStack-Lab/LaksaJ.git)``` +```bash +git clone https://github.com/Zilliqa/zilliqa-developer.git +cd zilliqa-developer/products/laksaj +``` Next, build `jar` using following command -```` - +```bash gradle build -x test - -````text +``` ## Methods and APIs @@ -177,10 +177,10 @@ gradle build -x test ```java -package com.firestack.example; +package com.zilliqa.example; -import com.firestack.laksaj.crypto.KeyTools; -import com.firestack.laksaj.utils.ByteUtil; +import com.zilliqa.laksaj.crypto.KeyTools; +import com.zilliqa.laksaj.utils.ByteUtil; import org.web3j.crypto.ECKeyPair; import java.math.BigInteger; @@ -204,14 +204,14 @@ public class GenerateAddress { } } -```` +``` ### Validate an Address ```java -package com.firestack.example; +package com.zilliqa.example; -import com.firestack.laksaj.utils.Validation; +import com.zilliqa.laksaj.utils.Validation; public class ValidateAddress { public static void main(String[] args) { @@ -225,9 +225,9 @@ public class ValidateAddress { ### Validate Checksum Address ```java -package com.firestack.example; +package com.zilliqa.example; -import com.firestack.laksaj.utils.Validation; +import com.zilliqa.laksaj.utils.Validation; public class ValidChecksumAddress { public static void main(String[] args) { @@ -241,16 +241,16 @@ public class ValidChecksumAddress { ### Transaction Operations (Construct a Transaction, Calculate Transaction Fee, Do Serialization, Sign a Transaction, Broadcast) ```java -package com.firestack.example; - -import com.firestack.laksaj.account.Wallet; -import com.firestack.laksaj.contract.Contract; -import com.firestack.laksaj.contract.ContractFactory; -import com.firestack.laksaj.contract.DeployParams; -import com.firestack.laksaj.contract.Value; -import com.firestack.laksaj.jsonrpc.HttpProvider; -import com.firestack.laksaj.transaction.Transaction; -import com.firestack.laksaj.transaction.TransactionFactory; +package com.zilliqa.example; + +import com.zilliqa.laksaj.account.Wallet; +import com.zilliqa.laksaj.contract.Contract; +import com.zilliqa.laksaj.contract.ContractFactory; +import com.zilliqa.laksaj.contract.DeployParams; +import com.zilliqa.laksaj.contract.Value; +import com.zilliqa.laksaj.jsonrpc.HttpProvider; +import com.zilliqa.laksaj.transaction.Transaction; +import com.zilliqa.laksaj.transaction.TransactionFactory; import javafx.util.Pair; import java.io.IOException; @@ -258,7 +258,7 @@ import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.List; -import static com.firestack.laksaj.account.Wallet.pack; +import static com.zilliqa.laksaj.account.Wallet.pack; public class TransactionOperation { public static void main(String[] args) throws IOException, NoSuchAlgorithmException { @@ -366,10 +366,10 @@ public class TransactionOperation { ```java -package com.firestack.example; +package com.zilliqa.example; -import com.firestack.laksaj.blockchain.Contract; -import com.firestack.laksaj.jsonrpc.HttpProvider; +import com.zilliqa.laksaj.blockchain.Contract; +import com.zilliqa.laksaj.jsonrpc.HttpProvider; import java.io.IOException; import java.util.List; diff --git a/docs/developers/developer-toolings/sdks/dev-tools-pyzil.md b/docs/developers/developer-toolings/sdks/dev-tools-pyzil.md new file mode 100644 index 000000000..67db26496 --- /dev/null +++ b/docs/developers/developer-toolings/sdks/dev-tools-pyzil.md @@ -0,0 +1,364 @@ +--- +id: dev-tools-pyzil +title: pyzil +keywords: + - python + - pyzil + - sdk + - installation + - apis + - examples + - zilliqa +description: pyzil +--- + +--- + +## Introduction + +[pyzil](https://github.com/Zilliqa/pyzil) is a python library for +interacting with the Zilliqa network. It can create wallets, deploy contracts, +and invoke transitions to interact with smart contracts on the Zilliqa network. + +## Source Code + +The github repository can be found at +[https://github.com/Zilliqa/pyzil](https://github.com/Zilliqa/pyzil) + +## Releases + +All releases of gozilliqa can be found at +[https://github.com/Zilliqa/pyzil/releases](https://github.com/Zilliqa/pyzil/releases) + +## Installation + +```bash +pip install pyzil +``` + +or from the source code: + +```bash +git clone https://github.com/Zilliqa/pyzil +cd pyzil +pip install -r requirements.txt +python setup.py install +``` + +## Demo + +### Import pyzil + +```python +from pprint import pprint + +from pyzil.crypto import zilkey +from pyzil.zilliqa import chain +from pyzil.zilliqa.units import Zil, Qa +from pyzil.account import Account, BatchTransfer +``` + +### Set Active Chain, MainNet or TestNet + +```python +chain.set_active_chain(chain.MainNet) +chain.set_active_chain(chain.TestNet) +chain.set_active_chain(chain.IsolatedServer) + +SeedNode = chain.BlockChain( + "https://test-api.zilliqa.com/", + version=65537, network_id=1) +chain.set_active_chain(SeedNode) +``` + +### ZILs Transaction + +```python +# load account from wallet address +account = Account(address="95B27EC211F86748DD985E1424B4058E94AA5814") +balance = account.get_balance() +print("{}: {}".format(account, balance)) + +# load account from private key +# private key is required to send ZILs +account = Account(private_key="...") +balance2 = account.get_balance() +print("Account balance: {}".format(balance2)) + +# to_addr must be bech32 address or 20 bytes checksum address +to_addr = "zil1k5xzgp8xn87eshm3ktplqvs9nufav4pmcm52xx" +# send ZILs +txn_info = account.transfer(to_addr=to_addr, zils=2.718) +pprint(txn_info) +txn_id = txn_info["TranID"] + +# wait chain confirm, may takes 2-3 minutes on MainNet +txn_details = account.wait_txn_confirm(txn_id, timeout=300) +pprint(txn_details) +if txn_details and txn_details["receipt"]["success"]: + print("Txn success: {}".format(txn_id)) +else: + print("Txn failed: {}".format(txn_id)) +``` + +#### Send by Qa + +```python +amount = Qa(1234567890) +txn_info = account.transfer(to_addr=to_addr, zils=amount) +pprint(txn_info) +txn_id = txn_info["TranID"] +``` + +#### Wait for confirm + +```python +amount = Zil(3.14) +txn_details = account.transfer(to_addr, zils=amount, + confirm=True, timeout=300, sleep=20) +print("Transfer Result:") +pprint(txn_details) +pprint(account.last_params) +pprint(account.last_txn_info) +pprint(account.last_txn_details) + +``` + +#### Batch Transfer (Send zils to multi addresses) + +```python +batch = [BatchTransfer(to_addr=to_addr, zils=i) for i in range(10)] +pprint(batch) + +txn_info_list = account.transfer_batch(batch) +pprint(txn_info_list) + +for txn_info in txn_info_list: + if not txn_info: + print("Failed to create txn") + continue + + txn_details = account.wait_txn_confirm(txn_info["TranID"], timeout=300) + pprint(txn_details) + if txn_details and txn_details["receipt"]["success"]: + print("Txn success") + else: + print("Txn failed") + +balance2 = account.get_balance() +print("Account balance: {}".format(balance2)) +``` + +#### Send ZILs from nodes to wallet + +```python +nodes_keys = [ + "private_key1", + "private_key2", + "private_key3", +] + +to_address = "your wallet address" +to_account = Account(address=to_address) +print("Account balance: {}".format(to_account.get_balance())) + +min_gas = Qa(chain.active_chain.api.GetMinimumGasPrice()) + +txn_info_list = [] +for key in nodes_keys: + if not key: + continue + account = Account(private_key=key) + # send all zils + amount = account.get_balance_qa() - min_gas * 2 + if amount <= 0: + continue + + txn_info = account.transfer(to_addr=to_account.bech32_address, zils=amount, gas_price=min_gas) + pprint(txn_info) + + txn_info_list.append(txn_info) + +for txn_info in txn_info_list: + txn_details = chain.active_chain.wait_txn_confirm(txn_info["TranID"], timeout=300) + pprint(txn_details) + if txn_details and txn_details["receipt"]["success"]: + print("Txn success") + else: + print("Txn failed") + +print("Account balance: {}".format(to_account.get_balance())) + +``` + +#### Load account from mykey.txt + +```python +account = Account.from_mykey_txt("mykey.txt") +print(account) +``` + +#### Load account from keystore.json + +```python +account = Account.from_keystore("keystore.json") +print(account) + +``` + +See more examples in [tests/test_account.py](https://github.com/Zilliqa/pyzil/blob/main/pyzil/tests/test_account.py) + +#### bech32 address + +```python +# init from bech32 address +account1 = Account(address="zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf") +print("address: {}".format(account1.address)) +account2 = Account(address="1d19918a737306218b5cbb3241fcdcbd998c3a72") +print("bech32 address: {}".format(account2.bech32_address)) +assert account1 == account2 + +# tranfer to bech32 address +account = Account.from_mykey_txt("mykey.txt") +txn_info = account.transfer(to_addr="zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf", zils=0.01) +pprint(txn_info) +txn_id = txn_info["TranID"] + +``` + +### Zilliqa Low-level APIs + +```python +from pyzil.zilliqa.api import ZilliqaAPI, APIError + +api = ZilliqaAPI("https://api.zilliqa.com/") +print(api) + +info = api.GetBlockchainInfo() +pprint(info) + +sharding = api.GetShardingStructure() +pprint(sharding) + +ds_block = api.GetCurrentDSEpoch() +pprint(ds_block) + +tx_block = api.GetCurrentMiniEpoch() +pprint(tx_block) + +``` + +See more examples in [tests/test_lowlevel_api.py](https://github.com/Zilliqa/pyzil/blob/main/pyzil/tests/test_lowlevel_api.py) + +### Zilliqa Currencies Units + +```python +from pyzil.zilliqa.units import Zil, Qa + +zil = Zil(1000.123) +print(repr(zil)) +assert zil == Zil("1000.123") + +qa = Qa(1000123000000000) +print(repr(qa)) +assert qa == zil +assert zil == qa + +print(repr(zil + qa)) +print(repr(zil - 2)) +print(repr(zil * 2)) +print(repr(zil / 2.0)) + +print(repr(qa - 2)) +print(repr(qa * 2)) +print(repr(qa // 2)) +``` + +See more examples in [tests/test_units.py](https://github.com/Zilliqa/pyzil/blob/main/pyzil/tests/test_units.py) + +### Zilliqa Smart Contract + +```python +from pprint import pprint +from pyzil.zilliqa import chain +from pyzil.account import Account +from pyzil.contract import Contract + + +chain.set_active_chain(chain.TestNet) + +account = Account.from_keystore("zxcvbnm,", "zilliqa_keystore.json") +``` + +#### Get contract from address + +```python +address = "45dca9586598c8af78b191eaa28daf2b0a0b4f43" +contract = Contract.load_from_address(address, load_state=True) +print(contract) +print(contract.status) +pprint(contract.state) +contract.get_state(get_code=True, get_init=True) +pprint(contract.code) +pprint(contract.init) +pprint(contract.state) +``` + +#### New contract from code + +```python +code = open("HelloWorld.scilla").read() +contract = Contract.new_from_code(code) +print(contract) + +# set account before deploy +contract.account = account + +init = [ + Contract.value_dict("_scilla_version", "Uint32", "0"), + Contract.value_dict("owner", "ByStr20", account.address0x) +] +contract.deploy(init_params=init, timeout=300, sleep=10) +assert contract.status == Contract.Status.Deployed +``` + +#### Get contracts + +```python +owner_addr = account.address +contracts = Contract.get_contracts(owner_addr) +pprint(contracts) +contracts2 = account.get_contracts() +pprint(contracts2) + +assert contracts == contracts2 +``` + +#### Call contract + +```python +contract_addr = "45dca9586598c8af78b191eaa28daf2b0a0b4f43" +contract = Contract.load_from_address(contract_addr) + +contract.account = account + +resp = contract.call(method="getHello", params=[]) +pprint(resp) +pprint(contract.last_receipt) + +resp = contract.call(method="setHello", params=[Contract.value_dict("msg", "String", "hi contract.")]) +pprint(resp) +pprint(contract.last_receipt) + +resp = contract.call(method="getHello", params=[]) +pprint(resp) +pprint(contract.last_receipt) + +# call contract and deposit Zils to contract (default is 0) +resp = contract.call(method="getHello", params=[], amount=Qa(110)) +pprint(resp) +pprint(contract.last_receipt) + +``` + +See more examples in [test_contract.py](https://github.com/Zilliqa/pyzil/blob/main/pyzil/tests/test_contract.py) diff --git a/docs/developers/developer-toolings/sdks/dev-tools-sdks.md b/docs/developers/developer-toolings/sdks/dev-tools-sdks.md index 9669f07ce..4aedeedd2 100644 --- a/docs/developers/developer-toolings/sdks/dev-tools-sdks.md +++ b/docs/developers/developer-toolings/sdks/dev-tools-sdks.md @@ -31,17 +31,20 @@ yours is not listed here, please [create a PR](https://github.com/Zilliqa/dev-portal/pulls) on this repository. [zilliqa-js](https://github.com/Zilliqa/zilliqa-js), +[zilliqa-rs](https://github.com/Zilliqa/zilliqa-rs), +[pyzil](https://github.com/zilliqa/pyzil), [gozilliqa (formerly laksago)](https://github.com/Zilliqa/gozilliqa-sdk) and -[laksaj](https://github.com/FireStack-Lab/LaksaJ) are active SDKs maintained by +[laksaj](https://github.com/Zilliqa/zilliqa-developer/tree/main/products/laksaj) are active SDKs maintained by the Zilliqa core team but the zilliqa community members also actively maintain multiple SDKs. +The core team also maintains a fork of [ethers.js](https://github.com/Zilliqa/ethers.js) to keep it working with zilliqa EVM. + ## SDKs Maintained By the Community ### JavaScript/TypeScript - [zilliqa-js/viewblock](https://github.com/Ashlar/zilliqa-js-viewblock) -- [laksaj](https://github.com/FireStack-Lab/Laksa) - [moonlet-core](https://github.com/cryptolandtech/moonlet-core) - [mszbednarski/boost-zil](https://github.com/MszBednarski/boost-zil) @@ -57,6 +60,10 @@ multiple SDKs. - [zesame](https://github.com/OpenZesame/Zesame) +### Java + +- [laksaj](https://github.com/FireStack-Lab/Laksaj) + ### Ruby - [laksaruby](https://github.com/FireStack-Lab/LaksaRuby) diff --git a/docs/developers/developer-toolings/sdks/dev-tools-zilliqars.md b/docs/developers/developer-toolings/sdks/dev-tools-zilliqars.md new file mode 100644 index 000000000..e4d188b97 --- /dev/null +++ b/docs/developers/developer-toolings/sdks/dev-tools-zilliqars.md @@ -0,0 +1,342 @@ +--- +id: dev-tools-zilliqars +title: zilliqa-rs +keywords: + - zilliqars + - zilliqa-rs + - rust + - installation + - apis + - examples + - zrc2 wallet + - hello world + - zilliqa +description: Zilliqa Rust SDK +--- + +--- + +## Introduction + +[zilliqa-rs](https://github.com/Zilliqa/zilliqa-rs) is a Rust library that +allows you to interact with the Zilliqa network nodes - create wallets, deploy +contracts, and invoke transitions to interact with smart contracts. + +## Source Code + +The Github repository can be found at +[https://github.com/Zilliqa/zilliqa-rs](https://github.com/Zilliqa/zilliqa-rs) + +## Releases + +All releases of zilliqa-rs can be found at +[https://crates.io/crates/zilliqa-rs/versions](https://crates.io/crates/zilliqa-rs/versions) + +Release note can be found at +[https://github.com/Zilliqa/zilliqa-rs/releases](https://github.com/Zilliqa/zilliqa-rs/releases) + +## Installation + +```shell +cargo add zilliqa-rs +# you may also need to install the tokio. +cargo add tokio +``` + +## Methods and APIs + +The full documentation can be found in [docs.rs](https://docs.rs/crate/zilliqa-rs/latest) but the following table provides a description of each module of it and what +you may want to use it for. Visit the relevant link of each module to find the +detailed description about the methods and apis supported by that module. + +| Module | Description | +| ---------------------------------------------------------------------------------- | ------------------------------------------------------------- | +| [Core](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/core/index.html) | Shared data types and functionalities. | +| [Providers](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/providers/index.html) | Clients for interacting with zilliqa network. | +| [Signers](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/signers/index.html) | A unified interface for locally signing zilliqa transactions. | +| [Transaction](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/transaction/index.html) | Send transactions to zilliqa network | +| [Contract](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/contract/index.html) | Interact with scilla contracts | + +## Demo + +### Create a new Rust app + +The very first step is to create a binary rust project. + +```bash +cargo new zilliqa-rs-demo +``` + +then we need to add zilliqa-rs and tokio to the project's dependencies: + +```bash +cargo add zilliqa-rs tokio +``` + +### Call a simple JSON-RPC API + +#### Run the isolated-server using docker + +Here we run an isolated server using docker to use it as the target network, but you can use any zilliqa network you want. + +```bash +docker run -d -p 5555:5555 --name iso-server zilliqa-isolated-server:latest +``` + +#### Call GetBalance + +First, we need to create a provider. In the first line of the main, we create an HTTP provider. We use the URL of the isolated server we ran in the previous step. The chain ID of this network is 222. +Then we can call the `get_balance` function of the provider, passing the address of the account we want its balance. + +```rust +use std::error::Error; + +use zilliqa_rs::middlewares::Middleware; +use zilliqa_rs::providers::{Http, Provider}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let provider = Provider::::try_from("http://127.0.0.1:5555")?.with_chain_id(222); + let balance = provider + .get_balance("0x381f4008505e940ad7681ec3468a719060caf796") + .await; + + println!("{balance:?}"); + Ok(()) +} +``` + +### Sending transactions + +#### Provider with a signer + +To start sending transactions, we need to change the provider. The provider we had so far, didn't have a signer. That was because we didn't want to send transactions. But now we want, so we need to provide a signer for it: + +```rust + let wallet = "0xe53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89" + .parse::()?; + + let provider = Provider::::try_from("http://127.0.0.1:5555")? + .with_chain_id(222) + .with_signer(wallet.clone()); +``` + +Here, we create a new wallet from a private key and a provider with that signer. This provider now can be used to send transactions. + +Let's transfer some ZIL to a random address. First, we create a random wallet: + +```rust + let receiver = LocalWallet::create_random()?; +``` + +Then we need to compose a transaction. `TransactionBuilder` is used to build a transaction: + +```rust + let tx = TransactionBuilder::default() + .to_address(receiver.address.clone()) + .amount(parse_zil("2.0")?) + .gas_price(2000000000u128) + .gas_limit(50u64) + .build(); +``` + +Here we are going to transfer 2.0 ZIL to the receiver. Now we need to send the transaction: + +```rust + provider + .send_transaction_without_confirm::(tx) + .await?; +``` + +Now, let's check the balance: + +```rust + let balance = provider.get_balance(&receiver.address).await; + println!("{balance:?}"); +``` + +```bash +cargo run + +Ok(BalanceResponse { nonce: 138, balance: 899999994124734000000000 }) +Ok(BalanceResponse { nonce: 0, balance: 2000000000000 }) +``` + +#### Using pay function + +TransactionBuilder has an auxiliary function named `pay` to simplify payment transaction creation: + +```rust + let tx = TransactionBuilder::default().pay(amount, receiver.address.clone()).build(); +``` + +### Working with contracts + +#### Technical notes + +One of the coolest features of zilliqa-rs is generating rust code for your scilla contracts during build time. It means if your contract has a transition like `transfer`, you can call it the same as a normal rust function. If it has a parameter of an address, you must pass an address to this function. And this means all of the beauties of type-checking of rust come to working with scilla contracts. + +#### Generating rust code from scilla contracts + +We want to deploy a simple contract named `HelloWorld` and call its `setHello` transition. First, we need to create a folder next to `src`. Let's call it `contracts`. Then we move [HelloWorld.scilla](./tests/contracts/HelloWorld.scilla) to this folder. To let zilliqa-rs scilla-to-rust code generation know about the contracts path, we need to export `CONTRACTS_PATH` environment variable. The simplest way is to create `.cargo/config.toml` file and change it like: + +```toml +[env] +CONTRACTS_PATH = {value = "contracts", relative = true} +``` + +setting `relative` to `true` is crucial. Otherwise, your scilla contracts won't be transpiled to rust. Now, if you build the project using `cargo build`, your HelloWorld.scilla gets converted to rust under the hood. + +The generated code is something like this: + +```rust +impl HelloWorld { + pub async fn deploy(client: Arc , owner: ZilAddress) -> Result { + } + + pub fn address(&self) -> &ZilAddress { + } + + pub fn set_hello(&self , msg: String) -> RefMut<'_, transition_call::TransitionCall> { + } + + pub fn get_hello(&self ) -> RefMut<'_, transition_call::TransitionCall> { + } + + pub async fn welcome_msg(&self) -> Result { + } + + pub async fn owner(&self) -> Result { + } +} +``` + +- The `deploy` deploys the contract to the network. Because HelloWorld.scilla contract accepts an address, `owner`, as a deployment parameter, the `deploy` function needs that too. It means you can't deploy it without providing a valid address. +- The `address` function returns the address of the deployed contract. +- `set_hello` corresponds to `setHello` transition in the contract. Again, because the transition accepts a string parameter, the `set_hello` function does too. +- `get_hello` corresponds to the `getHello` transition. +- The contract has a field named, `welcome_msg`, to get the value of this field, the `welcome_msg` function should be called. +- The contract has an immutable state named, `owner` and we passed the value during deployment. To get the value of the owner, we need to call `owner` + +#### Contract Deployment + +Now it's time to deploy the contract: + +```rust + let contract = HelloWorld::deploy(provider.into(), wallet.address).await?; + println!("Contract address: {:?}", contract.address()); +``` + +The first parameter to `deploy` is the provider. The rest depends on the contract and how many immutable states it has. Here in HelloWorld.scilla we only have `owner`, so we just pass an address. It's type-safe, it means you can't pass an integer or even a raw string to `deploy` function as `owner`. + +Run the code: + +```bash +cargo run + +Ok(BalanceResponse { nonce: 138, balance: 899999994124734000000000 }) +Contract address: ZilAddress("0xC50C93831F6eAB4e4F011076dca6e887288cc872") +``` + +#### Getting contract states + +Our contract has `owner`, an immutable state, and `welcome_msg`, a mutable one. We can get these states by calling the corresponding functions: + +```rust + println!("Contract owner: {:?}", contract.owner().await?); + println!("Welcome msg: {}", contract.welcome_msg().await?); +``` + +#### Calling a transition + +Our contract has a `setHello` transition. Calling this transition is not harder than calling a rust function: + +```rust + contract.set_hello("Salaam".to_string()).call().await?; +``` + +Pay attention, here we need to call `call` too. That's because everything you do before `call` is like configuring the transition call. For example, you can set the amount of ZIL you want to pass to a transition before calling `call` function: + +```rust + contract.transfer(receiver).amount(parse_zil("0.1")).call().await?; +``` + +OK, now if you get and print `welcome_msg` it should have the new value: + +```rust + println!("Welcome msg: {}", contract.welcome_msg().await?); +``` + +The final main: + +```rust +use std::error::Error; + +use zilliqa_rs::{ + contract::HelloWorld, + core::CreateTransactionResponse, + middlewares::Middleware, + providers::{Http, Provider}, + signers::LocalWallet, + transaction::TransactionBuilder, + core::parse_zil, +}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + // Create the signer. + let wallet = "0xe53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89" + .parse::()?; + + // Create the provider with a signer. + let provider = Provider::::try_from("http://127.0.0.1:5555")? + .with_chain_id(222) + .with_signer(wallet.clone()); + + // Call a JSON-RPC endpoint. + let balance = provider + .get_balance("0x381f4008505e940ad7681ec3468a719060caf796") + .await; + + println!("{balance:?}"); + + // Send a transaction + let receiver = LocalWallet::create_random()?; + let tx = TransactionBuilder::default() + .to_address(receiver.address.clone()) + .amount(parse_zil("2.0")?) + .gas_price(2000000000u128) + .gas_limit(50u64) + .build(); + + provider + .send_transaction_without_confirm::(tx) + .await?; + + let balance = provider.get_balance(&receiver.address).await; + println!("{balance:?}"); + + // Deploy a contract + let contract = HelloWorld::deploy(provider.into(), wallet.address).await?; + println!("Contract address: {:?}", contract.address()); + + println!("Contract owner: {:?}", contract.owner().await?); + println!("Welcome msg: {}", contract.welcome_msg().await?); + + contract.set_hello("Salaam".to_string()).call().await?; + println!("Welcome msg: {}", contract.welcome_msg().await?); + Ok(()) +} +``` + +Let's run the code: + +```bash +cargo run + +Ok(BalanceResponse { nonce: 138, balance: 899999994124734000000000 }) +Contract address: ZilAddress("0xB84De4A67E1640D9259c502AAb6751678B593185") +Contract owner: ZilAddress("0xd90f2e538CE0Df89c8273CAd3b63ec44a3c4ed82") +Welcome msg: Hello world! +Welcome msg: Salaam +``` diff --git a/docs/developers/educational-resources/chainlink.md b/docs/developers/educational-resources/chainlink.md new file mode 100644 index 000000000..71ea82d7e --- /dev/null +++ b/docs/developers/educational-resources/chainlink.md @@ -0,0 +1,166 @@ +--- +id: chainlink +title: Zilliqa Chainlink Oracles +keywords: + - zilliqa + - development + - oracles + - chainlink + - solidity +description: Learn how to use Chainlink oracles on Zilliqa. +--- + +--- + +## How to use Chainlink Community Deployment price feeds with smart contracts on Zilliqa + +In this tutorial we will show you how to get the current ZIL/ USDT price from one of the price feed oracles operating as part of the [Chainlink Community Deployment](https://docs.chain.link/data-feeds/selecting-data-feeds/#chainlink-community-deployments) on the Zilliqa network. + +> **Note**: This tutorial is aimed towards developers as you will need to have some basic knowledge of smart contracts and programming to complete the steps below. + +This guide will explain how to accomplish the following: + +1. Configure Metamask to the Zilliqa testnet +2. Deploy a smart contract to the testnet. +3. Have our new smart contract get the current price of ZIL from the oracle contract + +> **Note**: Chainlink Community Deployment price feeds are not official integrations. Developers should understand risks associated with community deployments. [Learn More](https://docs.chain.link/data-feeds/selecting-data-feeds/#chainlink-community-deployments) + +## Connecting to Zilliqa Testnet + +First we need to add the Zilliqa testnet to our metamask: + +**Testnet network information:** + +- **Network Name**: Zilliqa Testnet +- **Chain ID**: 33101 +- **RPC URL**: [https://dev-api.zilliqa.com](https://dev-api.zilliqa.com) +- **Currency Symbol**: ZIL + +Using the information above, follow this guide: [How to add a custom network to Metamask](https://support.metamask.io/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC). + +## Deploy Smart Contract via Remix + +Remix is great as it is a zero-setup tool for working with smart contracts, allowing us to easily demonstrate the oracle contracts. But first - let’s inspect the contracts we’ll be working with! + +## FeedConsumer + +This is the contract you will deploy. This is just a minimal example to demonstrate how to consume these data feeds on Zilliqa. You can extend this to be a decentralised borrowing and lending protocol, a DEX, game, NFT minting contract - anything you can think of! + +If you look at the last function, it only returns the current answer, or price. You can see that it also is capable of returning other pieces of information such as timestamp data. Chainlink documentation encourages dAapp developers to verify the timestamp together with the price information to protect against stale data. While the oracles should be publishing fresh data every other minute, there can be unexpected downtime. + +This is a public view function, meaning that getting the price data has zero cost. You can add pricing data to your dApp with no extra charge to your team or your users. + +The constructor takes in an address as an argument. + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {PriceFeedInterface} from "./PriceFeedInterface.sol"; + +contract FeedConsumer { + PriceFeedInterface public immutable dataFeed; + + constructor(address feedAddress) { + dataFeed = PriceFeedInterface(feedAddress); + } + + function decimals() external view returns (uint8) { + return dataFeed.decimals(); + } + + function description() external view returns (string memory) { + return dataFeed.description(); + } + + function getLatestAnswer() public view returns (int) { + // prettier-ignore + ( + /* uint80 roundID */, + int answer, + /*uint startedAt*/, + /*uint timeStamp*/, + /*uint80 answeredInRound*/ + ) = dataFeed.latestRoundData(); + return answer; + } +} +``` + +Below is the interface of a contract that has already been deployed by the Zilliqa team. The oracle nodes publish data directly to the PriceFeed contract every other minute. There is one contract per asset. + +## Contract Addresses + +- **ZIL / USD (Testnet)**: `0x845f152725A2FF60cb2F5a0E024B5A749f7551C0` +- **USDT / USD (Testnet)**: `0xcb893BC5741672Ffc7A7992876253BE83f2c550D` +- **ZIL / USD (Mainnet)**: `0x8245E42c7eBF756E7A18A59Fd828159f29587a23` +- **USDT / USD (Mainnet)**: `0x54d10Ee86cd2C3258b23FDb78782F70e84966683` + +## PriceFeedInterface + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.6; + +interface PriceFeedInterface { + function latestRoundData() external view returns ( + uint80 roundId, + int256 answer, + uint256 startedAt, + uint256 updatedAt, + uint80 answeredInRound + ); + + function decimals() external view returns (uint8); + + function description() external view returns (string memory); +} + +``` + +## Deploying FeedConsumer + +Now that we have inspected the smart contracts, let’s deploy FeedConsumer. + +Go to [Remix IDE](https://remix.ethereum.org/). In the File Explorer tab, add both of the contracts under the contracts folder like this: + +Remix File Explorer + +The next thing to do is to compile our contracts with the built-in compiler. Do this for both contracts: + +Remix File Explorer + +Now we are ready to deploy the contract! Go to the Remix Deployer. Make sure you have selected Zilliqa Testnet in Metamask from the earlier step. + +There are three actions we need to take here: + +1. For “Environment”, select “Injected Provider”. If you are using Metamask, you should get a popup asking if you want to allow metamask to connect to Remix. Accept this. If successful, you should see “Custom (33101) network” right under the dropdown list. +2. Copy the EVM address from above that belongs to “ZIL / USD (Testnet)” and paste it in the input field that says “address feedAddress” +3. Click deploy and accept the transaction in your Metamask wallet. Normally it takes around one minute for deployment to complete. + +Remix File Explorer + +If all went well you should now see your FeedConsumer contract appear under “Deployed Contracts”: +Remix File Explorer + +If so, great! Let’s open this up and call a few of its functions: + +Let’s call the description function: after a couple of seconds you should see “ZIL / USD”. Do the same with decimals and getLatestAnswer() and you should see a similar result as below: +Remix File Explorer + +Remember since this is on-chain data, there are no floats / decimal numbers. So to get the nominal value in a more human readable format, you divide the answer with the decimal points as follows: + +`1791000 / 1e8 = 0.01791 USD for 1 ZIL.` + +There you have it! While this a simple demonstration, it should illuminate the wide range of possibilities that can be materialised on Zilliqa now that price feed oracles are active on the network. + +## Resources + +- [Chainlink Data Feeds](https://docs.chain.link/data-feeds) +- [Using Data Feeds](https://docs.chain.link/data-feeds/using-data-feeds) +- [Chainlink Whitepaper](https://chain.link/whitepaper) +- [Remix](https://remix.ethereum.org/) +- [Zilliqa public RPCs](https://chainlist.org/?search=zilliqa&testnets=true) +- [DefiLlama](https://defillama.com/) +- [Chainlink Community Deployments](https://docs.chain.link/data-feeds/selecting-data-feeds/#chainlink-community-deployments) diff --git a/docs/developers/getting-started/dev-started-env.md b/docs/developers/getting-started/dev-started-env.md index 4e6beedf9..8a5c8d15c 100644 --- a/docs/developers/getting-started/dev-started-env.md +++ b/docs/developers/getting-started/dev-started-env.md @@ -17,26 +17,53 @@ description: Zilliqa Development Environments - Testnet, Mainnet & Isolated Serv ## Zilliqa Mainnet -| | URL(s) | -| :--------------------- | :--------------------------------------------------- | -| **API URL** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | -| **EVM API** | N/A | -| **Block Explorer** | [**Link**](https://viewblock.io/zilliqa) | -| **WebSocket endpoint** | `wss://api-ws.zilliqa.com` | -| **Chain ID** | 1 | -| **EVM Chain ID** | N/A | +| | URL(s) | +| :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **API URL** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **EVM API** | [https://api.zilliqa.com/](https://api.zilliqa.com/) or [http://evm-api-filters.zilliqa.com/](http://evm-api-filters.zilliqa.com/) (if using eth_subscribe) | +| **Block Explorer** | [**Link**](https://viewblock.io/zilliqa) | +| **Devex explorer** | [**Link**](https://devex.zilliqa.com/) | +| **EVM Block Explorer** | [Ethereal EVM explorer](https://evmx.zilliqa.com/overview) | +| **WebSocket endpoint** | `wss://api-ws.zilliqa.com` | +| **Chain ID** | 1 | +| **EVM Chain ID** | 32769 | +| **VERSION** | v9.3.0 | +| **REWARD CONTROL CONTRACT ADDRESS** | 0xbce4ee32539760622a2fe2b7cc67b089aa11b63a | +| **PERSISTENCE BUCKET** | [**Link**](https://console.cloud.google.com/storage/browser/zq1-mainnet-persistence) | ## Developer Testnet -| | URL(s) | -| :--------------------- | :------------------------------------------------------------------- | -| **API URL** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | -| **EVM URL** | [https://evm-api-dev.zilliqa.com/](https://evm-api-dev.zilliqa.com/) | -| **Faucet** | [**Link**](https://dev-wallet.zilliqa.com/home?network=testnet) | -| **Block Explorer** | [**Link**](https://viewblock.io/zilliqa?network=testnet) | -| **WebSocket endpoint** | `wss://dev-ws.zilliqa.com` | -| **Chain ID** | 333 | -| **EVM Chain ID** | 33101 | +| | URL(s) | +| :---------------------------------- | :----------------------------------------------------------------------------------- | +| **API URL** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **EVM URL** | [https://evm-api-dev.zilliqa.com/](https://evm-api-dev.zilliqa.com/) | +| **Faucet** | [**Link**](https://dev-wallet.zilliqa.com/home?network=testnet) | +| **Block Explorer** | [**Link**](https://viewblock.io/zilliqa?network=testnet) | +| **EVM Block Explorer** | [**Link**](https://otterscan.testnet.zilliqa.com) | +| **WebSocket endpoint** | `wss://dev-ws.zilliqa.com` | +| **Chain ID** | 333 | +| **EVM Chain ID** | 33101 | +| **VERSION** | v9.3.0rc19 | +| **REWARD CONTROL CONTRACT ADDRESS** | 0x489F0Ec426DF9343A5F6D7B170B0Bca08e6a81CE | +| **PERSISTENCE BUCKET** | [**Link**](https://console.cloud.google.com/storage/browser/zq1-testnet-persistence) | +| **PERSISTENCE HTTPS ENDPOINT** | `https://persistence.testnet.zq1.dev` | + +## Developer Devnet + +| | URL(s) | +| :------------------------------------- | :------------------------------------------------------------------------------------- | +| **API URL** | [https://api.devnet.zilliqa.com/](https://api.devnet.zilliqa.com/) | +| **EVM URL** | [https://api.devnet.zilliqa.com/](https://api.devnet.zilliqa.com/) | +| **Faucet** | [**Link**](https://faucet.devnet.zilliqa.com) | +| **Block Explorer** | [**Link**](https://devex.devnet.zilliqa.com) | +| **EVM Block Explorer** | [**Link**](https://otterscan.devnet.zilliqa.com) | +| **WebSocket endpoint** | `wss://wss.devnet.zilliqa.com` | +| **Chain ID** | 617 | +| **VERSION** | v9.3.0rc19 | +| **EVM Chain ID** | 33385 | +| **REWARD CONTROL CONTRACT ADDRESS** | 0xE2d79664c088Aec94209F0E657642f8569FC12D8 | +| **PERSISTENCE BUCKET (S3 compatible)** | `s3://zq1-devnet-persistence` (use: `AWS_ENDPOINT_URL=https://storage.googleapis.com`) | +| **PERSISTENCE FOLDER NAME** | devnet-pub-v930 | ## Isolated Server diff --git a/docs/developers/guides/developing-with-hardhat.md b/docs/developers/guides/developing-with-hardhat.md new file mode 100644 index 000000000..2fb187df1 --- /dev/null +++ b/docs/developers/guides/developing-with-hardhat.md @@ -0,0 +1,223 @@ +--- +id: dev-hardhat +title: Developing with Hardhat +keywords: + - zilliqa + - scilla + - development + - hardhat + - smart contract +description: Getting started with Scilla and hardhat +--- + +--- + + + +**Note that the Scilla hardhat plugin is currently experimental; use at your own risk** + +Developing, testing and deploying contracts for both Scilla and EVM is +conveniently done with [hardhat](https://hardhat.org). There is a +(currently experimental) hardhat plugin allowing you to test Scilla +contracts. + +To get this working: + +### 1. Install the scilla tools + +```sh +git clone https://github.com/Zilliqa/scilla.git +``` + +And follow the instructions in the `INSTALL.md`. This should leave you with the +`scilla-checker` and `scilla-fmt` binaries in your path. + +### 2. Initialise a new hardhat project + +```sh +mkdir contract_dev +cd contract_dev +yarn init +yarn add --dev hardhat +npx hardhat +``` + +Select `create a new typescript project`. + +Now: + +```sh +yarn add git+https://github.com/zilliqa/hardhat-scilla-plugin +``` + +and add the following to `hardhat.config.js`: + +```sh +import "hardhat-scilla-plugin" +``` + +Now you can deploy a contract by adding the source code as `contracts/Hello.scilla`: + +```scilla +scilla_version 0 + +library MetaSayHello + +type Error = +| NotOwner + +let make_error = + fun (result: Error) => + let result_code = + match result with + | NotOwner => Int32 -1 + end + in + { _exception: "Error"; code: result_code } + + +contract SayHello( + init_contract_owner: ByStr20, + init_string : String + ) + +field message : String = init_string +field owner : ByStr20 = init_contract_owner + +procedure Throw(error: Error) + e = make_error error; + throw e +end + +procedure AssertOwner(address: ByStr20) + my_owner <- owner; + is_owner = builtin eq my_owner address; + match is_owner with + | True => (* Yep *) + | False => + err = NotOwner; + Throw err + end +end + +transition SetMessage(in_message: String) + AssertOwner _sender; + message := in_message +end + +transition SayHello() + a_msg <- message; + e = { _eventname: "Hello"; + message: a_msg + }; + event e +end +``` + +and a deployment script, `scripts/deploy.ts`: + +```typescript +import { expect } from 'chai'; +import { ScillaContract, initZilliqa } from 'hardhat-scilla-plugin'; +import hre, { ethers } from 'hardhat'; + +describe("Hello", function () { + const privateKeys = [ "" ]; + const network_url = ""; + const chain_id = ; + + before("set up the network", async function () { + initZilliqa(network_url, chain_id, privateKeys); + + let contract: ScillaContract = await hre.deployScilla("SayHello", "5c2d46955de58033638f552bfd1bca408e6fc8ac", "TestA"); + console.log(`Contract ${JSON.stringify(contract)}`) + }); + + it("should do nothing", async function() { + }); +}); +``` + +Run your script: + +```sh +npx hardhat scripts/deploy.ts +``` + +It's often useful to run: + +```sh +mitmweb --reverse:https://dev-api.zilliqa.com -p 8082 +``` + +So you can monitor what calls are being made. You can generate keys for testing using `zli` (but one day there will be a plugin function to allow you to do this). + +There are examples of this in [zilliqa-developer](https://github.com/zilliqa/zilliqa-developer) and in our acceptance test suite in our [acceptance tests](https://github.com/Zilliqa/Zilliqa/tree/master/tests/EvmAcceptanceTests). + +Here is a sample `networks` stanza for your `hardhat.config.ts`; the keys configured for isolated server and other environments are the default test private keys, which are loaded with large balances at network startup: + +```json + networks: { + isolated_server: { + url: "http://localhost:5555/", + websocketUrl: "ws://localhost:5555/", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "410b0e0a86625a10c554f8248a77c7198917bd9135c15bb28922684826bb9f14" + ], + chainId: 0x8001, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false + }, + ganache: { + url: "http://localhost:7545", + websocketUrl: "ws://localhost:7545", + chainId: 1337, + web3ClientVersion: "Ganache/v7.4.1/EthereumJS TestRPC/v7.4.1/ethereum-js", + protocolVersion: 0x3f, + accounts: [ + // memonic: guard same cactus near figure photo remove letter target alien initial remove + "67545ce31f5ca86719cf3743730435768515ebf014f84811463edcf7dcfaf91e", + "9be4f8840833f64d4881027f4a53961d75bc649ac4801b33f746487ca8873f14", + "32a75b674cc41405c914de1fe7b031b832dfd9203e1a287d09122bab689519e3", + "dd8ce58f8cecd59fde7000fff9944908e89364b2ef36921c35725957617ddd32" + ], + zilliqaNetwork: false, + miningState: true + }, + public_testnet: { + url: "https://evm-api-dev.zilliqa.com", + websocketUrl: "https://evm-api-dev.zilliqa.com", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "db11cfa086b92497c8ed5a4cc6edb3a5bfe3a640c43ffb9fc6aa0873c56f2ee3", + "410b0e0a86625a10c554f8248a77c7198917bd9135c15bb28922684826bb9f14", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45" + ], + chainId: 33101, + zilliqaNetwork: true, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + miningState: false + }, + localdev: { + url: "http://localhost:5301", + websocketUrl: "ws://localhost:5301", + accounts: [ + "d96e9eb5b782a80ea153c937fa83e5948485fbfc8b7e7c069d7b914dbc350aba", + "589417286a3213dceb37f8f89bd164c3505a4cec9200c61f7c6db13a30a71b45", + "e7f59a4beb997a02a13e0d5e025b39a6f0adc64d37bb1e6a849a4863b4680411", + "410b0e0a86625a10c554f8248a77c7198917bd9135c15bb28922684826bb9f14" + ], + chainId: 0x8001, + web3ClientVersion: "Zilliqa/v8.2", + protocolVersion: 0x41, + zilliqaNetwork: true, + miningState: false + } + }, +``` diff --git a/docs/developers/other-developer-information/dev-miners-rehearsal-v93-join.md b/docs/developers/other-developer-information/dev-miners-rehearsal-v93-join.md new file mode 100644 index 000000000..684427712 --- /dev/null +++ b/docs/developers/other-developer-information/dev-miners-rehearsal-v93-join.md @@ -0,0 +1,93 @@ +--- +id: dev-miners-rehearsal-v93-join +title: Miners Rehearsal network v9.3 joinin procedure +keywords: + - miners + - v9.3.0 + - rehearsal + - join +description: How to join the v9.3.0 miners' rehearsal network +--- + +--- + +## Introduction + +This is page collects the steps to configure a `Zilclient` mining node and join the `v930-miners` rehearsal network deployed to test the mining facility of the desharded Zilliqa version 1 network. + +The procedure to deploy a mining node for the Zilliqa Mainnet is available at the following [link](https://dev.zilliqa.com/miners/mining/mining-zilclient/). + +## Requirements + +The [**Zilliqa Client**](https://github.com/Zilliqa/zilliqa) is officially supported on Ubuntu 22.04 OS. + +The **minimum** requirements for running the **Zilliqa Client** are: + +- Ubuntu Linux 22.04 +- Recent dual-core processor @ 2.2 GHZ. Examples: Intel Xeon (Skylake) +- 8GB DRR3 RAM or higher +- Public static IP address +- 300GB Solid State Drive +- 100MB/s upload and download bandwidth +- Docker version 24+ + +## Joining steps + +After you have your Ubuntu Linux up and running with Docker installed (you can install docker following the steps [here](https://docs.docker.com/install/linux/docker-ce/ubuntu/)), you can now bootstrap your mining node using the below procedure. + +### 1. Create a working directory for your Zilclient node + +```bash +mkdir v930-miners-join +``` + +### 2. Get the joining configuration + +Get the joining configuration for our mining rehearsal network and extract it in the previous created directory. + +```bash +cd v930-miners-join && \ +curl -L https://v930-join.miners-rehearsal.zq1.network/configuration.tar.gz | tar xzf - +``` + +### 3. Find out your current IP address in the command prompt and record it down + +```bash +curl ipconfig.io +``` + +!!! note + + NAT IP is not supported. Kindly use the public IP address during the + launch step. + +### 4. Run the shell script in your command prompt to launch your docker image + +```bash +./launch_docker.sh +``` + +### 5. You will be prompted to enter some information as shown below: + + - `Assign a name to your container (default: zilliqa):`
[Press + **Enter** to skip if using default] + + - `Enter your IP address (*.*.*.*):`
[Key in your IP address as + found in step 5] + + - `Enter your listening port (default: 33133):`
[Press **Enter** to + skip if using default] + +### 6. Monitoring Progress + +You are now a miner in the Zilliqa Mainnet. You can monitor your progress on your CPU node by using: + +```shell +tail -f zilliqa.log +``` + +### 7. Stop the mining node + +```shell +sudo docker stop +``` diff --git a/docs/developers/transaction-lifecycle/dev-txn-broadcasting.md b/docs/developers/transaction-lifecycle/dev-txn-broadcasting.md index e63405f58..35747e3f8 100644 --- a/docs/developers/transaction-lifecycle/dev-txn-broadcasting.md +++ b/docs/developers/transaction-lifecycle/dev-txn-broadcasting.md @@ -113,16 +113,16 @@ Example of creating a **non-contract** transaction object: === "Java" ```java - package com.firestack.example; - - import com.firestack.laksaj.account.Wallet; - import com.firestack.laksaj.contract.Contract; - import com.firestack.laksaj.contract.ContractFactory; - import com.firestack.laksaj.contract.DeployParams; - import com.firestack.laksaj.contract.Value; - import com.firestack.laksaj.jsonrpc.HttpProvider; - import com.firestack.laksaj.transaction.Transaction; - import com.firestack.laksaj.transaction.TransactionFactory; + package com.zilliqa.example; + + import com.zilliqa.laksaj.account.Wallet; + import com.zilliqa.laksaj.contract.Contract; + import com.zilliqa.laksaj.contract.ContractFactory; + import com.zilliqa.laksaj.contract.DeployParams; + import com.zilliqa.laksaj.contract.Value; + import com.zilliqa.laksaj.jsonrpc.HttpProvider; + import com.zilliqa.laksaj.transaction.Transaction; + import com.zilliqa.laksaj.transaction.TransactionFactory; import javafx.util.Pair; import java.io.IOException; @@ -130,7 +130,7 @@ Example of creating a **non-contract** transaction object: import java.util.Arrays; import java.util.List; - import static com.firestack.laksaj.account.Wallet.pack; + import static com.zilliqa.laksaj.account.Wallet.pack; public class TransactionOperation { public static void main(String[] args) throws IOException, NoSuchAlgorithmException { @@ -292,16 +292,16 @@ Example of creating a **contract** transaction object: === "Java" ```java - package com.firestack.example; - - import com.firestack.laksaj.account.Wallet; - import com.firestack.laksaj.contract.Contract; - import com.firestack.laksaj.contract.ContractFactory; - import com.firestack.laksaj.contract.DeployParams; - import com.firestack.laksaj.contract.Value; - import com.firestack.laksaj.jsonrpc.HttpProvider; - import com.firestack.laksaj.transaction.Transaction; - import com.firestack.laksaj.transaction.TransactionFactory; + package com.zilliqa.example; + + import com.zilliqa.laksaj.account.Wallet; + import com.zilliqa.laksaj.contract.Contract; + import com.zilliqa.laksaj.contract.ContractFactory; + import com.zilliqa.laksaj.contract.DeployParams; + import com.zilliqa.laksaj.contract.Value; + import com.zilliqa.laksaj.jsonrpc.HttpProvider; + import com.zilliqa.laksaj.transaction.Transaction; + import com.zilliqa.laksaj.transaction.TransactionFactory; import javafx.util.Pair; import java.io.IOException; @@ -309,7 +309,7 @@ Example of creating a **contract** transaction object: import java.util.Arrays; import java.util.List; - import static com.firestack.laksaj.account.Wallet.pack; + import static com.zilliqa.laksaj.account.Wallet.pack; public class TransactionOperation { public static void main(String[] args) throws IOException, NoSuchAlgorithmException { diff --git a/docs/developers/transaction-lifecycle/dev-txn-signing.md b/docs/developers/transaction-lifecycle/dev-txn-signing.md index 1792eff85..ef5f6095e 100644 --- a/docs/developers/transaction-lifecycle/dev-txn-signing.md +++ b/docs/developers/transaction-lifecycle/dev-txn-signing.md @@ -43,9 +43,9 @@ Example of providing a private key: === "Java" ```java - package com.firestack.example; + package com.zilliqa.example; - import com.firestack.laksaj.account.Wallet; + import com.zilliqa.laksaj.account.Wallet; public class TransactionOperation { public static void main(String[] args) throws IOException, NoSuchAlgorithmException { diff --git a/docs/developers/upgrade-notices/dev-upgrade-v8.md b/docs/developers/upgrade-notices/dev-upgrade-v8.md deleted file mode 100644 index 08724b268..000000000 --- a/docs/developers/upgrade-notices/dev-upgrade-v8.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -id: dev-upgrade-v8 -title: v8.0.0 Upgrade Notice -keywords: - - upgrade - - v8.0.0 - - zilliqa -description: Zilliqa v8.0.0 upgrade notice ---- - ---- - -Zilliqa version `8.0.0` consists of numerous significant changes. This page -summarizes some of the major changes that developers and exchanges will need to -take note of. The full release note of `v8.0.0` is available -[here](https://github.com/Zilliqa/Zilliqa/releases/tag/v8.0.0). - -## Upgrade Duration - -| | Date/Time | -| ------------- | ------------------------------- | -| Upgrade start | Tuesday 11th May 2021 05:00 UTC | -| Upgrade end | Tuesday 11th May 2021 11:00 UTC | - -## Core Protocol Updates - -### 1) Faster block production rate - -We have made some changes to our pBFT (Practical Byzantine Fault Tolerance) -consensus and transaction dispatching and processing implementation. This allows -for faster block production rate. - -| | Before `v8.0.0` | `v8.0.0` | -| ------------------------------------ | --------------- | --------------- | -| Peak final block production time | 40 seconds | 29 seconds | -| Expected Tx block count per 24 hours | ~1600 Tx blocks | ~2200 Tx blocks | - -References: - -- [`ZIP-14 - Revised pBFT Consensus`](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-14.md) -- [`Revised pBFT consensus with txn processing implementation`](https://github.com/Zilliqa/Zilliqa/pull/2216) - -### 2) Block reward adjustment - -Faster block production rate will result in an increase in inflation rate. -Zilliqa `v8.0.0` will not include any adjustment to the current inflation rate. -Instead, in order to preserve the current inflation rate, the reward allocated -per DS epoch will be decreased from 275,000 $ZIL per DS block to 176,000 $ZIL -per DS block. We will update the `COINBASE_REWARD_PER_DS`as follows: - -| | Before `v8.0.0` | `v8.0.0` | -| ------------------------ | ------------------ | ------------------ | -| `COINBASE_REWARD_PER_DS` | 275000000000000000 | 176000000000000000 | - -Please note that this change is considered an interim change. If the block -production rate deviates from the expected value significantly, a new governance -proposal can be introduced to adjust the value in subsequent Mainnet upgrades. - -### 3) Payment transaction gas unit increase from 1 to 50 - -As per [ZIP-18](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-18.md), -which passed Zilliqa governance vote, the gas unit of payment transaction will -be adjusted from 1 to 50 gas unit. We will update `NORMAL_TRAN_GAS` as follows: - -| | Before `v8.0.0` | `v8.0.0` | -| ----------------- | --------------- | -------- | -| `NORMAL_TRAN_GAS` | 1 | 50 | - -When handling payment transactions, developers and exchanges will need to call -`CreateTransaction` with `gasLimit` set to at least `50` instead of `1` from -`v8.0.0` onwards. As a result of this change, the minimal cost of a payment -transaction fee will increase from 0.002 $ZIL to 0.1 $ZIL assuming the lowest -gas price. - -!!! important - - 1. Smart contract transaction gas unit remains unchanged. - 2. Developers and exchanges may proceed to make the `gasLimit` change above even before `v8.0.0` is deployed. Until the deployment, the payment transaction fee will continue to be 0.002 $ZIL, with or without the `gasLimit` change. - -### 4) Deprecation and removal of `GetPendingTxn` and `GetPendingTxns` API - -Since `v7.0.0`, we have released a new API -[`GetTransactionStatus`](https://dev.zilliqa.com/api/transaction-related-methods/api-transaction-get-transaction-status) -which tracks transaction status during the transactional lifetime. -`GetPendingTxn` and `GetPendingTxns` will be removed with effect from `v8.0.0`. - -### 5) Non-interactive mode support for seed nodes - -Seed node operators will now have the option of invoking `launch.sh` in -non-interactive mode. Operators will need to configure the following environment -variables when using non-interactive mode. - -```sh -NONINTERACTIVE="true" -IP_ADDRESS="x.y.z.a" -IP_WHITELISTING="N" #optional -``` - -!!! note - - If `IP_WHITELISTING` is set to `N`, the script assumes the existence of the whitelisted keypair file called "whitelistkey.txt", and further assumes "mykey.txt" as the whitelisted key if "whitelistkey.txt" does not exist. - -### 6) Bug fixes around mining node joining - -We have fixed a few mining node joining issues. Special thanks to -[K1-pool](https://k1pool.com/pool/zil) for reporting a few issues to us. - -## Scilla Updates - -### 1) Scilla disambiguation fix - -!!! warning - - To support Scilla features such as remote state read and external library, user-defined ADTs will need to be non-ambiguous starting from `v8.0.0`. This means - that when calling a contract transition that contains a user-defined ADT, the user-defined ADT will need to be prefixed with the contract address that defines - the type. - -For instance, let's assume a user-defined ADT named `SSNCycleInfo` is defined in -a contract deployed at address `0xb55cc7894536ac015350790550b0c03f49eb8ebd`. -When using the user-defined ADT, it will need to be prefixed with the contract -address (i.e., `0xb55cc7894536ac015350790550b0c03f49eb8ebd.SSNCycleInfo`). If -your contract transition has user-defined ADTs, you will need to modify the way -you call the transition by appending the contract address prefix. - -### 2) Introduction of new Scilla feature - remote state read - -With effect from `v8.0.0`, a Scilla contract will be able to read the state of -another contract by using the remote state read feature. - -### 3) Smart contract parameters change - -To support larger dApps and the need for more contract calls, we will adjust the -following constant values - -| | Before `v8.0.0` | `v8.0.0` | -| ------------------------ | --------------- | -------- | -| `MAX_CONTRACT_EDGES` | 10 | 20 | -| `MAX_CODE_SIZE_IN_BYTES` | 51200 | 76800 | - -## Staking Updates - -As part of the `v8.0.0` rollout, the current Staking Phase 1.0 feature will be -updated to the new Staking Phase 1.1. - -### 1) Staking contract migration - -Due to the Scilla disambiguation fix, we will be freezing the existing staking -contract shortly before the `v8.0.0` network upgrade commences. The contract -will be frozen permanently, and the contract states and funds will be migrated -to a new contract. - -!!! important - - 1. Migration to the new contract is expected to take up to 7 days - 2. During the migration, the existing contract will be paused and no staking activities such as stake withdrawal can be conducted - 3. Rewards for staking will be retroactively distributed after the staking contract migration - 4. For wallets, explorers and exchanges, please note that the contract address will be changed and you will need to update it on your end. We will provide the address once we have deployed the Mainnet contract - 5. We will make Staking Phase 1.1 available on the public testnet shortly to help you prepare for the staking contract migration - 6. For community members, please kindly wait for your wallet provider to update to the new staking contract if you encounter any staking issue - -### 2) Switching of staking wallet - -The new staking contract will also have a new `swap delegate` feature which -allows a delegator to swap his wallet address with another address without -incurring any unbonding period or rewards penalty. - -### 3) Staking parameter adjustments - -Due to faster block production rate after `v8.0.0`, we will be adjusting the -following parameters to bring rewarding and unbonding timing back to parity. - -| Parameters | New value | -| ----------------- | ------------------------------ | -| Rewards per cycle | 1,548,800 $ZIL | -| Reward cycle | 2,200 final blocks (~1 day) | -| Unbonding period | 30,800 Final blocks (~2 weeks) | - -Please note that this change is considered an interim change. If the block -production rate deviates from the expected value significantly, a new governance -proposal can be introduced to adjust the staking parameter accordingly. - -### 4) $gZIL ending period - -`$gZIL` minting period has been set to end on block `1483713`. This value cannot -be changed. With the changes to block time in `v8.0.0`, the ending wall clock -may vary as a result. diff --git a/docs/faq/faq-introduction.md b/docs/faq/faq-introduction.md new file mode 100644 index 000000000..59dd41019 --- /dev/null +++ b/docs/faq/faq-introduction.md @@ -0,0 +1,133 @@ +--- +id: faq-introduction +title: Frequently Asked Questions +keywords: + - FAQ + - Questions + - EVM +description: Frequently asked questions +--- + +## Frequently asked questions + + + +#### What is the relationship between EVM ZIL and Zilliqa ZIL? + +They are the same, though EVM ZIL are scaled to accomodate the differing precisions of EVM and Zilliqa ZIL (18 vs 12 decimal places). + +#### Does this mean that transfers will produce dust? + +No. The internal representation of value is in ZIL, not EVM units, but dust may not transfer as you were expecting it to. + +#### Can I use the same address for EVM and ZIL API (eg. for Metamask and ZilPay/Torch)? + +In practice, no. The way your address is chosen is that: + +1. You pick a private key +2. You derive a public key from that. +3. Derive an address from the public key, usually by hashing. + +Zilliqa and Ethereum have different ways of performing the second +step, so the Zilliqa address derived from a given private key is +different from the Ethereum address for that key. + +If you were to want a single address for both EVM and ZIL, you would +need to know eg. the ethereum private key for the ZIL address you had +just worked out; this would involve deriving the private key from a +(public) ZIL address, which can't practically be done, and so you +can't have the same address for EVM and ZIL APIs. + +#### Can you work around this? + +If there is enough interest, it might be possible to work around this +by allowing EVM transactions to have Schnorr signatures (so that you +could submit them via the ZIL API) and vice versa, but this would need +explicit support in DApps, and we judged the extra complexity surface +probably wasn't worth it for now. + +#### Will I be able to restore a Zilliqa account in Metamask using my private key or seed phrase? + +No. You can only restore Zilliqa accounts in a Zilliqa wallet (eg. ZilPay or Torch) or EVM accounts in an EVM wallet (like Metamask). + +#### Will I be able to store ZRC fungible tokens in Metamask? + +Not directly; you will be able to store them via our ERC-20-to-ZRC-2 gateway contract, which will let you see your ZRC-2 tokens as though they were ERC-20 tokens. + +The source code will be available in [zilliqa-developer](https://github.com/zilliqa/zilliqa-developer) shortly after launch and we will publish a directory of deployed contracts. + +#### Will I be able to store ZRC non-fungible tokens in Metamask? + +Not initially; we hope to be able to provide this in a future release, though you could also write a gateway contract (similar to our ZRC-2/ERC-20 gateway) yourself. + +#### Will I be able to use my Zil on Dex like Uniwap, Sushiswap to trade? + +If and when those DEXes deploy to Zilliqa, yes. + +#### Will Devs be able to deploy Uniswap/Sushiswap/1inch on Zilliqa? + +Developers should be able to deploy your contracts to EVM on Zilliqa just like any other EVM-compatible chain. + +#### Will I be able to sell my NFTs on NFT marketplace like Opensea/Blur? + +Not until they add support for the Zilliqa chain (and even then, you will either need an ERC-721 gateway, or to have EVM NFTs on Zilliqa) + +#### Will I be able to buy a NFT using Zil on Opensea/Blur? + +Not until they add support for Zilliqa. + +#### Will I be able to use stake.zilliqa.com with Metamask & stake my Zil? + +Not directly; please let us know if this is functionality you'd like (or you can write a gateway contract yourself, of course). In the meantime, you'll need to transfer your ZIL to a Zilliqa wallet and stake them from there. + +#### Will I be able to connect Metamask with Zilswap & buy tokens listed on Zilswap with native Zil? + +Not until Zilswap supports EVM wallets. + +#### Which Dex can I use to connect with Metamask & use my Native Zil to trade? + +This is a new release, so there aren't currently any EVM dexes that we know of. We'll update this answer when some have tested and deployed. + +#### Will NFTs created under ZRC1 have EVM interoperability or this apply only to ZRC6? + +This is not yet decided; we'd hope to support both standards. Please +get in touch if you have a particular need for ZRC1 support (or, +again, it should be possible to write this yourself using our interop +facilities if you really need it). + +#### What happens if I send ZIL via Torch or ZilPay to my EVM address, or Metamask to my ZIL address? + +These transfers should execute normally, and your ZIL will arrive safely in the "other" wallet. + +#### What happens if I send ZIL to a random address via Metamask? + +They will be lost, just as they are today - in fact, they'll turn up just fine at the address you sent them to, but since no-one has the private key for that address, it won't be possible to do anything with them once they get there. + +#### How about ZRC-2, ERC-20 and other contract-wrapped tokens? + +This is trickier. Suppose you send some ZRC-2 tokens (such as `XCAD` or `ZWAP`) to your EVM address. They'll arrive just fine, but you will now want to send them elsewhere. + +In order to do so, you will need to call the ZRC-2 contract with `_sender` equal to your EVM address. But, in order to make that call you need to submit a Zilliqa API transaction from your EVM address, which we've just agreed you can't do. So your funds will be stuck. + +This is not optimal, and you can get out of it using [interwork](../zilevm/protocol/protocol-interwork.md) ; create a solidity contract which calls the Scilla contract using the `call scilla contract with _sender unchanged` precompile. You can now send a Scilla call from an EVM transaction, and there is a contract available in the +[zilliqa-developer](https://github.com/zilliqa/zilliqa-developer) repository which does this by building an ERC-20 facade for ZRC-2 assets; we'll deploy this against the common ZRC-2s and publish a list once EVM is live on mainnet. + +This will recover your funds, but might be quite tricky to operate for arbitrary contracts; our roadmap contains a more generic mechanism for arbitrary contracts (though you will still need to know what transition/calldata you need to call). + +If you didn't understand the above, please contact your the dApp maintainer, or your developers, who will hopefully be able to help you. + +#### What about NFTs? + +Please don't transfer your Zilliqa NFTs to EVM addresses for now! They are (probably) rescuable using the interwork protocol right now, and we will address this in our next release, but it's best not to test that. + +#### How about transferring ERC-20s and other tokens to ZIL API address? + +Please don't do that either! Rescuing trapped tokens in EVM contracts is significantly harder than for Scilla contracts, because Scilla contracts have self-describing storage encoding and source is always available. + +Whilst the interop mechanism can be used to transfer these back to EVM addresses, it is substantially harder to write the code to do so, and probably impossible unless you have the source code (or at least the interface) of the contract in question. Again, the maintainers of the dApp may be able to help, or if you are sophisticated, you may be able to do this yourself. + +We will try to provide assistance with the most common cases as they arise, but Zilliqa doesn't have the resources to support every use case. + +#### How do I get started with development using hardhat? + +See our [handy guide](../developers/guides/developing-with-hardhat.md) . diff --git a/docs/miners/mining/mining-zilclient.md b/docs/miners/mining/mining-zilclient.md index 47f54ffbe..edb764d88 100644 --- a/docs/miners/mining/mining-zilclient.md +++ b/docs/miners/mining/mining-zilclient.md @@ -179,3 +179,43 @@ The **minimum** requirements for running the **Zilliqa Client** are: ```shell sudo docker stop ``` + +## Header hash calculation + +The PoW header hash by taking the SHA-256 sum of the concatenation of: + +* `rand1` +* `rand2` +* `peer` +* `pubKey` +* `lookupId` +* `gasPrice` +* `extraData` - Up to 32 bytes of arbitrary data. + +Mining clients or proxies may wish to calculate this for themselves if they wish to manipulate the resulting hash by changing the value of `extraData`. + +## External Mining APIs + +### Remote mining + +When the Zilliqa node wants to perform PoW, it will make a call to the `zil_requestWork` method, with a payload of: `[pubKey, headerHash, blockNum, boundary, powTime, signature]`. +The node will poll for the PoW solution by calling the `zil_checkWorkStatus` method, with a payload of: `[pubKey, headerHash, boundary, signature]`. +The response should be in the format: `[isWorkDone, nonce, headerHash, mixHash]`. + +If you need to customize the header hash, you can enable `REMOTE_MINE_EXTRA_DATA` in `constants.xml`. +In this case, the node will instead make a call to the `zil_requestWorkWithHeaderHashParams` method, with a payload of: `[pubKey, rand1, rand2, peer, lookupId, gasPrice, blockNum, boundary, powTime, signature]`. +The node will poll for the PoW solution by calling the `zil_checkWorkStatusWithExtraData` method, with a payload of: `[pubKey, headerHash, boundary, signature]`. +The `headerHash` in this request should be ignored. +The response should be in the format: `[isWorkDone, nonce, extraData, mixHash]`. + +### Get work server mining + +When the mining client or proxy is ready to perform PoW, it should make a call to the `eth_getWork` method. +The response will be in the format: `[headerHash, seed, boundary, isMining, secondsToNextPow]`. +The mining client or proxy should submit the PoW solution by calling the `eth_submitWork` method, with a payload of: `[nonce, headerHash, mixDigest, boundary, minerWallet, worker]`. +The `minerWallet` and `worker` are ignored. + +If you need to customize the header has, you can instead make a call to the `zil_getWorkWithHeaderParams` method. +The response will be in the format: `[pubKey, rand1, rand2, peer, lookupId, gasPrice, seed, boundary, isMining, secondsToNextPow]`. +The mining client or proxy should submit the PoW solution by calling the `zil_submitWorkWithExtraData` method, with a payload of: `[nonce, extraData, mixDigest, boundary, minerWallet, worker]`. +The `minerWallet` and `worker` are ignored. diff --git a/docs/news/index.md b/docs/news/index.md new file mode 100644 index 000000000..af835e24e --- /dev/null +++ b/docs/news/index.md @@ -0,0 +1,13 @@ +--- +id: news +title: News +keywords: ["news"] +--- + +## Zilliqa-rs 0.2.0 + +Version 0.2.0 of the zilliqa-rs SDK is officially live, offering several features that make it easy for Rust developers to build and interact with Scilla contracts using the native Zilliqa API. Read more about it on [Zilliqa blog](https://blog.zilliqa.com/zilliqa-launches-rust-sdk/). The full release notes can be read [here](https://github.com/Zilliqa/zilliqa-rs/releases) + +## Scilla Parser 1.0.0 + +The newest version of scilla-parser, a Rust library to parse scilla contract, is now available to download and use. The full release note can be found [here](https://github.com/Zilliqa/rs-scilla-parser/releases/tag/v1.0.0). diff --git a/docs/staking/staking-phase-1.1/ssn-operators/staking-ssn-setup.md b/docs/staking/staking-phase-1.1/ssn-operators/staking-ssn-setup.md index 79f302932..fa65acb7a 100644 --- a/docs/staking/staking-phase-1.1/ssn-operators/staking-ssn-setup.md +++ b/docs/staking/staking-phase-1.1/ssn-operators/staking-ssn-setup.md @@ -18,6 +18,16 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; The Mainnet has been upgraded to support staking phase 1.1. You can now start to run a staked seed node on the Mainnet. +## SSNs minimum system requirements + +- Ubuntu Linux 22.04 +- Recent dual-core processor @ 2.2 GHZ. Examples: Intel Xeon (Skylake) +- 8GB DRR3 RAM or higher +- Public static IP address +- 300GB Solid State Drive +- 100MB/s upload and download bandwidth +- Docker version 24+ + ## Default Port Requirements for SSNs Before preparing to host an SSN, please note that these are the ports that diff --git a/docs/staking/staking-phase-1.1/staking-phase11-notice.md b/docs/staking/staking-phase-1.1/staking-phase11-notice.md index e0dff4b9e..8951d90a3 100644 --- a/docs/staking/staking-phase-1.1/staking-phase11-notice.md +++ b/docs/staking/staking-phase-1.1/staking-phase11-notice.md @@ -107,4 +107,3 @@ For more information, please refer to - [Phase 1.1 staking contracts](https://github.com/Zilliqa/staking-contract) - [ZIP-19 - Seed Node Staking Mechanism: Phase 1.1](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-19.md) -- [Zilliqa Mainnet V8 Upgrade Notice](../../developers/upgrade-notices/dev-upgrade-v8.md) diff --git a/docs/zilevm/developer-onboarding/dev-onboarding-introduction.md b/docs/zilevm/developer-onboarding/dev-onboarding-introduction.md index 09eed07a9..2909012ca 100644 --- a/docs/zilevm/developer-onboarding/dev-onboarding-introduction.md +++ b/docs/zilevm/developer-onboarding/dev-onboarding-introduction.md @@ -4,7 +4,7 @@ title: Developer Introduction keywords: - Developers - Dapps -description: ZILEVM for developers +description: Zilliqa EVM for developers --- --- diff --git a/docs/zilevm/developer-onboarding/dev-quirks.md b/docs/zilevm/developer-onboarding/dev-quirks.md new file mode 100644 index 000000000..4706f2cf1 --- /dev/null +++ b/docs/zilevm/developer-onboarding/dev-quirks.md @@ -0,0 +1,41 @@ +--- +id: dev-quirks +title: Zilliqa EVM quirks +keywords: + - Developers + - Dapps +description: Zilliqa EVM architecture and quirks +--- + +--- + +Supporting EVM on Zilliqa involves: + +- Building an execution engine based on the Ethereum Virtual Machine. This allows us to run EVM programs and, thus, compiled Solidity contracts. +- Supporting enough common precompiles to make common-case contracts work. +- Supporting a "sufficient" subset of the Ethereum API calls. This allows users to create EVM contracts, use common Ethereum tools like hardhat and truffle to write contracts, and interact with Zilliqa using Ethereum-standard software like Metamask. +- Arranging to execute EVM transactions, and store EVM-style state. + +There are, inevitably, some differences from other EVM chains, which will be listed here and in the [FAQ](../../faq/faq-introduction.md). + +### Execution engine + +Our execution engine is based on continuation passing and the [Sputnik VM](https://github.com/rust-blockchain/evm). + +This allows us to call Scilla from EVM, via [precompiles](../protocol/protocol-precompiles.md), and, one day, EVM from Scilla via message passing. + +### Gas use + +Because ETH and ZIL differ in the number of decimals they support, we +scale EVM balances by 6 decimal places. + +If we maintained a 1-1 relationship between ethereum gas and ZIL gas +(see [Gas](../protocol/protocol-gas.md)], EVM would be dramatically more expensive +than Scilla; in order to ameliorate this, we scale ethereum gas when +charging and for technical reasons, the scaled value (ie. the +scilla-equivalent gas price is what we track under the hood). + +As a result, rounding occurs, and the amount of ethereum gas you are +charged for a transaction will be slightly less than the amount +estimated, in order that the `effectiveGasPrice * gasUsed` is equal to +the deduction made for gas. diff --git a/docs/zilevm/developer-onboarding/hardhat.md b/docs/zilevm/developer-onboarding/hardhat.md index 900a4ec9a..2504d11b0 100644 --- a/docs/zilevm/developer-onboarding/hardhat.md +++ b/docs/zilevm/developer-onboarding/hardhat.md @@ -10,7 +10,7 @@ description: Hardhat allows developers to easily compile, test, and deploy their ## Hardhat -[Hardhat](https://hardhat.org/) is a development environment for the Solidity programming language. One of the primary use cases for Hardhat is to make it easier for developers to compile and deploy their Solidity smart contracts. Another common use case for Hardhat is to make it easier to write and run automated tests for Solidity smart contracts. This can help to ensure that the contracts are working as intended and can help to catch any bugs or issues before they are deployed to the main network. Check the [documentation](https://hardhat.org/hardhat-runner/docs/getting-started#quick-start) for more information. +[Hardhat](https://hardhat.org/) is a development environment for the Solidity programming language. One of the primary use cases for Hardhat is to make it easier for developers to compile and deploy their Solidity smart contracts. Another common use case for Hardhat is to make it easier to write and run automated tests for Solidity smart contracts. This can help to ensure that the contracts are working as intended and can help to catch any bugs or issues before they are deployed to the main network. Check the [documentation](https://hardhat.org/hardhat-runner/docs/getting-started#quick-start) for more information. If you plan to use ethers.js with Zilliqa, consider using [our fork](https://github.com/Zilliqa/ethers.js) to avoid errors - the only change is that our fork tolerates the non-canonical signatures that are generated by the Zilliqa native API. ### Hardhat with Truffle diff --git a/docs/zilevm/getting-started/zilevm-introduction.md b/docs/zilevm/getting-started/zilevm-introduction.md index 2cd641081..ef45baa65 100644 --- a/docs/zilevm/getting-started/zilevm-introduction.md +++ b/docs/zilevm/getting-started/zilevm-introduction.md @@ -14,41 +14,42 @@ for documentation, please see the #ethereum-virtual-machine channel on ## Getting Started with Zilliqa EVM -### Resources - -#### Quick connect guide - -[Guide on configuring Metamask to ZILEVM](../onboard/onboard-metamask.md) - -#### Developer onboarding - -[Guides for developing Solidity contracts for ZILEVM](../developer-onboarding/dev-onboarding-introduction.md) - -##### Zilliqa Mainnet - -EVM is not yet available on Zilliqa Mainnet +The Zilliqa EVM implementation is written as an execution engine and state storage on top of the Zilliqa consensus protocol. -##### Developer testnet +The token for EVM operations is ZIL - there is no separate token for EVM +APIs. -| Network Type | Network Name | Network RPC | ChainID | Currency Symbol | Block Explorer URL | -| ------------ | ------------ | ------------------------------------------------------------------ | ------- | --------------- | ------------------------------------------------------------------------------------ | -| Testnet | EVM Test | [https://evm-api-dev.zilliqa.com](https://evm-api-dev.zilliqa.com) | 33101 | ZIL | [https://zilliqa-testnet.tryethernal.com/](https://zilliqa-testnet.tryethernal.com/) | -| Mainnet | | | | | | +However, because Zilliqa and EVM APIs have different ways of +deriving an address from a private key, you will have _different addresses for EVM and Zilliqa APIs_. -#### ZILEVM block explorers +This means that you need to be careful when sending contract-bound +tokens between them, because if you send ERC-20 tokens to your Zilliqa +API address, or ZRC-2 tokens to your EVM adress, you will not be able +to create contract calls from the "other" address to recover them. To +read more about topics like this, see the +[FAQ](../../faq/faq-introduction.md). -Use: - -- [Viewblock](https://viewblock.io/zilliqa?network=testnet) -- [DevEx](https://devex.zilliqa.com/?network=https%3A%2F%2Fdev-api.zilliqa.com) +### Resources -In particular, DevEx is capable of translating between ethereum and Zilliqa -style addresses (use the recycle button next to the address in the account -page). +- [Configuring Metamask for Zilliqa](../onboard/onboard-metamask.md) +- [Developing Solidity contracts for Zilliqa](../developer-onboarding/dev-onboarding-introduction.md) +- [API endpoints](../../api/introduction/api-endpoints.md) +- [Developing with hardhat on Zilliqa](../../developers/guides/developing-with-hardhat.md) -#### ZILEVM testnet faucet +#### EVM testnet faucet You can use the [testnet faucet](../../developers/developer-toolings/dev-tools-faucet.md) to add ZIL to your EVM account; just paste your ethereum address (given by your wallet) into the faucet destination address. + +#### EVM Explorer + +You can use otterscan to explore testnet and devnet. + +| Network | URL | +| :------ | :--------------------------------------------- | +| testnet | [Link](https://otterscan.testnet.zilliqa.com/) | +| devnet | [Link](https://otterscan.devnet.zilliqa.com/) | + +Zilliqa has its own fork of [otterscan](https://github.com/Zilliqa/otterscan) for more customizations and features. diff --git a/docs/zilevm/onboard/onboard-metamask.md b/docs/zilevm/onboard/onboard-metamask.md index cc279a5fe..1794f087e 100644 --- a/docs/zilevm/onboard/onboard-metamask.md +++ b/docs/zilevm/onboard/onboard-metamask.md @@ -25,8 +25,8 @@ description: Wallets that can interact with ZILEVM !!! tip - You can send funds between ZILEVM and Zilliqa networks by translating - your Zilliqa address into it's base 16 representation which ZILEVM and + You can send funds between EVM and Zilliqa format APIs translating + your Zilliqa address into it's base 16 representation which Metamask can understand. ### Configure MetaMask with ZILEVM network @@ -34,46 +34,50 @@ description: Wallets that can interact with ZILEVM To add a new network to MetaMask - click the current network selected at the top of the extenstion and press 'Add Network'. -Enter the below configuration, and press save. +Enter the below configuration: -| Network Type | Network Name | Network RPC | ChainID | Currency Symbol | Block Explorer URL | -| ------------ | ------------ | ------------------------------------------------------------------ | ------- | --------------- | ---------------------------------------------------- | -| Testnet | EVM Test | [https://evm-api-dev.zilliqa.com](https://evm-api-dev.zilliqa.com) | 33101 | ZIL | [https://evmx.zilliqa.com](https://evmx.zilliqa.com) | -| Mainnet | | | | | | +| Network Type | Network Name | Network RPC | ChainID | Currency Symbol | Block Explorer URL | +| ------------ | ------------ | ---------------------------------------------------------- | ------- | --------------- | ------------------------------------------------------------ | +| Testnet | EVM Test | [https://dev-api.zilliqa.com](https://dev-api.zilliqa.com) | 33101 | ZIL | [https://evmx-dev.zilliqa.com](https://evmx-dev.zilliqa.com) | +| Mainnet | EVM Mainnet | [https://api.zilliqa.com](https://api.zilliqa.com) | 32769 | ZIL | [https://evmx.zilliqa.com](https://evmx.zilliqa.com)] | ### Sending funds -Do not send Zilliqa NFTs or fungible tokens to ZILEVM addresses and vice-versa. You will lose your assets. +Do not send Zilliqa NFTs or fungible tokens to EVM addresses and vice-versa. You will lose your assets - see the [FAQ](../../faq/faq-introduction.md). #### Converting addresses -Navigate to [https://devex.zilliqa.com/address/](https://devex.zilliqa.com/address/)address}` either using a ZIL bech32 address or an ZILEVM base16 address. +Navigate to [https://devex.zilliqa.com/address/](https://devex.zilliqa.com/address/) to convert using either a ZIL bech32 address or a base16 address. -By pressing the covert button, we can turn a bech32 address (zil...) into a base16 address(0x...), and vice-versa. +By pressing the convert button, we can turn a bech32 address (zil...) into a base16 address(0x...), and vice-versa. !["Coverting address types"](../../assets/img/evm/convert_address.png) -#### ZIL -> ZILEVM +#### ZIL -> EVM -If we know the Metamask base16 address (0x...) we want to send funds to, we need to convert that into a bech32 address(zil...). +If you know the Metamask base16 address (0x...) we want to send funds to, we need to convert that into a bech32 address(zil...) with devex. -Once we have the converted wallet address starting zil... - ZilPay can be used like usual to send funds to a ZILEVM address. +You can then use ZilPay to transfer funds to that bech32 address. #### ZILEVM -> ZIL -If we know the Zilliqa bech32 address (zil...) we want to send funds to, we need to convert that inot a base16 address(0x...). +If we know the Zilliqa bech32 address (zil...) we want to send funds to, we need to convert that to a base16 address(0x...) - again, devex can do this for you. Once we have the converted wallet address starting 0x... - Metamask can be used like normal to send funds to a Zilliqa address. -#### ZILEVM -> ZILEVM +#### EVM -> EVM -Once Metamask has been configured with ZILEVM network details, it allows us -to send EVMZIL to other Metamask wallets using the send function within Metamask itself. - -Do not send funds to Zilpay wallets or base 16 Scilla addresses. +Once Metamask has been configured with EVM network details, you can send ZIL to other base 16 addresses (0x...). !["Sending EVM ZIL"](../../assets/img/evm/send_evm_zil.png) -#### ZILEVM testnet faucet +!!! warning + + Remember that, as always, if you send funds to an address that no-one has the private key for, they will be lost! + +#### EVM testnet faucet -You can use the [testnet faucet](../../developers/developer-toolings/dev-tools-faucet.md) to add ZIL to your EVM account; just paste your ethereum address (given by your wallet) into the faucet destination address. +You can use the [testnet +faucet](../../developers/developer-toolings/dev-tools-faucet.md) to +add ZIL to your EVM account - just paste your base-16 address into the +form. diff --git a/docs/zilevm/protocol/developer-rpc.md b/docs/zilevm/protocol/developer-rpc.md index 7dec17899..86e2dcbb4 100644 --- a/docs/zilevm/protocol/developer-rpc.md +++ b/docs/zilevm/protocol/developer-rpc.md @@ -43,19 +43,30 @@ description: Specification of ZILEVM RPC Endpoint - `eth_getLogs` - `eth_subscribe` - `eth_unsubscribe` +- `eth_gasPrice` +- `eth_getBlockByNumber` +- `eth_getBlockByHash` +- `eth_estimateGas` +- `eth_getTransactionReceipt` +- `eth_recoverTransaction` +- `eth_getBlockReceipts` -### Partially supported API +### Partially supported APIs -Partially usually means returning some constant value or partial value, which is satisfying the current testing needs, but will have to be extended in the future for the full implementation. +These APIs are partially supported; they will return values, but not +necessarily meaningful ones. - `eth_accounts` - Will always return an empty set of accounts - `eth_syncing` - Will always return false -### Will not be supported +### Currently unsupported - `eth_getWork` - `eth_submitWork` - `eth_submitHashrate` +- `eth_coinbase` +- `eth_getUncleByBlockHashAndIndex` +- `eth_getUncleByBlockNumberAndIndex` - `db_putString (deprecated)` - `db_getString (deprecated)` - `db_putHex (deprecated)` diff --git a/docs/zilevm/protocol/protocol-interwork.md b/docs/zilevm/protocol/protocol-interwork.md new file mode 100644 index 000000000..7ac4ecc62 --- /dev/null +++ b/docs/zilevm/protocol/protocol-interwork.md @@ -0,0 +1,27 @@ +--- +id: protocol-interwork +title: Scilla/EVM interwork +keywords: + - interwork + - scilla + - evm +description: Scilla/EVM interwork +--- + +--- + +## Scilla/EVM interwork + +The current (v8.9) facilities for Scilla/EVM interwork are fairly +primitive; just enough to build the ERC20 -> ZRC2 gateway contract you +can find in the +[zilliqa-developer](https://github.com/zilliqa/zilliqa-developer) +repository. We hope to improve on these in future versions. + +They consist of precompiles to call Scilla from EVM (either replacing +or retaining the `sender`), and a precompile to read a fairly +restricted subset of Scilla state from EVM. + +!!! info + + This documentation is being prepared - please check back in a couple of days. diff --git a/docs/zilevm/protocol/protocol-opcodes.md b/docs/zilevm/protocol/protocol-opcodes.md index f1c165623..0661dce0b 100644 --- a/docs/zilevm/protocol/protocol-opcodes.md +++ b/docs/zilevm/protocol/protocol-opcodes.md @@ -10,9 +10,9 @@ description: ZILEVM Opcodes ## Opcodes -| OP code | Description | -| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| COINBASE | Returns 0 (this opcode returns the address that gets the current block reward, since reward is split among multiple participating parties in Zilliqa, we cannot get the definite response, hence we return zero. | -| CHAINID | Returns 0x8000 + Zilliqa ChainID. We cannot just reuse Zilliqa ChainID directly, as “1” means mainnet, and in the EVM APIs that means Ethereum Mainnet. So we move all our CHAINID space into the area of 0x8000. | -| BASEFEE | Returns the current ZIL gas price of 0.02 ZIL | -| DIFFICULTY | Return current difficulty | +| OP code | Description | +| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| COINBASE | Returns 0 (this opcode returns the address that gets the current block reward; since the reward is split among multiple participating parties in Zilliqa, it's not possible to implement this opcode, and we return 0) | +| CHAINID | Returns 0x8000 + Zilliqa ChainID. Existing Zilliqa chain ids are incompatible with Ethereum ids (where 1 means mainnet), so we shift our chain id space up by 0x8000. | +| BASEFEE | Returns the current ZIL gas price of 0.02 ZIL | +| DIFFICULTY | Return current difficulty | diff --git a/docs/zilevm/protocol/protocol-precompiles.md b/docs/zilevm/protocol/protocol-precompiles.md new file mode 100644 index 000000000..ca191f864 --- /dev/null +++ b/docs/zilevm/protocol/protocol-precompiles.md @@ -0,0 +1,17 @@ +--- +id: protocol-precompiles +title: Precompiles +keywords: + - Precompiles +description: EVM Precompiles +--- + +--- + +## EVM Precompiles + +!!! info + + This documentation is being prepared - please check back in a couple of days. + If you are very curious, you can look at + [the source](https://github.com/Zilliqa/Zilliqa/tree/master/evm-ds/src/precompiles) diff --git a/docs/zq2/index.md b/docs/zq2/index.md new file mode 100644 index 000000000..e47faa7c0 --- /dev/null +++ b/docs/zq2/index.md @@ -0,0 +1,50 @@ +--- +id: zq2 +title: Zilliqa 2 +keywords: [] +--- + +# Zilliqa 2: An Overview + +## Introduction + +Zilliqa 2 is the next generation of the Zilliqa blockchain. It represents a fundamental overhaul of Zilliqa's blockchain node, introducing substantial improvements in network performance and utility while preserving all the features of the current Zilliqa version, including full EVM (Ethereum Virtual Machine) compatibility. + +It is currently under development, so not yet stable or complete, feel free to create an issue in [GitHub](https://github.com/Zilliqa/zq2) when you find problems. + +## Key Enhancements in Zilliqa 2 + +Zilliqa 2 brings forth several enhancements to elevate its performance and scalability: + +- **Faster Finality**: Introducing a new consensus algorithm (Fast-HotStuff) for quicker transaction confirmations. + +- **Improved Scalability and Sharding**: The upgrade empowers developers with an enhanced sharding system, providing the flexibility to create custom shards with programmable security parameters. + +- **Developer-Focused Design**: Prioritizing an enhanced developer experience, Zilliqa 2.0 aims to simplify blockchain development and streamline user transactions. + +- **EVM Compatibility**: EVM-based smart contracts can be deployed and integrated seamlessly with Zilliqa 2.0. Full support for both Scilla and EVM is retained. + +- **Sharding System with Privacy Features**: Zilliqa 2.0's sharding system supports programmable decentralization, enabling customization of shards for specific use cases. Each shard may include an encryption key, ensuring privacy by encrypting block data. + +## Compatibility and Transition + +In terms of compatibility and transition: + +- **Existing ZIL and dApps**: Zilliqa 2 ensures a seamless transition by maintaining compatibility with existing Zilliqa and EVM APIs. Users can rest assured that their decentralized applications (dApps) will continue to function normally, with the state of the chain remaining unchanged. + +- **Deployment and Stability**: The current phase involves a heavily in-development devnet that aligns with the latest code changes. Users should anticipate some instability and occasional state resets. As Zilliqa 2 matures, the plan is to deploy additional networks offering enhanced stability. + +### Networks + +| Name | EVM Chain Id | API | Explorer | Faucet | Notes | +| -------------------- | ------------ | ----------------------------------- | ---------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------ | +| **Zilliqa 2 Devnet** | 33469 | | | | Active unstable development network. Expect frequent updates, bugs and state resets. | + +## Release Timeline + +The release timeline for Zilliqa 2 is contingent on development progress and rigorous testing. Providing an exact date can be challenging due to these variables. To stay abreast of developments and receive timely updates on the release schedule: + +- Monitor the [GitHub repository](https://github.com/Zilliqa/zq2) +- Follow Zilliqa on social media platforms for announcements and progress reports. + +For further details and the latest information, stay connected with the Zilliqa community and official channels. diff --git a/examples/laksaj-examples/ljtest/pom.xml b/examples/laksaj-examples/ljtest/pom.xml index bc87ef2c1..60b811d4c 100644 --- a/examples/laksaj-examples/ljtest/pom.xml +++ b/examples/laksaj-examples/ljtest/pom.xml @@ -54,7 +54,7 @@ junit junit - 4.11 + 4.13.1 test diff --git a/examples/zilliqa-js/latest-block/README.md b/examples/zilliqa-js/latest-block/README.md new file mode 100644 index 000000000..e6c8a1347 --- /dev/null +++ b/examples/zilliqa-js/latest-block/README.md @@ -0,0 +1,91 @@ +# Example: Get latest block + +## Quickstart: Use boilerplate project + +1. Make sure that the library was build. From the repository root go to + `zilliqa/js`. Then run + + ```sh + pnpm i -r + pnpm -r build + ``` + +2. Change directory to the `latest-block` directory and install the + dependencies: + + ```sh + pnpm i + ``` + +3. Build and run the script: + + ```sh + npx tsc + node dist/index.js + ``` + +## Project from scratch + +1. Create a new directory to work in + + ```sh + mkdir zilliqa-latest-block + cd zilliqa-latest-block + ``` + +2. Initialise the directory with npm and typescript + + ```sh + npm init + npm install --save-dev typescript @types/node + npx tsc --init + ``` + +3. Update `tsconfig.json`. It should look like: + + ```json + { + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "outDir": "dist", + "strict": true, + "esModuleInterop": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] + } + ``` + +4. Install the `zilliqa` libraries + + ```sh + npm install @zilliqa-js/zilliqa @zilliqa-js/crypto @zilliqa-js/util @zilliqa-js/core @zilliqa-js/account @zilliqa-js/contract @zilliqa-js/blockchain + ``` + +5. Create the source directory and `index.ts`: + + ```sh + mkdir src + touch src/index.ts + ``` + +6. Update `index.ts` with: + + ```ts + import { Zilliqa } from "@zilliqa-js/zilliqa"; + + async function main() { + const provider = new Zilliqa("https://api.zilliqa.com/"); + const latestBlock = await provider.blockchain.getLatestTxBlock(); + console.log(latestBlock); + } + main(); + ``` + +7. Compile and run: + + ```sh + npx tsc + node dist/index.js + ``` diff --git a/examples/zilliqa-js/latest-block/package.json b/examples/zilliqa-js/latest-block/package.json new file mode 100644 index 000000000..8d4fe8e88 --- /dev/null +++ b/examples/zilliqa-js/latest-block/package.json @@ -0,0 +1,24 @@ +{ + "name": "latest-block", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^20.2.4", + "typescript": "^5.0.4" + }, + "dependencies": { + "@zilliqa-js/account": "workspace:*", + "@zilliqa-js/blockchain": "workspace:*", + "@zilliqa-js/contract": "workspace:*", + "@zilliqa-js/core": "workspace:*", + "@zilliqa-js/crypto": "workspace:*", + "@zilliqa-js/util": "workspace:*", + "@zilliqa-js/zilliqa": "workspace:*" + } +} diff --git a/examples/zilliqa-js/latest-block/src/index.ts b/examples/zilliqa-js/latest-block/src/index.ts new file mode 100644 index 000000000..839d9c556 --- /dev/null +++ b/examples/zilliqa-js/latest-block/src/index.ts @@ -0,0 +1,8 @@ +import { Zilliqa } from "@zilliqa-js/zilliqa"; + +async function main() { + const provider = new Zilliqa("https://api.zilliqa.com/"); + const latestBlock = await provider.blockchain.getLatestTxBlock(); + console.log(latestBlock); +} +main(); diff --git a/examples/zilliqa-js/latest-block/tsconfig.json b/examples/zilliqa-js/latest-block/tsconfig.json new file mode 100644 index 000000000..6df8987db --- /dev/null +++ b/examples/zilliqa-js/latest-block/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "outDir": "dist", + "strict": true, + "esModuleInterop": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/examples/zilliqa-js/latest-block/yarn.lock b/examples/zilliqa-js/latest-block/yarn.lock new file mode 100644 index 000000000..ca4721d80 --- /dev/null +++ b/examples/zilliqa-js/latest-block/yarn.lock @@ -0,0 +1,817 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@types/bip39@^2.4.0": + version "2.4.2" + resolved "https://registry.npmjs.org/@types/bip39/-/bip39-2.4.2.tgz#f5d6617212be496bb998d3969f657f77a10c5287" + integrity sha512-Vo9lqOIRq8uoIzEVrV87ZvcIM0PN9t0K3oYZ/CS61fIYKCBdOIM7mlWzXuRvSXrDtVa1uUO2w1cdfufxTC0bzg== + dependencies: + "@types/node" "*" + +"@types/hdkey@^0.7.0": + version "0.7.1" + resolved "https://registry.npmjs.org/@types/hdkey/-/hdkey-0.7.1.tgz#9bc63ebbe96b107b277b65ea7a95442a677d0d61" + integrity sha512-4Kkr06hq+R8a9EzVNqXGOY2x1xA7dhY6qlp6OvaZ+IJy1BCca1Cv126RD9X7CMJoXoLo8WvAizy8gQHpqW6K0Q== + dependencies: + "@types/node" "*" + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.2.4": + version "20.2.4" + resolved "https://registry.npmjs.org/@types/node/-/node-20.2.4.tgz#e6c3345f7ed9c6df41fdc288a94e2633167bc15d" + integrity sha512-ni5f8Xlf4PwnT/Z3f0HURc3ZSw8UyrqMqmM3L5ysa7VjHu8c3FOmIo1nKCcLrV/OAmtf3N4kFna/aJqxsfEtnA== + +"@types/sodium-native@2.3.5": + version "2.3.5" + resolved "https://registry.npmjs.org/@types/sodium-native/-/sodium-native-2.3.5.tgz#5d2681e7b6b67bcbdc63cfb133e303ec9e942e43" + integrity sha512-a3DAIpW8+36XAY8aIR36JBQQsfOabxHuJwx11DL/PTvnbwEWPAXW66b8QbMi0r2vUnkOfREsketxdvjBmQxqDQ== + dependencies: + "@types/node" "*" + +"@types/websocket@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" + integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== + dependencies: + "@types/node" "*" + +"@zilliqa-js/account@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/account/-/account-3.4.1.tgz#24bb58be0db47355aaf8442cf8f1981b91ab57ab" + integrity sha512-ZQHNYN+O12NNK4THuz9M3/NEbfY0uJyjJqzXjXOmI/KxOafu3MJ4yxloh+1gceeMgGDs8mtbq6WVsacxqjdyMQ== + dependencies: + "@types/bip39" "^2.4.0" + "@types/hdkey" "^0.7.0" + "@zilliqa-js/core" "3.4.1" + "@zilliqa-js/crypto" "3.4.1" + "@zilliqa-js/proto" "3.4.1" + "@zilliqa-js/util" "3.4.1" + bip39 "^2.5.0" + hash.js "^1.1.7" + hdkey "^1.1.0" + tslib "2.3.1" + +"@zilliqa-js/blockchain@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/blockchain/-/blockchain-3.4.1.tgz#6d2ed19752a17eff7af023a26d2409034eafa5c5" + integrity sha512-Nq6Cp2Gvk+uSxiLQwMIDTCsz/qJuGSfgUtmSbHz0j6C4u//EJDO7bZSfnevmBDybv8A9F5r5dUH4r0JscatanQ== + dependencies: + "@zilliqa-js/account" "3.4.1" + "@zilliqa-js/core" "3.4.1" + "@zilliqa-js/crypto" "3.4.1" + "@zilliqa-js/util" "3.4.1" + tslib "2.3.1" + utility-types "^3.4.1" + +"@zilliqa-js/contract@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/contract/-/contract-3.4.1.tgz#858b3583b60dd4ff75113111bf2f781fc5ff4077" + integrity sha512-5OnFiUpGcHa8CqP60HmgURjX+WBtmrL0L2ohRnYMN3Tj6hIBHIb3YfSrQvQiNdSFt9CSrVBR7CFQ683/WW5iSQ== + dependencies: + "@zilliqa-js/account" "3.4.1" + "@zilliqa-js/blockchain" "3.4.1" + "@zilliqa-js/core" "3.4.1" + "@zilliqa-js/crypto" "3.4.1" + "@zilliqa-js/util" "3.4.1" + bn.js "^4.11.8" + buffer-from "^1.1.2" + cross-fetch "2.2.5" + hash.js "^1.1.5" + node-fetch "^3.2.10" + tslib "2.3.1" + utility-types "^2.1.0" + +"@zilliqa-js/core@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/core/-/core-3.4.1.tgz#96a0fe4664739412ad452f5ea59ad71688b7980c" + integrity sha512-JfRHkOokPNEzFKtvIMIgHyk8jRkvncAPHX+/XODseaMmaXKHgAIvf6LPXp3W7+c0X+hXLc5qocGIfC62cizS0A== + dependencies: + cross-fetch "2.2.6" + mitt "^1.1.3" + tslib "2.3.1" + +"@zilliqa-js/crypto@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/crypto/-/crypto-3.4.1.tgz#ddf6f0f03a4843b9cb3f50215b9139b95e48e0eb" + integrity sha512-EZuki56aTc0Y15MF/D7kd0RnxQtLotiGpwu7oB8F38WtU7S2VsgK575zIcARbEwbyDNCIqdApr/ZDuVxEUbi9w== + dependencies: + "@zilliqa-js/util" "3.4.1" + aes-js "^3.1.1" + buffer "^6.0.3" + elliptic "^6.5.0" + hash.js "^1.1.5" + hmac-drbg "^1.0.1" + pbkdf2 "^3.0.16" + scrypt-js "^3.0.1" + scryptsy "^2.1.0" + sodium-randbytes "0.14.0" + tslib "2.3.1" + uuid "8.3.2" + +"@zilliqa-js/proto@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/proto/-/proto-3.4.1.tgz#48d6700107b488c2aa6aa86bbbae566f66ea61b9" + integrity sha512-+UT7fXFaSRsMF6izzvC5A/eaGHBZI6HAgV/C7gHXMW5jfJ4L3xmWmaXMkcDZhxFZpjBlgpzpWcTFC6Z7D65dCQ== + dependencies: + protobufjs "^6.8.8" + +"@zilliqa-js/subscriptions@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/subscriptions/-/subscriptions-3.4.1.tgz#e6d2ebde0ed7ff57e48461606a1e0f10df885553" + integrity sha512-Uex9oYpLwQdkHnMlCEfrJQz6DmX1dXyUllqTy7CFYbmkfSl90i+DiQmV1llA7Ov0YQeVcj28bp8GSUypdmg2RQ== + dependencies: + "@types/websocket" "1.0.4" + camelcase "5.0.0" + mitt "^1.1.3" + tslib "2.3.1" + websocket "^1.0.28" + +"@zilliqa-js/util@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/util/-/util-3.4.1.tgz#f7559ef66cd9cad4200df8b2e2cc88b50adae084" + integrity sha512-buv6k0QcOi7/gCSZ9Cie+RfwGQNnIxC5b9paeLC26GsJK8o7EaPAvqldDSKTXvyVX2cUbjMyS2fPRGWsiKlajw== + dependencies: + bn.js "^4.11.8" + camelcase "^5.0.0" + long "^4.0.0" + tslib "2.3.1" + +"@zilliqa-js/zilliqa@3.4.1": + version "3.4.1" + resolved "https://registry.npmjs.org/@zilliqa-js/zilliqa/-/zilliqa-3.4.1.tgz#440ac2aaf7ab3177816c70c5243c2f761881e6e6" + integrity sha512-o/nyD0jcK+inIGGsJAV8RwPJt1wqmGJlHjvITOxnJsKglC5dLLaoI/+FUApQAlvimtZiHpFogmVXCgsBuf/zMQ== + dependencies: + "@zilliqa-js/account" "3.4.1" + "@zilliqa-js/blockchain" "3.4.1" + "@zilliqa-js/contract" "3.4.1" + "@zilliqa-js/core" "3.4.1" + "@zilliqa-js/crypto" "3.4.1" + "@zilliqa-js/proto" "3.4.1" + "@zilliqa-js/subscriptions" "3.4.1" + "@zilliqa-js/util" "3.4.1" + tslib "2.3.1" + +aes-js@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +base-x@^3.0.2: + version "3.0.9" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip39@^2.5.0: + version "2.6.0" + resolved "https://registry.npmjs.org/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" + integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.6: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-from@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@2.2.5: + version "2.2.5" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz#afaf5729f3b6c78d89c9296115c9f142541a5705" + integrity sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w== + dependencies: + node-fetch "2.6.1" + whatwg-fetch "2.0.4" + +cross-fetch@2.2.6: + version "2.2.6" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" + integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== + dependencies: + node-fetch "^2.6.7" + whatwg-fetch "^2.0.4" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + +elliptic@^6.5.0, elliptic@^6.5.2: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.5, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hdkey@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/hdkey/-/hdkey-1.1.2.tgz#c60f9cf6f90fbf24a8a52ea06893f36a0108cd3e" + integrity sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ== + dependencies: + bs58check "^2.1.2" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +mitt@^1.1.3: + version "1.2.0" + resolved "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +nan@^2.14.0: + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-fetch@^2.6.7: + version "2.6.11" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^3.2.10: + version "3.3.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" + integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +pbkdf2@^3.0.16, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +protobufjs@^6.8.8: + version "6.11.3" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +randombytes@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + +secp256k1@^3.0.1: + version "3.8.0" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.5.2" + nan "^2.14.0" + safe-buffer "^5.1.2" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sodium-native@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz#50ee52ac843315866cce3d0c08ab03eb78f22361" + integrity sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA== + dependencies: + node-gyp-build "^4.3.0" + +sodium-randbytes@0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/sodium-randbytes/-/sodium-randbytes-0.14.0.tgz#9613f9b1d6f7eea3434dbb509eaa295edc73d6ba" + integrity sha512-X5HXTHiorRs8Jte7+SEwxnX0ZPmDdU3TxYIIOoTklEgdiFELtQ1CwwyBBePPZlN0T+XDNBlNaikPRarfT0cK/A== + dependencies: + "@types/sodium-native" "2.3.5" + sodium-native "3.3.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utility-types@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/utility-types/-/utility-types-2.1.0.tgz#0c78fc9f7eb424d14302222b4ddd13fdb17f44ab" + integrity sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw== + +utility-types@^3.4.1: + version "3.10.0" + resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + +uuid@8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket@^1.0.28: + version "1.0.34" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-fetch@2.0.4, whatwg-fetch@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== diff --git a/examples/zilliqa-js/react-zilliqa-js/.eslintrc b/examples/zilliqa-js/react-zilliqa-js/.eslintrc new file mode 100644 index 000000000..ce776e410 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/.eslintrc @@ -0,0 +1,33 @@ +{ + "env": { + "browser": true, + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:import/errors", + "plugin:import/warnings" + ], + "parser": "@typescript-eslint/parser", + "settings": { + "import/resolver": { + "node": { + "extensions": [".js", ".jsx", ".ts", ".tsx"] + }, + "alias": { + "map": [ + ], + "extensions": [".js", ".jsx", ".ts", ".tsx"] + } + }, + "react": { + "version": "latest" + } + }, + "rules": { + "react/prop-types": "off", + "@typescript-eslint/no-var-requires": "off" + } +} diff --git a/examples/zilliqa-js/react-zilliqa-js/.gitignore b/examples/zilliqa-js/react-zilliqa-js/.gitignore new file mode 100644 index 000000000..4d29575de --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/examples/zilliqa-js/react-zilliqa-js/README.md b/examples/zilliqa-js/react-zilliqa-js/README.md new file mode 100644 index 000000000..b58e0af83 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/README.md @@ -0,0 +1,46 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/examples/zilliqa-js/react-zilliqa-js/package.json b/examples/zilliqa-js/react-zilliqa-js/package.json new file mode 100644 index 000000000..175a1943b --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/package.json @@ -0,0 +1,45 @@ +{ + "name": "react-zilliqa-js", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/react": "^13.0.0", + "@testing-library/user-event": "^13.2.1", + "@types/jest": "^27.0.1", + "@types/node": "^16.7.13", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "@zilliqa-js/account": "workspace:*", + "@zilliqa-js/blockchain": "workspace:*", + "@zilliqa-js/contract": "workspace:*", + "@zilliqa-js/core": "workspace:*", + "@zilliqa-js/crypto": "workspace:*", + "@zilliqa-js/util": "workspace:*", + "@zilliqa-js/zilliqa": "workspace:*", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-scripts": "5.0.1", + "typescript": "^4.4.2", + "web-vitals": "^2.1.0" + }, + "scripts": { + "start": "DISABLE_ESLINT_PLUGIN=true react-scripts start", + "react-build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": {} +} diff --git a/products/dev-wallet/public/favicon.ico b/examples/zilliqa-js/react-zilliqa-js/public/favicon.ico similarity index 100% rename from products/dev-wallet/public/favicon.ico rename to examples/zilliqa-js/react-zilliqa-js/public/favicon.ico diff --git a/examples/zilliqa-js/react-zilliqa-js/public/index.html b/examples/zilliqa-js/react-zilliqa-js/public/index.html new file mode 100644 index 000000000..aa069f27c --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/examples/zilliqa-js/react-zilliqa-js/public/logo192.png b/examples/zilliqa-js/react-zilliqa-js/public/logo192.png new file mode 100644 index 000000000..fc44b0a37 Binary files /dev/null and b/examples/zilliqa-js/react-zilliqa-js/public/logo192.png differ diff --git a/examples/zilliqa-js/react-zilliqa-js/public/logo512.png b/examples/zilliqa-js/react-zilliqa-js/public/logo512.png new file mode 100644 index 000000000..a4e47a654 Binary files /dev/null and b/examples/zilliqa-js/react-zilliqa-js/public/logo512.png differ diff --git a/examples/zilliqa-js/react-zilliqa-js/public/manifest.json b/examples/zilliqa-js/react-zilliqa-js/public/manifest.json new file mode 100644 index 000000000..080d6c77a --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/examples/zilliqa-js/react-zilliqa-js/public/robots.txt b/examples/zilliqa-js/react-zilliqa-js/public/robots.txt new file mode 100644 index 000000000..e9e57dc4d --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/examples/zilliqa-js/react-zilliqa-js/src/App.css b/examples/zilliqa-js/react-zilliqa-js/src/App.css new file mode 100644 index 000000000..74b5e0534 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/examples/zilliqa-js/react-zilliqa-js/src/App.tsx b/examples/zilliqa-js/react-zilliqa-js/src/App.tsx new file mode 100644 index 000000000..2185b5261 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/src/App.tsx @@ -0,0 +1,61 @@ +import React from "react"; +import logo from "./logo.svg"; +import "./App.css"; +import { Zilliqa } from "@zilliqa-js/zilliqa"; + +type AppState = { blockHashes: string[] }; +type AppProps = Record; +class App extends React.Component { + constructor(props: AppProps) { + super(props); + this.state = { + blockHashes: [], + }; + } + + async updateTxs(): Promise { + const count = 10; + const provider = "https://api.zilliqa.com"; + const zilliqa = new Zilliqa(provider); + const latestTxBlock = await zilliqa.blockchain.getNumTxBlocks(); + + // Calculate the starting block to fetch transactions + const startBlock = parseInt(latestTxBlock.result || "0") - count; + + // Fetch latest transactions + const hashes: string[] = []; + for (let i = 0; i < count; i++) { + const blockNumber = startBlock + i; + const txBlock = await zilliqa.blockchain.getTxBlock(blockNumber); + + if (txBlock.result) { + hashes.push(txBlock.result.body.BlockHash); + this.setState({ blockHashes: hashes }); + } + } + this.setState({ blockHashes: hashes }); + } + + componentDidMount(): void { + this.updateTxs(); + } + + render(): JSX.Element { + const { blockHashes } = this.state; + return ( +
+
+ logo +

Found {blockHashes.length} hashes.

+
    + {blockHashes.map((e: string, index: number) => ( +
  • {e}
  • + ))} +
+
+
+ ); + } +} + +export default App; diff --git a/examples/zilliqa-js/react-zilliqa-js/src/index.css b/examples/zilliqa-js/react-zilliqa-js/src/index.css new file mode 100644 index 000000000..4a1df4db7 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; +} diff --git a/examples/zilliqa-js/react-zilliqa-js/src/index.tsx b/examples/zilliqa-js/react-zilliqa-js/src/index.tsx new file mode 100644 index 000000000..cfd778490 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/src/index.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import App from "./App"; + +const root = ReactDOM.createRoot( + document.getElementById("root") as HTMLElement +); +root.render( + + + +); diff --git a/products/dev-wallet/src/logo.svg b/examples/zilliqa-js/react-zilliqa-js/src/logo.svg similarity index 100% rename from products/dev-wallet/src/logo.svg rename to examples/zilliqa-js/react-zilliqa-js/src/logo.svg diff --git a/examples/zilliqa-js/react-zilliqa-js/src/react-app-env.d.ts b/examples/zilliqa-js/react-zilliqa-js/src/react-app-env.d.ts new file mode 100644 index 000000000..6431bc5fc --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/zilliqa-js/react-zilliqa-js/tsconfig.json b/examples/zilliqa-js/react-zilliqa-js/tsconfig.json new file mode 100644 index 000000000..9d379a3c4 --- /dev/null +++ b/examples/zilliqa-js/react-zilliqa-js/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"] +} diff --git a/mlc_config.json b/mlc_config.json index d2a52f08d..e6c98fa63 100644 --- a/mlc_config.json +++ b/mlc_config.json @@ -30,6 +30,18 @@ { "pattern": "^https://evm-api-dev.zilliqa.com" }, + { + "pattern": "^http://evm-api-filters.zilliqa.com" + }, + { + "pattern": "^https://api.testnet.zilliqa.com" + }, + { + "pattern": "^http://evm-api-filters.testnet.zilliqa.com" + }, + { + "pattern": "^http://evm-api-filters-dev.zilliqa.com" + }, { "pattern": "^https://devex.zilliqa.com" }, @@ -53,6 +65,21 @@ }, { "pattern": "^https://stg-indexer-api.rialto.studio/zilliqa" + }, + { + "pattern": "^http://evm-api-filters.zilliqa.com/" + }, + { + "pattern": "^http://evm-api-filters-dev.zilliqa.com/" + }, + { + "pattern": "^https://api.testnet.zilliqa.com/" + }, + { + "pattern": "^http://evm-api-filters.testnet.zilliqa.com/" + }, + { + "pattern": "^https://coq.inria.fr" } ], "replacementPatterns": [], @@ -60,7 +87,7 @@ "retryOn429": true, "retryCount": 5, "fallbackRetryDelay": "30s", - "aliveStatusCodes": [200], + "aliveStatusCodes": [200, 429, 405], "httpHeaders": [ { "urls": [ @@ -72,6 +99,11 @@ "headers": { "Accept-Encoding": "zstd, br, gzip, deflate" } + }, + { + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" + } } ] } diff --git a/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-software-version.mdx b/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-software-version.mdx new file mode 100644 index 000000000..7e8d429a9 --- /dev/null +++ b/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-software-version.mdx @@ -0,0 +1,70 @@ +--- +id: api-blockchain-get-software-version +title: GetVersion +--- + +--- + +Returns the software version of the Zilliqa nodes. Additionally, returns a commit id if defined. + +### Example Request + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + + +```shell +curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetVersion", + "params": [""] +}' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" +``` + + + + + +### Example Response + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": { + "Commit": "", + "Version": "v9.0.1" + } +} +``` + +### HTTP Request + +| Chain(s) | URL(s) | +| --------------------- | -------------------------------------------------------------------------------------------- | +| **Zilliqa mainnet** | [https://api.zilliqa.com/](https://api.zilliqa.com/) | +| **Developer testnet** | [https://dev-api.zilliqa.com/](https://dev-api.zilliqa.com/) | +| **Local testnet** | [http://localhost:4201/](http://localhost:4201/) | +| **Isolated server** | [https://zilliqa-isolated-server.zilliqa.com/](https://zilliqa-isolated-server.zilliqa.com/) | + +### Arguments + +| Parameter | Type | Required | Description | +| --------- | ------ | -------- | ---------------------------------- | +| `id` | string | Required | `"1"` | +| `jsonrpc` | string | Required | `"2.0"` | +| `method` | string | Required | `"GetVersion"` | +| `params` | string | Required | Empty string `""` | diff --git a/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-total-coin-supply.mdx b/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-total-coin-supply.mdx index 708e699ac..3d9e2c6c5 100644 --- a/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-total-coin-supply.mdx +++ b/needing-organisation/newdocs/developer-portal/docs/apis/api-blockchain-get-total-coin-supply.mdx @@ -4,10 +4,15 @@ title: GetTotalCoinSupply --- --- +There are two variations of the API - `GetTotalCoinSupply` and `GetTotalCoinSupplyAsInt`. -Returns the total supply (ZIL) of coins in the network. This is represented as a `String`. +`GetTotalCoinSupply` Returns the total supply (ZIL) of coins in the network. This is represented as a +`String`. -### Example Request +`GetTotalCoinSupplyAsInt` Returns the total supply (ZIL) of coins in the network. This is represented as a +`Rounded Number`. + +### Example Request-1 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; @@ -86,11 +91,10 @@ func GetTotalCoinSupply() { fmt.Println(string(result)) } ``` - -### Example Response +### Example Response-1 ```json { @@ -99,7 +103,43 @@ func GetTotalCoinSupply() { "result": "13452081092.277490607172" } ``` +### Example Request-1 + + + + +```shell +curl -d '{ + "id": "1", + "jsonrpc": "2.0", + "method": "GetTotalCoinSupplyAsInt", + "params": [""] +}' -H "Content-Type: application/json" -X POST "https://api.zilliqa.com/" +``` + + + + +### Example Response-2 + +```json +{ + "id": "1", + "jsonrpc": "2.0", + "result": 13452081092 +} +``` +**NOTE:** `GetTotalCoinSupplyAsInt` is not avaliable to call through SDKs. ### HTTP Request | Chain(s) | URL(s) | @@ -115,5 +155,5 @@ func GetTotalCoinSupply() { | --------- | ------ | -------- | ---------------------- | | `id` | string | Required | `"1"` | | `jsonrpc` | string | Required | `"2.0"` | -| `method` | string | Required | `"GetTotalCoinSupply"` | +| `method` | string | Required | `"GetTotalCoinSupply or GetTotalCoinSupplyAsint"` | | `params` | string | Required | Empty string `""` | diff --git a/needing-organisation/newdocs/developer-portal/docs/dev/dev-tools-zilliqars.md b/needing-organisation/newdocs/developer-portal/docs/dev/dev-tools-zilliqars.md new file mode 100644 index 000000000..166236612 --- /dev/null +++ b/needing-organisation/newdocs/developer-portal/docs/dev/dev-tools-zilliqars.md @@ -0,0 +1,307 @@ +--- +id: dev-tools-zilliqars +title: zilliqa-rs +keywords: + - zilliqars + - zilliqa-rs + - rust + - installation + - apis + - examples + - zrc2 wallet + - hello world + - zilliqa +description: Zilliqa Rust SDK +--- + +--- + +## Introduction + +[zilliqa-rs](https://github.com/Zilliqa/zilliqa-rs) is a Rust library that +allows you to interact with the Zilliqa network nodes - create wallets, deploy +contracts, and invoke transitions to interact with smart contracts. + +## Source Code + +The Github repository can be found at +[https://github.com/Zilliqa/zilliqa-rs](https://github.com/Zilliqa/zilliqa-rs) + +## Releases + +All releases of zilliqa-rs can be found at +[https://crates.io/crates/zilliqa-rs/versions](https://crates.io/crates/zilliqa-rs/versions) + +Release note can be found at +[https://github.com/Zilliqa/zilliqa-rs/releases](https://github.com/Zilliqa/zilliqa-rs/releases) + +## Installation + +```shell +cargo add zilliqa-rs +# you may also need to install the tokio. +cargo add tokio +``` + +## Methods and APIs + +The full documentation can be found in [docs.rs](https://docs.rs/crate/zilliqa-rs/latest) but the following table provides a description of each module of it and what +you may want to use it for. Visit the relevant link of each module to find the +detailed description about the methods and apis supported by that module. + +| Module | Description | +| ---------------------------------------------------------------------------------- | ------------------------------------------------------------- | +| [Core](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/core/index.html) | Shared data types and functionalities. | +| [Providers](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/providers/index.html) | Clients for interacting with zilliqa network. | +| [Signers](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/signers/index.html) | A unified interface for locally signing zilliqa transactions. | +| [Transaction](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/transaction/index.html) | Send transactions to zilliqa network | +| [Contract](https://docs.rs/zilliqa-rs/latest/zilliqa_rs/contract/index.html) | Interact with scilla contracts | + + +## Demo +### Create a new Rust app +The very first step is to create a binary rust project. + +```bash +cargo new zilliqa-rs-demo +``` + +then we need to add zilliqa-rs and tokio to the project's dependencies: + +```bash +cargo add zilliqa-rs tokio +``` + +### Call a simple JSON-RPC API +#### Run the isolated-server using docker +Here we run an isolated server using docker to use it as the target network, but you can use any zilliqa network you want. +```bash +docker run -d -p 5555:5555 --name iso-server zilliqa-isolated-server:latest +``` + +#### Call GetBalance +First, we need to create a provider. In the first line of the main, we create an HTTP provider. We use the URL of the isolated server we ran in the previous step. The chain ID of this network is 222. +Then we can call the `get_balance` function of the provider, passing the address of the account we want its balance. + +```rust +use std::error::Error; + +use zilliqa_rs::middlewares::Middleware; +use zilliqa_rs::providers::{Http, Provider}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let provider = Provider::::try_from("http://127.0.0.1:5555")?.with_chain_id(222); + let balance = provider + .get_balance("0x381f4008505e940ad7681ec3468a719060caf796") + .await; + + println!("{balance:?}"); + Ok(()) +} +``` + +### Sending transactions +#### Provider with a signer +To start sending transactions, we need to change the provider. The provider we had so far, didn't have a signer. That was because we didn't want to send transactions. But now we want, so we need to provide a signer for it: + +```rust,ignore + let wallet = "0xe53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89" + .parse::()?; + + let provider = Provider::::try_from("http://127.0.0.1:5555")? + .with_chain_id(222) + .with_signer(wallet.clone()); +``` +Here, we create a new wallet from a private key and a provider with that signer. This provider now can be used to send transactions. + +Let's transfer some ZIL to a random address. First, we create a random wallet: +```rust,ignore + let receiver = LocalWallet::create_random()?; +``` +Then we need to compose a transaction. `TransactionBuilder` is used to build a transaction: +```rust,ignore + let tx = TransactionBuilder::default() + .to_address(receiver.address.clone()) + .amount(parse_zil("2.0")?) + .gas_price(2000000000u128) + .gas_limit(50u64) + .build(); +``` +Here we are going to transfer 2.0 ZIL to the receiver. Now we need to send the transaction: +```rust,ignore + provider + .send_transaction_without_confirm::(tx) + .await?; +``` +Now, let's check the balance: +```rust,ignore + let balance = provider.get_balance(&receiver.address).await; + println!("{balance:?}"); +``` +```bash +cargo run + +Ok(BalanceResponse { nonce: 138, balance: 899999994124734000000000 }) +Ok(BalanceResponse { nonce: 0, balance: 2000000000000 }) +``` +#### Using pay function +TransactionBuilder has an auxiliary function named `pay` to simplify payment transaction creation: +```rust,ignore + let tx = TransactionBuilder::default().pay(amount, receiver.address.clone()).build(); +``` + +### Working with contracts +#### Technical notes +One of the coolest features of zilliqa-rs is generating rust code for your scilla contracts during build time. It means if your contract has a transition like `transfer`, you can call it the same as a normal rust function. If it has a parameter of an address, you must pass an address to this function. And this means all of the beauties of type-checking of rust come to working with scilla contracts. + +#### Generating rust code from scilla contracts +We want to deploy a simple contract named `HelloWorld` and call its `setHello` transition. First, we need to create a folder next to `src`. Let's call it `contracts`. Then we move [HelloWorld.scilla](./tests/contracts/HelloWorld.scilla) to this folder. To let zilliqa-rs scilla-to-rust code generation know about the contracts path, we need to export `CONTRACTS_PATH` environment variable. The simplest way is to create `.cargo/config.toml` file and change it like: + +```toml +[env] +CONTRACTS_PATH = {value = "contracts", relative = true} +``` +setting `relative` to `true` is crucial. Otherwise, your scilla contracts won't be transpiled to rust. Now, if you build the project using `cargo build`, your HelloWorld.scilla gets converted to rust under the hood. + +The generated code is something like this: + +```rust,ignore +impl HelloWorld { + pub async fn deploy(client: Arc , owner: ZilAddress) -> Result { + } + + pub fn address(&self) -> &ZilAddress { + } + + pub fn set_hello(&self , msg: String) -> RefMut<'_, transition_call::TransitionCall> { + } + + pub fn get_hello(&self ) -> RefMut<'_, transition_call::TransitionCall> { + } + + pub async fn welcome_msg(&self) -> Result { + } + + pub async fn owner(&self) -> Result { + } +} +``` +* The `deploy` deploys the contract to the network. Because HelloWorld.scilla contract accepts an address, `owner`, as a deployment parameter, the `deploy` function needs that too. It means you can't deploy it without providing a valid address. +* The `address` function returns the address of the deployed contract. +* `set_hello` corresponds to `setHello` transition in the contract. Again, because the transition accepts a string parameter, the `set_hello` function does too. +* `get_hello` corresponds to the `getHello` transition. +* The contract has a field named, `welcome_msg`, to get the value of this field, the `welcome_msg` function should be called. +* The contract has an immutable state named, `owner` and we passed the value during deployment. To get the value of the owner, we need to call `owner` + +#### Contract Deployment +Now it's time to deploy the contract: +```rust,ignore + let contract = HelloWorld::deploy(provider.into(), wallet.address).await?; + println!("Contract address: {:?}", contract.address()); +``` +The first parameter to `deploy` is the provider. The rest depends on the contract and how many immutable states it has. Here in HelloWorld.scilla we only have `owner`, so we just pass an address. It's type-safe, it means you can't pass an integer or even a raw string to `deploy` function as `owner`. + +Run the code: + +```bash +cargo run + +Ok(BalanceResponse { nonce: 138, balance: 899999994124734000000000 }) +Contract address: ZilAddress("0xC50C93831F6eAB4e4F011076dca6e887288cc872") +``` + +#### Getting contract states +Our contract has `owner`, an immutable state, and `welcome_msg`, a mutable one. We can get these states by calling the corresponding functions: +```rust,ignore + println!("Contract owner: {:?}", contract.owner().await?); + println!("Welcome msg: {}", contract.welcome_msg().await?); +``` + +#### Calling a transition +Our contract has a `setHello` transition. Calling this transition is not harder than calling a rust function: + +```rust,ignore + contract.set_hello("Salaam".to_string()).call().await?; +``` +Pay attention, here we need to call `call` too. That's because everything you do before `call` is like configuring the transition call. For example, you can set the amount of ZIL you want to pass to a transition before calling `call` function: +```rust,ignore + contract.transfer(receiver).amount(parse_zil("0.1")).call().await?; +``` + +OK, now if you get and print `welcome_msg` it should have the new value: +```rust,ignore + println!("Welcome msg: {}", contract.welcome_msg().await?); +``` +The final main: +```rust +use std::error::Error; + +use zilliqa_rs::{ + contract::HelloWorld, + core::CreateTransactionResponse, + middlewares::Middleware, + providers::{Http, Provider}, + signers::LocalWallet, + transaction::TransactionBuilder, + core::parse_zil, +}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + // Create the signer. + let wallet = "0xe53d1c3edaffc7a7bab5418eb836cf75819a82872b4a1a0f1c7fcf5c3e020b89" + .parse::()?; + + // Create the provider with a signer. + let provider = Provider::::try_from("http://127.0.0.1:5555")? + .with_chain_id(222) + .with_signer(wallet.clone()); + + // Call a JSON-RPC endpoint. + let balance = provider + .get_balance("0x381f4008505e940ad7681ec3468a719060caf796") + .await; + + println!("{balance:?}"); + + // Send a transaction + let receiver = LocalWallet::create_random()?; + let tx = TransactionBuilder::default() + .to_address(receiver.address.clone()) + .amount(parse_zil("2.0")?) + .gas_price(2000000000u128) + .gas_limit(50u64) + .build(); + + provider + .send_transaction_without_confirm::(tx) + .await?; + + let balance = provider.get_balance(&receiver.address).await; + println!("{balance:?}"); + + // Deploy a contract + let contract = HelloWorld::deploy(provider.into(), wallet.address).await?; + println!("Contract address: {:?}", contract.address()); + + println!("Contract owner: {:?}", contract.owner().await?); + println!("Welcome msg: {}", contract.welcome_msg().await?); + + contract.set_hello("Salaam".to_string()).call().await?; + println!("Welcome msg: {}", contract.welcome_msg().await?); + Ok(()) +} +``` + +Let's run the code: + +```bash +cargo run + +Ok(BalanceResponse { nonce: 138, balance: 899999994124734000000000 }) +Contract address: ZilAddress("0xB84De4A67E1640D9259c502AAb6751678B593185") +Contract owner: ZilAddress("0xd90f2e538CE0Df89c8273CAd3b63ec44a3c4ed82") +Welcome msg: Hello world! +Welcome msg: Salaam +``` \ No newline at end of file diff --git a/needing-organisation/newdocs/developer-portal/docs/dev/dev-upgrade-v8.md b/needing-organisation/newdocs/developer-portal/docs/dev/dev-upgrade-v8.md deleted file mode 100644 index e58545242..000000000 --- a/needing-organisation/newdocs/developer-portal/docs/dev/dev-upgrade-v8.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -id: dev-upgrade-v8 -title: v8.0.0 Upgrade Notice -keywords: - - upgrade - - v8.0.0 - - zilliqa -description: Zilliqa v8.0.0 upgrade notice ---- - ---- - -Zilliqa version `8.0.0` consists of numerous significant changes. This page summarizes some of the major changes that developers and exchanges will need to take note of. The full release note of `v8.0.0` is available [here](https://github.com/Zilliqa/Zilliqa/releases/tag/v8.0.0). - -## Upgrade Duration - -| | Date/Time | -| ------------- | ------------------------------- | -| Upgrade start | Tuesday 11th May 2021 05:00 UTC | -| Upgrade end | Tuesday 11th May 2021 11:00 UTC | - -## Core Protocol Updates - -### 1) Faster block production rate - -We have made some changes to our pBFT (Practical Byzantine Fault Tolerance) consensus and transaction dispatching and processing implementation. This allows for faster block production rate. - -| | Before `v8.0.0` | `v8.0.0` | -| ------------------------------------ | --------------- | --------------- | -| Peak final block production time | 40 seconds | 29 seconds | -| Expected Tx block count per 24 hours | ~1600 Tx blocks | ~2200 Tx blocks | - -References: - -- [`ZIP-14 - Revised pBFT Consensus`](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-14.md) -- [`Revised pBFT consensus with txn processing implementation`](https://github.com/Zilliqa/Zilliqa/pull/2216) - -### 2) Block reward adjustment - -Faster block production rate will result in an increase in inflation rate. Zilliqa `v8.0.0` will not include any adjustment to the current inflation rate. Instead, in order to preserve the current inflation rate, the reward allocated per DS epoch will be decreased from 275,000 $ZIL per DS block to 176,000 $ZIL per DS block. We will update the `COINBASE_REWARD_PER_DS`as follows: - -| | Before `v8.0.0` | `v8.0.0` | -| ------------------------ | ------------------ | ------------------ | -| `COINBASE_REWARD_PER_DS` | 275000000000000000 | 176000000000000000 | - -Please note that this change is considered an interim change. If the block production rate deviates from the expected value significantly, a new governance proposal can be introduced to adjust the value in subsequent Mainnet upgrades. - -### 3) Payment transaction gas unit increase from 1 to 50 - -As per [ZIP-18](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-18.md), which passed Zilliqa governance vote, the gas unit of payment transaction will be adjusted from 1 to 50 gas unit. We will update `NORMAL_TRAN_GAS` as follows: - -| | Before `v8.0.0` | `v8.0.0` | -| ----------------- | --------------- | -------- | -| `NORMAL_TRAN_GAS` | 1 | 50 | - -When handling payment transactions, developers and exchanges will need to call `CreateTransaction` with `gasLimit` set to at least `50` instead of `1` from `v8.0.0` onwards. As a result of this change, the minimal cost of a payment transaction fee will increase from 0.002 $ZIL to 0.1 $ZIL assuming the lowest gas price. - -:::important - -1. Smart contract transaction gas unit remains unchanged. -2. Developers and exchanges may proceed to make the `gasLimit` change above even before `v8.0.0` is deployed. Until the deployment, the payment transaction fee will continue to be 0.002 $ZIL, with or without the `gasLimit` change. - ::: - -### 4) Deprecation and removal of `GetPendingTxn` and `GetPendingTxns` API - -Since `v7.0.0`, we have released a new API [`GetTransactionStatus`](https://dev.zilliqa.com/docs/apis/api-transaction-get-transaction-status) which -tracks transaction status during the transactional lifetime. `GetPendingTxn` and `GetPendingTxns` will be removed with effect from `v8.0.0`. - -### 5) Non-interactive mode support for seed nodes - -Seed node operators will now have the option of invoking `launch.sh` in non-interactive mode. Operators will need to configure the following environment variables when using non-interactive mode. - -``` -NONINTERACTIVE="true" -IP_ADDRESS="x.y.z.a" -IP_WHITELISTING="N" #optional -``` - -:::note -If `IP_WHITELISTING` is set to `N`, the script assumes the existence of the whitelisted keypair file called "whitelistkey.txt", and further assumes "mykey.txt" as the whitelisted key if "whitelistkey.txt" does not exist. -::: - -### 6) Bug fixes around mining node joining - -We have fixed a few mining node joining issues. Special thanks to [K1-pool](https://k1pool.com/pool/zil) for reporting a few issues to us. - -## Scilla Updates - -### 1) Scilla disambiguation fix - -:::warning -To support Scilla features such as remote state read and external library, user-defined ADTs will need to be non-ambiguous starting from `v8.0.0`. This means -that when calling a contract transition that contains a user-defined ADT, the user-defined ADT will need to be prefixed with the contract address that defines -the type. -::: - -For instance, let's assume a user-defined ADT named `SSNCycleInfo` is defined in a contract deployed at address `0xb55cc7894536ac015350790550b0c03f49eb8ebd`. When using the user-defined ADT, it will need to be prefixed with the contract address (i.e., `0xb55cc7894536ac015350790550b0c03f49eb8ebd.SSNCycleInfo`). If your contract transition has user-defined ADTs, you will need to modify the way you call the transition by appending the contract address prefix. - -### 2) Introduction of new Scilla feature - remote state read - -With effect from `v8.0.0`, a Scilla contract will be able to read the state of another contract by using the remote state read feature. - -### 3) Smart contract parameters change - -To support larger dApps and the need for more contract calls, we will adjust the following constant values - -| | Before `v8.0.0` | `v8.0.0` | -| ------------------------ | --------------- | -------- | -| `MAX_CONTRACT_EDGES` | 10 | 20 | -| `MAX_CODE_SIZE_IN_BYTES` | 51200 | 76800 | - -## Staking Updates - -As part of the `v8.0.0` rollout, the current Staking Phase 1.0 feature will be updated to the new Staking Phase 1.1. - -### 1) Staking contract migration - -Due to the Scilla disambiguation fix, we will be freezing the existing staking contract shortly before the `v8.0.0` network upgrade commences. The contract will be frozen permanently, and the contract states and funds will be migrated to a new contract. - -:::important - -1. Migration to the new contract is expected to take up to 7 days -2. During the migration, the existing contract will be paused and no staking activities such as stake withdrawal can be conducted -3. Rewards for staking will be retroactively distributed after the staking contract migration -4. For wallets, explorers and exchanges, please note that the contract address will be changed and you will need to update it on your end. We will provide the address once we have deployed the Mainnet contract -5. We will make Staking Phase 1.1 available on the public testnet shortly to help you prepare for the staking contract migration -6. For community members, please kindly wait for your wallet provider to update to the new staking contract if you encounter any staking issue - ::: - -### 2) Switching of staking wallet - -The new staking contract will also have a new `swap delegate` feature which allows a delegator to swap his wallet address with another address without incurring any unbonding period or rewards penalty. - -### 3) Staking parameter adjustments - -Due to faster block production rate after `v8.0.0`, we will be adjusting the following parameters to bring rewarding and unbonding timing back to parity. - -| Parameters | New value | -| ----------------- | ------------------------------ | -| Rewards per cycle | 1,548,800 $ZIL | -| Reward cycle | 2,200 final blocks (~1 day) | -| Unbonding period | 30,800 Final blocks (~2 weeks) | - -Please note that this change is considered an interim change. If the block production rate deviates from the expected value significantly, a new governance proposal can be introduced to adjust the staking parameter accordingly. - -### 4) $gZIL ending period - -`$gZIL` minting period has been set to end on block `1483713`. This value cannot be changed. With the changes to block time in `v8.0.0`, the ending wall clock may vary as a result. diff --git a/needing-organisation/newdocs/developer-portal/docs/staking/phase1/staking-phase11-notice.md b/needing-organisation/newdocs/developer-portal/docs/staking/phase1/staking-phase11-notice.md index 00cb2b38e..062c41129 100644 --- a/needing-organisation/newdocs/developer-portal/docs/staking/phase1/staking-phase11-notice.md +++ b/needing-organisation/newdocs/developer-portal/docs/staking/phase1/staking-phase11-notice.md @@ -89,5 +89,4 @@ For more information, please refer to [Transfer of stake deposit between account ## References - [Phase 1.1 staking contracts](https://github.com/Zilliqa/staking-contract) -- [ZIP-19 - Seed Node Staking Mechanism: Phase 1.1](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-19.md) -- [Zilliqa Mainnet V8 Upgrade Notice](../../dev/dev-upgrade-v8) +- [ZIP-19 - Seed Node Staking Mechanism: Phase 1.1](https://github.com/Zilliqa/ZIP/blob/master/zips/zip-19.md) \ No newline at end of file diff --git a/needing-organisation/newdocs/developer-portal/sidebars.js b/needing-organisation/newdocs/developer-portal/sidebars.js index 44922b99f..b44b119c3 100644 --- a/needing-organisation/newdocs/developer-portal/sidebars.js +++ b/needing-organisation/newdocs/developer-portal/sidebars.js @@ -75,7 +75,6 @@ module.exports = { "dev/dev-started-helloworld", "dev/dev-started-env", ], - "Upgrade Notices": ["dev/dev-upgrade-v8"], "User Key Management": [ "dev/dev-keys-introduction", @@ -90,6 +89,7 @@ module.exports = { { SDKs: [ "dev/dev-tools-zilliqajs", + "dev/dev-tools-zilliqars", "dev/dev-tools-gozilliqa", "dev/dev-tools-java", "dev/dev-tools-sdks", diff --git a/package.json b/package.json index f8e18de8f..1df25c326 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "clsx": "^1.2.1", "cross-fetch": "2.2.5", "crypto-browserify": "^3.12.0", + "crypto-js": "^4.2.0", "csstype": "^3.1.1", "cz-conventional-changelog": "^3.3.0", "d3": "^7.6.1", @@ -128,8 +129,7 @@ "rollup-plugin-typescript2": "0.17.1", "sanitize-html": "^2.7.3", "scrypt-js": "^3.0.1", - "semver": "^7.3.8", - "sodium-randbytes": "0.14.0", + "semver": "^7.5.2", "source-map": "^0.7.4", "source-map-support": "^0.5.21", "stream-browserify": "^3.0.0", @@ -156,6 +156,7 @@ "worker-plugin": "^5.0.1" }, "devDependencies": { + "@types/crypto-js": "^4.2.1", "@types/long": "4.0.2", "@types/node": "18.7.18", "@types/protobufjs": "6.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 10f0d1cdf..883c2ebe1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,364 +1,1968 @@ -lockfileVersion: 5.4 - -packageExtensionsChecksum: 9dc1d9a9f36cc677d4731dfbd58b6aa1 - -specifiers: - '@apollo/client': ^3.7.1 - '@docusaurus/core': ^2.2.0 - '@docusaurus/preset-classic': ^2.2.0 - '@docusaurus/theme-common': ^2.2.0 - '@fortawesome/fontawesome-svg-core': ^6.2.0 - '@fortawesome/free-brands-svg-icons': ^6.2.0 - '@fortawesome/free-regular-svg-icons': ^6.2.0 - '@fortawesome/free-solid-svg-icons': ^6.2.0 - '@fortawesome/react-fontawesome': ^0.2.0 - '@jest/expect': ^29.3.1 - '@jest/expect-utils': ^29.3.1 - '@mdx-js/react': ^2.1.5 - '@svgr/webpack': 5.5.0 - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.4.0 - '@testing-library/user-event': 13.5.0 - '@types/bip39': ^2.4.0 - '@types/bn.js': ^5.1.0 - '@types/camelcase': ^4.1.0 - '@types/d3': ^7.4.0 - '@types/elliptic': ^6.4.14 - '@types/enzyme': ^3.10.12 - '@types/hdkey': ^0.7.0 - '@types/jest': ^26.0.24 - '@types/long': ^4.0.0 - '@types/node': ^12.20.55 - '@types/protobufjs': 6.0.0 - '@types/react': ^18.0.25 - '@types/react-beautiful-dnd': ^13.1.2 - '@types/react-custom-scroll': ^4.3.2 - '@types/react-dom': ^18.0.8 - '@types/react-router-dom': ^5.3.3 - '@types/react-table': ^7.7.12 - '@types/react-test-renderer': ^18.0.0 - '@types/reactstrap': ^8.0.1 - '@types/sanitize-html': ^2.6.2 - '@types/uuid': 8.3.1 - '@types/websocket': 1.0.4 - '@typescript-eslint/eslint-plugin': ^4.33.0 - '@typescript-eslint/parser': ^4.33.0 - ace-builds: ^1.13.0 - aes-js: ^3.1.1 - ansi-styles: ^6.2.1 - apollo-boost: ^0.4.9 - assert: ^2.0.0 - bip39: ^2.5.0 - bn.js: ^4.11.8 - bootstrap: ^4.5.0 - buffer: ^6.0.3 - buffer-from: ^1.1.2 - camelcase: ^5.0.0 - classnames: ^2.3.2 - clsx: ^1.2.1 - cross-fetch: 2.2.5 - crypto-browserify: ^3.12.0 - csstype: ^3.1.1 - cz-conventional-changelog: ^3.3.0 - d3: ^7.6.1 - dayjs: ^1.11.6 - elliptic: ^6.5.0 - enzyme: ^3.11.0 - enzyme-to-json: ^3.6.2 - eslint: ^7.32.0 - eslint-plugin-react: ^7.31.10 - events: ^3.3.0 - expect: ^29.3.1 - graphql: ^16.6.0 - hash.js: ^1.1.5 - hdkey: ^1.1.0 - hmac-drbg: ^1.0.1 - https-browserify: ^1.0.0 - jest: '=26.6.0' - jest-diff: ^29.3.1 - jest-environment-jsdom: ^29.3.1 - jest-fetch-mock: 3.0.3 - jest-get-type: ^29.2.0 - jest-matcher-utils: ^29.3.1 - jest-watch-typeahead: ^2.2.0 - leader-line: ^1.0.7 - leader-line-types: 1.0.5-2 - long: ^4.0.0 - mitt: ^1.1.3 - mock-socket: ^9.1.5 - moment: ^2.29.4 - next: 13.0.5 - node-fetch: ^3.2.10 - numbro: ^2.3.6 - os-browserify: ^0.3.0 - pbkdf2: ^3.0.16 - pretty-format: ^29.3.1 - prism-react-renderer: ^1.3.5 - process: ^0.11.10 - protobufjs: 6.11.3 - rc-steps: ^3.3.1 - rc-switch: ^4.0.0 - react: 18.2.0 - react-ace: ^10.1.0 - react-apollo: ^3.1.5 - react-app-polyfill: ^2.0.0 - react-app-rewired: ^2.2.1 - react-beautiful-dnd: ^13.1.1 - react-bootstrap: ^1.6.6 - react-contenteditable: ^3.3.6 - react-custom-scroll: ^4.4.0 - react-dev-utils: ^11.0.3 - react-dom: 18.2.0 - react-dropzone: ^14.2.3 - react-fontawesome: ^1.7.1 - react-google-recaptcha: ^1.0.5 - react-hooks-worker: ^1.0.0 - react-icons: ^3.3.0 - react-jazzicon: ^0.1.3 - react-refresh: ^0.8.3 - react-router: ^6.4.3 - react-router-dom: ^5.3.4 - react-scripts: ^5.0.1 - react-table: ^7.8.0 - react-test-renderer: ^18.2.0 - reactstrap: ^8.0.0 - rollup: 2.3.0 - rollup-plugin-alias: ^1.4.0 - rollup-plugin-commonjs: ^9.2.0 - rollup-plugin-json: ^3.1.0 - rollup-plugin-node-globals: ^1.4.0 - rollup-plugin-node-resolve: ^3.4.0 - rollup-plugin-typescript2: 0.17.1 - sanitize-html: ^2.7.3 - scrypt-js: ^3.0.1 - semver: ^7.3.8 - sodium-randbytes: 0.14.0 - source-map: ^0.7.4 - source-map-support: ^0.5.21 - stream-browserify: ^3.0.0 - stream-http: ^3.2.0 - string_decoder: ^1.3.0 - style-loader: ^1.0.0 - styled-components: ^4.3.2 - tailwindcss: ^3.1.8 - terser: '>=5.7.1 <5.15.0' - ts-jest: ^27.1.3 - ts-loader: 8.0.4 - tslib: 2.3.1 - typescript: ^4.8.4 - url: ^0.11.0 - utility-types: ^2.1.0 - uuid: ^8.3.2 - vuepress: ^1.5.3 - web-vitals: 2.1.4 - webpack: ^5.0.0 - webpack-cli: ^3.3.12 - webpack-command: ^0.4.1 - websocket: ^1.0.28 - whatwg-fetch: ^3.0.0 - worker-plugin: ^5.0.1 - -dependencies: - '@apollo/client': 3.7.10_gdcq4dv6opitr3wbfwyjmanyra - '@docusaurus/core': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/preset-classic': 2.3.1_jqw6svf6evdbvlcn7j55govj5e - '@docusaurus/theme-common': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@fortawesome/fontawesome-svg-core': 6.3.0 - '@fortawesome/free-brands-svg-icons': 6.3.0 - '@fortawesome/free-regular-svg-icons': 6.3.0 - '@fortawesome/free-solid-svg-icons': 6.3.0 - '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@jest/expect': 29.5.0 - '@jest/expect-utils': 29.5.0 - '@mdx-js/react': 2.3.0_react@18.2.0 - '@svgr/webpack': 5.5.0 - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y - '@testing-library/user-event': 13.5.0 - '@types/bip39': 2.4.2 - '@types/bn.js': 5.1.1 - '@types/camelcase': 4.1.0 - '@types/d3': 7.4.0 - '@types/elliptic': 6.4.14 - '@types/enzyme': 3.10.12 - '@types/hdkey': 0.7.1 - '@types/jest': 26.0.24 - '@types/long': 4.0.2 - '@types/node': 12.20.55 - '@types/react': 18.0.28 - '@types/react-beautiful-dnd': 13.1.3 - '@types/react-custom-scroll': 4.3.2 - '@types/react-dom': 18.0.11 - '@types/react-router-dom': 5.3.3 - '@types/react-table': 7.7.14 - '@types/react-test-renderer': 18.0.0 - '@types/reactstrap': 8.7.2_biqbaboplfbrettd7655fr4n2y - '@types/sanitize-html': 2.8.1 - '@types/uuid': 8.3.1 - '@types/websocket': 1.0.4 - '@typescript-eslint/eslint-plugin': 4.33.0_s2qqtxhzmb7vugvfoyripfgp7i - '@typescript-eslint/parser': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe - ace-builds: 1.15.3 - aes-js: 3.1.2 - ansi-styles: 6.2.1 - apollo-boost: 0.4.9_graphql@16.6.0 - assert: 2.0.0 - bip39: 2.6.0 - bn.js: 4.12.0 - bootstrap: 4.6.2 - buffer: 6.0.3 - buffer-from: 1.1.2 - camelcase: 5.3.1 - classnames: 2.3.2 - clsx: 1.2.1 - cross-fetch: 2.2.5 - crypto-browserify: 3.12.0 - csstype: 3.1.1 - cz-conventional-changelog: 3.3.0 - d3: 7.8.2 - dayjs: 1.11.7 - elliptic: 6.5.4 - enzyme: 3.11.0 - enzyme-to-json: 3.6.2_enzyme@3.11.0 - eslint: 7.32.0 - eslint-plugin-react: 7.32.2_eslint@7.32.0 - events: 3.3.0 - expect: 29.5.0 - graphql: 16.6.0 - hash.js: 1.1.7 - hdkey: 1.1.2 - hmac-drbg: 1.0.1 - https-browserify: 1.0.0 - jest: 26.6.0 - jest-diff: 29.5.0 - jest-environment-jsdom: 29.5.0 - jest-fetch-mock: 3.0.3 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-watch-typeahead: 2.2.2_jest@26.6.0 - leader-line: 1.0.7 - leader-line-types: 1.0.5-2 - long: 4.0.0 - mitt: 1.2.0 - mock-socket: 9.2.1 - moment: 2.29.4 - next: 13.0.5_biqbaboplfbrettd7655fr4n2y - node-fetch: 3.3.0 - numbro: 2.3.6 - os-browserify: 0.3.0 - pbkdf2: 3.1.2 - pretty-format: 29.5.0 - prism-react-renderer: 1.3.5_react@18.2.0 - process: 0.11.10 - protobufjs: 6.11.3 - rc-steps: 3.6.0 - rc-switch: 4.0.0_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-ace: 10.1.0_biqbaboplfbrettd7655fr4n2y - react-apollo: 3.1.5_4hkbjrep5ureiqkcwz4kv7433y - react-app-polyfill: 2.0.0 - react-app-rewired: 2.2.1_react-scripts@5.0.1 - react-beautiful-dnd: 13.1.1_biqbaboplfbrettd7655fr4n2y - react-bootstrap: 1.6.6_biqbaboplfbrettd7655fr4n2y - react-contenteditable: 3.3.7_react@18.2.0 - react-custom-scroll: 4.4.0_biqbaboplfbrettd7655fr4n2y - react-dev-utils: 11.0.4_e7unsjmvxtn2mdejqwafrsmwjq - react-dom: 18.2.0_react@18.2.0 - react-dropzone: 14.2.3_react@18.2.0 - react-fontawesome: 1.7.1_react@18.2.0 - react-google-recaptcha: 1.1.0_react@18.2.0 - react-hooks-worker: 1.0.4_react@18.2.0 - react-icons: 3.11.0_react@18.2.0 - react-jazzicon: 0.1.3_react@18.2.0 - react-refresh: 0.8.3 - react-router: 6.8.2_react@18.2.0 - react-router-dom: 5.3.4_react@18.2.0 - react-scripts: 5.0.1_ib5tnk5fgxazch2pplhdyc3rlm - react-table: 7.8.0_react@18.2.0 - react-test-renderer: 18.2.0_react@18.2.0 - reactstrap: 8.10.1_biqbaboplfbrettd7655fr4n2y - rollup: 2.3.0 - rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 9.3.4_rollup@2.3.0 - rollup-plugin-json: 3.1.0 - rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 3.4.0 - rollup-plugin-typescript2: 0.17.1_hv6j66ztj3ffqlhbyi5jzfu7gi - sanitize-html: 2.10.0 - scrypt-js: 3.0.1 - semver: 7.3.8 - sodium-randbytes: 0.14.0 - source-map: 0.7.4 - source-map-support: 0.5.21 - stream-browserify: 3.0.0 - stream-http: 3.2.0 - string_decoder: 1.3.0 - style-loader: 1.3.0_webpack@5.75.0 - styled-components: 4.4.1_biqbaboplfbrettd7655fr4n2y - tailwindcss: 3.2.7 - terser: 5.14.2 - ts-jest: 27.1.5_5ykj2ace4gydtpy63bx5wlmfey - ts-loader: 8.0.4_typescript@4.9.5 - tslib: 2.3.1 - typescript: 4.9.5 - url: 0.11.0 - utility-types: 2.1.0 - uuid: 8.3.2 - vuepress: 1.9.9_e322xq5kuxkpabmokoacnekxsq - web-vitals: 2.1.4 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-cli: 3.3.12_webpack@5.75.0 - webpack-command: 0.4.2_webpack@5.75.0 - websocket: 1.0.34 - whatwg-fetch: 3.6.2 - worker-plugin: 5.0.1_webpack@5.75.0 - -devDependencies: - '@types/protobufjs': 6.0.0 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +packageExtensionsChecksum: b400ff0a8142e3d62da00aca2c1f88eb + +importers: + + .: + dependencies: + '@apollo/client': + specifier: ^3.7.1 + version: 3.7.10(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': + specifier: ^2.2.0 + version: 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/preset-classic': + specifier: ^2.2.0 + version: 2.3.1(@algolia/client-search@4.17.1)(@types/react@18.0.28)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-common': + specifier: ^2.2.0 + version: 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@fortawesome/fontawesome-svg-core': + specifier: ^6.2.0 + version: 6.3.0 + '@fortawesome/free-brands-svg-icons': + specifier: ^6.2.0 + version: 6.3.0 + '@fortawesome/free-regular-svg-icons': + specifier: ^6.2.0 + version: 6.3.0 + '@fortawesome/free-solid-svg-icons': + specifier: ^6.2.0 + version: 6.3.0 + '@fortawesome/react-fontawesome': + specifier: ^0.2.0 + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.3.0)(react@18.2.0) + '@jest/expect': + specifier: ^29.3.1 + version: 29.5.0 + '@jest/expect-utils': + specifier: ^29.3.1 + version: 29.5.0 + '@mdx-js/react': + specifier: ^2.1.5 + version: 2.3.0(react@18.2.0) + '@svgr/webpack': + specifier: 5.5.0 + version: 5.5.0 + '@testing-library/jest-dom': + specifier: 5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: 13.4.0 + version: 13.4.0(react-dom@18.2.0)(react@18.2.0) + '@testing-library/user-event': + specifier: 13.5.0 + version: 13.5.0(@testing-library/dom@9.3.0) + '@types/bip39': + specifier: ^2.4.0 + version: 2.4.2 + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.1 + '@types/camelcase': + specifier: ^4.1.0 + version: 4.1.0 + '@types/d3': + specifier: ^7.4.0 + version: 7.4.0 + '@types/elliptic': + specifier: ^6.4.14 + version: 6.4.14 + '@types/enzyme': + specifier: ^3.10.12 + version: 3.10.12 + '@types/hdkey': + specifier: ^0.7.0 + version: 0.7.1 + '@types/jest': + specifier: ^26.0.24 + version: 26.0.24 + '@types/long': + specifier: ^4.0.0 + version: 4.0.2 + '@types/node': + specifier: ^12.20.55 + version: 12.20.55 + '@types/react': + specifier: ^18.0.25 + version: 18.0.28 + '@types/react-beautiful-dnd': + specifier: ^13.1.2 + version: 13.1.3 + '@types/react-custom-scroll': + specifier: ^4.3.2 + version: 4.3.2 + '@types/react-dom': + specifier: ^18.0.8 + version: 18.0.11 + '@types/react-router-dom': + specifier: ^5.3.3 + version: 5.3.3 + '@types/react-table': + specifier: ^7.7.12 + version: 7.7.14 + '@types/react-test-renderer': + specifier: ^18.0.0 + version: 18.0.0 + '@types/reactstrap': + specifier: ^8.0.1 + version: 8.7.2(react-dom@18.2.0)(react@18.2.0) + '@types/sanitize-html': + specifier: ^2.6.2 + version: 2.8.1 + '@types/uuid': + specifier: 8.3.1 + version: 8.3.1 + '@types/websocket': + specifier: 1.0.4 + version: 1.0.4 + '@typescript-eslint/eslint-plugin': + specifier: ^4.33.0 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.33.0 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + ace-builds: + specifier: ^1.13.0 + version: 1.15.3 + aes-js: + specifier: ^3.1.1 + version: 3.1.2 + ansi-styles: + specifier: ^6.2.1 + version: 6.2.1 + apollo-boost: + specifier: ^0.4.9 + version: 0.4.9(graphql@16.6.0) + assert: + specifier: ^2.0.0 + version: 2.0.0 + bip39: + specifier: ^2.5.0 + version: 2.6.0 + bn.js: + specifier: ^4.11.8 + version: 4.12.0 + bootstrap: + specifier: ^4.5.0 + version: 4.6.2(jquery@3.7.0)(popper.js@1.16.1) + buffer: + specifier: ^6.0.3 + version: 6.0.3 + buffer-from: + specifier: ^1.1.2 + version: 1.1.2 + camelcase: + specifier: ^5.0.0 + version: 5.3.1 + classnames: + specifier: ^2.3.2 + version: 2.3.2 + clsx: + specifier: ^1.2.1 + version: 1.2.1 + cross-fetch: + specifier: 2.2.5 + version: 2.2.5 + crypto-browserify: + specifier: ^3.12.0 + version: 3.12.0 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + csstype: + specifier: ^3.1.1 + version: 3.1.1 + cz-conventional-changelog: + specifier: ^3.3.0 + version: 3.3.0 + d3: + specifier: ^7.6.1 + version: 7.8.2 + dayjs: + specifier: ^1.11.6 + version: 1.11.7 + elliptic: + specifier: ^6.5.0 + version: 6.5.4 + enzyme: + specifier: ^3.11.0 + version: 3.11.0 + enzyme-to-json: + specifier: ^3.6.2 + version: 3.6.2(enzyme@3.11.0) + eslint: + specifier: ^7.32.0 + version: 7.32.0 + eslint-plugin-react: + specifier: ^7.31.10 + version: 7.32.2(eslint@7.32.0) + events: + specifier: ^3.3.0 + version: 3.3.0 + expect: + specifier: ^29.3.1 + version: 29.5.0 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + hash.js: + specifier: ^1.1.5 + version: 1.1.7 + hdkey: + specifier: ^1.1.0 + version: 1.1.2 + hmac-drbg: + specifier: ^1.0.1 + version: 1.0.1 + https-browserify: + specifier: ^1.0.0 + version: 1.0.0 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@10.9.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-environment-jsdom: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + jest-get-type: + specifier: ^29.2.0 + version: 29.4.3 + jest-matcher-utils: + specifier: ^29.3.1 + version: 29.5.0 + jest-watch-typeahead: + specifier: ^2.2.0 + version: 2.2.2(jest@26.6.0) + leader-line: + specifier: ^1.0.7 + version: 1.0.7 + leader-line-types: + specifier: 1.0.5-2 + version: 1.0.5-2 + long: + specifier: ^4.0.0 + version: 4.0.0 + mitt: + specifier: ^1.1.3 + version: 1.2.0 + mock-socket: + specifier: ^9.1.5 + version: 9.2.1 + moment: + specifier: ^2.29.4 + version: 2.29.4 + next: + specifier: 13.0.5 + version: 13.0.5(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) + node-fetch: + specifier: ^3.2.10 + version: 3.3.0 + numbro: + specifier: ^2.3.6 + version: 2.3.6 + os-browserify: + specifier: ^0.3.0 + version: 0.3.0 + pbkdf2: + specifier: ^3.0.16 + version: 3.1.2 + pretty-format: + specifier: ^29.3.1 + version: 29.5.0 + prism-react-renderer: + specifier: ^1.3.5 + version: 1.3.5(react@18.2.0) + process: + specifier: ^0.11.10 + version: 0.11.10 + protobufjs: + specifier: 6.11.3 + version: 6.11.3 + rc-steps: + specifier: ^3.3.1 + version: 3.6.0 + rc-switch: + specifier: ^4.0.0 + version: 4.0.0(react-dom@18.2.0)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-ace: + specifier: ^10.1.0 + version: 10.1.0(react-dom@18.2.0)(react@18.2.0) + react-apollo: + specifier: ^3.1.5 + version: 3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + react-app-polyfill: + specifier: ^2.0.0 + version: 2.0.0 + react-app-rewired: + specifier: ^2.2.1 + version: 2.2.1(react-scripts@5.0.1) + react-beautiful-dnd: + specifier: ^13.1.1 + version: 13.1.1(react-dom@18.2.0)(react@18.2.0) + react-bootstrap: + specifier: ^1.6.6 + version: 1.6.6(react-dom@18.2.0)(react@18.2.0) + react-contenteditable: + specifier: ^3.3.6 + version: 3.3.7(react@18.2.0) + react-custom-scroll: + specifier: ^4.4.0 + version: 4.4.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + react-dev-utils: + specifier: ^11.0.3 + version: 11.0.4(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0) + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@18.2.0) + react-fontawesome: + specifier: ^1.7.1 + version: 1.7.1(react@18.2.0) + react-google-recaptcha: + specifier: ^1.0.5 + version: 1.1.0(react@18.2.0) + react-hooks-worker: + specifier: ^1.0.0 + version: 1.0.4(react@18.2.0) + react-icons: + specifier: ^3.3.0 + version: 3.11.0(react@18.2.0) + react-jazzicon: + specifier: ^0.1.3 + version: 0.1.3(react@18.2.0) + react-refresh: + specifier: ^0.8.3 + version: 0.8.3 + react-router: + specifier: ^6.4.3 + version: 6.8.2(react@18.2.0) + react-router-dom: + specifier: ^5.3.4 + version: 5.3.4(react@18.2.0) + react-scripts: + specifier: ^5.0.1 + version: 5.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(esbuild@0.14.7)(eslint@7.32.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5)(webpack-cli@3.3.12) + react-table: + specifier: ^7.8.0 + version: 7.8.0(react@18.2.0) + react-test-renderer: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + reactstrap: + specifier: ^8.0.0 + version: 8.10.1(react-dom@18.2.0)(react@18.2.0) + rollup: + specifier: 2.3.0 + version: 2.3.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.3.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-typescript2: + specifier: 0.17.1 + version: 0.17.1(rollup@2.3.0)(typescript@4.9.5) + sanitize-html: + specifier: ^2.7.3 + version: 2.10.0 + scrypt-js: + specifier: ^3.0.1 + version: 3.0.1 + semver: + specifier: ^7.5.2 + version: 7.5.2 + source-map: + specifier: ^0.7.4 + version: 0.7.4 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + stream-browserify: + specifier: ^3.0.0 + version: 3.0.0 + stream-http: + specifier: ^3.2.0 + version: 3.2.0 + string_decoder: + specifier: ^1.3.0 + version: 1.3.0 + style-loader: + specifier: ^1.0.0 + version: 1.3.0(webpack@5.76.0) + styled-components: + specifier: ^4.3.2 + version: 4.4.1(react-dom@18.2.0)(react@18.2.0) + tailwindcss: + specifier: ^3.1.8 + version: 3.2.7(postcss@8.4.23)(ts-node@10.9.1) + terser: + specifier: '>=5.7.1 <5.15.0' + version: 5.14.2 + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@26.0.24)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + tslib: + specifier: 2.3.1 + version: 2.3.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + url: + specifier: ^0.11.0 + version: 0.11.0 + utility-types: + specifier: ^2.1.0 + version: 2.1.0 + uuid: + specifier: ^8.3.2 + version: 8.3.2 + vuepress: + specifier: ^1.5.3 + version: 1.9.9(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12)(webpack-command@0.4.2) + web-vitals: + specifier: 2.1.4 + version: 2.1.4 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-cli: + specifier: ^3.3.12 + version: 3.3.12(webpack@5.76.0) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + websocket: + specifier: ^1.0.28 + version: 1.0.34 + whatwg-fetch: + specifier: ^3.0.0 + version: 3.6.2 + worker-plugin: + specifier: ^5.0.1 + version: 5.0.1(webpack@5.76.0) + devDependencies: + '@types/crypto-js': + specifier: ^4.2.1 + version: 4.2.1 + '@types/protobufjs': + specifier: 6.0.0 + version: 6.0.0 + babel-eslint: + specifier: ^10.1.0 + version: 10.1.0(eslint@7.32.0) + eslint-plugin-vue: + specifier: ^5.0.0 + version: 5.0.0(eslint@7.32.0) + + contracts/experimental/ERC20ProxyForZRC2: + dependencies: + '@openzeppelin/contracts': + specifier: ^5.0.1 + version: 5.0.1 + devDependencies: + '@nomicfoundation/hardhat-chai-matchers': + specifier: ^2.0.2 + version: 2.0.3(@nomicfoundation/hardhat-ethers@3.0.5)(chai@4.4.1)(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.5 + version: 3.0.5(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-network-helpers': + specifier: ^1.0.9 + version: 1.0.10(hardhat@2.19.4) + '@nomicfoundation/hardhat-toolbox': + specifier: ^4.0.0 + version: 4.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.3)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomicfoundation/hardhat-network-helpers@1.0.10)(@nomicfoundation/hardhat-verify@2.0.3)(@typechain/ethers-v6@0.5.1)(@typechain/hardhat@9.1.0)(@types/chai@4.3.11)(@types/mocha@10.0.6)(@types/node@20.9.0)(chai@4.4.1)(ethers@6.10.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.19.4)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.2)(typescript@5.3.3) + '@nomicfoundation/hardhat-verify': + specifier: ^2.0.1 + version: 2.0.3(hardhat@2.19.4) + '@typechain/ethers-v6': + specifier: ^0.5.1 + version: 0.5.1(ethers@6.10.0)(typechain@8.3.2)(typescript@5.3.3) + '@typechain/hardhat': + specifier: ^9.1.0 + version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.10.0)(hardhat@2.19.4)(typechain@8.3.2) + '@types/chai': + specifier: ^4.3.10 + version: 4.3.11 + '@types/mocha': + specifier: '>=10.0.4' + version: 10.0.6 + '@types/node': + specifier: '>=20.9.0' + version: 20.9.0 + chai: + specifier: ^4.3.10 + version: 4.4.1 + dotenv: + specifier: ^16.4.1 + version: 16.4.1 + ethers: + specifier: ^6.8.1 + version: 6.10.0 + hardhat: + specifier: ^2.19.4 + version: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + hardhat-gas-reporter: + specifier: ^1.0.9 + version: 1.0.9(hardhat@2.19.4) + solidity-coverage: + specifier: ^0.8.5 + version: 0.8.5(hardhat@2.19.4) + ts-node: + specifier: '>=10.9.1' + version: 10.9.1(@types/node@20.9.0)(typescript@5.3.3) + typechain: + specifier: ^8.3.2 + version: 8.3.2(typescript@5.3.3) + typescript: + specifier: '>=5.2.2' + version: 5.3.3 + + examples/zilliqa-js/latest-block: + dependencies: + '@zilliqa-js/account': + specifier: workspace:* + version: link:../../../zilliqa/js/account + '@zilliqa-js/blockchain': + specifier: workspace:* + version: link:../../../zilliqa/js/blockchain + '@zilliqa-js/contract': + specifier: workspace:* + version: link:../../../zilliqa/js/contract + '@zilliqa-js/core': + specifier: workspace:* + version: link:../../../zilliqa/js/core + '@zilliqa-js/crypto': + specifier: workspace:* + version: link:../../../zilliqa/js/crypto + '@zilliqa-js/util': + specifier: workspace:* + version: link:../../../zilliqa/js/util + '@zilliqa-js/zilliqa': + specifier: workspace:* + version: link:../../../zilliqa/js/zilliqa + devDependencies: + '@types/node': + specifier: ^20.2.4 + version: 20.2.4 + typescript: + specifier: ^5.0.4 + version: 5.0.4 + + examples/zilliqa-js/react-zilliqa-js: + dependencies: + '@testing-library/jest-dom': + specifier: ^5.14.1 + version: 5.16.5 + '@testing-library/react': + specifier: ^13.0.0 + version: 13.4.0(react-dom@18.2.0)(react@18.2.0) + '@testing-library/user-event': + specifier: ^13.2.1 + version: 13.5.0(@testing-library/dom@9.3.0) + '@types/jest': + specifier: ^27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^16.7.13 + version: 16.7.13 + '@types/react': + specifier: ^18.0.0 + version: 18.0.28 + '@types/react-dom': + specifier: ^18.0.0 + version: 18.0.11 + '@zilliqa-js/account': + specifier: workspace:* + version: link:../../../zilliqa/js/account + '@zilliqa-js/blockchain': + specifier: workspace:* + version: link:../../../zilliqa/js/blockchain + '@zilliqa-js/contract': + specifier: workspace:* + version: link:../../../zilliqa/js/contract + '@zilliqa-js/core': + specifier: workspace:* + version: link:../../../zilliqa/js/core + '@zilliqa-js/crypto': + specifier: workspace:* + version: link:../../../zilliqa/js/crypto + '@zilliqa-js/util': + specifier: workspace:* + version: link:../../../zilliqa/js/util + '@zilliqa-js/zilliqa': + specifier: workspace:* + version: link:../../../zilliqa/js/zilliqa + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-scripts: + specifier: 5.0.1 + version: 5.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(esbuild@0.14.7)(eslint@8.41.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5)(webpack-cli@3.3.12) + typescript: + specifier: ^4.4.2 + version: 4.9.5 + web-vitals: + specifier: ^2.1.0 + version: 2.1.4 + + products/bridge/smart-contracts: + dependencies: + '@openzeppelin/contracts': + specifier: ^5.0.1 + version: 5.0.1 + '@openzeppelin/contracts-upgradeable': + specifier: ^5.0.1 + version: 5.0.1(@openzeppelin/contracts@5.0.1) + dotenv: + specifier: ^16.3.1 + version: 16.4.1 + devDependencies: + '@nomicfoundation/hardhat-chai-matchers': + specifier: ^2.0.2 + version: 2.0.3(@nomicfoundation/hardhat-ethers@3.0.5)(chai@4.4.1)(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.5 + version: 3.0.5(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-foundry': + specifier: ^1.1.1 + version: 1.1.1(hardhat@2.19.4) + '@nomicfoundation/hardhat-network-helpers': + specifier: ^1.0.9 + version: 1.0.10(hardhat@2.19.4) + '@nomicfoundation/hardhat-toolbox': + specifier: ^4.0.0 + version: 4.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.3)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomicfoundation/hardhat-network-helpers@1.0.10)(@nomicfoundation/hardhat-verify@2.0.3)(@typechain/ethers-v6@0.5.1)(@typechain/hardhat@9.1.0)(@types/chai@4.3.11)(@types/mocha@10.0.6)(@types/node@20.9.0)(chai@4.4.1)(ethers@6.10.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.19.4)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.2)(typescript@5.3.3) + '@nomicfoundation/hardhat-verify': + specifier: ^2.0.1 + version: 2.0.3(hardhat@2.19.4) + '@openzeppelin/hardhat-upgrades': + specifier: ^3.0.2 + version: 3.0.2(@nomicfoundation/hardhat-ethers@3.0.5)(@nomicfoundation/hardhat-verify@2.0.3)(ethers@6.10.0)(hardhat@2.19.4) + '@typechain/ethers-v6': + specifier: ^0.5.1 + version: 0.5.1(ethers@6.10.0)(typechain@8.3.2)(typescript@5.3.3) + '@typechain/hardhat': + specifier: ^9.1.0 + version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.10.0)(hardhat@2.19.4)(typechain@8.3.2) + '@types/chai': + specifier: ^4.3.10 + version: 4.3.11 + '@types/mocha': + specifier: '>=10.0.4' + version: 10.0.6 + '@types/node': + specifier: '>=20.9.0' + version: 20.9.0 + chai: + specifier: ^4.3.10 + version: 4.4.1 + concurrently: + specifier: ^8.2.2 + version: 8.2.2 + ethers: + specifier: ^6.8.1 + version: 6.10.0 + hardhat: + specifier: ^2.19.1 + version: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + hardhat-gas-reporter: + specifier: ^1.0.9 + version: 1.0.9(hardhat@2.19.4) + solidity-coverage: + specifier: ^0.8.5 + version: 0.8.5(hardhat@2.19.4) + ts-node: + specifier: '>=10.9.1' + version: 10.9.1(@types/node@20.9.0)(typescript@5.3.3) + typechain: + specifier: ^8.3.2 + version: 8.3.2(typescript@5.3.3) + typescript: + specifier: '>=5.2.2' + version: 5.3.3 + + zilliqa/js/account: + dependencies: + '@zilliqa-js/core': + specifier: workspace:* + version: link:../core + '@zilliqa-js/crypto': + specifier: workspace:* + version: link:../crypto + '@zilliqa-js/proto': + specifier: workspace:* + version: link:../proto + '@zilliqa-js/util': + specifier: workspace:* + version: link:../util + bip39: + specifier: ^2.5.0 + version: 2.6.0 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + hash.js: + specifier: ^1.1.7 + version: 1.1.7 + hdkey: + specifier: ^1.1.0 + version: 1.1.2 + tslib: + specifier: 2.3.1 + version: 2.3.1 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bip39': + specifier: ^2.4.0 + version: 2.4.2 + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/hdkey': + specifier: ^0.7.0 + version: 0.7.1 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/blockchain: + dependencies: + '@zilliqa-js/account': + specifier: workspace:* + version: link:../account + '@zilliqa-js/core': + specifier: workspace:* + version: link:../core + '@zilliqa-js/crypto': + specifier: workspace:* + version: link:../crypto + '@zilliqa-js/util': + specifier: workspace:* + version: link:../util + tslib: + specifier: 2.3.1 + version: 2.3.1 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/contract: + dependencies: + '@zilliqa-js/account': + specifier: workspace:* + version: link:../account + '@zilliqa-js/blockchain': + specifier: workspace:* + version: link:../blockchain + '@zilliqa-js/core': + specifier: workspace:* + version: link:../core + '@zilliqa-js/crypto': + specifier: workspace:* + version: link:../crypto + '@zilliqa-js/util': + specifier: workspace:* + version: link:../util + bn.js: + specifier: ^4.11.8 + version: 4.12.0 + buffer-from: + specifier: ^1.1.2 + version: 1.1.2 + cross-fetch: + specifier: 2.2.5 + version: 2.2.5 + hash.js: + specifier: ^1.1.5 + version: 1.1.7 + node-fetch: + specifier: ^3.2.10 + version: 3.3.0 + tslib: + specifier: 2.3.1 + version: 2.3.1 + utility-types: + specifier: ^2.1.0 + version: 2.1.0 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/core: + dependencies: + buffer: + specifier: ^6.0.3 + version: 6.0.3 + cross-fetch: + specifier: 2.2.6 + version: 2.2.6 + mitt: + specifier: ^1.1.3 + version: 1.2.0 + tslib: + specifier: 2.3.1 + version: 2.3.1 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/crypto: + dependencies: + '@zilliqa-js/util': + specifier: workspace:* + version: link:../util + aes-js: + specifier: ^3.1.1 + version: 3.1.2 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + elliptic: + specifier: ^6.5.0 + version: 6.5.4 + hash.js: + specifier: ^1.1.5 + version: 1.1.7 + hmac-drbg: + specifier: ^1.0.1 + version: 1.0.1 + pbkdf2: + specifier: ^3.0.16 + version: 3.1.2 + scrypt-js: + specifier: ^3.0.1 + version: 3.0.1 + scryptsy: + specifier: ^2.1.0 + version: 2.1.0 + tslib: + specifier: 2.3.1 + version: 2.3.1 + uuid: + specifier: 8.3.2 + version: 8.3.2 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/crypto-js': + specifier: ^4.2.1 + version: 4.2.1 + '@types/elliptic': + specifier: ^6.4.14 + version: 6.4.14 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/proto: + dependencies: + protobufjs: + specifier: ^6.8.8 + version: 6.11.3 + devDependencies: + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/subscriptions: + dependencies: + buffer: + specifier: ^6.0.3 + version: 6.0.3 + camelcase: + specifier: 5.0.0 + version: 5.0.0 + mitt: + specifier: ^1.1.3 + version: 1.2.0 + tslib: + specifier: 2.3.1 + version: 2.3.1 + websocket: + specifier: ^1.0.28 + version: 1.0.34 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@types/websocket': + specifier: 1.0.4 + version: 1.0.4 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/util: + dependencies: + bn.js: + specifier: ^4.11.8 + version: 4.12.0 + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + long: + specifier: ^4.0.0 + version: 4.0.0 + tslib: + specifier: 2.3.1 + version: 2.3.1 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.1 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) + + zilliqa/js/zilliqa: + dependencies: + '@zilliqa-js/account': + specifier: workspace:* + version: link:../account + '@zilliqa-js/blockchain': + specifier: workspace:* + version: link:../blockchain + '@zilliqa-js/contract': + specifier: workspace:* + version: link:../contract + '@zilliqa-js/core': + specifier: workspace:* + version: link:../core + '@zilliqa-js/crypto': + specifier: workspace:* + version: link:../crypto + '@zilliqa-js/proto': + specifier: workspace:* + version: link:../proto + '@zilliqa-js/subscriptions': + specifier: workspace:* + version: link:../subscriptions + '@zilliqa-js/util': + specifier: workspace:* + version: link:../util + buffer: + specifier: ^6.0.3 + version: 6.0.3 + tslib: + specifier: 2.3.1 + version: 2.3.1 + devDependencies: + '@rollup/plugin-commonjs': + specifier: ^25.0.0 + version: 25.0.0(rollup@2.78.0) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@2.78.0) + '@rollup/plugin-node-resolve': + specifier: ^15.0.2 + version: 15.0.2(rollup@2.78.0) + '@types/bn.js': + specifier: ^5.1.0 + version: 5.1.0 + '@types/camelcase': + specifier: ^5.1.0 + version: 5.2.0 + '@types/fancy-log': + specifier: ^1.3.0 + version: 1.3.0 + '@types/jest': + specifier: 27.0.1 + version: 27.0.1 + '@types/long': + specifier: 4.0.2 + version: 4.0.2 + '@types/node': + specifier: ^20.2.3 + version: 20.2.3 + '@types/webpack': + specifier: ^4.4.17 + version: 4.41.33 + '@types/websocket': + specifier: 1.0.4 + version: 1.0.4 + '@typescript-eslint/eslint-plugin': + specifier: ^4.31.1 + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^4.31.1 + version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + camelcase: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + fancy-log: + specifier: ^1.3.2 + version: 1.3.2 + husky: + specifier: ^7.0.1 + version: 7.0.1 + jest: + specifier: '=26.6.0' + version: 26.6.0(ts-node@7.0.1) + jest-diff: + specifier: ^29.3.1 + version: 29.5.0 + jest-fetch-mock: + specifier: 3.0.3 + version: 3.0.3 + prettier: + specifier: ^2.3.2 + version: 2.8.4 + rimraf: + specifier: ^2.6.2 + version: 2.7.1 + rollup: + specifier: 2.78.0 + version: 2.78.0 + rollup-plugin-alias: + specifier: ^1.4.0 + version: 1.5.2 + rollup-plugin-commonjs: + specifier: ^9.2.0 + version: 9.3.4(rollup@2.78.0) + rollup-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-node-globals: + specifier: ^1.4.0 + version: 1.4.0 + rollup-plugin-node-resolve: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-polyfill-node: + specifier: ^0.12.0 + version: 0.12.0(rollup@2.78.0) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.78.0) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.78.0)(typescript@4.9.5) + ts-jest: + specifier: ^27.1.3 + version: 27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5) + ts-loader: + specifier: 8.0.4 + version: 8.0.4(typescript@4.9.5) + ts-node: + specifier: ^7.0.1 + version: 7.0.1 + typescript: + specifier: ^4.8.4 + version: 4.9.5 + webpack: + specifier: ^5.76.0 + version: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-command: + specifier: ^0.4.1 + version: 0.4.2(webpack@5.76.0) packages: - /@adobe/css-tools/4.2.0: - resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} + /@adobe/css-tools@4.3.2: + resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} dev: false - /@algolia/autocomplete-core/1.7.4: + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: true + + /@algolia/autocomplete-core@1.7.4: resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} dependencies: '@algolia/autocomplete-shared': 1.7.4 dev: false - /@algolia/autocomplete-preset-algolia/1.7.4_algoliasearch@4.15.0: + /@algolia/autocomplete-preset-algolia@1.7.4(@algolia/client-search@4.17.1)(algoliasearch@4.15.0): resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: '@algolia/autocomplete-shared': 1.7.4 + '@algolia/client-search': 4.17.1 algoliasearch: 4.15.0 dev: false - /@algolia/autocomplete-shared/1.7.4: + /@algolia/autocomplete-shared@1.7.4: resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} dev: false - /@algolia/cache-browser-local-storage/4.15.0: + /@algolia/cache-browser-local-storage@4.15.0: resolution: {integrity: sha512-uxxFhTWh4JJDb2+FFSmNMfEQ8p9o2vjSpU7iW007QX3OvqljPPN68lk3bpZVaG8pwr5MU1DqpkZ71FcQdVTjgQ==} dependencies: '@algolia/cache-common': 4.15.0 dev: false - /@algolia/cache-common/4.15.0: + /@algolia/cache-common@4.15.0: resolution: {integrity: sha512-Me3PbI4QurAM+3D+htIE0l1xt6+bl/18SG6Wc7bPQEZAtN7DTGz22HqhKNyLF2lR/cOfpaH7umXZlZEhIHf7gQ==} dev: false - /@algolia/cache-in-memory/4.15.0: + /@algolia/cache-common@4.17.1: + resolution: {integrity: sha512-fvi1WT8aSiGAKrcTw8Qg3RYgcwW8GZMHcqEm4AyDBEy72JZlFBSY80cTQ75MslINjCHXLDT+9EN8AGI9WVY7uA==} + dev: false + + /@algolia/cache-in-memory@4.15.0: resolution: {integrity: sha512-B9mg1wd7CKMfpkbiTQ8KlcKkH6ut/goVaI6XmDCUczOOqeuZlV34tuEi7o3Xo1j66KWr/d9pMjjGYcoVPCVeOA==} dependencies: '@algolia/cache-common': 4.15.0 dev: false - /@algolia/client-account/4.15.0: + /@algolia/client-account@4.15.0: resolution: {integrity: sha512-8wqI33HRZy5ydfFt6F5vMhtkOiAUhVfSCYXx4U3Go5RALqWLgVUp6wzOo0mr1z08POCkHDpbQMQvyayb1CZ/kw==} dependencies: '@algolia/client-common': 4.15.0 @@ -366,7 +1970,7 @@ packages: '@algolia/transporter': 4.15.0 dev: false - /@algolia/client-analytics/4.15.0: + /@algolia/client-analytics@4.15.0: resolution: {integrity: sha512-jrPjEeNEIIQKeA1XCZXx3f3aybtwF7wjYlnfHbLARuZ9AuHzimOKjX0ZwqvMmvTsHivpcZ2rqY+j1E8HoH1ELA==} dependencies: '@algolia/client-common': 4.15.0 @@ -375,14 +1979,21 @@ packages: '@algolia/transporter': 4.15.0 dev: false - /@algolia/client-common/4.15.0: + /@algolia/client-common@4.15.0: resolution: {integrity: sha512-PlsJMObZuYw4JlG5EhYv1PHDOv7n5mD5PzqFyoNfSOYaEPRZepa3W579ya29yOu3FZ0VGMNJmB7Q5v/+/fwvIw==} dependencies: '@algolia/requester-common': 4.15.0 '@algolia/transporter': 4.15.0 dev: false - /@algolia/client-personalization/4.15.0: + /@algolia/client-common@4.17.1: + resolution: {integrity: sha512-+r7kg4EgbFnGsDnoGSVNtXZO8xvZ0vzf1WAOV7sqV9PMf1bp6cpJP/3IuPrSk4t5w2KVl+pC8jfTM7HcFlfBEQ==} + dependencies: + '@algolia/requester-common': 4.17.1 + '@algolia/transporter': 4.17.1 + dev: false + + /@algolia/client-personalization@4.15.0: resolution: {integrity: sha512-Bf0bhRAiNL9LWurzyHRH8UBi4fDt3VbCNkInxVngKQT1uCZWXecwoPWGhcSSpdanBqFJA/1WBt+BWx7a50Bhlg==} dependencies: '@algolia/client-common': 4.15.0 @@ -390,7 +2001,7 @@ packages: '@algolia/transporter': 4.15.0 dev: false - /@algolia/client-search/4.15.0: + /@algolia/client-search@4.15.0: resolution: {integrity: sha512-dTwZD4u53WdmexnMcoO2Qd/+YCP3ESXKOtD2MryQ1a9dHwB2Y3Qob0kyS1PG82idwM3enbznvscI9Sf4o9PUWQ==} dependencies: '@algolia/client-common': 4.15.0 @@ -398,37 +2009,53 @@ packages: '@algolia/transporter': 4.15.0 dev: false - /@algolia/events/4.0.1: + /@algolia/client-search@4.17.1: + resolution: {integrity: sha512-Q5YfT5gVkx60PZDQBqp/zH9aUbBdC7HVvxupiHUgnCKqRQsRZjOhLest7AI6FahepuZLBZS62COrO7v+JvKY7w==} + dependencies: + '@algolia/client-common': 4.17.1 + '@algolia/requester-common': 4.17.1 + '@algolia/transporter': 4.17.1 + dev: false + + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common/4.15.0: + /@algolia/logger-common@4.15.0: resolution: {integrity: sha512-D8OFwn/HpvQz66goIcjxOKsYBMuxiruxJ3cA/bnc0EiDvSA2P2z6bNQWgS5gbstuTZIJmbhr+53NyOxFkmMNAA==} dev: false - /@algolia/logger-console/4.15.0: + /@algolia/logger-common@4.17.1: + resolution: {integrity: sha512-Us28Ot+fLEmX9M96sa65VZ8EyEEzhYPxfhV9aQyKDjfXbUdJlJxKt6wZpoEg9RAPSdO8IjK9nmuW2P8au3rRsg==} + dev: false + + /@algolia/logger-console@4.15.0: resolution: {integrity: sha512-pQOvVaRSEJQJRXKTnxEA6nN1hipSQadJJ4einw0nIlfMOGZh/kps1ybh8vRUlUGyfEuN/3dyFs0W3Ac7hIItlg==} dependencies: '@algolia/logger-common': 4.15.0 dev: false - /@algolia/requester-browser-xhr/4.15.0: + /@algolia/requester-browser-xhr@4.15.0: resolution: {integrity: sha512-va186EfALF+6msYZXaoBSxcnFCg3SoWJ+uv1yMyhQRJRe7cZSHWSVT3s40vmar90gxlBu80KMVwVlsvJhJv6ew==} dependencies: '@algolia/requester-common': 4.15.0 dev: false - /@algolia/requester-common/4.15.0: + /@algolia/requester-common@4.15.0: resolution: {integrity: sha512-w0UUzxElbo4hrKg4QP/jiXDNbIJuAthxdlkos9nS8KAPK2XI3R9BlUjLz/ZVs4F9TDGI0mhjrNHhZ12KXcoyhg==} dev: false - /@algolia/requester-node-http/4.15.0: + /@algolia/requester-common@4.17.1: + resolution: {integrity: sha512-HggXdjvVFQR0I5l7hM5WdHgQ1tqcRWeyXZz8apQ7zPWZhirmY2E9D6LVhDh/UnWQNEm7nBtM+eMFONJ3bZccIQ==} + dev: false + + /@algolia/requester-node-http@4.15.0: resolution: {integrity: sha512-eeEOhFtgwKcgAlKAZpgBRZJ0ILSEBCXxZ9uwfVWPD24W1b6z08gVoTJ6J7lCeCnJmudg+tMElDnGzHkjup9CJA==} dependencies: '@algolia/requester-common': 4.15.0 dev: false - /@algolia/transporter/4.15.0: + /@algolia/transporter@4.15.0: resolution: {integrity: sha512-JoWR+ixG3EmA0UPntQFN/FV5TasYcYu93d5+oKzHFeZ6Z7rtW5Im9iy/Oh/ggk1AAN5fTdqKewtbBpdaYDbKsQ==} dependencies: '@algolia/cache-common': 4.15.0 @@ -436,15 +2063,22 @@ packages: '@algolia/requester-common': 4.15.0 dev: false - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} + /@algolia/transporter@4.17.1: + resolution: {integrity: sha512-ZM+qhX47Vh46mWH8/U9ihvy98HdTYpYQDSlqBD7IbiUbbyoCMke+qmdSX2MGhR2FCcXBSxejsJKKVAfbpaLVgg==} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@algolia/cache-common': 4.17.1 + '@algolia/logger-common': 4.17.1 + '@algolia/requester-common': 4.17.1 dev: false - /@apideck/better-ajv-errors/0.3.6_ajv@8.12.0: + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + + /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} peerDependencies: @@ -456,7 +2090,7 @@ packages: leven: 3.1.0 dev: false - /@apollo/client/3.7.10_gdcq4dv6opitr3wbfwyjmanyra: + /@apollo/client@3.7.10(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-/k1MfrqPKYiPNdHcOzdxg9cEx96vhAGxAcSorzfBvV29XtFQcYW2cPNQOTjK/fpSMtqVo8UNmu5vwQAWD1gfCg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -474,17 +2108,17 @@ packages: subscriptions-transport-ws: optional: true dependencies: - '@graphql-typed-document-node/core': 3.1.2_graphql@16.6.0 + '@graphql-typed-document-node/core': 3.1.2(graphql@16.6.0) '@wry/context': 0.7.0 '@wry/equality': 0.5.3 '@wry/trie': 0.3.2 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) hoist-non-react-statics: 3.3.2 optimism: 0.16.2 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 @@ -492,7 +2126,7 @@ packages: zen-observable-ts: 1.2.5 dev: false - /@apollo/react-common/3.1.4_ajh7ypzlfydfyxaxyqhsembn4i: + /@apollo/react-common@3.1.4(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react@18.2.0): resolution: {integrity: sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA==} peerDependencies: '@types/react': ^16.8.0 @@ -502,13 +2136,15 @@ packages: react: ^16.8.0 dependencies: '@types/react': 18.0.28 + apollo-client: 2.6.10(graphql@16.6.0) + apollo-utilities: 1.3.4(graphql@16.6.0) graphql: 16.6.0 react: 18.2.0 ts-invariant: 0.4.4 tslib: 1.14.1 dev: false - /@apollo/react-components/3.1.5_4hkbjrep5ureiqkcwz4kv7433y: + /@apollo/react-components@3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-c82VyUuE9VBnJB7bnX+3dmwpIPMhyjMwyoSLyQWPHxz8jK4ak30XszJtqFf4eC4hwvvLYa+Ou6X73Q8V8e2/jg==} peerDependencies: '@types/react': ^16.8.0 @@ -520,18 +2156,22 @@ packages: react: ^16.8.0 react-dom: ^16.8.0 dependencies: - '@apollo/react-common': 3.1.4_ajh7ypzlfydfyxaxyqhsembn4i - '@apollo/react-hooks': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y + '@apollo/react-common': 3.1.4(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react@18.2.0) + '@apollo/react-hooks': 3.1.5(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.28 + apollo-cache: 1.3.5(graphql@16.6.0) + apollo-client: 2.6.10(graphql@16.6.0) + apollo-link: 1.2.14(graphql@16.6.0) + apollo-utilities: 1.3.4(graphql@16.6.0) graphql: 16.6.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) ts-invariant: 0.4.4 tslib: 1.14.1 dev: false - /@apollo/react-hoc/3.1.5_4hkbjrep5ureiqkcwz4kv7433y: + /@apollo/react-hoc@3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-jlZ2pvEnRevLa54H563BU0/xrYSgWQ72GksarxUzCHQW85nmn9wQln0kLBX7Ua7SBt9WgiuYQXQVechaaCulfQ==} peerDependencies: '@types/react': ^16.8.0 @@ -540,13 +2180,14 @@ packages: react: ^16.8.0 react-dom: ^16.8.0 dependencies: - '@apollo/react-common': 3.1.4_ajh7ypzlfydfyxaxyqhsembn4i - '@apollo/react-components': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y + '@apollo/react-common': 3.1.4(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react@18.2.0) + '@apollo/react-components': 3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.28 + apollo-client: 2.6.10(graphql@16.6.0) graphql: 16.6.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) ts-invariant: 0.4.4 tslib: 1.14.1 transitivePeerDependencies: @@ -555,7 +2196,7 @@ packages: - apollo-utilities dev: false - /@apollo/react-hooks/3.1.5_4hkbjrep5ureiqkcwz4kv7433y: + /@apollo/react-hooks@3.1.5(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-y0CJ393DLxIIkksRup4nt+vSjxalbZBXnnXxYbviq/woj+zKa431zy0yT4LqyRKpFy9ahMIwxBnBwfwIoupqLQ==} peerDependencies: '@types/react': ^16.8.0 @@ -564,28 +2205,29 @@ packages: react: ^16.8.0 react-dom: ^16.8.0 dependencies: - '@apollo/react-common': 3.1.4_ajh7ypzlfydfyxaxyqhsembn4i + '@apollo/react-common': 3.1.4(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react@18.2.0) '@types/react': 18.0.28 '@wry/equality': 0.1.11 + apollo-client: 2.6.10(graphql@16.6.0) graphql: 16.6.0 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) ts-invariant: 0.4.4 tslib: 1.14.1 transitivePeerDependencies: - apollo-utilities dev: false - /@apollo/react-ssr/3.1.5_4hkbjrep5ureiqkcwz4kv7433y: + /@apollo/react-ssr@3.1.5(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wuLPkKlctNn3u8EU8rlECyktpOUCeekFfb0KhIKknpGY6Lza2Qu0bThx7D9MIbVEzhKadNNrzLcpk0Y8/5UuWg==} peerDependencies: react: ^16.8.0 react-dom: ^16.8.0 dependencies: - '@apollo/react-common': 3.1.4_ajh7ypzlfydfyxaxyqhsembn4i - '@apollo/react-hooks': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y + '@apollo/react-common': 3.1.4(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react@18.2.0) + '@apollo/react-hooks': 3.1.5(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) tslib: 1.14.1 transitivePeerDependencies: - '@types/react' @@ -594,44 +2236,85 @@ packages: - graphql dev: false - /@babel/code-frame/7.10.4: + /@aws-crypto/sha256-js@1.2.2: + resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + dependencies: + '@aws-crypto/util': 1.2.2 + '@aws-sdk/types': 3.502.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/util@1.2.2: + resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} + dependencies: + '@aws-sdk/types': 3.502.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true + + /@aws-sdk/types@3.502.0: + resolution: {integrity: sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.5.0 + dev: true + + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.3.1 + dev: true + + /@babel/code-frame@7.10.4: resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} dependencies: '@babel/highlight': 7.18.6 dev: false - /@babel/code-frame/7.12.11: + /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: '@babel/highlight': 7.18.6 - dev: false - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - dev: false + dev: true - /@babel/compat-data/7.21.0: - resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + + /@babel/compat-data@7.21.9: + resolution: {integrity: sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/core/7.12.9: + /@babel/core@7.12.9: resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.2 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.9 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helpers': 7.21.5 + '@babel/parser': 7.21.9 + '@babel/template': 7.21.9 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 @@ -642,22 +2325,22 @@ packages: - supports-color dev: false - /@babel/core/7.21.0: + /@babel/core@7.21.0: resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.2 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.9 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.0) + '@babel/helper-module-transforms': 7.21.5 + '@babel/helpers': 7.21.5 + '@babel/parser': 7.21.9 + '@babel/template': 7.21.9 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -665,52 +2348,106 @@ packages: - supports-color dev: false - /@babel/eslint-parser/7.19.1_ccoxihxmx25rm5cufeee3dmlne: + /@babel/core@7.21.8: + resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.9 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-module-transforms': 7.21.5 + '@babel/helpers': 7.21.5 + '@babel/parser': 7.21.9 + '@babel/template': 7.21.9 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@6.1.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/eslint-parser@7.19.1(@babel/core@7.21.8)(eslint@7.32.0): resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 7.32.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: false - /@babel/generator/7.21.1: + /@babel/eslint-parser@7.19.1(@babel/core@7.21.8)(eslint@8.41.0): + resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.21.8 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.41.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: false + + /@babel/generator@7.21.1: resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@babel/types': 7.21.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 dev: false - /@babel/helper-annotate-as-pure/7.18.6: + /@babel/generator@7.21.9: + resolution: {integrity: sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + + /@babel/generator@7.23.5: + resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.0): + resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.0 + '@babel/compat-data': 7.21.9 '@babel/core': 7.21.0 '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.5 @@ -718,7 +2455,20 @@ packages: semver: 6.3.0 dev: false - /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.0: + /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8): + resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.9 + '@babel/core': 7.21.8 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -726,7 +2476,26 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-function-name': 7.21.0 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -737,7 +2506,7 @@ packages: - supports-color dev: false - /@babel/helper-create-regexp-features-plugin/7.21.0_@babel+core@7.21.0: + /@babel/helper-create-regexp-features-plugin@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -748,15 +2517,26 @@ packages: regexpu-core: 5.3.1 dev: false - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.21.0: + /@babel/helper-create-regexp-features-plugin@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.3.1 + dev: false + + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.0): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + debug: 4.3.4(supports-color@6.1.0) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -764,80 +2544,114 @@ packages: - supports-color dev: false - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.8): + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + debug: 4.3.4(supports-color@6.1.0) + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color dev: false - /@babel/helper-explode-assignable-expression/7.18.6: + /@babel/helper-environment-visitor@7.21.5: + resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-explode-assignable-expression@7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-function-name/7.21.0: + /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.2 - dev: false + '@babel/template': 7.21.9 + '@babel/types': 7.21.5 - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.5 + + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 - dev: false + '@babel/types': 7.21.5 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.5 - /@babel/helper-member-expression-to-functions/7.21.0: + /@babel/helper-member-expression-to-functions@7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-module-transforms/7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 + '@babel/types': 7.21.5 + + /@babel/helper-module-transforms@7.21.5: + resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.21.5 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/template': 7.21.9 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-optimise-call-expression/7.18.6: + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-plugin-utils/7.10.4: + /@babel/helper-plugin-utils@7.10.4: resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} dev: false - /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + /@babel/helper-plugin-utils@7.21.5: + resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.0: + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -845,2154 +2659,3418 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-replace-supers/7.20.7: + /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/template': 7.21.9 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: false - /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-simple-access@7.21.5: + resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 - dev: false + '@babel/types': 7.21.5 - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 - dev: false + '@babel/types': 7.21.5 + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.5 + + /@babel/helper-string-parser@7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + engines: {node: '>=6.9.0'} - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.21.0: + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-wrap-function/7.20.5: + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.21.0 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/template': 7.21.9 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: false - /@babel/helpers/7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + /@babel/helpers@7.21.5: + resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/template': 7.21.9 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color - dev: false - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 - dev: false - /@babel/parser/7.21.2: + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.21.2: resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 + dev: true + + /@babel/parser@7.21.9: + resolution: {integrity: sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.5 + + /@babel/parser@7.23.5: + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.5 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.21.0: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.21.0: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + dev: false + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.8) dev: false - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.21.0: + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-decorators/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==} + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.21.0_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.21.0: - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.8) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + /@babel/plugin-proposal-decorators@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-syntax-decorators': 7.21.0(@babel/core@7.21.8) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) dev: false - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8) dev: false - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.0) dev: false - /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: - resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.12.9 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.8) dev: false - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.0 '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) dev: false - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.8) dev: false - /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) dev: false - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.8) dev: false - /@babel/plugin-proposal-private-property-in-object/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) dev: false - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8) dev: false - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.0: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) dev: false - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8) dev: false - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.0: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9): + resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.12.9) dev: false - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.21.0: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/compat-data': 7.21.9 '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) dev: false - /@babel/plugin-syntax-decorators/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==} + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/compat-data': 7.21.9 + '@babel/core': 7.21.8 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.8) dev: false - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) dev: false - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8) dev: false - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) dev: false - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.21.0: - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) dev: false - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.0: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: - resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.8) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.21.0: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.21.0: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.0): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.8): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 - dev: false + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - dev: false + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.0: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.21.0: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.8): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - dev: false + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.21.0: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.0): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.0: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.8): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + /@babel/plugin-syntax-decorators@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-classes/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.21.8): + resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.0): + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.21.0: - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.8): + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.0): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-flow-strip-types/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.8): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-for-of/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): + resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.21.0: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.21.0: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.8): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.0): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.21.0: - resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.8): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.21.0: - resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.0): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.21.0: - resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.8): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.21.0: - resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.8): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.0): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.12.9: - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.8): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.0): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.8): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.0): + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-react-constant-elements/7.20.2_@babel+core@7.21.0: - resolution: {integrity: sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==} + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.8): + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-react-jsx/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 - '@babel/types': 7.21.2 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.8) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.21.0: - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - regenerator-transform: 0.15.1 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-runtime/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==} + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.0 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.0 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.21.0: - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.0) + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.21.0: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/template': 7.21.9 dev: false - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.21.0: - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/template': 7.21.9 dev: false - /@babel/plugin-transform-typescript/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} + /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.21.0: - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/preset-env/7.20.2_@babel+core@7.21.0: - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.0 - '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-class-static-block': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.21.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-for-of': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.21.0 - '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 - '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.21.0 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.21.0 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.21.0 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.21.0 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.21.0 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.21.0 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.0 - '@babel/preset-modules': 0.1.5_@babel+core@7.21.0 - '@babel/types': 7.21.2 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.0 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.0 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.0 - core-js-compat: 3.29.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.21.8 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/preset-modules/0.1.5_@babel+core@7.21.0: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 - '@babel/types': 7.21.2 - esutils: 2.0.3 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/preset-react/7.18.6_@babel+core@7.21.0: - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/preset-typescript/7.21.0_@babel+core@7.21.0: - resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.21.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/regjsgen/0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/runtime-corejs3/7.21.0: - resolution: {integrity: sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw==} + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - core-js-pure: 3.29.0 - regenerator-runtime: 0.13.11 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.21.8) dev: false - /@babel/runtime/7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - regenerator-runtime: 0.13.11 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/template/7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/traverse/7.21.2: - resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.0) '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/traverse/7.21.2_supports-color@5.5.0: - resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/core': 7.21.8 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 - debug: 4.3.4_supports-color@5.5.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@babel/types/7.21.2: - resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@cnakazawa/watch/1.0.4: - resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} - engines: {node: '>=0.1.95'} - hasBin: true + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - exec-sh: 0.3.6 - minimist: 1.2.8 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@colors/colors/1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - optional: true - /@commitlint/config-validator/17.4.4: - resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} - engines: {node: '>=v14'} + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@commitlint/types': 17.4.4 - ajv: 8.12.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - optional: true - /@commitlint/execute-rule/17.4.0: - resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} - engines: {node: '>=v14'} + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.0): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@commitlint/load/17.4.4: - resolution: {integrity: sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ==} - engines: {node: '>=v14'} - requiresBuild: true + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.8): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@commitlint/config-validator': 17.4.4 - '@commitlint/execute-rule': 17.4.0 - '@commitlint/resolve-extends': 17.4.4 - '@commitlint/types': 17.4.4 - '@types/node': 18.14.6 - chalk: 4.1.2 - cosmiconfig: 8.1.0 - cosmiconfig-typescript-loader: 4.3.0_y2okb5cfqgxv537umje5rj3w6m - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.1_alpjt73dvgv6kni625hu7f2l4m - typescript: 4.9.5 + '@babel/core': 7.21.8 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - supports-color dev: false - optional: true - /@commitlint/resolve-extends/17.4.4: - resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} - engines: {node: '>=v14'} + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.0): + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@commitlint/config-validator': 17.4.4 - '@commitlint/types': 17.4.4 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-simple-access': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@commitlint/types/17.4.4: - resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} - engines: {node: '>=v14'} + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.8): + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - chalk: 4.1.2 + '@babel/core': 7.21.8 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-simple-access': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.0): + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@babel/core': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@csstools/normalize.css/12.0.0: - resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==} + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.8): + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color dev: false - /@csstools/postcss-cascade-layers/1.1.1_postcss@8.4.21: - resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - /@csstools/postcss-color-function/1.1.1_postcss@8.4.21: - resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.8 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color dev: false - /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.21: - resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.0): + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.21: - resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.8): + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.8 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.21: - resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.21: - resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-nested-calc/1.0.0_postcss@8.4.21: - resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color dev: false - /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.21: - resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color dev: false - /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.21: - resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.12.9): + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.21: - resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.3 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.21: - resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-text-decoration-shorthand/1.0.0_postcss@8.4.21: - resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-trigonometric-functions/1.0.2_postcss@8.4.21: - resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} - engines: {node: ^14 || >=16} + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/postcss-unset-value/1.0.2_postcss@8.4.21: - resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} - engines: {node: ^12 || ^14 || >=16} + /@babel/plugin-transform-react-constant-elements@7.20.2(@babel/core@7.21.0): + resolution: {integrity: sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.2 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@csstools/selector-specificity/2.1.1_wajs5nedgkikc5pcuwett7legi: - resolution: {integrity: sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==} - engines: {node: ^14 || ^16 || >=18} + /@babel/plugin-transform-react-constant-elements@7.20.2(@babel/core@7.21.8): + resolution: {integrity: sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.4 - postcss-selector-parser: ^6.0.10 + '@babel/core': ^7.0.0-0 dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@discoveryjs/json-ext/0.5.7: - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docsearch/css/3.3.3: - resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} - dev: false - - /@docsearch/react/3.3.3_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true + '@babel/core': ^7.0.0-0 dependencies: - '@algolia/autocomplete-core': 1.7.4 - '@algolia/autocomplete-preset-algolia': 1.7.4_algoliasearch@4.15.0 - '@docsearch/css': 3.3.3 - '@types/react': 18.0.28 - algoliasearch: 4.15.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - transitivePeerDependencies: - - '@algolia/client-search' + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/core/2.3.1_chqmupk3w5owqchm7zgbo6rhme: - resolution: {integrity: sha512-0Jd4jtizqnRAr7svWaBbbrCCN8mzBNd2xFLoT/IM7bGfFie5y58oz97KzXliwiLY3zWjqMXjQcuP1a5VgCv2JA==} - engines: {node: '>=16.14'} - hasBin: true + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-transform-runtime': 7.21.0_@babel+core@7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/preset-react': 7.18.6_@babel+core@7.21.0 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 - '@babel/runtime': 7.21.0 - '@babel/runtime-corejs3': 7.21.0 - '@babel/traverse': 7.21.2 - '@docusaurus/cssnano-preset': 2.3.1 - '@docusaurus/logger': 2.3.1 - '@docusaurus/mdx-loader': 2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy - '@docusaurus/react-loadable': 5.5.2_react@18.2.0 - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-common': 2.3.1_@docusaurus+types@2.3.1 - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.13_postcss@8.4.21 - babel-loader: 8.3.0_qoaxtqicpzj5p3ubthw53xafqm - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.5.3 - clean-css: 5.3.2 - cli-table3: 0.6.3 - combine-promises: 1.1.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0_webpack@5.75.0 - core-js: 3.29.0 - css-loader: 6.7.3_webpack@5.75.0 - css-minimizer-webpack-plugin: 4.2.2_dpcjkp5o5ztxuvt4quwwvenemi - cssnano: 5.1.15_postcss@8.4.21 - del: 6.1.1 - detect-port: 1.5.1 - escape-html: 1.0.3 - eta: 2.0.1 - file-loader: 6.2.0_webpack@5.75.0 - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 - html-tags: 3.2.0 - html-webpack-plugin: 5.5.0_webpack@5.75.0 - import-fresh: 3.3.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.7.2_webpack@5.75.0 - postcss: 8.4.21 - postcss-loader: 7.0.2_6jdsrmfenkuhhw3gx4zvjlznce - prompts: 2.4.2 - react: 18.2.0 - react-dev-utils: 12.0.1_e7unsjmvxtn2mdejqwafrsmwjq - react-dom: 18.2.0_react@18.2.0 - react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y - react-loadable: /@docusaurus/react-loadable/5.5.2_react@18.2.0 - react-loadable-ssr-addon-v5-slorber: 1.0.1_pwfl7zyferpbeh35vaepqxwaky - react-router: 5.3.4_react@18.2.0 - react-router-config: 5.1.1_rlw3ibuvnpt5jvejeevjcf4ije - react-router-dom: 5.3.4_react@18.2.0 - rtl-detect: 1.0.4 - semver: 7.3.8 - serve-handler: 6.1.5 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 - tslib: 2.5.0 - update-notifier: 5.1.0 - url-loader: 4.1.1_p5dl6emkcwslbw72e37w4ug7em - wait-on: 6.0.1 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-bundle-analyzer: 4.8.0 - webpack-dev-server: 4.11.1_qbo4h6w4yojlzp3yj3rjykuawy - webpack-merge: 5.8.0 - webpackbar: 5.0.2_webpack@5.75.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.21.0) dev: false - /@docusaurus/core/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-0Jd4jtizqnRAr7svWaBbbrCCN8mzBNd2xFLoT/IM7bGfFie5y58oz97KzXliwiLY3zWjqMXjQcuP1a5VgCv2JA==} - engines: {node: '>=16.14'} - hasBin: true + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-transform-runtime': 7.21.0_@babel+core@7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/preset-react': 7.18.6_@babel+core@7.21.0 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 - '@babel/runtime': 7.21.0 - '@babel/runtime-corejs3': 7.21.0 - '@babel/traverse': 7.21.2 - '@docusaurus/cssnano-preset': 2.3.1 - '@docusaurus/logger': 2.3.1 - '@docusaurus/mdx-loader': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/react-loadable': 5.5.2_react@18.2.0 - '@docusaurus/utils': 2.3.1_webpack-cli@3.3.12 - '@docusaurus/utils-common': 2.3.1 - '@docusaurus/utils-validation': 2.3.1_webpack-cli@3.3.12 - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.13_postcss@8.4.21 - babel-loader: 8.3.0_qoaxtqicpzj5p3ubthw53xafqm - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.5.3 - clean-css: 5.3.2 - cli-table3: 0.6.3 - combine-promises: 1.1.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0_webpack@5.75.0 - core-js: 3.29.0 - css-loader: 6.7.3_webpack@5.75.0 - css-minimizer-webpack-plugin: 4.2.2_dpcjkp5o5ztxuvt4quwwvenemi - cssnano: 5.1.15_postcss@8.4.21 - del: 6.1.1 - detect-port: 1.5.1 - escape-html: 1.0.3 - eta: 2.0.1 - file-loader: 6.2.0_webpack@5.75.0 - fs-extra: 10.1.0 - html-minifier-terser: 6.1.0 - html-tags: 3.2.0 - html-webpack-plugin: 5.5.0_webpack@5.75.0 - import-fresh: 3.3.0 - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.7.2_webpack@5.75.0 - postcss: 8.4.21 - postcss-loader: 7.0.2_6jdsrmfenkuhhw3gx4zvjlznce - prompts: 2.4.2 - react: 18.2.0 - react-dev-utils: 12.0.1_e7unsjmvxtn2mdejqwafrsmwjq - react-dom: 18.2.0_react@18.2.0 - react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y - react-loadable: /@docusaurus/react-loadable/5.5.2_react@18.2.0 - react-loadable-ssr-addon-v5-slorber: 1.0.1_pwfl7zyferpbeh35vaepqxwaky - react-router: 5.3.4_react@18.2.0 - react-router-config: 5.1.1_rlw3ibuvnpt5jvejeevjcf4ije - react-router-dom: 5.3.4_react@18.2.0 - rtl-detect: 1.0.4 - semver: 7.3.8 - serve-handler: 6.1.5 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 - tslib: 2.5.0 - update-notifier: 5.1.0 - url-loader: 4.1.1_p5dl6emkcwslbw72e37w4ug7em - wait-on: 6.0.1 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-bundle-analyzer: 4.8.0 - webpack-dev-server: 4.11.1_qbo4h6w4yojlzp3yj3rjykuawy - webpack-merge: 5.8.0 - webpackbar: 5.0.2_webpack@5.75.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.8 + '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.21.8) dev: false - /@docusaurus/cssnano-preset/2.3.1: - resolution: {integrity: sha512-7mIhAROES6CY1GmCjR4CZkUfjTL6B3u6rKHK0ChQl2d1IevYXq/k/vFgvOrJfcKxiObpMnE9+X6R2Wt1KqxC6w==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-react-jsx@7.21.5(@babel/core@7.21.0): + resolution: {integrity: sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - cssnano-preset-advanced: 5.3.10_postcss@8.4.21 - postcss: 8.4.21 - postcss-sort-media-queries: 4.3.0_postcss@8.4.21 - tslib: 2.5.0 + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) + '@babel/types': 7.21.5 dev: false - /@docusaurus/logger/2.3.1: - resolution: {integrity: sha512-2lAV/olKKVr9qJhfHFCaqBIl8FgYjbUFwgUnX76+cULwQYss+42ZQ3grHGFvI0ocN2X55WcYe64ellQXz7suqg==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-react-jsx@7.21.5(@babel/core@7.21.8): + resolution: {integrity: sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - chalk: 4.1.2 - tslib: 2.5.0 + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) + '@babel/types': 7.21.5 dev: false - /@docusaurus/mdx-loader/2.3.1_elhwamslj4bgtjdngr3xwp2fba: - resolution: {integrity: sha512-Gzga7OsxQRpt3392K9lv/bW4jGppdLFJh3luKRknCKSAaZrmVkOQv2gvCn8LAOSZ3uRg5No7AgYs/vpL8K94lA==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/parser': 7.21.2 - '@babel/traverse': 7.21.2 - '@docusaurus/logger': 2.3.1 - '@docusaurus/utils': 2.3.1_webpack-cli@3.3.12 - '@mdx-js/mdx': 1.6.22 - escape-html: 1.0.3 - file-loader: 6.2.0_webpack@5.75.0 - fs-extra: 10.1.0 - image-size: 1.0.2 - mdast-util-to-string: 2.0.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - remark-emoji: 2.2.0 - stringify-object: 3.3.0 - tslib: 2.5.0 - unified: 9.2.2 - unist-util-visit: 2.0.3 - url-loader: 4.1.1_p5dl6emkcwslbw72e37w4ug7em - webpack: 5.75.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/mdx-loader/2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy: - resolution: {integrity: sha512-Gzga7OsxQRpt3392K9lv/bW4jGppdLFJh3luKRknCKSAaZrmVkOQv2gvCn8LAOSZ3uRg5No7AgYs/vpL8K94lA==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/parser': 7.21.2 - '@babel/traverse': 7.21.2 - '@docusaurus/logger': 2.3.1 - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@mdx-js/mdx': 1.6.22 - escape-html: 1.0.3 - file-loader: 6.2.0_webpack@5.75.0 - fs-extra: 10.1.0 - image-size: 1.0.2 - mdast-util-to-string: 2.0.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - remark-emoji: 2.2.0 - stringify-object: 3.3.0 - tslib: 2.5.0 - unified: 9.2.2 - unist-util-visit: 2.0.3 - url-loader: 4.1.1_p5dl6emkcwslbw72e37w4ug7em - webpack: 5.75.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli + '@babel/core': 7.21.8 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/module-type-aliases/2.3.1_elhwamslj4bgtjdngr3xwp2fba: - resolution: {integrity: sha512-6KkxfAVOJqIUynTRb/tphYCl+co3cP0PlHiMDbi+SzmYxMdgIrwYqH9yAnGSDoN6Jk2ZE/JY/Azs/8LPgKP48A==} + /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.0): + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + engines: {node: '>=6.9.0'} peerDependencies: - react: '*' - react-dom: '*' + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/react-loadable': 5.5.2_react@18.2.0 - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@types/history': 4.7.11 - '@types/react': 18.0.28 - '@types/react-router-config': 5.0.6 - '@types/react-router-dom': 5.3.3 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y - react-loadable: /@docusaurus/react-loadable/5.5.2_react@18.2.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + regenerator-transform: 0.15.1 dev: false - /@docusaurus/plugin-content-blog/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-f5LjqX+9WkiLyGiQ41x/KGSJ/9bOjSD8lsVhPvYeUYHCtYpuiDKfhZE07O4EqpHkBx4NQdtQDbp+aptgHSTuiw==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.8): + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/logger': 2.3.1 - '@docusaurus/mdx-loader': 2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-common': 2.3.1_@docusaurus+types@2.3.1 - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - cheerio: 1.0.0-rc.12 - feed: 4.2.2 - fs-extra: 10.1.0 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - reading-time: 1.5.0 - tslib: 2.5.0 - unist-util-visit: 2.0.3 - utility-types: 3.10.0 - webpack: 5.75.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + regenerator-transform: 0.15.1 dev: false - /@docusaurus/plugin-content-docs/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-DxztTOBEruv7qFxqUtbsqXeNcHqcVEIEe+NQoI1oi2DBmKBhW/o0MIal8lt+9gvmpx3oYtlwmLOOGepxZgJGkw==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/logger': 2.3.1 - '@docusaurus/mdx-loader': 2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy - '@docusaurus/module-type-aliases': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@types/react-router-config': 5.0.6 - combine-promises: 1.1.0 - fs-extra: 10.1.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.5.0 - utility-types: 3.10.0 - webpack: 5.75.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/plugin-content-pages/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-E80UL6hvKm5VVw8Ka8YaVDtO6kWWDVUK4fffGvkpQ/AJQDOg99LwOXKujPoICC22nUFTsZ2Hp70XvpezCsFQaA==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/mdx-loader': 2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - fs-extra: 10.1.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.5.0 - webpack: 5.75.0_webpack-cli@3.3.12 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/plugin-debug/2.3.1_jqw6svf6evdbvlcn7j55govj5e: - resolution: {integrity: sha512-Ujpml1Ppg4geB/2hyu2diWnO49az9U2bxM9Shen7b6qVcyFisNJTkVG2ocvLC7wM1efTJcUhBO6zAku2vKJGMw==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-runtime@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - fs-extra: 10.1.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-json-view: 1.21.3_zula6vjvt3wdocc4mwcxqa6nzi - tslib: 2.5.0 + '@babel/core': 7.21.0 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.0) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.0) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.0) + semver: 6.3.0 transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - encoding - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli dev: false - /@docusaurus/plugin-google-analytics/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-OHip0GQxKOFU8n7gkt3TM4HOYTXPCFDjqKbMClDD3KaDnyTuMp/Zvd9HSr770lLEscgPWIvzhJByRAClqsUWiQ==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-runtime@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.5.0 + '@babel/core': 7.21.8 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.8) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.8) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.8) + semver: 6.3.0 transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli dev: false - /@docusaurus/plugin-google-gtag/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-uXtDhfu4+Hm+oqWUySr3DNI5cWC/rmP6XJyAk83Heor3dFjZqDwCbkX8yWPywkRiWev3Dk/rVF8lEn0vIGVocA==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.5.0 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/plugin-google-tag-manager/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-Ww2BPEYSqg8q8tJdLYPFFM3FMDBCVhEM4UUqKzJaiRMx3NEoly3qqDRAoRDGdIhlC//Rf0iJV9cWAoq2m6k3sw==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.5.0 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 dev: false - /@docusaurus/plugin-sitemap/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-8Yxile/v6QGYV9vgFiYL+8d2N4z4Er3pSHsrD08c5XI8bUXxTppMwjarDUTH/TRTfgAWotRbhJ6WZLyajLpozA==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/logger': 2.3.1 - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-common': 2.3.1_@docusaurus+types@2.3.1 - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - fs-extra: 10.1.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - sitemap: 7.1.1 - tslib: 2.5.0 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: false - /@docusaurus/preset-classic/2.3.1_jqw6svf6evdbvlcn7j55govj5e: - resolution: {integrity: sha512-OQ5W0AHyfdUk0IldwJ3BlnZ1EqoJuu2L2BMhqLbqwNWdkmzmSUvlFLH1Pe7CZSQgB2YUUC/DnmjbPKk/qQD0lQ==} - engines: {node: '>=16.14'} + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.8): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/plugin-content-blog': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-docs': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-pages': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-debug': 2.3.1_jqw6svf6evdbvlcn7j55govj5e - '@docusaurus/plugin-google-analytics': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-google-gtag': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-google-tag-manager': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-sitemap': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/theme-classic': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/theme-common': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/theme-search-algolia': 2.3.1_ziym5ddlfnycxybxbmnzgfkyfa - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: false + + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.8): + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-typescript@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-typescript@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.8) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.0): + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.8): + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + dev: false + + /@babel/preset-env@7.20.2(@babel/core@7.21.0): + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.9 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.0) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) + '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.0) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.0) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.21.0) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.0) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.0) + '@babel/preset-modules': 0.1.5(@babel/core@7.21.0) + '@babel/types': 7.21.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.0) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.0) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.0) + core-js-compat: 3.29.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-env@7.20.2(@babel/core@7.21.8): + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.9 + '@babel/core': 7.21.8 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.8) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.8) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.8) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.8) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.8) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.8) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.8) + '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.8) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.8) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.21.8) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.8) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.8) + '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.8) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.8) + '@babel/preset-modules': 0.1.5(@babel/core@7.21.8) + '@babel/types': 7.21.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.8) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.8) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.8) + core-js-compat: 3.29.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-modules@0.1.5(@babel/core@7.21.0): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) + '@babel/types': 7.21.5 + esutils: 2.0.3 + dev: false + + /@babel/preset-modules@0.1.5(@babel/core@7.21.8): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.8) + '@babel/types': 7.21.5 + esutils: 2.0.3 + dev: false + + /@babel/preset-react@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.21.0) + dev: false + + /@babel/preset-react@7.18.6(@babel/core@7.21.8): + resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.21.8) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.21.8) + dev: false + + /@babel/preset-typescript@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-typescript': 7.21.0(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-typescript@7.21.0(@babel/core@7.21.8): + resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-typescript': 7.21.0(@babel/core@7.21.8) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false + + /@babel/runtime-corejs3@7.21.0: + resolution: {integrity: sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.29.0 + regenerator-runtime: 0.13.11 + dev: false + + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: false + + /@babel/runtime@7.21.5: + resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + + /@babel/template@7.21.9: + resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.9 + '@babel/types': 7.21.5 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + + /@babel/traverse@7.21.5: + resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.9 + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.9 + '@babel/types': 7.21.5 + debug: 4.3.4(supports-color@6.1.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse@7.23.5: + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + debug: 4.3.4(supports-color@6.1.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse@7.23.5(supports-color@5.5.0): + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/types@7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.21.5: + resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@babel/types@7.23.5: + resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + /@chainsafe/as-sha256@0.3.1: + resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} + dev: true + + /@chainsafe/persistent-merkle-tree@0.4.2: + resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: true + + /@chainsafe/persistent-merkle-tree@0.5.0: + resolution: {integrity: sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: true + + /@chainsafe/ssz@0.10.2: + resolution: {integrity: sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.5.0 + dev: true + + /@chainsafe/ssz@0.9.4: + resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.4.2 + case: 1.6.3 + dev: true + + /@cnakazawa/watch@1.0.4: + resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} + engines: {node: '>=0.1.95'} + hasBin: true + dependencies: + exec-sh: 0.3.6 + minimist: 1.2.8 + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: false + optional: true + + /@commitlint/config-validator@17.4.4: + resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} + engines: {node: '>=v14'} + requiresBuild: true + dependencies: + '@commitlint/types': 17.4.4 + ajv: 8.12.0 + dev: false + optional: true + + /@commitlint/execute-rule@17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} + engines: {node: '>=v14'} + requiresBuild: true + dev: false + optional: true + + /@commitlint/load@17.5.0: + resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} + engines: {node: '>=v14'} + requiresBuild: true + dependencies: + '@commitlint/config-validator': 17.4.4 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.4.4 + '@commitlint/types': 17.4.4 + '@types/node': 20.9.0 + chalk: 4.1.2 + cosmiconfig: 8.1.0 + cosmiconfig-typescript-loader: 4.3.0(@types/node@20.9.0)(cosmiconfig@8.1.0)(ts-node@10.9.1)(typescript@5.3.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) + typescript: 5.3.3 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: false + optional: true + + /@commitlint/resolve-extends@17.4.4: + resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} + engines: {node: '>=v14'} + requiresBuild: true + dependencies: + '@commitlint/config-validator': 17.4.4 + '@commitlint/types': 17.4.4 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: false + optional: true + + /@commitlint/types@17.4.4: + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} + engines: {node: '>=v14'} + requiresBuild: true + dependencies: + chalk: 4.1.2 + dev: false + optional: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + requiresBuild: true + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + /@csstools/cascade-layer-name-parser@1.0.2(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-xm7Mgwej/wBfLoK0K5LfntmPJzoULayl1XZY9JYgQgT29JiqNw++sLnx95u5y9zCihblzkyaRYJrsRMhIBzRdg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.1.1 + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + dev: false + + /@csstools/color-helpers@2.1.0: + resolution: {integrity: sha512-OWkqBa7PDzZuJ3Ha7T5bxdSVfSCfTq6K1mbAhbO1MD+GSULGjrp45i5RudyJOedstSarN/3mdwu9upJE7gDXfw==} + engines: {node: ^14 || ^16 || >=18} + dev: false + + /@csstools/css-calc@1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-Nh+iLCtjlooTzuR0lpmB8I6hPX/VupcGQ3Z1U2+wgJJ4fa8+cWkub+lCsbZcYPzBGsZLEL8fQAg+Na5dwEFJxg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.1.1 + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + dev: false + + /@csstools/css-color-parser@1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-kt9jhqyL/Ig/Tsf1cY+iygxs2nu3/D532048G9BSeg9YjlpZxbor6I+nvgMNB1A1ppL+i15Mb/yyDHYMQmgBtQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.1.1 + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/color-helpers': 2.1.0 + '@csstools/css-calc': 1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + dev: false + + /@csstools/css-parser-algorithms@2.1.1(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/css-tokenizer': 2.1.1 + dev: false + + /@csstools/css-tokenizer@2.1.1: + resolution: {integrity: sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==} + engines: {node: ^14 || ^16 || >=18} + dev: false + + /@csstools/media-query-list-parser@2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.1.1 + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + dev: false + + /@csstools/normalize.css@12.0.0: + resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==} + dev: false + + /@csstools/postcss-cascade-layers@1.1.1(postcss@8.4.21): + resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.21 + postcss-selector-parser: 6.0.13 + dev: false + + /@csstools/postcss-cascade-layers@3.0.1(postcss@8.4.23): + resolution: {integrity: sha512-dD8W98dOYNOH/yX4V4HXOhfCOnvVAg8TtsL+qCGNoKXuq5z2C/d026wGWgySgC8cajXXo/wNezS31Glj5GcqrA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + dev: false + + /@csstools/postcss-color-function@1.1.1(postcss@8.4.21): + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-color-function@2.2.2(postcss@8.4.23): + resolution: {integrity: sha512-HpBtNAS8m07Umr1kYYOIKTSg2uBMjWMc7zeXchhodsZtopICa5pTyCIuuT0z9oy07j/M4+Uj0M01OLvmN0AHqA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-color-mix-function@1.0.2(postcss@8.4.23): + resolution: {integrity: sha512-SZRZ1osJo5CR89xojPEkORnH6RS0FK1aktMujo52TCc74oJCIf6udX1e22qTeV8YG78lRNx8NpM3WzI4dL94tQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.21): + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-font-format-keywords@2.0.2(postcss@8.4.23): + resolution: {integrity: sha512-iKYZlIs6JsNT7NKyRjyIyezTCHLh4L4BBB3F5Nx7Dc4Z/QmBgX+YJFuUSar8IM6KclGiAUFGomXFdYxAwJydlA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-gradients-interpolation-method@3.0.5(postcss@8.4.23): + resolution: {integrity: sha512-x1tKUChKajjlZ+pOvapvHTXfRasXLBaChzwcKzI+wGsUmWIfIZhWVdksI/9Yeef0RhI9RFsEgr1fI3gWNcxHyg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-hwb-function@1.0.2(postcss@8.4.21): + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-hwb-function@2.2.2(postcss@8.4.23): + resolution: {integrity: sha512-W5Y5oaJ382HSlbdGfPf60d7dAK6Hqf10+Be1yZbd/TNNrQ/3dDdV1c07YwOXPQ3PZ6dvFMhxbIbn8EC3ki3nEg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + postcss: 8.4.23 + dev: false + + /@csstools/postcss-ic-unit@1.0.1(postcss@8.4.21): + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-ic-unit@2.0.3(postcss@8.4.23): + resolution: {integrity: sha512-azDezOeI7IhLGqRauyfi/JuJOfNHM951h0TZWnL9L38xTmlBK+s7y4MpWXTq/Ohz8IuiIuVPobXTewsqXaTeiQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.21): + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.21 + postcss-selector-parser: 6.0.13 + dev: false + + /@csstools/postcss-is-pseudo-class@3.2.1(postcss@8.4.23): + resolution: {integrity: sha512-AtANdV34kJl04Al62is3eQRk/BfOfyAvEmRJvbt+nx5REqImLC+2XhuE6skgkcPli1l8ONS67wS+l1sBzySc3Q==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + dev: false + + /@csstools/postcss-logical-float-and-clear@1.0.1(postcss@8.4.23): + resolution: {integrity: sha512-eO9z2sMLddvlfFEW5Fxbjyd03zaO7cJafDurK4rCqyRt9P7aaWwha0LcSzoROlcZrw1NBV2JAp2vMKfPMQO1xw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + dev: false + + /@csstools/postcss-logical-resize@1.0.1(postcss@8.4.23): + resolution: {integrity: sha512-x1ge74eCSvpBkDDWppl+7FuD2dL68WP+wwP2qvdUcKY17vJksz+XoE1ZRV38uJgS6FNUwC0AxrPW5gy3MxsDHQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-logical-viewport-units@1.0.3(postcss@8.4.23): + resolution: {integrity: sha512-6zqcyRg9HSqIHIPMYdt6THWhRmE5/tyHKJQLysn2TeDf/ftq7Em9qwMTx98t2C/7UxIsYS8lOiHHxAVjWn2WUg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-tokenizer': 2.1.1 + postcss: 8.4.23 + dev: false + + /@csstools/postcss-media-minmax@1.0.2(postcss@8.4.23): + resolution: {integrity: sha512-DsEykSINZTqlBefi1uSQBym1Rj0NQOj92dLRd5jUQpSy8yBVaXXmkiUgBUbb+gQh8imAdqPpz2v4sAUnw8yXXA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/media-query-list-parser': 2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-media-queries-aspect-ratio-number-values@1.0.2(postcss@8.4.23): + resolution: {integrity: sha512-rOSR5p+5m0joXUoitYgCyMqNCu97yfLsLG3cnNaM8VeJRCWHGEu5hE9Gv0M7n9A4wo2pYF8QqaxkTlWbSJY9Fg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/media-query-list-parser': 2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-nested-calc@1.0.0(postcss@8.4.21): + resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-nested-calc@2.0.2(postcss@8.4.23): + resolution: {integrity: sha512-jbwrP8rN4e7LNaRcpx3xpMUjhtt34I9OV+zgbcsYAAk6k1+3kODXJBf95/JMYWhu9g1oif7r06QVUgfWsKxCFw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.21): + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-normalize-display-values@2.0.1(postcss@8.4.23): + resolution: {integrity: sha512-TQT5g3JQ5gPXC239YuRK8jFceXF9d25ZvBkyjzBGGoW5st5sPXFVQS8OjYb9IJ/K3CdfK4528y483cgS2DJR/w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-oklab-function@1.1.1(postcss@8.4.21): + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-oklab-function@2.2.2(postcss@8.4.23): + resolution: {integrity: sha512-25Y9GYia9QamEOHx3B8hyHftDo/lzVhmPPm96ziOzOri9MDZvphPYPyx8NxQXh0P1P0j92eJcOjw4AO6HcXWYw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.21): + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-progressive-custom-properties@2.2.0(postcss@8.4.23): + resolution: {integrity: sha512-qtJ2Jgf5bQW65OK7JaR0dw+XL3tc3BN99g+I5cRdik++HpyZitrKKxIwDGb3OHp2Yo3PZKuiX8pXljqmLHT/eg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-relative-color-syntax@1.0.0(postcss@8.4.23): + resolution: {integrity: sha512-/Q2xOHjOeq8p8j/+yilJlroWzqbBca3+tux2ikkArsAsQS9sHWbFtPz602EpNnoGSnVg7o/QSf3xxaekyzv/8A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + dev: false + + /@csstools/postcss-scope-pseudo-class@2.0.2(postcss@8.4.23): + resolution: {integrity: sha512-6Pvo4uexUCXt+Hz5iUtemQAcIuCYnL+ePs1khFR6/xPgC92aQLJ0zGHonWoewiBE+I++4gXK3pr+R1rlOFHe5w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + dev: false + + /@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.21): + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-stepped-value-functions@2.1.1(postcss@8.4.23): + resolution: {integrity: sha512-YCvdF0GCZK35nhLgs7ippcxDlRVe5QsSht3+EghqTjnYnyl3BbWIN6fYQ1dKWYTJ+7Bgi41TgqQFfJDcp9Xy/w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + postcss: 8.4.23 + dev: false + + /@csstools/postcss-text-decoration-shorthand@1.0.0(postcss@8.4.21): + resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-text-decoration-shorthand@2.2.4(postcss@8.4.23): + resolution: {integrity: sha512-zPN56sQkS/7YTCVZhOBVCWf7AiNge8fXDl7JVaHLz2RyT4pnyK2gFjckWRLpO0A2xkm1lCgZ0bepYZTwAVd/5A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/color-helpers': 2.1.0 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-trigonometric-functions@1.0.2(postcss@8.4.21): + resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-trigonometric-functions@2.1.1(postcss@8.4.23): + resolution: {integrity: sha512-XcXmHEFfHXhvYz40FtDlA4Fp4NQln2bWTsCwthd2c+MCnYArUYU3YaMqzR5CrKP3pMoGYTBnp5fMqf1HxItNyw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-calc': 1.1.1(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + postcss: 8.4.23 + dev: false + + /@csstools/postcss-unset-value@1.0.2(postcss@8.4.21): + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + dev: false + + /@csstools/postcss-unset-value@2.0.1(postcss@8.4.23): + resolution: {integrity: sha512-oJ9Xl29/yU8U7/pnMJRqAZd4YXNCfGEdcP4ywREuqm/xMqcgDNDppYRoCGDt40aaZQIEKBS79LytUDN/DHf0Ew==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + dev: false + + /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13): + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + dependencies: + postcss-selector-parser: 6.0.13 + dev: false + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: false + + /@docsearch/css@3.3.3: + resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} + dev: false + + /@docsearch/react@3.3.3(@algolia/client-search@4.17.1)(@types/react@18.0.28)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.7.4 + '@algolia/autocomplete-preset-algolia': 1.7.4(@algolia/client-search@4.17.1)(algoliasearch@4.15.0) + '@docsearch/css': 3.3.3 + '@types/react': 18.0.28 + algoliasearch: 4.15.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@algolia/client-search' + dev: false + + /@docusaurus/core@2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-0Jd4jtizqnRAr7svWaBbbrCCN8mzBNd2xFLoT/IM7bGfFie5y58oz97KzXliwiLY3zWjqMXjQcuP1a5VgCv2JA==} + engines: {node: '>=16.14'} + hasBin: true + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-transform-runtime': 7.21.0(@babel/core@7.21.0) + '@babel/preset-env': 7.20.2(@babel/core@7.21.0) + '@babel/preset-react': 7.18.6(@babel/core@7.21.0) + '@babel/preset-typescript': 7.21.0(@babel/core@7.21.0) + '@babel/runtime': 7.21.0 + '@babel/runtime-corejs3': 7.21.0 + '@babel/traverse': 7.23.5 + '@docusaurus/cssnano-preset': 2.3.1 + '@docusaurus/logger': 2.3.1 + '@docusaurus/mdx-loader': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-common': 2.3.1(@docusaurus/types@2.3.1) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@slorber/static-site-generator-webpack-plugin': 4.0.7 + '@svgr/webpack': 6.5.1 + autoprefixer: 10.4.13(postcss@8.4.21) + babel-loader: 8.3.0(@babel/core@7.21.0)(webpack@5.76.0) + babel-plugin-dynamic-import-node: 2.3.3 + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.5.3 + clean-css: 5.3.2 + cli-table3: 0.6.3 + combine-promises: 1.1.0 + commander: 5.1.0 + copy-webpack-plugin: 11.0.0(webpack@5.76.0) + core-js: 3.29.0 + css-loader: 6.7.3(webpack@5.76.0) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.2)(esbuild@0.14.7)(webpack@5.76.0) + cssnano: 5.1.15(postcss@8.4.21) + del: 6.1.1 + detect-port: 1.5.1 + escape-html: 1.0.3 + eta: 2.0.1 + file-loader: 6.2.0(webpack@5.76.0) + fs-extra: 10.1.0 + html-minifier-terser: 6.1.0 + html-tags: 3.2.0 + html-webpack-plugin: 5.5.0(webpack@5.76.0) + import-fresh: 3.3.0 + leven: 3.1.0 + lodash: 4.17.21 + mini-css-extract-plugin: 2.7.2(webpack@5.76.0) + postcss: 8.4.21 + postcss-loader: 7.0.2(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(postcss@8.4.21)(webpack@5.76.0) + prompts: 2.4.2 + react: 18.2.0 + react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0) + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.76.0) + react-router: 5.3.4(react@18.2.0) + react-router-config: 5.1.1(react-router@5.3.4)(react@18.2.0) + react-router-dom: 5.3.4(react@18.2.0) + rtl-detect: 1.0.4 + semver: 7.5.2 + serve-handler: 6.1.5 + shelljs: 0.8.5 + terser-webpack-plugin: 5.3.6(esbuild@0.14.7)(webpack@5.76.0) + tslib: 2.5.0 + update-notifier: 5.1.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.76.0) + wait-on: 6.0.1 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-bundle-analyzer: 4.8.0 + webpack-dev-server: 4.11.1(webpack-cli@3.3.12)(webpack@5.76.0) + webpack-merge: 5.8.0 + webpackbar: 5.0.2(webpack@5.76.0) + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/cssnano-preset@2.3.1: + resolution: {integrity: sha512-7mIhAROES6CY1GmCjR4CZkUfjTL6B3u6rKHK0ChQl2d1IevYXq/k/vFgvOrJfcKxiObpMnE9+X6R2Wt1KqxC6w==} + engines: {node: '>=16.14'} + dependencies: + cssnano-preset-advanced: 5.3.10(postcss@8.4.23) + postcss: 8.4.23 + postcss-sort-media-queries: 4.3.0(postcss@8.4.23) + tslib: 2.5.0 + dev: false + + /@docusaurus/logger@2.3.1: + resolution: {integrity: sha512-2lAV/olKKVr9qJhfHFCaqBIl8FgYjbUFwgUnX76+cULwQYss+42ZQ3grHGFvI0ocN2X55WcYe64ellQXz7suqg==} + engines: {node: '>=16.14'} + dependencies: + chalk: 4.1.2 + tslib: 2.5.0 + dev: false + + /@docusaurus/mdx-loader@2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12): + resolution: {integrity: sha512-Gzga7OsxQRpt3392K9lv/bW4jGppdLFJh3luKRknCKSAaZrmVkOQv2gvCn8LAOSZ3uRg5No7AgYs/vpL8K94lA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@babel/parser': 7.21.9 + '@babel/traverse': 7.23.5 + '@docusaurus/logger': 2.3.1 + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@mdx-js/mdx': 1.6.22 + escape-html: 1.0.3 + file-loader: 6.2.0(webpack@5.76.0) + fs-extra: 10.1.0 + image-size: 1.0.2 + mdast-util-to-string: 2.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + remark-emoji: 2.2.0 + stringify-object: 3.3.0 + tslib: 2.5.0 + unified: 9.2.2 + unist-util-visit: 2.0.3 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.76.0) + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + + /@docusaurus/module-type-aliases@2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12): + resolution: {integrity: sha512-6KkxfAVOJqIUynTRb/tphYCl+co3cP0PlHiMDbi+SzmYxMdgIrwYqH9yAnGSDoN6Jk2ZE/JY/Azs/8LPgKP48A==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@types/history': 4.7.11 + '@types/react': 18.0.28 + '@types/react-router-config': 5.0.6 + '@types/react-router-dom': 5.3.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: false + + /@docusaurus/plugin-content-blog@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-f5LjqX+9WkiLyGiQ41x/KGSJ/9bOjSD8lsVhPvYeUYHCtYpuiDKfhZE07O4EqpHkBx4NQdtQDbp+aptgHSTuiw==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/logger': 2.3.1 + '@docusaurus/mdx-loader': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-common': 2.3.1(@docusaurus/types@2.3.1) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + cheerio: 1.0.0-rc.12 + feed: 4.2.2 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + reading-time: 1.5.0 + tslib: 2.5.0 + unist-util-visit: 2.0.3 + utility-types: 3.10.0 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-content-docs@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-DxztTOBEruv7qFxqUtbsqXeNcHqcVEIEe+NQoI1oi2DBmKBhW/o0MIal8lt+9gvmpx3oYtlwmLOOGepxZgJGkw==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/logger': 2.3.1 + '@docusaurus/mdx-loader': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/module-type-aliases': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@types/react-router-config': 5.0.6 + combine-promises: 1.1.0 + fs-extra: 10.1.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + utility-types: 3.10.0 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-content-pages@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-E80UL6hvKm5VVw8Ka8YaVDtO6kWWDVUK4fffGvkpQ/AJQDOg99LwOXKujPoICC22nUFTsZ2Hp70XvpezCsFQaA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/mdx-loader': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + fs-extra: 10.1.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-debug@2.3.1(@types/react@18.0.28)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-Ujpml1Ppg4geB/2hyu2diWnO49az9U2bxM9Shen7b6qVcyFisNJTkVG2ocvLC7wM1efTJcUhBO6zAku2vKJGMw==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + fs-extra: 10.1.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-json-view: 1.21.3(@types/react@18.0.28)(react-dom@18.2.0)(react@18.2.0) + tslib: 2.5.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - encoding + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-google-analytics@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-OHip0GQxKOFU8n7gkt3TM4HOYTXPCFDjqKbMClDD3KaDnyTuMp/Zvd9HSr770lLEscgPWIvzhJByRAClqsUWiQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-google-gtag@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-uXtDhfu4+Hm+oqWUySr3DNI5cWC/rmP6XJyAk83Heor3dFjZqDwCbkX8yWPywkRiWev3Dk/rVF8lEn0vIGVocA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-google-tag-manager@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-Ww2BPEYSqg8q8tJdLYPFFM3FMDBCVhEM4UUqKzJaiRMx3NEoly3qqDRAoRDGdIhlC//Rf0iJV9cWAoq2m6k3sw==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-sitemap@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-8Yxile/v6QGYV9vgFiYL+8d2N4z4Er3pSHsrD08c5XI8bUXxTppMwjarDUTH/TRTfgAWotRbhJ6WZLyajLpozA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/logger': 2.3.1 + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-common': 2.3.1(@docusaurus/types@2.3.1) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + fs-extra: 10.1.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + sitemap: 7.1.1 + tslib: 2.5.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/preset-classic@2.3.1(@algolia/client-search@4.17.1)(@types/react@18.0.28)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-OQ5W0AHyfdUk0IldwJ3BlnZ1EqoJuu2L2BMhqLbqwNWdkmzmSUvlFLH1Pe7CZSQgB2YUUC/DnmjbPKk/qQD0lQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-blog': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-docs': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-pages': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-debug': 2.3.1(@types/react@18.0.28)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-google-analytics': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-google-gtag': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-google-tag-manager': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-sitemap': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-classic': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-common': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-search-algolia': 2.3.1(@algolia/client-search@4.17.1)(@docusaurus/types@2.3.1)(@types/react@18.0.28)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@algolia/client-search' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso - debug - encoding - esbuild @@ -3009,7 +6087,7 @@ packages: - webpack-cli dev: false - /@docusaurus/react-loadable/5.5.2_react@18.2.0: + /@docusaurus/react-loadable@5.5.2(react@18.2.0): resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} peerDependencies: react: '*' @@ -3019,37 +6097,37 @@ packages: react: 18.2.0 dev: false - /@docusaurus/theme-classic/2.3.1_cokwgtp7adxle3mwcpacgypcw4: + /@docusaurus/theme-classic@2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): resolution: {integrity: sha512-SelSIDvyttb7ZYHj8vEUhqykhAqfOPKk+uP0z85jH72IMC58e7O8DIlcAeBv+CWsLbNIl9/Hcg71X0jazuxJug==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/mdx-loader': 2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy - '@docusaurus/module-type-aliases': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/plugin-content-blog': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-docs': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-pages': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/theme-common': 2.3.1_chqmupk3w5owqchm7zgbo6rhme + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/mdx-loader': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/module-type-aliases': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-blog': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-docs': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-pages': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-common': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) '@docusaurus/theme-translations': 2.3.1 - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-common': 2.3.1_@docusaurus+types@2.3.1 - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@mdx-js/react': 1.6.22_react@18.2.0 + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-common': 2.3.1(@docusaurus/types@2.3.1) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@mdx-js/react': 1.6.22(react@18.2.0) clsx: 1.2.1 copy-text-to-clipboard: 3.0.1 infima: 0.2.0-alpha.42 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.4.21 - prism-react-renderer: 1.3.5_react@18.2.0 + postcss: 8.4.23 + prism-react-renderer: 1.3.5(react@18.2.0) prismjs: 1.29.0 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-router-dom: 5.3.4_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router-dom: 5.3.4(react@18.2.0) rtlcss: 3.5.0 tslib: 2.5.0 utility-types: 3.10.0 @@ -3074,527 +6152,1150 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common/2.3.1_chqmupk3w5owqchm7zgbo6rhme: - resolution: {integrity: sha512-RYmYl2OR2biO+yhmW1aS5FyEvnrItPINa+0U2dMxcHpah8reSCjQ9eJGRmAgkZFchV1+aIQzXOI1K7LCW38O0g==} + /@docusaurus/theme-common@2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-RYmYl2OR2biO+yhmW1aS5FyEvnrItPINa+0U2dMxcHpah8reSCjQ9eJGRmAgkZFchV1+aIQzXOI1K7LCW38O0g==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/mdx-loader': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/module-type-aliases': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-blog': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-docs': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/plugin-content-pages': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@types/history': 4.7.11 + '@types/react': 18.0.28 + '@types/react-router-config': 5.0.6 + clsx: 1.2.1 + parse-numeric-range: 1.3.0 + prism-react-renderer: 1.3.5(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + use-sync-external-store: 1.2.0(react@18.2.0) + utility-types: 3.10.0 + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/theme-search-algolia@2.3.1(@algolia/client-search@4.17.1)(@docusaurus/types@2.3.1)(@types/react@18.0.28)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-JdHaRqRuH1X++g5fEMLnq7OtULSGQdrs9AbhcWRQ428ZB8/HOiaN6mj3hzHvcD3DFgu7koIVtWPQnvnN7iwzHA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docsearch/react': 3.3.3(@algolia/client-search@4.17.1)(@types/react@18.0.28)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/logger': 2.3.1 + '@docusaurus/plugin-content-docs': 2.3.1(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-common': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(eslint@7.32.0)(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack-cli@3.3.12) + '@docusaurus/theme-translations': 2.3.1 + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + '@docusaurus/utils-validation': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + algoliasearch: 4.15.0 + algoliasearch-helper: 3.12.0(algoliasearch@4.15.0) + clsx: 1.2.1 + eta: 2.0.1 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.0 + utility-types: 3.10.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - postcss-flexbugs-fixes + - postcss-normalize + - postcss-preset-env + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/theme-translations@2.3.1: + resolution: {integrity: sha512-BsBZzAewJabVhoGG1Ij2u4pMS3MPW6gZ6sS4pc+Y7czevRpzxoFNJXRtQDVGe7mOpv/MmRmqg4owDK+lcOTCVQ==} + engines: {node: '>=16.14'} + dependencies: + fs-extra: 10.1.0 + tslib: 2.5.0 + dev: false + + /@docusaurus/types@2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12): + resolution: {integrity: sha512-PREbIRhTaNNY042qmfSE372Jb7djZt+oVTZkoqHJ8eff8vOIc2zqqDqBVc5BhOfpZGPTrE078yy/torUEZy08A==} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.0.28 + commander: 5.1.0 + joi: 17.8.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + utility-types: 3.10.0 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-merge: 5.8.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: false + + /@docusaurus/utils-common@2.3.1(@docusaurus/types@2.3.1): + resolution: {integrity: sha512-pVlRpXkdNcxmKNxAaB1ya2hfCEvVsLDp2joeM6K6uv55Oc5nVIqgyYSgSNKZyMdw66NnvMfsu0RBylcwZQKo9A==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true + dependencies: + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + tslib: 2.5.0 + dev: false + + /@docusaurus/utils-validation@2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12): + resolution: {integrity: sha512-7n0208IG3k1HVTByMHlZoIDjjOFC8sbViHVXJx0r3Q+3Ezrx+VQ1RZ/zjNn6lT+QBCRCXlnlaoJ8ug4HIVgQ3w==} engines: {node: '>=16.14'} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/mdx-loader': 2.3.1_rjgxpgk5zutj5lz6mrnfgf5ngy - '@docusaurus/module-type-aliases': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/plugin-content-blog': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-docs': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-pages': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@types/history': 4.7.11 - '@types/react': 18.0.28 - '@types/react-router-config': 5.0.6 - clsx: 1.2.1 - parse-numeric-range: 1.3.0 - prism-react-renderer: 1.3.5_react@18.2.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + '@docusaurus/logger': 2.3.1 + '@docusaurus/utils': 2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12) + joi: 17.8.3 + js-yaml: 4.1.0 tslib: 2.5.0 - use-sync-external-store: 1.2.0_react@18.2.0 - utility-types: 3.10.0 transitivePeerDependencies: - '@docusaurus/types' - - '@parcel/css' - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/theme-common/2.3.1_cokwgtp7adxle3mwcpacgypcw4: - resolution: {integrity: sha512-RYmYl2OR2biO+yhmW1aS5FyEvnrItPINa+0U2dMxcHpah8reSCjQ9eJGRmAgkZFchV1+aIQzXOI1K7LCW38O0g==} + /@docusaurus/utils@2.3.1(@docusaurus/types@2.3.1)(esbuild@0.14.7)(webpack-cli@3.3.12): + resolution: {integrity: sha512-9WcQROCV0MmrpOQDXDGhtGMd52DHpSFbKLfkyaYumzbTstrbA5pPOtiGtxK1nqUHkiIv8UwexS54p0Vod2I1lg==} engines: {node: '>=16.14'} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true dependencies: - '@docusaurus/mdx-loader': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/module-type-aliases': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@docusaurus/plugin-content-blog': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-docs': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/plugin-content-pages': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/utils': 2.3.1_webpack-cli@3.3.12 - '@types/history': 4.7.11 - '@types/react': 18.0.28 - '@types/react-router-config': 5.0.6 - clsx: 1.2.1 - parse-numeric-range: 1.3.0 - prism-react-renderer: 1.3.5_react@18.2.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + '@docusaurus/logger': 2.3.1 + '@docusaurus/types': 2.3.1(esbuild@0.14.7)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12) + '@svgr/webpack': 6.5.1 + escape-string-regexp: 4.0.0 + file-loader: 6.2.0(webpack@5.76.0) + fs-extra: 10.1.0 + github-slugger: 1.5.0 + globby: 11.1.0 + gray-matter: 4.0.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.5 + resolve-pathname: 3.0.0 + shelljs: 0.8.5 tslib: 2.5.0 - use-sync-external-store: 1.2.0_react@18.2.0 - utility-types: 3.10.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.76.0) + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - supports-color - - typescript - uglify-js - - utf-8-validate - - vue-template-compiler - webpack-cli dev: false - /@docusaurus/theme-search-algolia/2.3.1_ziym5ddlfnycxybxbmnzgfkyfa: - resolution: {integrity: sha512-JdHaRqRuH1X++g5fEMLnq7OtULSGQdrs9AbhcWRQ428ZB8/HOiaN6mj3hzHvcD3DFgu7koIVtWPQnvnN7iwzHA==} - engines: {node: '>=16.14'} + /@emotion/is-prop-valid@0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + dependencies: + '@emotion/memoize': 0.7.4 + dev: false + + /@emotion/memoize@0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@7.32.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 3.4.1 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 3.4.1 + dev: false + + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@6.1.0) + espree: 7.3.1 + globals: 13.20.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/eslintrc@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@6.1.0) + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.41.0: + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: true + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + dev: true + + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: true + + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + dev: true + + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + dev: true + + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: true + + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + dev: true + + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + dev: true + + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + dev: true + + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: true + + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: true + + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + dev: true + + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: true + + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + dev: true + + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: true + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: true + + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: true + + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: true + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: true + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: true + + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: true + + /@fortawesome/fontawesome-common-types@6.3.0: + resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + + /@fortawesome/fontawesome-svg-core@6.3.0: + resolution: {integrity: sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.3.0 + dev: false + + /@fortawesome/free-brands-svg-icons@6.3.0: + resolution: {integrity: sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.3.0 + dev: false + + /@fortawesome/free-regular-svg-icons@6.3.0: + resolution: {integrity: sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.3.0 + dev: false + + /@fortawesome/free-solid-svg-icons@6.3.0: + resolution: {integrity: sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.3.0 + dev: false + + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.3.0)(react@18.2.0): + resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + '@fortawesome/fontawesome-svg-core': ~1 || ~6 + react: '>=16.3' dependencies: - '@docsearch/react': 3.3.3_zula6vjvt3wdocc4mwcxqa6nzi - '@docusaurus/core': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/logger': 2.3.1 - '@docusaurus/plugin-content-docs': 2.3.1_cokwgtp7adxle3mwcpacgypcw4 - '@docusaurus/theme-common': 2.3.1_chqmupk3w5owqchm7zgbo6rhme - '@docusaurus/theme-translations': 2.3.1 - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - '@docusaurus/utils-validation': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - algoliasearch: 4.15.0 - algoliasearch-helper: 3.12.0_algoliasearch@4.15.0 - clsx: 1.2.1 - eta: 2.0.1 - fs-extra: 10.1.0 - lodash: 4.17.21 + '@fortawesome/fontawesome-svg-core': 6.3.0 + prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.5.0 - utility-types: 3.10.0 + dev: false + + /@graphql-typed-document-node/core@3.1.2(graphql@16.6.0): + resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.6.0 + dev: false + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: false + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: false + + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@6.1.0) + minimatch: 3.1.2 transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/types' - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - postcss-flexbugs-fixes - - postcss-normalize - - postcss-preset-env - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli dev: false - /@docusaurus/theme-translations/2.3.1: - resolution: {integrity: sha512-BsBZzAewJabVhoGG1Ij2u4pMS3MPW6gZ6sS4pc+Y7czevRpzxoFNJXRtQDVGe7mOpv/MmRmqg4owDK+lcOTCVQ==} - engines: {node: '>=16.14'} + /@humanwhocodes/config-array@0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} dependencies: - fs-extra: 10.1.0 - tslib: 2.5.0 + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@6.1.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: false - /@docusaurus/types/2.3.1_elhwamslj4bgtjdngr3xwp2fba: - resolution: {integrity: sha512-PREbIRhTaNNY042qmfSE372Jb7djZt+oVTZkoqHJ8eff8vOIc2zqqDqBVc5BhOfpZGPTrE078yy/torUEZy08A==} + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + /@hypnosphi/create-react-context@0.3.1(prop-types@15.8.1)(react@18.2.0): + resolution: {integrity: sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==} peerDependencies: - react: ^16.8.4 || ^17.0.0 - react-dom: ^16.8.4 || ^17.0.0 + prop-types: ^15.0.0 + react: '>=0.14.0' dependencies: - '@types/history': 4.7.11 - '@types/react': 18.0.28 - commander: 5.1.0 - joi: 17.8.3 + gud: 1.0.0 + prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y - utility-types: 3.10.0 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-merge: 5.8.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + warning: 4.0.3 dev: false - /@docusaurus/utils-common/2.3.1: - resolution: {integrity: sha512-pVlRpXkdNcxmKNxAaB1ya2hfCEvVsLDp2joeM6K6uv55Oc5nVIqgyYSgSNKZyMdw66NnvMfsu0RBylcwZQKo9A==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + /@jest/console@26.6.2: + resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 20.9.0 + chalk: 4.1.2 + jest-message-util: 26.6.2 + jest-util: 26.6.2 + slash: 3.0.0 + + /@jest/console@27.5.1: + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.9.0 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 dev: false - /@docusaurus/utils-common/2.3.1_@docusaurus+types@2.3.1: - resolution: {integrity: sha512-pVlRpXkdNcxmKNxAaB1ya2hfCEvVsLDp2joeM6K6uv55Oc5nVIqgyYSgSNKZyMdw66NnvMfsu0RBylcwZQKo9A==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true + /@jest/console@28.1.3: + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - tslib: 2.5.0 + '@jest/types': 28.1.3 + '@types/node': 20.9.0 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 dev: false - /@docusaurus/utils-validation/2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa: - resolution: {integrity: sha512-7n0208IG3k1HVTByMHlZoIDjjOFC8sbViHVXJx0r3Q+3Ezrx+VQ1RZ/zjNn6lT+QBCRCXlnlaoJ8ug4HIVgQ3w==} - engines: {node: '>=16.14'} + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@docusaurus/logger': 2.3.1 - '@docusaurus/utils': 2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa - joi: 17.8.3 - js-yaml: 4.1.0 - tslib: 2.5.0 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli + '@jest/types': 29.5.0 + '@types/node': 20.9.0 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 dev: false - /@docusaurus/utils-validation/2.3.1_webpack-cli@3.3.12: - resolution: {integrity: sha512-7n0208IG3k1HVTByMHlZoIDjjOFC8sbViHVXJx0r3Q+3Ezrx+VQ1RZ/zjNn6lT+QBCRCXlnlaoJ8ug4HIVgQ3w==} - engines: {node: '>=16.14'} + /@jest/core@26.6.3(ts-node@10.9.1): + resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + engines: {node: '>= 10.14.2'} dependencies: - '@docusaurus/logger': 2.3.1 - '@docusaurus/utils': 2.3.1_webpack-cli@3.3.12 - joi: 17.8.3 - js-yaml: 4.1.0 - tslib: 2.5.0 + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 26.6.2 + jest-config: 26.6.3(ts-node@10.9.1) + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3(ts-node@10.9.1) + jest-runtime: 26.6.3(ts-node@10.9.1) + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 + micromatch: 4.0.5 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild + - bufferutil + - canvas - supports-color - - uglify-js - - webpack-cli + - ts-node + - utf-8-validate dev: false - /@docusaurus/utils/2.3.1_jxlsh4lcr5vcv4s53ewqr3anwa: - resolution: {integrity: sha512-9WcQROCV0MmrpOQDXDGhtGMd52DHpSFbKLfkyaYumzbTstrbA5pPOtiGtxK1nqUHkiIv8UwexS54p0Vod2I1lg==} - engines: {node: '>=16.14'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true + /@jest/core@26.6.3(ts-node@7.0.1): + resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + engines: {node: '>= 10.14.2'} dependencies: - '@docusaurus/logger': 2.3.1 - '@docusaurus/types': 2.3.1_elhwamslj4bgtjdngr3xwp2fba - '@svgr/webpack': 6.5.1 - escape-string-regexp: 4.0.0 - file-loader: 6.2.0_webpack@5.75.0 - fs-extra: 10.1.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - js-yaml: 4.1.0 - lodash: 4.17.21 + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 26.6.2 + jest-config: 26.6.3(ts-node@7.0.1) + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3(ts-node@7.0.1) + jest-runtime: 26.6.3(ts-node@7.0.1) + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 micromatch: 4.0.5 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.5.0 - url-loader: 4.1.1_p5dl6emkcwslbw72e37w4ug7em - webpack: 5.75.0_webpack-cli@3.3.12 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 transitivePeerDependencies: - - '@swc/core' - - esbuild + - bufferutil + - canvas - supports-color - - uglify-js - - webpack-cli - dev: false + - ts-node + - utf-8-validate + dev: true - /@docusaurus/utils/2.3.1_webpack-cli@3.3.12: - resolution: {integrity: sha512-9WcQROCV0MmrpOQDXDGhtGMd52DHpSFbKLfkyaYumzbTstrbA5pPOtiGtxK1nqUHkiIv8UwexS54p0Vod2I1lg==} - engines: {node: '>=16.14'} + /@jest/core@27.5.1(ts-node@10.9.1): + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: - '@docusaurus/types': '*' + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: - '@docusaurus/types': + node-notifier: optional: true dependencies: - '@docusaurus/logger': 2.3.1 - '@svgr/webpack': 6.5.1 - escape-string-regexp: 4.0.0 - file-loader: 6.2.0_webpack@5.75.0 - fs-extra: 10.1.0 - github-slugger: 1.5.0 - globby: 11.1.0 - gray-matter: 4.0.3 - js-yaml: 4.1.0 - lodash: 4.17.21 + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(ts-node@10.9.1) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 micromatch: 4.0.5 - resolve-pathname: 3.0.0 - shelljs: 0.8.5 - tslib: 2.5.0 - url-loader: 4.1.1_p5dl6emkcwslbw72e37w4ug7em - webpack: 5.75.0_webpack-cli@3.3.12 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 transitivePeerDependencies: - - '@swc/core' - - esbuild + - bufferutil + - canvas - supports-color - - uglify-js - - webpack-cli + - ts-node + - utf-8-validate dev: false - /@emotion/is-prop-valid/0.8.8: - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + /@jest/environment@26.6.2: + resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} + engines: {node: '>= 10.14.2'} dependencies: - '@emotion/memoize': 0.7.4 - dev: false - - /@emotion/memoize/0.7.4: - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - dev: false - - /@emotion/unitless/0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - dev: false + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.9.0 + jest-mock: 26.6.2 - /@eslint/eslintrc/0.4.3: - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} + /@jest/environment@27.5.1: + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 7.3.1 - globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.9.0 + jest-mock: 27.5.1 dev: false - /@fortawesome/fontawesome-common-types/6.3.0: - resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} - engines: {node: '>=6'} - requiresBuild: true + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.9.0 + jest-mock: 29.5.0 dev: false - /@fortawesome/fontawesome-svg-core/6.3.0: - resolution: {integrity: sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==} - engines: {node: '>=6'} - requiresBuild: true + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 + jest-get-type: 29.4.3 dev: false - /@fortawesome/free-brands-svg-icons/6.3.0: - resolution: {integrity: sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==} - engines: {node: '>=6'} - requiresBuild: true + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color dev: false - /@fortawesome/free-regular-svg-icons/6.3.0: - resolution: {integrity: sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==} - engines: {node: '>=6'} - requiresBuild: true + /@jest/fake-timers@26.6.2: + resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} + engines: {node: '>= 10.14.2'} dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 - dev: false + '@jest/types': 26.6.2 + '@sinonjs/fake-timers': 6.0.1 + '@types/node': 20.9.0 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-util: 26.6.2 - /@fortawesome/free-solid-svg-icons/6.3.0: - resolution: {integrity: sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==} - engines: {node: '>=6'} - requiresBuild: true + /@jest/fake-timers@27.5.1: + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 20.9.0 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 dev: false - /@fortawesome/react-fontawesome/0.2.0_d5rbrisxfyemehbvmdbryvgjte: - resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} - peerDependencies: - '@fortawesome/fontawesome-svg-core': ~1 || ~6 - react: '>=16.3' + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@fortawesome/fontawesome-svg-core': 6.3.0 - prop-types: 15.8.1 - react: 18.2.0 + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 20.9.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: false - /@graphql-typed-document-node/core/3.1.2_graphql@16.6.0: - resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + /@jest/globals@26.6.2: + resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} + engines: {node: '>= 10.14.2'} dependencies: - graphql: 16.6.0 - dev: false + '@jest/environment': 26.6.2 + '@jest/types': 26.6.2 + expect: 26.6.2 - /@hapi/hoek/9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + /@jest/globals@27.5.1: + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 dev: false - /@hapi/topo/5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + /@jest/reporters@26.6.2: + resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} + engines: {node: '>= 10.14.2'} dependencies: - '@hapi/hoek': 9.3.0 - dev: false + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-haste-map: 26.6.2 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 7.1.2 + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - supports-color - /@humanwhocodes/config-array/0.5.0: - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} - engines: {node: '>=10.10.0'} + /@jest/reporters@27.5.1: + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 20.9.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 transitivePeerDependencies: - supports-color dev: false - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@jest/schemas@28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 dev: false - /@hypnosphi/create-react-context/0.3.1_sh5qlbywuemxd2y3xkrw2y2kr4: - resolution: {integrity: sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==} - peerDependencies: - prop-types: ^15.0.0 - react: '>=0.14.0' + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - gud: 1.0.0 - prop-types: 15.8.1 - react: 18.2.0 - warning: 4.0.3 - dev: false + '@sinclair/typebox': 0.25.24 - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + /@jest/source-map@26.6.2: + resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} + engines: {node: '>= 10.14.2'} dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: false + callsites: 3.1.0 + graceful-fs: 4.2.10 + source-map: 0.6.1 - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + /@jest/source-map@27.5.1: + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.10 + source-map: 0.6.1 dev: false - /@jest/console/26.6.2: - resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} + /@jest/test-result@26.6.2: + resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} engines: {node: '>= 10.14.2'} dependencies: + '@jest/console': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.14.6 - chalk: 4.1.2 - jest-message-util: 26.6.2 - jest-util: 26.6.2 - slash: 3.0.0 - dev: false + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 - /@jest/console/27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + /@jest/test-result@27.5.1: + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: + '@jest/console': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 dev: false - /@jest/console/28.1.3: - resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + /@jest/test-result@28.1.3: + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: + '@jest/console': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 18.14.6 - chalk: 4.1.2 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 dev: false - /@jest/console/29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@jest/console': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 dev: false - /@jest/core/26.6.3: - resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + /@jest/test-sequencer@26.6.3(ts-node@10.9.1): + resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} engines: {node: '>= 10.14.2'} dependencies: - '@jest/console': 26.6.2 - '@jest/reporters': 26.6.2 '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.14.6 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 26.6.2 - jest-config: 26.6.3 jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3 - jest-runtime: 26.6.3 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - jest-watcher: 26.6.2 - micromatch: 4.0.5 - p-each-series: 2.2.0 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 + jest-runner: 26.6.3(ts-node@10.9.1) + jest-runtime: 26.6.3(ts-node@10.9.1) transitivePeerDependencies: - bufferutil - canvas @@ -3603,707 +7304,923 @@ packages: - utf-8-validate dev: false - /@jest/core/27.5.1: - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + /@jest/test-sequencer@26.6.3(ts-node@7.0.1): + resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.10 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3(ts-node@7.0.1) + jest-runtime: 26.6.3(ts-node@7.0.1) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/test-sequencer@27.5.1: + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 + graceful-fs: 4.2.10 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@jest/transform@26.6.2: + resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/core': 7.21.8 + '@jest/types': 26.6.2 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 26.6.2 + jest-regex-util: 26.0.0 + jest-util: 26.6.2 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + /@jest/transform@27.5.1: + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.21.8 '@jest/types': 27.5.1 - '@types/node': 18.14.6 - ansi-escapes: 4.3.2 + babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-changed-files: 27.5.1 - jest-config: 27.5.1 jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 micromatch: 4.0.5 - rimraf: 3.0.2 + pirates: 4.0.5 slash: 3.0.0 - strip-ansi: 6.0.1 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.8 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.9.0 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.9.0 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + + /@jest/types@28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.9.0 + '@types/yargs': 17.0.22 + chalk: 4.1.2 + dev: false + + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.9.0 + '@types/yargs': 17.0.22 + chalk: 4.1.2 + dev: false + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + requiresBuild: true + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@leichtgewicht/ip-codec@2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + dev: false + + /@mdx-js/mdx@1.6.22: + resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@mdx-js/util': 1.6.22 + babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) + babel-plugin-extract-import-names: 1.6.22 + camelcase-css: 2.0.1 + detab: 2.0.4 + hast-util-raw: 6.0.1 + lodash.uniq: 4.5.0 + mdast-util-to-hast: 10.0.1 + remark-footnotes: 2.0.0 + remark-mdx: 1.6.22 + remark-parse: 8.0.3 + remark-squeeze-paragraphs: 4.0.0 + style-to-object: 0.3.0 + unified: 9.2.0 + unist-builder: 2.0.3 + unist-util-visit: 2.0.3 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate dev: false - /@jest/environment/26.6.2: - resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} - engines: {node: '>= 10.14.2'} + /@mdx-js/react@1.6.22(react@18.2.0): + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 dependencies: - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 18.14.6 - jest-mock: 26.6.2 + react: 18.2.0 dev: false - /@jest/environment/27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@mdx-js/react@2.3.0(react@18.2.0): + resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} + peerDependencies: + react: '>=16' dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.14.6 - jest-mock: 27.5.1 + '@types/mdx': 2.0.3 + '@types/react': 18.0.28 + react: 18.2.0 dev: false - /@jest/environment/29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.14.6 - jest-mock: 29.5.0 + /@mdx-js/util@1.6.22: + resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} dev: false - /@jest/expect-utils/29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@metamask/eth-sig-util@4.0.1: + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} dependencies: - jest-get-type: 29.4.3 - dev: false + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: true - /@jest/expect/29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@mrmlnc/readdir-enhanced@2.2.1: + resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} + engines: {node: '>=4'} dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color + call-me-maybe: 1.0.2 + glob-to-regexp: 0.3.0 dev: false - /@jest/fake-timers/26.6.2: - resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - '@sinonjs/fake-timers': 6.0.1 - '@types/node': 18.14.6 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-util: 26.6.2 + /@next/env@13.0.5: + resolution: {integrity: sha512-F3KLtiDrUslAZhTYTh8Zk5ZaavbYwLUn3NYPBnOjAXU8hWm0QVGVzKIOuURQ098ofRU4e9oglf3Sj9pFx5nI5w==} dev: false - /@jest/fake-timers/27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.14.6 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 + /@next/swc-android-arm-eabi@13.0.5: + resolution: {integrity: sha512-YO691dxHlviy6H0eghgwqn+5kU9J3iQnKERHTDSppqjjGDBl6ab4wz9XfI5AhljjkaTg3TknHoIEWFDoZ4Ve8g==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + requiresBuild: true dev: false + optional: true - /@jest/fake-timers/29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.6 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 + /@next/swc-android-arm64@13.0.5: + resolution: {integrity: sha512-ugbwffkUmp8cd2afehDC8LtQeFUxElRUBBngfB5UYSWBx18HW4OgzkPFIY8jUBH16zifvGZWXbICXJWDHrOLtw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: false + optional: true - /@jest/globals/26.6.2: - resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/environment': 26.6.2 - '@jest/types': 26.6.2 - expect: 26.6.2 + /@next/swc-darwin-arm64@13.0.5: + resolution: {integrity: sha512-mshlh8QOtOalfZbc17uNAftWgqHTKnrv6QUwBe+mpGz04eqsSUzVz1JGZEdIkmuDxOz00cK2NPoc+VHDXh99IQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: false + optional: true - /@jest/globals/27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 + /@next/swc-darwin-x64@13.0.5: + resolution: {integrity: sha512-SfigOKW4Z2UB3ruUPyvrlDIkcJq1hiw1wvYApWugD+tQsAkYZKEoz+/8emCmeYZ6Gwgi1WHV+z52Oj8u7bEHPg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: false + optional: true - /@jest/reporters/26.6.2: - resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} - engines: {node: '>= 10.14.2'} - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-haste-map: 26.6.2 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 7.1.2 - optionalDependencies: - node-notifier: 8.0.2 - transitivePeerDependencies: - - supports-color + /@next/swc-freebsd-x64@13.0.5: + resolution: {integrity: sha512-0NJg8HZr4yG8ynmMGFXQf+Mahvq4ZgBmUwSlLXXymgxEQgH17erH/LoR69uITtW+KTsALgk9axEt5AAabM4ucg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: false + optional: true - /@jest/reporters/27.5.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 18.14.6 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.1 - transitivePeerDependencies: - - supports-color + /@next/swc-linux-arm-gnueabihf@13.0.5: + resolution: {integrity: sha512-Cye+h3oDT3NDWjACMlRaolL8fokpKie34FlPj9nfoW7bYKmoMBY1d4IO/GgBF+5xEl7HkH0Ny/qex63vQ0pN+A==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: false + optional: true - /@jest/schemas/28.1.3: - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@sinclair/typebox': 0.24.51 + /@next/swc-linux-arm64-gnu@13.0.5: + resolution: {integrity: sha512-5BfDS/VoRDR5QUGG9oedOCEZGmV2zxUVFYLUJVPMSMeIgqkjxWQBiG2BUHZI6/LGk9yvHmjx7BTvtBCLtRg6IQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: false + optional: true - /@jest/schemas/29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.24 + /@next/swc-linux-arm64-musl@13.0.5: + resolution: {integrity: sha512-xenvqlXz+KxVKAB1YR723gnVNszpsCvKZkiFFaAYqDGJ502YuqU2fwLsaSm/ASRizNcBYeo9HPLTyc3r/9cdMQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: false + optional: true - /@jest/source-map/26.6.2: - resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} - engines: {node: '>= 10.14.2'} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.10 - source-map: 0.6.1 + /@next/swc-linux-x64-gnu@13.0.5: + resolution: {integrity: sha512-9Ahi1bbdXwhrWQmOyoTod23/hhK05da/FzodiNqd6drrMl1y7+RujoEcU8Dtw3H1mGWB+yuTlWo8B4Iba8hqiQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: false + optional: true - /@jest/source-map/27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.10 - source-map: 0.6.1 + /@next/swc-linux-x64-musl@13.0.5: + resolution: {integrity: sha512-V+1mnh49qmS9fOZxVRbzjhBEz9IUGJ7AQ80JPWAYQM5LI4TxfdiF4APLPvJ52rOmNeTqnVz1bbKtVOso+7EZ4w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.0.5: + resolution: {integrity: sha512-wRE9rkp7I+/3Jf2T9PFIJOKq3adMWYEFkPOA7XAkUfYbQHlDJm/U5cVCWUsKByyQq5RThwufI91sgd19MfxRxg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.0.5: + resolution: {integrity: sha512-Q1XQSLEhFuFhkKFdJIGt7cYQ4T3u6P5wrtUNreg5M+7P+fjSiC8+X+Vjcw+oebaacsdl0pWZlK+oACGafush1w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.0.5: + resolution: {integrity: sha512-t5gRblrwwiNZP6cT7NkxlgxrFgHWtv9ei5vUraCLgBqzvIsa7X+PnarZUeQCXqz6Jg9JSGGT9j8lvzD97UqeJQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: false + optional: true - /@jest/test-result/26.6.2: - resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} - engines: {node: '>= 10.14.2'} + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: - '@jest/console': 26.6.2 - '@jest/types': 26.6.2 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + eslint-scope: 5.1.1 dev: false - /@jest/test-result/27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: false + '@noble/hashes': 1.3.1 + dev: true - /@jest/test-result/28.1.3: - resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} dependencies: - '@jest/console': 28.1.3 - '@jest/types': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: false + '@noble/hashes': 1.3.2 + dev: true - /@jest/test-result/29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: true + + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: true + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: true + + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@1.1.3: + resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} + engines: {node: '>= 6'} dev: false - /@jest/test-sequencer/26.6.3: - resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} - engines: {node: '>= 10.14.2'} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - '@jest/test-result': 26.6.2 - graceful-fs: 4.2.10 - jest-haste-map: 26.6.2 - jest-runner: 26.6.3 - jest-runtime: 26.6.3 + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@nomicfoundation/ethereumjs-block@5.0.2: + resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 transitivePeerDependencies: - bufferutil - - canvas - - supports-color - - ts-node - utf-8-validate - dev: false + dev: true - /@jest/test-sequencer/27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@nomicfoundation/ethereumjs-blockchain@7.0.2: + resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} + engines: {node: '>=14'} dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-ethash': 3.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + abstract-level: 1.0.4 + debug: 4.3.4(supports-color@6.1.0) + ethereum-cryptography: 0.1.3 + level: 8.0.0 + lru-cache: 5.1.1 + memory-level: 1.0.0 transitivePeerDependencies: + - bufferutil - supports-color - dev: false + - utf-8-validate + dev: true - /@jest/transform/26.6.2: - resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} - engines: {node: '>= 10.14.2'} + /@nomicfoundation/ethereumjs-common@4.0.2: + resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} dependencies: - '@babel/core': 7.21.0 - '@jest/types': 26.6.2 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 26.6.2 - jest-regex-util: 26.0.0 - jest-util: 26.6.2 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: false + '@nomicfoundation/ethereumjs-util': 9.0.2 + crc-32: 1.2.2 + dev: true - /@jest/transform/27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@nomicfoundation/ethereumjs-ethash@3.0.2: + resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} + engines: {node: '>=14'} dependencies: - '@babel/core': 7.21.0 - '@jest/types': 27.5.1 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + abstract-level: 1.0.4 + bigint-crypto-utils: 3.3.0 + ethereum-cryptography: 0.1.3 transitivePeerDependencies: - - supports-color - dev: false + - bufferutil + - utf-8-validate + dev: true - /@jest/transform/29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@nomicfoundation/ethereumjs-evm@2.0.2: + resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} + engines: {node: '>=14'} dependencies: - '@babel/core': 7.21.0 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.17 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 + '@ethersproject/providers': 5.7.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + debug: 4.3.4(supports-color@6.1.0) + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 transitivePeerDependencies: + - bufferutil - supports-color - dev: false - - /@jest/types/26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 - '@types/yargs': 15.0.15 - chalk: 4.1.2 - dev: false - - /@jest/types/27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 - '@types/yargs': 16.0.5 - chalk: 4.1.2 - dev: false - - /@jest/types/28.1.3: - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 - '@types/yargs': 17.0.22 - chalk: 4.1.2 - dev: false + - utf-8-validate + dev: true - /@jest/types/29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 - '@types/yargs': 17.0.22 - chalk: 4.1.2 - dev: false + /@nomicfoundation/ethereumjs-rlp@5.0.2: + resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} + engines: {node: '>=14'} + hasBin: true + dev: true - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + /@nomicfoundation/ethereumjs-statemanager@2.0.2: + resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: false + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + debug: 4.3.4(supports-color@6.1.0) + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 + js-sdsl: 4.4.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} + /@nomicfoundation/ethereumjs-trie@6.0.2: + resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} + engines: {node: '>=14'} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - dev: false - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: false + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@types/readable-stream': 2.3.15 + ethereum-cryptography: 0.1.3 + readable-stream: 3.6.1 + dev: true - /@jridgewell/source-map/0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + /@nomicfoundation/ethereumjs-tx@5.0.2: + resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} + engines: {node: '>=14'} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - dev: false - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: false + '@chainsafe/ssz': 0.9.4 + '@ethersproject/providers': 5.7.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@nomicfoundation/ethereumjs-util@9.0.2: + resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} + engines: {node: '>=14'} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: false + '@chainsafe/ssz': 0.10.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + ethereum-cryptography: 0.1.3 + dev: true - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + /@nomicfoundation/ethereumjs-vm@7.0.2: + resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} + engines: {node: '>=14'} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: false - optional: true + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + debug: 4.3.4(supports-color@6.1.0) + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true - /@leichtgewicht/ip-codec/2.0.4: - resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} - dev: false + /@nomicfoundation/hardhat-chai-matchers@2.0.3(@nomicfoundation/hardhat-ethers@3.0.5)(chai@4.4.1)(ethers@6.10.0)(hardhat@2.19.4): + resolution: {integrity: sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.5(ethers@6.10.0)(hardhat@2.19.4) + '@types/chai-as-promised': 7.1.8 + chai: 4.4.1 + chai-as-promised: 7.1.1(chai@4.4.1) + deep-eql: 4.1.3 + ethers: 6.10.0 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + ordinal: 1.0.3 + dev: true - /@mdx-js/mdx/1.6.22: - resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} + /@nomicfoundation/hardhat-ethers@3.0.5(ethers@6.10.0)(hardhat@2.19.4): + resolution: {integrity: sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 - '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22_@babel+core@7.12.9 - babel-plugin-extract-import-names: 1.6.22 - camelcase-css: 2.0.1 - detab: 2.0.4 - hast-util-raw: 6.0.1 - lodash.uniq: 4.5.0 - mdast-util-to-hast: 10.0.1 - remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 - remark-parse: 8.0.3 - remark-squeeze-paragraphs: 4.0.0 - style-to-object: 0.3.0 - unified: 9.2.0 - unist-builder: 2.0.3 - unist-util-visit: 2.0.3 + debug: 4.3.4(supports-color@6.1.0) + ethers: 6.10.0 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + lodash.isequal: 4.5.0 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@mdx-js/react/1.6.22_react@18.2.0: - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + /@nomicfoundation/hardhat-foundry@1.1.1(hardhat@2.19.4): + resolution: {integrity: sha512-cXGCBHAiXas9Pg9MhMOpBVQCkWRYoRFG7GJJAph+sdQsfd22iRs5U5Vs9XmpGEQd1yEvYISQZMeE68Nxj65iUQ==} peerDependencies: - react: ^16.13.1 || ^17.0.0 + hardhat: ^2.17.2 dependencies: - react: 18.2.0 - dev: false + chalk: 2.4.2 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + dev: true - /@mdx-js/react/2.3.0_react@18.2.0: - resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} + /@nomicfoundation/hardhat-network-helpers@1.0.10(hardhat@2.19.4): + resolution: {integrity: sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==} peerDependencies: - react: '>=16' + hardhat: ^2.9.5 dependencies: - '@types/mdx': 2.0.3 - '@types/react': 18.0.28 - react: 18.2.0 - dev: false + ethereumjs-util: 7.1.5 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + dev: true - /@mdx-js/util/1.6.22: - resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} - dev: false + /@nomicfoundation/hardhat-toolbox@4.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.3)(@nomicfoundation/hardhat-ethers@3.0.5)(@nomicfoundation/hardhat-network-helpers@1.0.10)(@nomicfoundation/hardhat-verify@2.0.3)(@typechain/ethers-v6@0.5.1)(@typechain/hardhat@9.1.0)(@types/chai@4.3.11)(@types/mocha@10.0.6)(@types/node@20.9.0)(chai@4.4.1)(ethers@6.10.0)(hardhat-gas-reporter@1.0.9)(hardhat@2.19.4)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.2)(typescript@5.3.3): + resolution: {integrity: sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA==} + peerDependencies: + '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-network-helpers': ^1.0.0 + '@nomicfoundation/hardhat-verify': ^2.0.0 + '@typechain/ethers-v6': ^0.5.0 + '@typechain/hardhat': ^9.0.0 + '@types/chai': ^4.2.0 + '@types/mocha': '>=9.1.0' + '@types/node': '>=16.0.0' + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: '>=8.0.0' + typechain: ^8.3.0 + typescript: '>=4.5.0' + dependencies: + '@nomicfoundation/hardhat-chai-matchers': 2.0.3(@nomicfoundation/hardhat-ethers@3.0.5)(chai@4.4.1)(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-ethers': 3.0.5(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-network-helpers': 1.0.10(hardhat@2.19.4) + '@nomicfoundation/hardhat-verify': 2.0.3(hardhat@2.19.4) + '@typechain/ethers-v6': 0.5.1(ethers@6.10.0)(typechain@8.3.2)(typescript@5.3.3) + '@typechain/hardhat': 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.10.0)(hardhat@2.19.4)(typechain@8.3.2) + '@types/chai': 4.3.11 + '@types/mocha': 10.0.6 + '@types/node': 20.9.0 + chai: 4.4.1 + ethers: 6.10.0 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + hardhat-gas-reporter: 1.0.9(hardhat@2.19.4) + solidity-coverage: 0.8.5(hardhat@2.19.4) + ts-node: 10.9.1(@types/node@20.9.0)(typescript@5.3.3) + typechain: 8.3.2(typescript@5.3.3) + typescript: 5.3.3 + dev: true - /@mrmlnc/readdir-enhanced/2.2.1: - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} + /@nomicfoundation/hardhat-verify@2.0.3(hardhat@2.19.4): + resolution: {integrity: sha512-ESbRu9by53wu6VvgwtMtm108RSmuNsVqXtzg061D+/4R7jaWh/Wl/8ve+p6SdDX7vA1Z3L02hDO1Q3BY4luLXQ==} + peerDependencies: + hardhat: ^2.0.4 dependencies: - call-me-maybe: 1.0.2 - glob-to-regexp: 0.3.0 - dev: false - - /@next/env/13.0.5: - resolution: {integrity: sha512-F3KLtiDrUslAZhTYTh8Zk5ZaavbYwLUn3NYPBnOjAXU8hWm0QVGVzKIOuURQ098ofRU4e9oglf3Sj9pFx5nI5w==} - dev: false - - /@next/swc-android-arm-eabi/13.0.5: - resolution: {integrity: sha512-YO691dxHlviy6H0eghgwqn+5kU9J3iQnKERHTDSppqjjGDBl6ab4wz9XfI5AhljjkaTg3TknHoIEWFDoZ4Ve8g==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@next/swc-android-arm64/13.0.5: - resolution: {integrity: sha512-ugbwffkUmp8cd2afehDC8LtQeFUxElRUBBngfB5UYSWBx18HW4OgzkPFIY8jUBH16zifvGZWXbICXJWDHrOLtw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + cbor: 8.1.0 + chalk: 2.4.2 + debug: 4.3.4(supports-color@6.1.0) + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + lodash.clonedeep: 4.5.0 + semver: 6.3.0 + table: 6.8.1 + undici: 5.28.2 + transitivePeerDependencies: + - supports-color + dev: true - /@next/swc-darwin-arm64/13.0.5: - resolution: {integrity: sha512-mshlh8QOtOalfZbc17uNAftWgqHTKnrv6QUwBe+mpGz04eqsSUzVz1JGZEdIkmuDxOz00cK2NPoc+VHDXh99IQ==} + /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: + resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-darwin-x64/13.0.5: - resolution: {integrity: sha512-SfigOKW4Z2UB3ruUPyvrlDIkcJq1hiw1wvYApWugD+tQsAkYZKEoz+/8emCmeYZ6Gwgi1WHV+z52Oj8u7bEHPg==} + /@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1: + resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-freebsd-x64/13.0.5: - resolution: {integrity: sha512-0NJg8HZr4yG8ynmMGFXQf+Mahvq4ZgBmUwSlLXXymgxEQgH17erH/LoR69uITtW+KTsALgk9axEt5AAabM4ucg==} + /@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1: + resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm-gnueabihf/13.0.5: - resolution: {integrity: sha512-Cye+h3oDT3NDWjACMlRaolL8fokpKie34FlPj9nfoW7bYKmoMBY1d4IO/GgBF+5xEl7HkH0Ny/qex63vQ0pN+A==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-linux-arm64-gnu/13.0.5: - resolution: {integrity: sha512-5BfDS/VoRDR5QUGG9oedOCEZGmV2zxUVFYLUJVPMSMeIgqkjxWQBiG2BUHZI6/LGk9yvHmjx7BTvtBCLtRg6IQ==} + /@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1: + resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-linux-arm64-musl/13.0.5: - resolution: {integrity: sha512-xenvqlXz+KxVKAB1YR723gnVNszpsCvKZkiFFaAYqDGJ502YuqU2fwLsaSm/ASRizNcBYeo9HPLTyc3r/9cdMQ==} + /@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1: + resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-linux-x64-gnu/13.0.5: - resolution: {integrity: sha512-9Ahi1bbdXwhrWQmOyoTod23/hhK05da/FzodiNqd6drrMl1y7+RujoEcU8Dtw3H1mGWB+yuTlWo8B4Iba8hqiQ==} + /@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1: + resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-linux-x64-musl/13.0.5: - resolution: {integrity: sha512-V+1mnh49qmS9fOZxVRbzjhBEz9IUGJ7AQ80JPWAYQM5LI4TxfdiF4APLPvJ52rOmNeTqnVz1bbKtVOso+7EZ4w==} + /@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1: + resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-win32-arm64-msvc/13.0.5: - resolution: {integrity: sha512-wRE9rkp7I+/3Jf2T9PFIJOKq3adMWYEFkPOA7XAkUfYbQHlDJm/U5cVCWUsKByyQq5RThwufI91sgd19MfxRxg==} + /@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1: + resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-win32-ia32-msvc/13.0.5: - resolution: {integrity: sha512-Q1XQSLEhFuFhkKFdJIGt7cYQ4T3u6P5wrtUNreg5M+7P+fjSiC8+X+Vjcw+oebaacsdl0pWZlK+oACGafush1w==} + /@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1: + resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] requiresBuild: true - dev: false + dev: true optional: true - /@next/swc-win32-x64-msvc/13.0.5: - resolution: {integrity: sha512-t5gRblrwwiNZP6cT7NkxlgxrFgHWtv9ei5vUraCLgBqzvIsa7X+PnarZUeQCXqz6Jg9JSGGT9j8lvzD97UqeJQ==} + /@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1: + resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true - /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - dependencies: - eslint-scope: 5.1.1 - dev: false + /@nomicfoundation/solidity-analyzer@0.1.1: + resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + engines: {node: '>= 12'} + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 + dev: true - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + /@openzeppelin/contracts-upgradeable@5.0.1(@openzeppelin/contracts@5.0.1): + resolution: {integrity: sha512-MvaLoPnVcoZr/qqZP+4cl9piuR4gg0iIGgxVSZ/AL1iId3M6IdEHzz9Naw5Lirl4KKBI6ciTVnX07yL4dOMIJg==} + peerDependencies: + '@openzeppelin/contracts': 5.0.1 dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + '@openzeppelin/contracts': 5.0.1 dev: false - /@nodelib/fs.stat/1.1.3: - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} + /@openzeppelin/contracts@5.0.1: + resolution: {integrity: sha512-yQJaT5HDp9hYOOp4jTYxMsR02gdFZFXhewX5HW9Jo4fsqSVqqyIO/xTHdWDaKX5a3pv1txmf076Lziz+sO7L1w==} dev: false - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: false + /@openzeppelin/defender-admin-client@1.54.1(debug@4.3.4): + resolution: {integrity: sha512-kRpSUdTsnSqntp4FOXIm95t+6VKHc8CUY2Si71VDuxs0q7HSPZkdpRPSntcolwEzWy9L4a8NS/QMwDF5NJ4X1g==} + dependencies: + '@openzeppelin/defender-base-client': 1.54.1(debug@4.3.4) + axios: 1.6.5(debug@4.3.4) + ethers: 5.7.2 + lodash: 4.17.21 + node-fetch: 2.6.7 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + dev: true - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + /@openzeppelin/defender-base-client@1.54.1(debug@4.3.4): + resolution: {integrity: sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw==} dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: false + amazon-cognito-identity-js: 6.3.7 + async-retry: 1.3.3 + axios: 1.6.5(debug@4.3.4) + lodash: 4.17.21 + node-fetch: 2.6.7 + transitivePeerDependencies: + - debug + - encoding + dev: true + + /@openzeppelin/defender-sdk-base-client@1.9.0: + resolution: {integrity: sha512-ywxZslKaY7Z5z9APpBunIDp4nXkGnYZAStaIhzzh8vbbzu7lxiZO98tsX3B9vCefqWC4oyX0mm78CdyYUgW5KQ==} + dependencies: + amazon-cognito-identity-js: 6.3.7 + async-retry: 1.3.3 + transitivePeerDependencies: + - encoding + dev: true + + /@openzeppelin/defender-sdk-deploy-client@1.9.0(debug@4.3.4): + resolution: {integrity: sha512-xw3qRJzE3XQRBoBBqOC7VOEtaVnzeN9EgsBZSjWlDUcmfJ6jdUuUsoqEkwYBZVEi+Dr3ujURY2DsmEvs0gFoNw==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@openzeppelin/defender-sdk-base-client': 1.9.0 + axios: 1.6.5(debug@4.3.4) + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + dev: true + + /@openzeppelin/hardhat-upgrades@3.0.2(@nomicfoundation/hardhat-ethers@3.0.5)(@nomicfoundation/hardhat-verify@2.0.3)(ethers@6.10.0)(hardhat@2.19.4): + resolution: {integrity: sha512-Fk940cxwew++bfSZKWHEXVUCr3tRBiRZZBw1nl1wUVq29cq7BrlwDkZ6hTab/+p0IOnx0l6HJHLu3amDxxs3/w==} + hasBin: true + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-verify': ^2.0.0 + ethers: ^6.6.0 + hardhat: ^2.0.2 + peerDependenciesMeta: + '@nomicfoundation/hardhat-verify': + optional: true + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.5(ethers@6.10.0)(hardhat@2.19.4) + '@nomicfoundation/hardhat-verify': 2.0.3(hardhat@2.19.4) + '@openzeppelin/defender-admin-client': 1.54.1(debug@4.3.4) + '@openzeppelin/defender-base-client': 1.54.1(debug@4.3.4) + '@openzeppelin/defender-sdk-base-client': 1.9.0 + '@openzeppelin/defender-sdk-deploy-client': 1.9.0(debug@4.3.4) + '@openzeppelin/upgrades-core': 1.32.4 + chalk: 4.1.2 + debug: 4.3.4(supports-color@6.1.0) + ethereumjs-util: 7.1.5 + ethers: 6.10.0 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + proper-lockfile: 4.1.2 + undici: 5.28.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@openzeppelin/upgrades-core@1.32.4: + resolution: {integrity: sha512-Ojd7clhknPaQP5uIREPZxaKSTccKGrUDhuNAMQdLSf6LPQmyeL+JFGoLrckZ/Mg5x5NO4WivJ1ApXU3ckf6kxw==} + hasBin: true + dependencies: + cbor: 9.0.2 + chalk: 4.1.2 + compare-versions: 6.1.0 + debug: 4.3.4(supports-color@6.1.0) + ethereumjs-util: 7.1.5 + minimist: 1.2.8 + proper-lockfile: 4.1.2 + solidity-ast: 0.4.55 + transitivePeerDependencies: + - supports-color + dev: true - /@pmmmwh/react-refresh-webpack-plugin/0.5.10_unmakpayn7vcxadrrsbqlrpehy: + /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(webpack-dev-server@4.11.1)(webpack@5.76.0): resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} engines: {node: '>= 10.13'} peerDependencies: @@ -4339,57 +8256,57 @@ packages: react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.4 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-dev-server: 4.11.1_qbo4h6w4yojlzp3yj3rjykuawy + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-dev-server: 4.11.1(webpack-cli@3.3.12)(webpack@5.76.0) dev: false - /@polka/url/1.0.0-next.21: + /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: false - /@popperjs/core/2.11.6: + /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@protobufjs/aspromise/1.1.2: + /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - /@protobufjs/base64/1.1.2: + /@protobufjs/base64@1.1.2: resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - /@protobufjs/codegen/2.0.4: + /@protobufjs/codegen@2.0.4: resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - /@protobufjs/eventemitter/1.1.0: + /@protobufjs/eventemitter@1.1.0: resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - /@protobufjs/fetch/1.1.0: + /@protobufjs/fetch@1.1.0: resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 - /@protobufjs/float/1.0.2: + /@protobufjs/float@1.0.2: resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - /@protobufjs/inquire/1.1.0: + /@protobufjs/inquire@1.1.0: resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - /@protobufjs/path/1.1.2: + /@protobufjs/path@1.1.2: resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - /@protobufjs/pool/1.1.0: + /@protobufjs/pool@1.1.0: resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - /@protobufjs/utf8/1.1.0: + /@protobufjs/utf8@1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - /@remix-run/router/1.3.3: + /@remix-run/router@1.3.3: resolution: {integrity: sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==} engines: {node: '>=14'} dev: false - /@restart/context/2.1.4_react@18.2.0: + /@restart/context@2.1.4(react@18.2.0): resolution: {integrity: sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==} peerDependencies: react: '>=16.3.2' @@ -4397,7 +8314,7 @@ packages: react: 18.2.0 dev: false - /@restart/hooks/0.4.9_react@18.2.0: + /@restart/hooks@0.4.9(react@18.2.0): resolution: {integrity: sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==} peerDependencies: react: '>=16.8.0' @@ -4406,7 +8323,7 @@ packages: react: 18.2.0 dev: false - /@rollup/plugin-babel/5.3.1_4tnfxcmsyr7y5qv3uwkivwqysm: + /@rollup/plugin-babel@5.3.1(@babel/core@7.21.8)(rollup@2.78.0): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -4417,38 +8334,102 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 - rollup: 2.79.1 + '@babel/core': 7.21.8 + '@babel/helper-module-imports': 7.21.4 + '@rollup/pluginutils': 3.1.0(rollup@2.78.0) + rollup: 2.78.0 dev: false - /@rollup/plugin-node-resolve/11.2.1_rollup@2.79.1: + /@rollup/plugin-commonjs@25.0.0(rollup@2.78.0): + resolution: {integrity: sha512-hoho2Kay9TZrLu0bnDsTTCaj4Npa+THk9snajP/XDNb9a9mmjTjh52EQM9sKl3HD1LsnihX7js+eA2sd2uKAhw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.78.0) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 2.78.0 + dev: true + + /@rollup/plugin-inject@5.0.3(rollup@2.78.0): + resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.78.0) + estree-walker: 2.0.2 + magic-string: 0.27.0 + rollup: 2.78.0 + dev: true + + /@rollup/plugin-json@6.0.0(rollup@2.78.0): + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.78.0) + rollup: 2.78.0 + dev: true + + /@rollup/plugin-node-resolve@11.2.1(rollup@2.78.0): resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.78.0) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.3.0 is-module: 1.0.0 resolve: 1.22.1 - rollup: 2.79.1 + rollup: 2.78.0 dev: false - /@rollup/plugin-replace/2.4.2_rollup@2.79.1: + /@rollup/plugin-node-resolve@15.0.2(rollup@2.78.0): + resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.78.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.0 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 2.78.0 + dev: true + + /@rollup/plugin-replace@2.4.2(rollup@2.78.0): resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.78.0) magic-string: 0.25.9 - rollup: 2.79.1 + rollup: 2.78.0 dev: false - /@rollup/pluginutils/3.1.0_rollup@2.79.1: + /@rollup/pluginutils@3.1.0(rollup@2.78.0): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -4457,71 +8438,195 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.79.1 + rollup: 2.78.0 dev: false - /@rushstack/eslint-patch/1.2.0: + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/pluginutils@5.0.2(rollup@2.78.0): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.78.0 + dev: true + + /@rushstack/eslint-patch@1.2.0: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@sideway/address/4.1.4: + /@scure/base@1.1.5: + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + dev: true + + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.5 + dev: true + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.5 + dev: true + + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.5 + dev: true + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.5 + dev: true + + /@sentry/core@5.30.0: + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/hub@5.30.0: + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/minimal@5.30.0: + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/node@5.30.0: + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sentry/tracing@5.30.0: + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/types@5.30.0: + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + dev: true + + /@sentry/utils@5.30.0: + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 dev: false - /@sideway/formula/3.0.1: + /@sideway/formula@3.0.1: resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} dev: false - /@sideway/pinpoint/2.0.0: + /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: false - /@sinclair/typebox/0.24.51: + /@sinclair/typebox@0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} dev: false - /@sinclair/typebox/0.25.24: + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - dev: false - /@sindresorhus/is/0.14.0: + /@sindresorhus/is@0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} dev: false - /@sinonjs/commons/1.8.6: + /@sinonjs/commons@1.8.6: resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} dependencies: type-detect: 4.0.8 - dev: false - /@sinonjs/commons/2.0.0: + /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: false - /@sinonjs/fake-timers/10.0.2: + /@sinonjs/fake-timers@10.0.2: resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 dev: false - /@sinonjs/fake-timers/6.0.1: + /@sinonjs/fake-timers@6.0.1: resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} dependencies: '@sinonjs/commons': 1.8.6 - dev: false - /@sinonjs/fake-timers/8.1.0: + /@sinonjs/fake-timers@8.1.0: resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} dependencies: '@sinonjs/commons': 1.8.6 dev: false - /@slorber/static-site-generator-webpack-plugin/4.0.7: + /@slorber/static-site-generator-webpack-plugin@4.0.7: resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} engines: {node: '>=14'} dependencies: @@ -4530,7 +8635,26 @@ packages: webpack-sources: 3.2.3 dev: false - /@surma/rollup-plugin-off-main-thread/2.2.3: + /@smithy/types@2.9.1: + resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: true + + /@solidity-parser/parser@0.14.5: + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + dependencies: + antlr4ts: 0.5.0-alpha.4 + dev: true + + /@solidity-parser/parser@0.16.2: + resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} + dependencies: + antlr4ts: 0.5.0-alpha.4 + dev: true + + /@surma/rollup-plugin-off-main-thread@2.2.3: resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: ejs: 3.1.8 @@ -4539,119 +8663,119 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /@svgr/babel-plugin-add-jsx-attribute/5.4.0: + /@svgr/babel-plugin-add-jsx-attribute@5.4.0: resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.21.0: + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-remove-jsx-attribute/5.4.0: + /@svgr/babel-plugin-remove-jsx-attribute@5.4.0: resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.21.0: + /@svgr/babel-plugin-remove-jsx-attribute@6.5.0(@babel/core@7.21.8): resolution: {integrity: sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression/5.0.1: + /@svgr/babel-plugin-remove-jsx-empty-expression@5.0.1: resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.21.0: + /@svgr/babel-plugin-remove-jsx-empty-expression@6.5.0(@babel/core@7.21.8): resolution: {integrity: sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value/5.0.1: + /@svgr/babel-plugin-replace-jsx-attribute-value@5.0.1: resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.21.0: + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-svg-dynamic-title/5.4.0: + /@svgr/babel-plugin-svg-dynamic-title@5.4.0: resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.21.0: + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-svg-em-dimensions/5.4.0: + /@svgr/babel-plugin-svg-em-dimensions@5.4.0: resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.21.0: + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-transform-react-native-svg/5.4.0: + /@svgr/babel-plugin-transform-react-native-svg@5.4.0: resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.21.0: + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-plugin-transform-svg-component/5.5.0: + /@svgr/babel-plugin-transform-svg-component@5.5.0: resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} engines: {node: '>=10'} dev: false - /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.21.0: + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 dev: false - /@svgr/babel-preset/5.5.0: + /@svgr/babel-preset@5.5.0: resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} engines: {node: '>=10'} dependencies: @@ -4665,24 +8789,24 @@ packages: '@svgr/babel-plugin-transform-svg-component': 5.5.0 dev: false - /@svgr/babel-preset/6.5.1_@babel+core@7.21.0: + /@svgr/babel-preset@6.5.1(@babel/core@7.21.8): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.21.0 - '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.21.0 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.21.0 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.21.0 - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.21.0 - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.21.0 - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.21.0 - '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.21.8) + '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0(@babel/core@7.21.8) + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0(@babel/core@7.21.8) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.21.8) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.21.8) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.21.8) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.21.8) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.21.8) dev: false - /@svgr/core/5.5.0: + /@svgr/core@5.5.0: resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} engines: {node: '>=10'} dependencies: @@ -4693,39 +8817,39 @@ packages: - supports-color dev: false - /@svgr/core/6.5.1: + /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.21.0 - '@svgr/babel-preset': 6.5.1_@babel+core@7.21.0 - '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1 + '@babel/core': 7.21.8 + '@svgr/babel-preset': 6.5.1(@babel/core@7.21.8) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 transitivePeerDependencies: - supports-color dev: false - /@svgr/hast-util-to-babel-ast/5.5.0: + /@svgr/hast-util-to-babel-ast@5.5.0: resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 dev: false - /@svgr/hast-util-to-babel-ast/6.5.1: + /@svgr/hast-util-to-babel-ast@6.5.1: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 entities: 4.4.0 dev: false - /@svgr/plugin-jsx/5.5.0: + /@svgr/plugin-jsx@5.5.0: resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 '@svgr/babel-preset': 5.5.0 '@svgr/hast-util-to-babel-ast': 5.5.0 svg-parser: 2.0.4 @@ -4733,14 +8857,14 @@ packages: - supports-color dev: false - /@svgr/plugin-jsx/6.5.1_@svgr+core@6.5.1: + /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.21.0 - '@svgr/babel-preset': 6.5.1_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@svgr/babel-preset': 6.5.1(@babel/core@7.21.8) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -4748,7 +8872,7 @@ packages: - supports-color dev: false - /@svgr/plugin-svgo/5.5.0: + /@svgr/plugin-svgo@5.5.0: resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} engines: {node: '>=10'} dependencies: @@ -4757,7 +8881,7 @@ packages: svgo: 1.3.2 dev: false - /@svgr/plugin-svgo/6.5.1_@svgr+core@6.5.1: + /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} engines: {node: '>=10'} peerDependencies: @@ -4769,14 +8893,14 @@ packages: svgo: 2.8.0 dev: false - /@svgr/webpack/5.5.0: + /@svgr/webpack@5.5.0: resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} engines: {node: '>=10'} dependencies: '@babel/core': 7.21.0 - '@babel/plugin-transform-react-constant-elements': 7.20.2_@babel+core@7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/preset-react': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-constant-elements': 7.20.2(@babel/core@7.21.0) + '@babel/preset-env': 7.20.2(@babel/core@7.21.0) + '@babel/preset-react': 7.18.6(@babel/core@7.21.0) '@svgr/core': 5.5.0 '@svgr/plugin-jsx': 5.5.0 '@svgr/plugin-svgo': 5.5.0 @@ -4785,41 +8909,55 @@ packages: - supports-color dev: false - /@svgr/webpack/6.5.1: + /@svgr/webpack@6.5.1: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-transform-react-constant-elements': 7.20.2_@babel+core@7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/preset-react': 7.18.6_@babel+core@7.21.0 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-transform-react-constant-elements': 7.20.2(@babel/core@7.21.8) + '@babel/preset-env': 7.20.2(@babel/core@7.21.8) + '@babel/preset-react': 7.18.6(@babel/core@7.21.8) + '@babel/preset-typescript': 7.21.0(@babel/core@7.21.8) '@svgr/core': 6.5.1 - '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1 - '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) transitivePeerDependencies: - supports-color dev: false - /@swc/helpers/0.4.14: + /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: tslib: 2.5.0 dev: false - /@szmarczak/http-timer/1.1.2: + /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} dependencies: defer-to-connect: 1.1.3 dev: false - /@testing-library/dom/8.20.0: + /@testing-library/dom@8.20.0: resolution: {integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==} engines: {node: '>=12'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.21.0 + '@babel/code-frame': 7.21.4 + '@babel/runtime': 7.21.5 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: false + + /@testing-library/dom@9.3.0: + resolution: {integrity: sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.21.5 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -4828,11 +8966,11 @@ packages: pretty-format: 27.5.1 dev: false - /@testing-library/jest-dom/5.16.5: + /@testing-library/jest-dom@5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: - '@adobe/css-tools': 4.2.0 + '@adobe/css-tools': 4.3.2 '@babel/runtime': 7.21.0 '@types/testing-library__jest-dom': 5.14.5 aria-query: 5.1.3 @@ -4843,7 +8981,7 @@ packages: redent: 3.0.0 dev: false - /@testing-library/react/13.4.0_biqbaboplfbrettd7655fr4n2y: + /@testing-library/react@13.4.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} engines: {node: '>=12'} peerDependencies: @@ -4854,279 +8992,337 @@ packages: '@testing-library/dom': 8.20.0 '@types/react-dom': 18.0.11 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@testing-library/user-event/13.5.0: + /@testing-library/user-event@13.5.0(@testing-library/dom@9.3.0): resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} engines: {node: '>=10', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: '@babel/runtime': 7.21.0 + '@testing-library/dom': 9.3.0 dev: false - /@tootallnate/once/1.1.2: + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} - dev: false - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: false - /@trysound/sax/0.2.0: + /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} dev: false - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: false - optional: true + requiresBuild: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: false - optional: true + requiresBuild: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: false - optional: true + requiresBuild: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: false - optional: true + requiresBuild: true + + /@typechain/ethers-v6@0.5.1(ethers@6.10.0)(typechain@8.3.2)(typescript@5.3.3): + resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: '>=4.7.0' + dependencies: + ethers: 6.10.0 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.3.3) + typechain: 8.3.2(typescript@5.3.3) + typescript: 5.3.3 + dev: true + + /@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.10.0)(hardhat@2.19.4)(typechain@8.3.2): + resolution: {integrity: sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==} + peerDependencies: + '@typechain/ethers-v6': ^0.5.1 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.2 + dependencies: + '@typechain/ethers-v6': 0.5.1(ethers@6.10.0)(typechain@8.3.2)(typescript@5.3.3) + ethers: 6.10.0 + fs-extra: 9.1.0 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + typechain: 8.3.2(typescript@5.3.3) + dev: true - /@types/aria-query/5.0.1: + /@types/aria-query@5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: false - /@types/babel__core/7.20.0: + /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@babel/parser': 7.21.9 + '@babel/types': 7.21.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 - dev: false - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.21.2 - dev: false + '@babel/types': 7.21.5 - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 - dev: false + '@babel/parser': 7.21.9 + '@babel/types': 7.21.5 - /@types/babel__traverse/7.18.3: + /@types/babel__traverse@7.18.3: resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: - '@babel/types': 7.21.2 - dev: false + '@babel/types': 7.21.5 - /@types/bip39/2.4.2: + /@types/bip39@2.4.2: resolution: {integrity: sha512-Vo9lqOIRq8uoIzEVrV87ZvcIM0PN9t0K3oYZ/CS61fIYKCBdOIM7mlWzXuRvSXrDtVa1uUO2w1cdfufxTC0bzg==} dependencies: - '@types/node': 12.20.55 - dev: false + '@types/node': 20.9.0 + + /@types/bn.js@4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/bn.js@5.1.0: + resolution: {integrity: sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==} + dependencies: + '@types/node': 20.9.0 + dev: true - /@types/bn.js/5.1.1: + /@types/bn.js@5.1.1: resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} dependencies: - '@types/node': 12.20.55 - dev: false + '@types/node': 20.9.0 - /@types/body-parser/1.19.2: + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/bonjour/3.5.10: + /@types/bonjour@3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/camelcase/4.1.0: + /@types/camelcase@4.1.0: resolution: {integrity: sha512-nsaprOtNLvUrLyFX5+mRpE9h2Q0d5YzQRr+Lav3fxdYtc1/E/U7G+Ld861NWBDDtWY3MnwKoUOhCrE1nrVxUQA==} dev: false - /@types/cheerio/0.22.31: + /@types/camelcase@5.2.0: + resolution: {integrity: sha512-zhHaryYYUUsJ1h6Rq4hisPkljY7c2bkC5PFYQbom5fyKloGJEDK+wdsw2L4hnBwXr4plGjW6D/UVJBbNbOzVpQ==} + deprecated: This is a stub types definition. camelcase provides its own type definitions, so you do not need this installed. + dependencies: + camelcase: 5.0.0 + dev: true + + /@types/chai-as-promised@7.1.8: + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + dependencies: + '@types/chai': 4.3.11 + dev: true + + /@types/chai@4.3.11: + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} + dev: true + + /@types/cheerio@0.22.31: resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/connect-history-api-fallback/1.3.5: + /@types/concat-stream@1.6.1: + resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/connect-history-api-fallback@1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: '@types/express-serve-static-core': 4.17.33 - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/d3-array/3.0.4: + /@types/crypto-js@4.2.1: + resolution: {integrity: sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw==} + dev: true + + /@types/d3-array@3.0.4: resolution: {integrity: sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ==} dev: false - /@types/d3-axis/3.0.2: + /@types/d3-axis@3.0.2: resolution: {integrity: sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==} dependencies: '@types/d3-selection': 3.0.4 dev: false - /@types/d3-brush/3.0.2: + /@types/d3-brush@3.0.2: resolution: {integrity: sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==} dependencies: '@types/d3-selection': 3.0.4 dev: false - /@types/d3-chord/3.0.2: + /@types/d3-chord@3.0.2: resolution: {integrity: sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==} dev: false - /@types/d3-color/3.1.0: + /@types/d3-color@3.1.0: resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} dev: false - /@types/d3-contour/3.0.2: + /@types/d3-contour@3.0.2: resolution: {integrity: sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==} dependencies: '@types/d3-array': 3.0.4 '@types/geojson': 7946.0.10 dev: false - /@types/d3-delaunay/6.0.1: + /@types/d3-delaunay@6.0.1: resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} dev: false - /@types/d3-dispatch/3.0.2: + /@types/d3-dispatch@3.0.2: resolution: {integrity: sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==} dev: false - /@types/d3-drag/3.0.2: + /@types/d3-drag@3.0.2: resolution: {integrity: sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==} dependencies: '@types/d3-selection': 3.0.4 dev: false - /@types/d3-dsv/3.0.1: + /@types/d3-dsv@3.0.1: resolution: {integrity: sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==} dev: false - /@types/d3-ease/3.0.0: + /@types/d3-ease@3.0.0: resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} dev: false - /@types/d3-fetch/3.0.2: + /@types/d3-fetch@3.0.2: resolution: {integrity: sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==} dependencies: '@types/d3-dsv': 3.0.1 dev: false - /@types/d3-force/3.0.4: + /@types/d3-force@3.0.4: resolution: {integrity: sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==} dev: false - /@types/d3-format/3.0.1: + /@types/d3-format@3.0.1: resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} dev: false - /@types/d3-geo/3.0.3: + /@types/d3-geo@3.0.3: resolution: {integrity: sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==} dependencies: '@types/geojson': 7946.0.10 dev: false - /@types/d3-hierarchy/3.1.2: + /@types/d3-hierarchy@3.1.2: resolution: {integrity: sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==} dev: false - /@types/d3-interpolate/3.0.1: + /@types/d3-interpolate@3.0.1: resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} dependencies: '@types/d3-color': 3.1.0 dev: false - /@types/d3-path/3.0.0: + /@types/d3-path@3.0.0: resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} dev: false - /@types/d3-polygon/3.0.0: + /@types/d3-polygon@3.0.0: resolution: {integrity: sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==} dev: false - /@types/d3-quadtree/3.0.2: + /@types/d3-quadtree@3.0.2: resolution: {integrity: sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==} dev: false - /@types/d3-random/3.0.1: + /@types/d3-random@3.0.1: resolution: {integrity: sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==} dev: false - /@types/d3-scale-chromatic/3.0.0: + /@types/d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} dev: false - /@types/d3-scale/4.0.3: + /@types/d3-scale@4.0.3: resolution: {integrity: sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==} dependencies: '@types/d3-time': 3.0.0 dev: false - /@types/d3-selection/3.0.4: + /@types/d3-selection@3.0.4: resolution: {integrity: sha512-ZeykX7286BCyMg9sH5fIAORyCB6hcATPSRQpN47jwBA2bMbAT0s+EvtDP5r1FZYJ95R8QoEE1CKJX+n0/M5Vhg==} dev: false - /@types/d3-shape/3.1.1: + /@types/d3-shape@3.1.1: resolution: {integrity: sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==} dependencies: '@types/d3-path': 3.0.0 dev: false - /@types/d3-time-format/4.0.0: + /@types/d3-time-format@4.0.0: resolution: {integrity: sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==} dev: false - /@types/d3-time/3.0.0: + /@types/d3-time@3.0.0: resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} dev: false - /@types/d3-timer/3.0.0: + /@types/d3-timer@3.0.0: resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} dev: false - /@types/d3-transition/3.0.3: + /@types/d3-transition@3.0.3: resolution: {integrity: sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==} dependencies: '@types/d3-selection': 3.0.4 dev: false - /@types/d3-zoom/3.0.2: + /@types/d3-zoom@3.0.2: resolution: {integrity: sha512-t09DDJVBI6AkM7N8kuPsnq/3d/ehtRKBN1xSiYjjMCgbiw6HM6Ged5VhvswmhprfKyGvzeTEL/4WBaK9llWvlA==} dependencies: '@types/d3-interpolate': 3.0.1 '@types/d3-selection': 3.0.4 dev: false - /@types/d3/7.4.0: + /@types/d3@7.4.0: resolution: {integrity: sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==} dependencies: '@types/d3-array': 3.0.4 @@ -5161,54 +9357,49 @@ packages: '@types/d3-zoom': 3.0.2 dev: false - /@types/elliptic/6.4.14: + /@types/elliptic@6.4.14: resolution: {integrity: sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ==} dependencies: '@types/bn.js': 5.1.1 - dev: false - /@types/enzyme/3.10.12: + /@types/enzyme@3.10.12: resolution: {integrity: sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==} dependencies: '@types/cheerio': 0.22.31 '@types/react': 18.0.28 dev: false - /@types/eslint-scope/3.7.4: + /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: '@types/eslint': 8.21.1 - '@types/estree': 0.0.51 - dev: false + '@types/estree': 1.0.0 - /@types/eslint/8.21.1: + /@types/eslint@8.21.1: resolution: {integrity: sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==} dependencies: '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 - dev: false - /@types/estree/0.0.39: + /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: false - /@types/estree/0.0.51: + /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - dev: false - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - dev: false - /@types/express-serve-static-core/4.17.33: + /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false - /@types/express/4.17.17: + /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: '@types/body-parser': 1.19.2 @@ -5217,116 +9408,128 @@ packages: '@types/serve-static': 1.15.1 dev: false - /@types/geojson/7946.0.10: + /@types/fancy-log@1.3.0: + resolution: {integrity: sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw==} + dev: true + + /@types/form-data@0.0.33: + resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/geojson@7946.0.10: resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} dev: false - /@types/glob/7.2.0: + /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.14.6 - dev: false + '@types/node': 20.9.0 - /@types/graceful-fs/4.1.6: + /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.14.6 - dev: false + '@types/node': 20.9.0 - /@types/hast/2.3.4: + /@types/hast@2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/hdkey/0.7.1: + /@types/hdkey@0.7.1: resolution: {integrity: sha512-4Kkr06hq+R8a9EzVNqXGOY2x1xA7dhY6qlp6OvaZ+IJy1BCca1Cv126RD9X7CMJoXoLo8WvAizy8gQHpqW6K0Q==} dependencies: - '@types/node': 12.20.55 - dev: false + '@types/node': 20.9.0 - /@types/highlight.js/9.12.4: + /@types/highlight.js@9.12.4: resolution: {integrity: sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==} dev: false - /@types/history/4.7.11: + /@types/history@4.7.11: resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} dev: false - /@types/hoist-non-react-statics/3.3.1: + /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: '@types/react': 18.0.28 hoist-non-react-statics: 3.3.2 dev: false - /@types/html-minifier-terser/6.1.0: + /@types/html-minifier-terser@6.1.0: resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} dev: false - /@types/http-proxy/1.17.10: + /@types/http-proxy@1.17.10: resolution: {integrity: sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/invariant/2.2.35: + /@types/invariant@2.2.35: resolution: {integrity: sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==} dev: false - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: false - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 - dev: false - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: false - /@types/jest/26.0.24: + /@types/jest@26.0.24: resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} dependencies: jest-diff: 26.6.2 pretty-format: 26.6.2 dev: false - /@types/jsdom/20.0.1: + /@types/jest@27.0.1: + resolution: {integrity: sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==} + dependencies: + jest-diff: 27.5.1 + pretty-format: 27.5.1 + + /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: false - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: false - /@types/json5/0.0.29: + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/keyv/3.1.4: + /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.14.6 - dev: false + '@types/node': 20.9.0 - /@types/linkify-it/3.0.2: + /@types/linkify-it@3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} - /@types/long/4.0.2: + /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - /@types/markdown-it/10.0.3: + /@types/lru-cache@5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + dev: true + + /@types/markdown-it@10.0.3: resolution: {integrity: sha512-daHJk22isOUvNssVGF2zDnnSyxHhFYhtjeX4oQaKD6QzL3ZR1QSgiD1g+Q6/WSWYVogNXYDXODtbgW/WiFCtyw==} dependencies: '@types/highlight.js': 9.12.4 @@ -5335,102 +9538,134 @@ packages: highlight.js: 9.18.5 dev: false - /@types/markdown-it/12.2.3: + /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: '@types/linkify-it': 3.0.2 '@types/mdurl': 1.0.2 - /@types/mdast/3.0.10: + /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/mdurl/1.0.2: + /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} - /@types/mdx/2.0.3: + /@types/mdx@2.0.3: resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} dev: false - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: false - /@types/minimatch/5.1.2: + /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: false - /@types/node/12.20.55: + /@types/mocha@10.0.6: + resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} + dev: true + + /@types/node@10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: true + + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false - /@types/node/17.0.45: + /@types/node@16.7.13: + resolution: {integrity: sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA==} + dev: false + + /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: false - /@types/node/18.14.6: - resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + dev: true + + /@types/node@20.2.3: + resolution: {integrity: sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==} + dev: true + + /@types/node@20.2.4: + resolution: {integrity: sha512-ni5f8Xlf4PwnT/Z3f0HURc3ZSw8UyrqMqmM3L5ysa7VjHu8c3FOmIo1nKCcLrV/OAmtf3N4kFna/aJqxsfEtnA==} + dev: true + + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + dependencies: + undici-types: 5.26.5 + + /@types/node@8.10.66: + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + dev: true - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: false - /@types/parse-json/4.0.0: + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/parse5/5.0.3: + /@types/parse5@5.0.3: resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} dev: false - /@types/prettier/2.7.2: + /@types/pbkdf2@3.1.2: + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - dev: false - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/protobufjs/6.0.0: + /@types/protobufjs@6.0.0: resolution: {integrity: sha512-A27RDExpAf3rdDjIrHKiJK6x8kqqJ4CmoChwtipfhVAn1p7+wviQFFP7dppn8FslSbHtQeVPvi8wNKkDjSYjHw==} deprecated: This is a stub types definition for protobufjs (https://github.com/dcodeIO/ProtoBuf.js). protobufjs provides its own type definitions, so you don't need @types/protobufjs installed! dependencies: protobufjs: 6.11.3 dev: true - /@types/q/1.5.5: + /@types/q@1.5.5: resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==} dev: false - /@types/qs/6.9.7: + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: false - /@types/range-parser/1.2.4: + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: false - /@types/react-beautiful-dnd/13.1.3: + /@types/react-beautiful-dnd@13.1.3: resolution: {integrity: sha512-BNdmvONKtsrZq3AGrujECQrIn8cDT+fZsxBLXuX3YWY/nHfZinUFx4W88eS0rkcXzuLbXpKOsu/1WCMPMLEpPg==} dependencies: '@types/react': 18.0.28 dev: false - /@types/react-custom-scroll/4.3.2: + /@types/react-custom-scroll@4.3.2: resolution: {integrity: sha512-0gFAkoTihBzYcyoiw68qYIgTeHwPbCLbRMFftsVYlXLLvXx4y519If/+1r7UtOaF7aAXRRJOCYaHZj/HRyfc8Q==} dependencies: '@types/react': 18.0.28 dev: false - /@types/react-dom/18.0.11: + /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 18.0.28 dev: false - /@types/react-redux/7.1.25: + /@types/react-redux@7.1.25: resolution: {integrity: sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==} dependencies: '@types/hoist-non-react-statics': 3.3.1 @@ -5439,7 +9674,7 @@ packages: redux: 4.2.1 dev: false - /@types/react-router-config/5.0.6: + /@types/react-router-config@5.0.6: resolution: {integrity: sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==} dependencies: '@types/history': 4.7.11 @@ -5447,7 +9682,7 @@ packages: '@types/react-router': 5.1.20 dev: false - /@types/react-router-dom/5.3.3: + /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 @@ -5455,32 +9690,32 @@ packages: '@types/react-router': 5.1.20 dev: false - /@types/react-router/5.1.20: + /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 '@types/react': 18.0.28 dev: false - /@types/react-table/7.7.14: + /@types/react-table@7.7.14: resolution: {integrity: sha512-TYrv7onCiakaG1uAu/UpQ9FojNEt/4/ht87EgJQaEGFoWV606ZLWUZAcUHzMxgc3v1mywP1cDyz3qB4ho3hWOw==} dependencies: '@types/react': 18.0.28 dev: false - /@types/react-test-renderer/18.0.0: + /@types/react-test-renderer@18.0.0: resolution: {integrity: sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==} dependencies: '@types/react': 18.0.28 dev: false - /@types/react-transition-group/4.4.5: + /@types/react-transition-group@4.4.5: resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} dependencies: '@types/react': 18.0.28 dev: false - /@types/react/18.0.28: + /@types/react@18.0.28: resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} dependencies: '@types/prop-types': 15.7.5 @@ -5488,122 +9723,128 @@ packages: csstype: 3.1.1 dev: false - /@types/reactstrap/8.7.2_biqbaboplfbrettd7655fr4n2y: + /@types/reactstrap@8.7.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-8sYGS/LhG+ic8vhLwxhuVn+TSqS1lKzplm9BHv4JaQoetStAi9uOqP2VREfefIRT3JnOq5Y+G7Afdryvn+UgZQ==} deprecated: This is a stub types definition. reactstrap provides its own type definitions, so you do not need this installed. dependencies: - reactstrap: 8.10.1_biqbaboplfbrettd7655fr4n2y + reactstrap: 8.10.1(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - react - react-dom dev: false - /@types/resolve/1.17.1: + /@types/readable-stream@2.3.15: + resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} + dependencies: + '@types/node': 20.9.0 + safe-buffer: 5.1.2 + dev: true + + /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/responselike/1.0.0: + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + + /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.14.6 - dev: false + '@types/node': 20.9.0 - /@types/retry/0.12.0: + /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: false - /@types/sanitize-html/2.8.1: + /@types/sanitize-html@2.8.1: resolution: {integrity: sha512-Q6kMAbBBaXA5IagoipeSr4Y/zuGyh4BZ5lewgb3cYe3OYqy0k/d67iMsC4O895eks676bVAe9G+0y1i0k2ZlnA==} dependencies: htmlparser2: 8.0.1 dev: false - /@types/sax/1.2.4: + /@types/sax@1.2.4: resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/scheduler/0.16.2: + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: false - /@types/semver/7.3.13: + /@types/secp256k1@4.0.6: + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + dependencies: + '@types/node': 20.9.0 + dev: true + + /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: false - /@types/serve-index/1.9.1: + /@types/serve-index@1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: '@types/express': 4.17.17 dev: false - /@types/serve-static/1.15.1: + /@types/serve-static@1.15.1: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/sockjs/0.3.33: + /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/sodium-native/2.3.5: - resolution: {integrity: sha512-a3DAIpW8+36XAY8aIR36JBQQsfOabxHuJwx11DL/PTvnbwEWPAXW66b8QbMi0r2vUnkOfREsketxdvjBmQxqDQ==} - dependencies: - '@types/node': 18.14.6 - dev: false - - /@types/source-list-map/0.1.2: + /@types/source-list-map@0.1.2: resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} - dev: false - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: false - /@types/tapable/1.0.8: + /@types/tapable@1.0.8: resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} - dev: false - /@types/testing-library__jest-dom/5.14.5: + /@types/testing-library__jest-dom@5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 26.0.24 + '@types/jest': 27.0.1 dev: false - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: false - /@types/trusted-types/2.0.3: + /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false - /@types/uglify-js/3.17.1: + /@types/uglify-js@3.17.1: resolution: {integrity: sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==} dependencies: source-map: 0.6.1 - dev: false - /@types/unist/2.0.6: + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/uuid/8.3.1: + /@types/uuid@8.3.1: resolution: {integrity: sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==} dev: false - /@types/warning/3.0.0: + /@types/warning@3.0.0: resolution: {integrity: sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==} dev: false - /@types/webpack-dev-server/3.11.6: + /@types/webpack-dev-server@3.11.6: resolution: {integrity: sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==} dependencies: '@types/connect-history-api-fallback': 1.3.5 @@ -5615,64 +9856,58 @@ packages: - debug dev: false - /@types/webpack-sources/3.2.0: + /@types/webpack-sources@3.2.0: resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 '@types/source-list-map': 0.1.2 source-map: 0.7.4 - dev: false - /@types/webpack/4.41.33: + /@types/webpack@4.41.33: resolution: {integrity: sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 '@types/tapable': 1.0.8 '@types/uglify-js': 3.17.1 '@types/webpack-sources': 3.2.0 anymatch: 3.1.3 source-map: 0.6.1 - dev: false - /@types/websocket/1.0.4: + /@types/websocket@1.0.4: resolution: {integrity: sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==} dependencies: - '@types/node': 12.20.55 - dev: false + '@types/node': 20.9.0 - /@types/ws/8.5.4: + /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: false - /@types/yargs/15.0.15: + /@types/yargs@15.0.15: resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} dependencies: '@types/yargs-parser': 21.0.0 - dev: false - /@types/yargs/16.0.5: + /@types/yargs@16.0.5: resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} dependencies: '@types/yargs-parser': 21.0.0 - dev: false - /@types/yargs/17.0.22: + /@types/yargs@17.0.22: resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==} dependencies: '@types/yargs-parser': 21.0.0 dev: false - /@types/zen-observable/0.8.3: + /@types/zen-observable@0.8.3: resolution: {integrity: sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==} dev: false - /@typescript-eslint/eslint-plugin/4.33.0_s2qqtxhzmb7vugvfoyripfgp7i: + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -5683,23 +9918,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe - '@typescript-eslint/parser': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) eslint: 7.32.0 functional-red-black-tree: 1.0.1 ignore: 5.2.4 regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - /@typescript-eslint/eslint-plugin/5.54.1_2raik7ghbnj434s5izctn4kvma: - resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} + /@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0)(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -5709,24 +9943,52 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe - '@typescript-eslint/scope-manager': 5.54.1 - '@typescript-eslint/type-utils': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe - '@typescript-eslint/utils': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe - debug: 4.3.4 + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.56.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/type-utils': 5.56.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.56.0(eslint@7.32.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) eslint: 7.32.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/type-utils': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) + eslint: 8.41.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/experimental-utils/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -5735,29 +9997,41 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5) eslint: 7.32.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@7.32.0 + eslint-utils: 3.0.0(eslint@7.32.0) transitivePeerDependencies: - supports-color - typescript - dev: false - /@typescript-eslint/experimental-utils/5.54.1_jofidmxrjzhj7l6vknpw5ecvfe: + /@typescript-eslint/experimental-utils@5.54.1(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-oqSc2Gr4TL/2M0XRJ9abA1o3Wf1cFJTNqWq0kjdStIIvgMQGZ3TSaFFJ2Cvy3Fgqi9UfDZ8u5idbACssIIyHaw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/utils': 5.54.1(eslint@7.32.0)(typescript@4.9.5) eslint: 7.32.0 transitivePeerDependencies: - supports-color - typescript dev: false - /@typescript-eslint/parser/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + /@typescript-eslint/experimental-utils@5.54.1(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-oqSc2Gr4TL/2M0XRJ9abA1o3Wf1cFJTNqWq0kjdStIIvgMQGZ3TSaFFJ2Cvy3Fgqi9UfDZ8u5idbACssIIyHaw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.54.1(eslint@8.41.0)(typescript@4.9.5) + eslint: 8.41.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -5769,16 +10043,15 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) eslint: 7.32.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - /@typescript-eslint/parser/5.54.1_jofidmxrjzhj7l6vknpw5ecvfe: - resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} + /@typescript-eslint/parser@5.56.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5787,25 +10060,44 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.54.1 - '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 - debug: 4.3.4 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) eslint: 7.32.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/scope-manager/4.33.0: + /@typescript-eslint/parser@5.56.0(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) + eslint: 8.41.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@4.33.0: resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - dev: false - /@typescript-eslint/scope-manager/5.54.1: + /@typescript-eslint/scope-manager@5.54.1: resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -5813,8 +10105,16 @@ packages: '@typescript-eslint/visitor-keys': 5.54.1 dev: false - /@typescript-eslint/type-utils/5.54.1_jofidmxrjzhj7l6vknpw5ecvfe: - resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} + /@typescript-eslint/scope-manager@5.56.0: + resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/visitor-keys': 5.56.0 + dev: false + + /@typescript-eslint/type-utils@5.56.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -5823,27 +10123,51 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 - '@typescript-eslint/utils': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.56.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.56.0(eslint@7.32.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) eslint: 7.32.0 - tsutils: 3.21.0_typescript@4.9.5 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/type-utils@5.56.0(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.56.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@6.1.0) + eslint: 8.41.0 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/types/4.33.0: + /@typescript-eslint/types@4.33.0: resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dev: false - /@typescript-eslint/types/5.54.1: + /@typescript-eslint/types@5.54.1: resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.5: + /@typescript-eslint/types@5.56.0: + resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/typescript-estree@4.33.0(typescript@4.9.5): resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -5854,18 +10178,38 @@ packages: dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/typescript-estree@5.54.1(typescript@4.9.5): + resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 + debug: 4.3.4(supports-color@6.1.0) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree/5.54.1_typescript@4.9.5: - resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} + /@typescript-eslint/typescript-estree@5.56.0(typescript@4.9.5): + resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -5873,19 +10217,39 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/visitor-keys': 5.54.1 - debug: 4.3.4 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/visitor-keys': 5.56.0 + debug: 4.3.4(supports-color@6.1.0) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils/5.54.1_jofidmxrjzhj7l6vknpw5ecvfe: + /@typescript-eslint/utils@5.54.1(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@7.32.0) + semver: 7.5.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/utils@5.54.1(eslint@8.41.0)(typescript@4.9.5): resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5895,48 +10259,95 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.54.1 '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5) + eslint: 8.41.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@8.41.0) + semver: 7.5.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/utils@5.56.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0(typescript@4.9.5) eslint: 7.32.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@7.32.0 - semver: 7.3.8 + semver: 7.5.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/utils@5.56.0(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0(typescript@4.9.5) + eslint: 8.41.0 + eslint-scope: 5.1.1 + semver: 7.5.2 transitivePeerDependencies: - supports-color - typescript dev: false - /@typescript-eslint/visitor-keys/4.33.0: + /@typescript-eslint/visitor-keys@4.33.0: resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: '@typescript-eslint/types': 4.33.0 eslint-visitor-keys: 2.1.0 - dev: false - /@typescript-eslint/visitor-keys/5.54.1: + /@typescript-eslint/visitor-keys@5.54.1: resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.54.1 - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.1 + dev: false + + /@typescript-eslint/visitor-keys@5.56.0: + resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.56.0 + eslint-visitor-keys: 3.4.1 dev: false - /@vue/babel-helper-vue-jsx-merge-props/1.4.0: + /@vue/babel-helper-vue-jsx-merge-props@1.4.0: resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==} dev: false - /@vue/babel-helper-vue-transform-on/1.0.2: + /@vue/babel-helper-vue-transform-on@1.0.2: resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} dev: false - /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.21.0: + /@vue/babel-plugin-jsx@1.1.1(@babel/core@7.21.8): resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} dependencies: - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/helper-module-imports': 7.21.4 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) + '@babel/template': 7.21.9 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 '@vue/babel-helper-vue-transform-on': 1.0.2 camelcase: 6.3.0 html-tags: 3.2.0 @@ -5946,23 +10357,25 @@ packages: - supports-color dev: false - /@vue/babel-plugin-transform-vue-jsx/1.4.0_@babel+core@7.21.0: + /@vue/babel-plugin-transform-vue-jsx@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/helper-module-imports': 7.21.4 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 html-tags: 2.0.0 lodash.kebabcase: 4.1.1 svg-tags: 1.0.0 dev: false - /@vue/babel-preset-app/4.5.19_vue@2.7.14: + /@vue/babel-preset-app@4.5.19(@babel/core@7.21.8)(core-js@3.29.0)(vue@2.7.14): resolution: {integrity: sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==} peerDependencies: + '@babel/core': '*' + core-js: ^3 vue: ^2 || ^3.0.0-0 peerDependenciesMeta: core-js: @@ -5970,18 +10383,18 @@ packages: vue: optional: true dependencies: - '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-decorators': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-runtime': 7.21.0_@babel+core@7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/runtime': 7.21.0 - '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.21.0 - '@vue/babel-preset-jsx': 1.4.0_qipave72ixbnicgglqgy4excba + '@babel/core': 7.21.8 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) + '@babel/helper-module-imports': 7.21.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-decorators': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) + '@babel/plugin-transform-runtime': 7.21.0(@babel/core@7.21.8) + '@babel/preset-env': 7.20.2(@babel/core@7.21.8) + '@babel/runtime': 7.21.5 + '@vue/babel-plugin-jsx': 1.1.1(@babel/core@7.21.8) + '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.21.8)(vue@2.7.14) babel-plugin-dynamic-import-node: 2.3.3 core-js: 3.29.0 core-js-compat: 3.29.0 @@ -5991,7 +10404,7 @@ packages: - supports-color dev: false - /@vue/babel-preset-jsx/1.4.0_qipave72ixbnicgglqgy4excba: + /@vue/babel-preset-jsx@1.4.0(@babel/core@7.21.8)(vue@2.7.14): resolution: {integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -6000,100 +10413,100 @@ packages: vue: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0_@babel+core@7.21.0 - '@vue/babel-sugar-composition-api-inject-h': 1.4.0_@babel+core@7.21.0 - '@vue/babel-sugar-composition-api-render-instance': 1.4.0_@babel+core@7.21.0 - '@vue/babel-sugar-functional-vue': 1.4.0_@babel+core@7.21.0 - '@vue/babel-sugar-inject-h': 1.4.0_@babel+core@7.21.0 - '@vue/babel-sugar-v-model': 1.4.0_@babel+core@7.21.0 - '@vue/babel-sugar-v-on': 1.4.0_@babel+core@7.21.0 + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.21.8) + '@vue/babel-sugar-composition-api-inject-h': 1.4.0(@babel/core@7.21.8) + '@vue/babel-sugar-composition-api-render-instance': 1.4.0(@babel/core@7.21.8) + '@vue/babel-sugar-functional-vue': 1.4.0(@babel/core@7.21.8) + '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.21.8) + '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.21.8) + '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.21.8) vue: 2.7.14 dev: false - /@vue/babel-sugar-composition-api-inject-h/1.4.0_@babel+core@7.21.0: + /@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) dev: false - /@vue/babel-sugar-composition-api-render-instance/1.4.0_@babel+core@7.21.0: + /@vue/babel-sugar-composition-api-render-instance@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) dev: false - /@vue/babel-sugar-functional-vue/1.4.0_@babel+core@7.21.0: + /@vue/babel-sugar-functional-vue@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) dev: false - /@vue/babel-sugar-inject-h/1.4.0_@babel+core@7.21.0: + /@vue/babel-sugar-inject-h@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) dev: false - /@vue/babel-sugar-v-model/1.4.0_@babel+core@7.21.0: + /@vue/babel-sugar-v-model@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0_@babel+core@7.21.0 - camelcase: 5.3.1 + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.21.8) + camelcase: 5.0.0 html-tags: 2.0.0 svg-tags: 1.0.0 dev: false - /@vue/babel-sugar-v-on/1.4.0_@babel+core@7.21.0: + /@vue/babel-sugar-v-on@1.4.0(@babel/core@7.21.8): resolution: {integrity: sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0_@babel+core@7.21.0 - camelcase: 5.3.1 + '@babel/core': 7.21.8 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.21.8) + camelcase: 5.0.0 dev: false - /@vue/compiler-sfc/2.7.14: + /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: - '@babel/parser': 7.21.2 - postcss: 8.4.21 + '@babel/parser': 7.21.9 + postcss: 8.4.23 source-map: 0.6.1 dev: false - /@vue/component-compiler-utils/3.3.0_biqbaboplfbrettd7655fr4n2y: + /@vue/component-compiler-utils@3.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} dependencies: - consolidate: 0.15.1_biqbaboplfbrettd7655fr4n2y + consolidate: 0.15.1(react-dom@18.2.0)(react@18.2.0) hash-sum: 1.0.2 lru-cache: 4.1.5 merge-source-map: 1.1.0 postcss: 7.0.39 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 source-map: 0.6.1 vue-template-es2015-compiler: 1.9.1 optionalDependencies: - prettier: 2.8.4 + prettier: 2.8.8 transitivePeerDependencies: - arc-templates - atpl @@ -6150,12 +10563,12 @@ packages: - whiskers dev: false - /@vuepress/core/1.9.9_e322xq5kuxkpabmokoacnekxsq: + /@vuepress/core@1.9.9(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12)(webpack-command@0.4.2): resolution: {integrity: sha512-Ekgu409ZSgvAV9n14F3DaEWtgkwrEicg1nWs0gbxGgUCdREeX/7rwxSfKwWwBjCwfCUKR2L3+6pXGjzxex0t+g==} engines: {node: '>=8.6'} dependencies: - '@babel/core': 7.21.0 - '@vue/babel-preset-app': 4.5.19_vue@2.7.14 + '@babel/core': 7.21.8 + '@vue/babel-preset-app': 4.5.19(@babel/core@7.21.8)(core-js@3.29.0)(vue@2.7.14) '@vuepress/markdown': 1.9.9 '@vuepress/markdown-loader': 1.9.9 '@vuepress/plugin-last-updated': 1.9.9 @@ -6163,38 +10576,38 @@ packages: '@vuepress/shared-utils': 1.9.9 '@vuepress/types': 1.9.9 autoprefixer: 9.8.8 - babel-loader: 8.3.0_idmflsbzmivcz6fnnmcaipezqe - bundle-require: 2.1.8_esbuild@0.14.7 - cache-loader: 3.0.1_webpack@4.46.0 - chokidar: 2.1.8 + babel-loader: 8.3.0(@babel/core@7.21.8)(webpack@4.46.0) + bundle-require: 2.1.8(esbuild@0.14.7) + cache-loader: 3.0.1(webpack@4.46.0) + chokidar: 2.1.8(supports-color@6.1.0) connect-history-api-fallback: 1.6.0 - copy-webpack-plugin: 5.1.2_webpack@4.46.0 + copy-webpack-plugin: 5.1.2(webpack@4.46.0) core-js: 3.29.0 cross-spawn: 6.0.5 - css-loader: 2.1.1_webpack@4.46.0 + css-loader: 2.1.1(webpack@5.76.0) esbuild: 0.14.7 - file-loader: 3.0.1_webpack@4.46.0 + file-loader: 3.0.1(webpack@4.46.0) js-yaml: 3.14.1 lru-cache: 5.1.1 - mini-css-extract-plugin: 0.6.0_webpack@4.46.0 - optimize-css-assets-webpack-plugin: 5.0.8_webpack@4.46.0 - portfinder: 1.0.32 - postcss-loader: 3.0.0 + mini-css-extract-plugin: 0.6.0(webpack@4.46.0) + optimize-css-assets-webpack-plugin: 5.0.8(webpack@4.46.0) + portfinder: 1.0.32(supports-color@6.1.0) + postcss-loader: 3.0.0(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1) postcss-safe-parser: 4.0.2 toml: 3.0.0 - url-loader: 1.1.2_webpack@4.46.0 + url-loader: 1.1.2(webpack@4.46.0) vue: 2.7.14 - vue-loader: 15.10.1_qzstiqwy2sezhwult7kg3hfzxm - vue-router: 3.6.5_vue@2.7.14 + vue-loader: 15.10.1(cache-loader@3.0.1)(css-loader@2.1.1)(react-dom@18.2.0)(react@18.2.0)(vue-template-compiler@2.7.14)(webpack@4.46.0) + vue-router: 3.6.5(vue@2.7.14) vue-server-renderer: 2.7.14 vue-template-compiler: 2.7.14 - vuepress-html-webpack-plugin: 3.2.0_webpack@4.46.0 + vuepress-html-webpack-plugin: 3.2.0(webpack@4.46.0) vuepress-plugin-container: 2.1.5 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) webpack-chain: 6.5.1 - webpack-dev-server: 3.11.3_i3w7szmgtxghzdij4arpgmor5i + webpack-dev-server: 3.11.3(webpack-cli@3.3.12)(webpack@4.46.0) webpack-merge: 4.2.2 - webpackbar: 3.2.0_webpack@4.46.0 + webpackbar: 3.2.0(webpack@4.46.0) transitivePeerDependencies: - '@vue/compiler-sfc' - arc-templates @@ -6261,7 +10674,7 @@ packages: - whiskers dev: false - /@vuepress/markdown-loader/1.9.9: + /@vuepress/markdown-loader@1.9.9: resolution: {integrity: sha512-nyY+sytuQaDLEIk6Yj9JFUfSQpe9/sz30xQFkGCYqi0lQTRGQM6IcRDgfcTS7b25A0qRlwpDGBfKQiGGMZKSfg==} dependencies: '@vuepress/markdown': 1.9.9 @@ -6271,13 +10684,13 @@ packages: - supports-color dev: false - /@vuepress/markdown/1.9.9: + /@vuepress/markdown@1.9.9: resolution: {integrity: sha512-JzFdBdGe5aoiKSaEgF+h3JLDXNVfWPI5DJWXrIt7rhhkMJesF6HowIznPLdXqukzHfXHcPvo9oQ4o6eT0YmVGA==} dependencies: '@vuepress/shared-utils': 1.9.9 markdown-it: 8.4.2 - markdown-it-anchor: 5.3.0_markdown-it@8.4.2 - markdown-it-chain: 1.3.0_markdown-it@8.4.2 + markdown-it-anchor: 5.3.0(markdown-it@8.4.2) + markdown-it-chain: 1.3.0(markdown-it@8.4.2) markdown-it-emoji: 1.4.0 markdown-it-table-of-contents: 0.4.4 prismjs: 1.29.0 @@ -6285,7 +10698,7 @@ packages: - supports-color dev: false - /@vuepress/plugin-active-header-links/1.9.9: + /@vuepress/plugin-active-header-links@1.9.9: resolution: {integrity: sha512-lTnIhbuALjOjFts33jJD8r4ScNBxnZ6MtmePKEwvYlC3J9uvngs1Htpb1JzLEX9QCydt+bhLmZ92bTXn/PdTpg==} dependencies: '@vuepress/types': 1.9.9 @@ -6294,7 +10707,7 @@ packages: - debug dev: false - /@vuepress/plugin-last-updated/1.9.9: + /@vuepress/plugin-last-updated@1.9.9: resolution: {integrity: sha512-MV4csmM0/lye83VtkOc+b8fs0roi7mvE7BmCCOE39Z6t8nv/ZmEPOwKeHD0+hXPT+ZfoATYvDcsYU7uxbdw0Pw==} dependencies: '@vuepress/types': 1.9.9 @@ -6303,7 +10716,7 @@ packages: - debug dev: false - /@vuepress/plugin-nprogress/1.9.9: + /@vuepress/plugin-nprogress@1.9.9: resolution: {integrity: sha512-+3fLxjwTLH8MeU54E7i1ovRu9KzBom2lvSeUsu9B8PuLyrETAqW7Pe1H66awEEALEe0ZnnEU4d7SeVe9ljsLAQ==} dependencies: '@vuepress/types': 1.9.9 @@ -6312,7 +10725,7 @@ packages: - debug dev: false - /@vuepress/plugin-register-components/1.9.9: + /@vuepress/plugin-register-components@1.9.9: resolution: {integrity: sha512-tddnAiSmJsIWWPzE7TcbGU8xzndXf4a8i4BfIev2QzSUnIOQFZDGXUAsCkw4/f9N9UFxQSObjFPzTeUUxb7EvA==} dependencies: '@vuepress/shared-utils': 1.9.9 @@ -6322,7 +10735,7 @@ packages: - supports-color dev: false - /@vuepress/plugin-search/1.9.9: + /@vuepress/plugin-search@1.9.9: resolution: {integrity: sha512-W/FE+YHoXDD4qk2wu5yRMkti271TA4y+7UBMrmCavvVAGrLIRnaZfswRUgIiDlEthBc+Pn8/As/Dy1jFTLBa9A==} dependencies: '@vuepress/types': 1.9.9 @@ -6330,7 +10743,7 @@ packages: - debug dev: false - /@vuepress/shared-utils/1.9.9: + /@vuepress/shared-utils@1.9.9: resolution: {integrity: sha512-qhk/7QF5LgMEXhEB1hlqreGFgkz4p2pmaBBNFxnAnYmSwmyO+u/oFOpZLI16QRx9Wg6ekR2ENmByQLxV7y4lJg==} dependencies: chalk: 2.4.2 @@ -6346,7 +10759,7 @@ packages: - supports-color dev: false - /@vuepress/theme-default/1.9.9: + /@vuepress/theme-default@1.9.9: resolution: {integrity: sha512-de0FiOwM/h3rFTBSZK0NNBB117lA/e3IHusU7Xm2XeZRiZ/EE3yvbWclZnbbRNt3YjDMmrWXEW/kBTBxfiMuWQ==} dependencies: '@vuepress/plugin-active-header-links': 1.9.9 @@ -6356,7 +10769,7 @@ packages: docsearch.js: 2.6.3 lodash: 4.17.21 stylus: 0.54.8 - stylus-loader: 3.0.2_stylus@0.54.8 + stylus-loader: 3.0.2(stylus@0.54.8) vuepress-plugin-container: 2.1.5 vuepress-plugin-smooth-scroll: 0.0.3 transitivePeerDependencies: @@ -6364,7 +10777,7 @@ packages: - supports-color dev: false - /@vuepress/types/1.9.9: + /@vuepress/types@1.9.9: resolution: {integrity: sha512-ukGW49ILzLhIc7CltHMr+BeIjWKloJNN1mrvbDz3beycp9b9kgH+DXNdRIK9QCKr4fJsy7x08vNMwZr9Nq/PTQ==} dependencies: '@types/markdown-it': 10.0.3 @@ -6374,14 +10787,13 @@ packages: - debug dev: false - /@webassemblyjs/ast/1.11.1: + /@webassemblyjs/ast@1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: '@webassemblyjs/helper-numbers': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - dev: false - /@webassemblyjs/ast/1.9.0: + /@webassemblyjs/ast@1.9.0: resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} dependencies: '@webassemblyjs/helper-module-context': 1.9.0 @@ -6389,72 +10801,66 @@ packages: '@webassemblyjs/wast-parser': 1.9.0 dev: false - /@webassemblyjs/floating-point-hex-parser/1.11.1: + /@webassemblyjs/floating-point-hex-parser@1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} - dev: false - /@webassemblyjs/floating-point-hex-parser/1.9.0: + /@webassemblyjs/floating-point-hex-parser@1.9.0: resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} dev: false - /@webassemblyjs/helper-api-error/1.11.1: + /@webassemblyjs/helper-api-error@1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} - dev: false - /@webassemblyjs/helper-api-error/1.9.0: + /@webassemblyjs/helper-api-error@1.9.0: resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} dev: false - /@webassemblyjs/helper-buffer/1.11.1: + /@webassemblyjs/helper-buffer@1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} - dev: false - /@webassemblyjs/helper-buffer/1.9.0: + /@webassemblyjs/helper-buffer@1.9.0: resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} dev: false - /@webassemblyjs/helper-code-frame/1.9.0: + /@webassemblyjs/helper-code-frame@1.9.0: resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} dependencies: '@webassemblyjs/wast-printer': 1.9.0 dev: false - /@webassemblyjs/helper-fsm/1.9.0: + /@webassemblyjs/helper-fsm@1.9.0: resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} dev: false - /@webassemblyjs/helper-module-context/1.9.0: + /@webassemblyjs/helper-module-context@1.9.0: resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} dependencies: '@webassemblyjs/ast': 1.9.0 dev: false - /@webassemblyjs/helper-numbers/1.11.1: + /@webassemblyjs/helper-numbers@1.11.1: resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.1 '@webassemblyjs/helper-api-error': 1.11.1 '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/helper-wasm-bytecode/1.11.1: + /@webassemblyjs/helper-wasm-bytecode@1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} - dev: false - /@webassemblyjs/helper-wasm-bytecode/1.9.0: + /@webassemblyjs/helper-wasm-bytecode@1.9.0: resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} dev: false - /@webassemblyjs/helper-wasm-section/1.11.1: + /@webassemblyjs/helper-wasm-section@1.11.1: resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-buffer': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 '@webassemblyjs/wasm-gen': 1.11.1 - dev: false - /@webassemblyjs/helper-wasm-section/1.9.0: + /@webassemblyjs/helper-wasm-section@1.9.0: resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6463,39 +10869,36 @@ packages: '@webassemblyjs/wasm-gen': 1.9.0 dev: false - /@webassemblyjs/ieee754/1.11.1: + /@webassemblyjs/ieee754@1.11.1: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 - dev: false - /@webassemblyjs/ieee754/1.9.0: + /@webassemblyjs/ieee754@1.9.0: resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} dependencies: '@xtuc/ieee754': 1.2.0 dev: false - /@webassemblyjs/leb128/1.11.1: + /@webassemblyjs/leb128@1.11.1: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/leb128/1.9.0: + /@webassemblyjs/leb128@1.9.0: resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} dependencies: '@xtuc/long': 4.2.2 dev: false - /@webassemblyjs/utf8/1.11.1: + /@webassemblyjs/utf8@1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} - dev: false - /@webassemblyjs/utf8/1.9.0: + /@webassemblyjs/utf8@1.9.0: resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} dev: false - /@webassemblyjs/wasm-edit/1.11.1: + /@webassemblyjs/wasm-edit@1.11.1: resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -6506,9 +10909,8 @@ packages: '@webassemblyjs/wasm-opt': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 '@webassemblyjs/wast-printer': 1.11.1 - dev: false - /@webassemblyjs/wasm-edit/1.9.0: + /@webassemblyjs/wasm-edit@1.9.0: resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6521,7 +10923,7 @@ packages: '@webassemblyjs/wast-printer': 1.9.0 dev: false - /@webassemblyjs/wasm-gen/1.11.1: + /@webassemblyjs/wasm-gen@1.11.1: resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -6529,9 +10931,8 @@ packages: '@webassemblyjs/ieee754': 1.11.1 '@webassemblyjs/leb128': 1.11.1 '@webassemblyjs/utf8': 1.11.1 - dev: false - /@webassemblyjs/wasm-gen/1.9.0: + /@webassemblyjs/wasm-gen@1.9.0: resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6541,16 +10942,15 @@ packages: '@webassemblyjs/utf8': 1.9.0 dev: false - /@webassemblyjs/wasm-opt/1.11.1: + /@webassemblyjs/wasm-opt@1.11.1: resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-buffer': 1.11.1 '@webassemblyjs/wasm-gen': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 - dev: false - /@webassemblyjs/wasm-opt/1.9.0: + /@webassemblyjs/wasm-opt@1.9.0: resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6559,7 +10959,7 @@ packages: '@webassemblyjs/wasm-parser': 1.9.0 dev: false - /@webassemblyjs/wasm-parser/1.11.1: + /@webassemblyjs/wasm-parser@1.11.1: resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -6568,9 +10968,8 @@ packages: '@webassemblyjs/ieee754': 1.11.1 '@webassemblyjs/leb128': 1.11.1 '@webassemblyjs/utf8': 1.11.1 - dev: false - /@webassemblyjs/wasm-parser/1.9.0: + /@webassemblyjs/wasm-parser@1.9.0: resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6581,7 +10980,7 @@ packages: '@webassemblyjs/utf8': 1.9.0 dev: false - /@webassemblyjs/wast-parser/1.9.0: + /@webassemblyjs/wast-parser@1.9.0: resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6592,14 +10991,13 @@ packages: '@xtuc/long': 4.2.2 dev: false - /@webassemblyjs/wast-printer/1.11.1: + /@webassemblyjs/wast-printer@1.11.1: resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 - dev: false - /@webassemblyjs/wast-printer/1.9.0: + /@webassemblyjs/wast-printer@1.9.0: resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} dependencies: '@webassemblyjs/ast': 1.9.0 @@ -6607,13 +11005,13 @@ packages: '@xtuc/long': 4.2.2 dev: false - /@webpack-contrib/config-loader/1.2.1_webpack@5.75.0: + /@webpack-contrib/config-loader@1.2.1(webpack@5.76.0): resolution: {integrity: sha512-C7XsS6bXft0aRlyt7YCLg+fm97Mb3tWd+i5fVVlEl0NW5HKy8LoXVKj3mB7ECcEHNEEdHhgzg8gxP+Or8cMj8Q==} engines: {node: '>= 6.9.0 <7.0.0 || >= 8.9.0'} peerDependencies: webpack: ^4.3.0 dependencies: - '@webpack-contrib/schema-utils': 1.0.0-beta.0_webpack@5.75.0 + '@webpack-contrib/schema-utils': 1.0.0-beta.0(webpack@5.76.0) chalk: 2.4.2 cosmiconfig: 5.2.1 is-plain-obj: 1.1.0 @@ -6621,76 +11019,93 @@ packages: merge-options: 1.0.1 minimist: 1.2.8 resolve: 1.22.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) webpack-log: 1.2.0 - dev: false - /@webpack-contrib/schema-utils/1.0.0-beta.0_webpack@5.75.0: + /@webpack-contrib/schema-utils@1.0.0-beta.0(webpack@5.76.0): resolution: {integrity: sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg==} engines: {node: '>= 6.9.0 || >= 8.9.0'} peerDependencies: webpack: ^3.0.0 || ^4.0.0 dependencies: ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) chalk: 2.4.2 strip-ansi: 4.0.0 text-table: 0.2.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) webpack-log: 1.2.0 - dev: false - /@wry/context/0.4.4: + /@wry/context@0.4.4: resolution: {integrity: sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 tslib: 1.14.1 dev: false - /@wry/context/0.7.0: + /@wry/context@0.7.0: resolution: {integrity: sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /@wry/equality/0.1.11: + /@wry/equality@0.1.11: resolution: {integrity: sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==} dependencies: tslib: 1.14.1 dev: false - /@wry/equality/0.5.3: + /@wry/equality@0.5.3: resolution: {integrity: sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /@wry/trie/0.3.2: + /@wry/trie@0.3.2: resolution: {integrity: sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /@xtuc/ieee754/1.2.0: + /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: false - /@xtuc/long/4.2.2: + /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: false - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: false - /abbrev/1.1.1: + /abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + dev: true + + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - /accepts/1.3.8: + /abstract-level@1.0.4: + resolution: {integrity: sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 + dev: true + + /abstract-leveldown@0.12.4: + resolution: {integrity: sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==} + dependencies: + xtend: 3.0.0 + dev: true + + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -6698,40 +11113,54 @@ packages: negotiator: 0.6.3 dev: false - /ace-builds/1.15.3: + /ace-builds@1.15.3: resolution: {integrity: sha512-hq8+4DfQcUYcUyAF3vF7UoGFXwNxXST5A2IdarUOp9/Xg1thWTfxusPI2HAlTvXRTVjLDQOj9O34uPoTehEs0A==} dev: false - /acorn-globals/6.0.0: + /acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 - dev: false - /acorn-globals/7.0.1: + /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.8.2 acorn-walk: 8.2.0 dev: false - /acorn-import-assertions/1.8.0_acorn@8.8.2: + /acorn-import-assertions@1.8.0(acorn@8.8.2): resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: acorn: ^8 dependencies: acorn: 8.8.2 - dev: false - /acorn-jsx/5.3.2_acorn@7.4.1: + /acorn-jsx@5.3.2(acorn@6.4.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 6.4.2 + dev: true + + /acorn-jsx@5.3.2(acorn@7.4.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 7.4.1 - /acorn-node/1.8.2: + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn-node@1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} dependencies: acorn: 7.4.1 @@ -6739,50 +11168,44 @@ packages: xtend: 4.0.2 dev: false - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} - dev: false - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: false - /acorn/5.7.4: + /acorn@5.7.4: resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} engines: {node: '>=0.4.0'} hasBin: true - dev: false - /acorn/6.4.2: + /acorn@6.4.2: resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} engines: {node: '>=0.4.0'} hasBin: true - dev: false - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true - dev: false - /address/1.1.2: + /address@1.1.2: resolution: {integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==} engines: {node: '>= 0.12.0'} dev: false - /address/1.2.2: + /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} - dev: false - /adjust-sourcemap-loader/4.0.0: + /adjust-sourcemap-loader@4.0.0: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} dependencies: @@ -6790,33 +11213,44 @@ packages: regex-parser: 2.2.11 dev: false - /aes-js/3.1.2: + /adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + dev: true + + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + dev: true + + /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false - /agent-base/6.0.2: + /aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + dev: true + + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color - dev: false - /agentkeepalive/2.2.0: + /agentkeepalive@2.2.0: resolution: {integrity: sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==} engines: {node: '>= 0.10.0'} dev: false - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: false - /ajv-errors/1.0.1_ajv@6.12.6: + /ajv-errors@1.0.1(ajv@6.12.6): resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} peerDependencies: ajv: '>=5.0.0' @@ -6824,8 +11258,10 @@ packages: ajv: 6.12.6 dev: false - /ajv-formats/2.1.1: + /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -6833,15 +11269,14 @@ packages: ajv: 8.12.0 dev: false - /ajv-keywords/3.5.2_ajv@6.12.6: + /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 dependencies: ajv: 6.12.6 - dev: false - /ajv-keywords/5.1.0_ajv@8.12.0: + /ajv-keywords@5.1.0(ajv@8.12.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 @@ -6850,25 +11285,23 @@ packages: fast-deep-equal: 3.1.3 dev: false - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: false - /ajv/8.12.0: + /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false - /algoliasearch-helper/3.12.0_algoliasearch@4.15.0: + /algoliasearch-helper@3.12.0(algoliasearch@4.15.0): resolution: {integrity: sha512-/j1U3PEwdan0n6P/QqSnSpNSLC5+cEMvyljd5CnmNmUjDlGrys+vFEOwjVEnqELIiAGMHEA/Nl3CiKVFBUYqyQ==} peerDependencies: algoliasearch: '>= 3.1 < 6' @@ -6877,12 +11310,12 @@ packages: algoliasearch: 4.15.0 dev: false - /algoliasearch/3.35.1: + /algoliasearch@3.35.1: resolution: {integrity: sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==} engines: {node: '>=0.8'} dependencies: agentkeepalive: 2.2.0 - debug: 2.6.9 + debug: 2.6.9(supports-color@6.1.0) envify: 4.1.0 es6-promise: 4.2.8 events: 1.1.1 @@ -6900,7 +11333,7 @@ packages: - supports-color dev: false - /algoliasearch/4.15.0: + /algoliasearch@4.15.0: resolution: {integrity: sha512-+vgKQF5944dYsz9zhKk07JbOYeNdKisoD5GeG0woBL3nLzbn2a+nGwki60DXg7CXvaFXBcTXyJG4C+VaBVd44g==} dependencies: '@algolia/cache-browser-local-storage': 4.15.0 @@ -6919,175 +11352,196 @@ packages: '@algolia/transporter': 4.15.0 dev: false - /alphanum-sort/1.0.2: + /alphanum-sort@1.0.2: resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} dev: false - /ansi-align/2.0.0: + /amazon-cognito-identity-js@6.3.7: + resolution: {integrity: sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==} + dependencies: + '@aws-crypto/sha256-js': 1.2.2 + buffer: 4.9.2 + fast-base64-decode: 1.0.0 + isomorphic-unfetch: 3.1.0 + js-cookie: 2.2.1 + transitivePeerDependencies: + - encoding + dev: true + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + requiresBuild: true + dev: true + optional: true + + /ansi-align@2.0.0: resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} dependencies: string-width: 2.1.1 - dev: false - /ansi-align/3.0.1: + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 dev: false - /ansi-colors/3.2.4: + /ansi-colors@3.2.4: resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} engines: {node: '>=6'} dev: false - /ansi-colors/4.1.3: + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - dev: false - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: false - /ansi-escapes/6.0.0: + /ansi-escapes@6.0.0: resolution: {integrity: sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==} engines: {node: '>=14.16'} dependencies: type-fest: 3.6.1 dev: false - /ansi-html-community/0.0.8: + /ansi-gray@0.1.1: + resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-wrap: 0.1.0 + dev: true + + /ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} hasBin: true dev: false - /ansi-regex/2.1.1: + /ansi-regex@2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} dev: false - /ansi-regex/3.0.1: + /ansi-regex@3.0.1: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} engines: {node: '>=4'} - dev: false - /ansi-regex/4.1.1: + /ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} - dev: false - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: false - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: false - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: false - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: false - /ansi-styles/6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: false - /anymatch/2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false + /ansi-wrap@0.1.0: + resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} + engines: {node: '>=0.10.0'} + dev: true + + /antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + dev: true - /anymatch/2.0.0_supports-color@6.1.0: + /anymatch@2.0.0(supports-color@6.1.0): resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} dependencies: - micromatch: 3.1.10_supports-color@6.1.0 + micromatch: 3.1.10(supports-color@6.1.0) normalize-path: 2.1.1 transitivePeerDependencies: - supports-color - dev: false - /anymatch/3.1.3: + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: false - /apollo-boost/0.4.9_graphql@16.6.0: + /apollo-boost@0.4.9(graphql@16.6.0): resolution: {integrity: sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - apollo-cache: 1.3.5_graphql@16.6.0 - apollo-cache-inmemory: 1.6.6_graphql@16.6.0 - apollo-client: 2.6.10_graphql@16.6.0 - apollo-link: 1.2.14_graphql@16.6.0 - apollo-link-error: 1.1.13_graphql@16.6.0 - apollo-link-http: 1.5.17_graphql@16.6.0 + apollo-cache: 1.3.5(graphql@16.6.0) + apollo-cache-inmemory: 1.6.6(graphql@16.6.0) + apollo-client: 2.6.10(graphql@16.6.0) + apollo-link: 1.2.14(graphql@16.6.0) + apollo-link-error: 1.1.13(graphql@16.6.0) + apollo-link-http: 1.5.17(graphql@16.6.0) graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) ts-invariant: 0.4.4 tslib: 1.14.1 dev: false - /apollo-cache-inmemory/1.6.6_graphql@16.6.0: + /apollo-cache-inmemory@1.6.6(graphql@16.6.0): resolution: {integrity: sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - apollo-cache: 1.3.5_graphql@16.6.0 - apollo-utilities: 1.3.4_graphql@16.6.0 + apollo-cache: 1.3.5(graphql@16.6.0) + apollo-utilities: 1.3.4(graphql@16.6.0) graphql: 16.6.0 optimism: 0.10.3 ts-invariant: 0.4.4 tslib: 1.14.1 dev: false - /apollo-cache/1.3.5_graphql@16.6.0: + /apollo-cache@1.3.5(graphql@16.6.0): resolution: {integrity: sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - apollo-utilities: 1.3.4_graphql@16.6.0 + apollo-utilities: 1.3.4(graphql@16.6.0) graphql: 16.6.0 tslib: 1.14.1 dev: false - /apollo-client/2.6.10_graphql@16.6.0: + /apollo-client@2.6.10(graphql@16.6.0): resolution: {integrity: sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: '@types/zen-observable': 0.8.3 - apollo-cache: 1.3.5_graphql@16.6.0 - apollo-link: 1.2.14_graphql@16.6.0 - apollo-utilities: 1.3.4_graphql@16.6.0 + apollo-cache: 1.3.5(graphql@16.6.0) + apollo-link: 1.2.14(graphql@16.6.0) + apollo-utilities: 1.3.4(graphql@16.6.0) graphql: 16.6.0 symbol-observable: 1.2.0 ts-invariant: 0.4.4 @@ -7095,51 +11549,51 @@ packages: zen-observable: 0.8.15 dev: false - /apollo-link-error/1.1.13_graphql@16.6.0: + /apollo-link-error@1.1.13(graphql@16.6.0): resolution: {integrity: sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==} dependencies: - apollo-link: 1.2.14_graphql@16.6.0 - apollo-link-http-common: 0.2.16_graphql@16.6.0 + apollo-link: 1.2.14(graphql@16.6.0) + apollo-link-http-common: 0.2.16(graphql@16.6.0) tslib: 1.14.1 transitivePeerDependencies: - graphql dev: false - /apollo-link-http-common/0.2.16_graphql@16.6.0: + /apollo-link-http-common@0.2.16(graphql@16.6.0): resolution: {integrity: sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - apollo-link: 1.2.14_graphql@16.6.0 + apollo-link: 1.2.14(graphql@16.6.0) graphql: 16.6.0 ts-invariant: 0.4.4 tslib: 1.14.1 dev: false - /apollo-link-http/1.5.17_graphql@16.6.0: + /apollo-link-http@1.5.17(graphql@16.6.0): resolution: {integrity: sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - apollo-link: 1.2.14_graphql@16.6.0 - apollo-link-http-common: 0.2.16_graphql@16.6.0 + apollo-link: 1.2.14(graphql@16.6.0) + apollo-link-http-common: 0.2.16(graphql@16.6.0) graphql: 16.6.0 tslib: 1.14.1 dev: false - /apollo-link/1.2.14_graphql@16.6.0: + /apollo-link@1.2.14(graphql@16.6.0): resolution: {integrity: sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==} peerDependencies: graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: - apollo-utilities: 1.3.4_graphql@16.6.0 + apollo-utilities: 1.3.4(graphql@16.6.0) graphql: 16.6.0 ts-invariant: 0.4.4 tslib: 1.14.1 zen-observable-ts: 0.8.21 dev: false - /apollo-utilities/1.3.4_graphql@16.6.0: + /apollo-utilities@1.3.4(graphql@16.6.0): resolution: {integrity: sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==} peerDependencies: graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 @@ -7151,70 +11605,81 @@ packages: tslib: 1.14.1 dev: false - /aproba/1.2.0: + /aproba@1.2.0: resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} dev: false - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: false - optional: true + requiresBuild: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: false - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: false - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.0 dev: false - /arr-diff/2.0.0: + /arr-diff@2.0.0: resolution: {integrity: sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==} engines: {node: '>=0.10.0'} dependencies: arr-flatten: 1.1.0 dev: false - /arr-diff/4.0.0: + /arr-diff@4.0.0: resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} engines: {node: '>=0.10.0'} - dev: false - /arr-flatten/1.1.0: + /arr-flatten@1.1.0: resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} engines: {node: '>=0.10.0'} - dev: false - /arr-union/3.1.0: + /arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} - dev: false - /array-find-index/1.0.2: + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} - dev: false - /array-flatten/1.1.1: + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: false - /array-flatten/2.1.2: + /array-flatten@2.1.2: resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} dev: false - /array-includes/3.1.6: + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: @@ -7225,34 +11690,31 @@ packages: is-string: 1.0.7 dev: false - /array-union/1.0.2: + /array-union@1.0.2: resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} engines: {node: '>=0.10.0'} dependencies: array-uniq: 1.0.3 dev: false - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: false - /array-uniq/1.0.3: + /array-uniq@1.0.3: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} - dev: false - /array-unique/0.2.1: + /array-unique@0.2.1: resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} engines: {node: '>=0.10.0'} dev: false - /array-unique/0.3.2: + /array-unique@0.3.2: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} - dev: false - /array.prototype.filter/1.0.2: + /array.prototype.filter@1.0.2: resolution: {integrity: sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ==} engines: {node: '>= 0.4'} dependencies: @@ -7263,7 +11725,18 @@ packages: is-string: 1.0.7 dev: false - /array.prototype.flat/1.3.1: + /array.prototype.findlast@1.2.3: + resolution: {integrity: sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -7273,7 +11746,7 @@ packages: es-shim-unscopables: 1.0.0 dev: false - /array.prototype.flatmap/1.3.1: + /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: @@ -7283,7 +11756,7 @@ packages: es-shim-unscopables: 1.0.0 dev: false - /array.prototype.reduce/1.0.5: + /array.prototype.reduce@1.0.5: resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} engines: {node: '>= 0.4'} dependencies: @@ -7294,7 +11767,7 @@ packages: is-string: 1.0.7 dev: false - /array.prototype.tosorted/1.1.1: + /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 @@ -7304,43 +11777,53 @@ packages: get-intrinsic: 1.2.0 dev: false - /arrify/1.0.1: + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} - dev: false - /asap/2.0.6: + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - /asn1.js/5.4.1: + /asn1.js@5.4.1: resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} dependencies: bn.js: 4.12.0 inherits: 2.0.4 minimalistic-assert: 1.0.1 safer-buffer: 2.1.2 - dev: false - /asn1/0.2.6: + /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: safer-buffer: 2.1.2 dev: false - /assert-plus/1.0.0: + /assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} dev: false - /assert/1.5.0: + /assert@1.5.0: resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} dependencies: object-assign: 4.1.1 util: 0.10.3 dev: false - /assert/2.0.0: + /assert@2.0.0: resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} dependencies: es6-object-assign: 1.1.0 @@ -7349,86 +11832,127 @@ packages: util: 0.12.5 dev: false - /assign-symbols/1.0.0: + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} - dev: false - /ast-types-flow/0.0.7: + /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: false - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - dev: false - /async-each/1.0.6: + /async-each@1.0.6: resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} dev: false - /async-limiter/1.0.1: + /async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} dev: false - /async/2.6.4: + /async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + dependencies: + retry: 0.13.1 + dev: true + + /async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: true + + /async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: lodash: 4.17.21 dev: false - /async/3.2.4: + /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: false - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - /at-least-node/1.0.0: + /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - dev: false - /atob/2.1.2: + /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} hasBin: true - dev: false - /attr-accept/2.2.2: + /attr-accept@2.2.2: resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} engines: {node: '>=4'} dev: false - /autocomplete.js/0.36.0: + /autocomplete.js@0.36.0: resolution: {integrity: sha512-jEwUXnVMeCHHutUt10i/8ZiRaCb0Wo+ZyKxeGsYwBDtw6EJHqEeDrq4UwZRD8YBSvp3g6klP678il2eeiVXN2Q==} dependencies: immediate: 3.3.0 dev: false - /autoprefixer/10.4.13_postcss@8.4.21: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + /autoprefixer@10.4.13(postcss@8.4.21): + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.5 + caniuse-lite: 1.0.30001489 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /autoprefixer@10.4.14(postcss@8.4.21): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.5 + caniuse-lite: 1.0.30001489 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /autoprefixer@10.4.14(postcss@8.4.23): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001462 + caniuse-lite: 1.0.30001489 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.21 + postcss: 8.4.23 postcss-value-parser: 4.2.0 dev: false - /autoprefixer/9.8.8: + /autoprefixer@9.8.8: resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} hasBin: true dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001462 + caniuse-lite: 1.0.30001489 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -7436,58 +11960,84 @@ packages: postcss-value-parser: 4.2.0 dev: false - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - dev: false - /aws-sign2/0.7.0: + /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: false - /aws4/1.12.0: + /aws4@1.12.0: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: false - /axe-core/4.6.3: + /axe-core@4.6.3: resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} engines: {node: '>=4'} dev: false - /axios/0.25.0: + /axios@0.25.0: resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.2(debug@4.3.4) transitivePeerDependencies: - debug dev: false - /axobject-query/3.1.1: + /axios@1.6.5(debug@4.3.4): + resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: deep-equal: 2.2.0 dev: false - /babel-jest/26.6.3_@babel+core@7.21.0: + /babel-eslint@10.1.0(eslint@7.32.0): + resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} + engines: {node: '>=6'} + deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. + peerDependencies: + eslint: '>= 4.12.1' + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.2 + eslint: 7.32.0 + eslint-visitor-keys: 1.3.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-jest@26.6.3(@babel/core@7.21.8): resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2_@babel+core@7.21.0 + babel-preset-jest: 26.6.2(@babel/core@7.21.8) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /babel-jest/27.5.1_@babel+core@7.21.0: + /babel-jest@27.5.1(@babel/core@7.21.0): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -7498,7 +12048,26 @@ packages: '@jest/types': 27.5.1 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1_@babel+core@7.21.0 + babel-preset-jest: 27.5.1(@babel/core@7.21.0) + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-jest@27.5.1(@babel/core@7.21.8): + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.21.8 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.21.8) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -7506,7 +12075,7 @@ packages: - supports-color dev: false - /babel-loader/8.3.0_idmflsbzmivcz6fnnmcaipezqe: + /babel-loader@8.3.0(@babel/core@7.21.0)(webpack@5.76.0): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: @@ -7518,25 +12087,25 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /babel-loader/8.3.0_qoaxtqicpzj5p3ubthw53xafqm: + /babel-loader@8.3.0(@babel/core@7.21.8)(webpack@4.46.0): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) dev: false - /babel-plugin-apply-mdx-type-prop/1.6.22_@babel+core@7.12.9: + /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} peerDependencies: '@babel/core': ^7.11.6 @@ -7546,61 +12115,59 @@ packages: '@mdx-js/util': 1.6.22 dev: false - /babel-plugin-dynamic-import-node/2.3.3: + /babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: object.assign: 4.1.4 dev: false - /babel-plugin-extract-import-names/1.6.22: + /babel-plugin-extract-import-names@1.6.22: resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} dependencies: '@babel/helper-plugin-utils': 7.10.4 dev: false - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-jest-hoist/26.6.2: + /babel-plugin-jest-hoist@26.6.2: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.2 + '@babel/template': 7.21.9 + '@babel/types': 7.21.5 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 - dev: false - /babel-plugin-jest-hoist/27.5.1: + /babel-plugin-jest-hoist@27.5.1: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.2 + '@babel/template': 7.21.9 + '@babel/types': 7.21.5 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 dev: false - /babel-plugin-macros/3.1.0: + /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 cosmiconfig: 7.1.0 resolve: 1.22.1 dev: false - /babel-plugin-named-asset-import/0.3.8_@babel+core@7.21.0: + /babel-plugin-named-asset-import@0.3.8(@babel/core@7.21.0): resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} peerDependencies: '@babel/core': ^7.1.0 @@ -7608,95 +12175,149 @@ packages: '@babel/core': 7.21.0 dev: false - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.0: + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.0): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.0 + '@babel/compat-data': 7.21.9 '@babel/core': 7.21.0 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.0: + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.8): + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.9 + '@babel/core': 7.21.8 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.0): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) + core-js-compat: 3.29.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.8): + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) core-js-compat: 3.29.0 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.0: + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.0): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.8): + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) transitivePeerDependencies: - supports-color dev: false - /babel-plugin-styled-components/2.0.7_styled-components@4.4.1: + /babel-plugin-styled-components@2.0.7(styled-components@4.4.1): resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} peerDependencies: styled-components: '>= 2' dependencies: '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 4.4.1_biqbaboplfbrettd7655fr4n2y + styled-components: 4.4.1(react-dom@18.2.0)(react@18.2.0) dev: false - /babel-plugin-syntax-jsx/6.18.0: + /babel-plugin-syntax-jsx@6.18.0: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} dev: false - /babel-plugin-transform-react-remove-prop-types/0.4.24: + /babel-plugin-transform-react-remove-prop-types@0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: false - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.0: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.0): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.0 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 - dev: false - - /babel-preset-jest/26.6.2_@babel+core@7.21.0: + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.0) + dev: false + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.8): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.8) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.8) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.8) + + /babel-preset-jest@26.6.2(@babel/core@7.21.8): resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 babel-plugin-jest-hoist: 26.6.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 - dev: false + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.8) - /babel-preset-jest/27.5.1_@babel+core@7.21.0: + /babel-preset-jest@27.5.1(@babel/core@7.21.0): resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -7704,47 +12325,64 @@ packages: dependencies: '@babel/core': 7.21.0 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.0) + dev: false + + /babel-preset-jest@27.5.1(@babel/core@7.21.8): + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.8) dev: false - /babel-preset-react-app/10.0.1: + /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-decorators': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-transform-flow-strip-types': 7.21.0_@babel+core@7.21.0 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-transform-runtime': 7.21.0_@babel+core@7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/preset-react': 7.18.6_@babel+core@7.21.0 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 - '@babel/runtime': 7.21.0 + '@babel/core': 7.21.8 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-decorators': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.8) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.8) + '@babel/plugin-transform-runtime': 7.21.0(@babel/core@7.21.8) + '@babel/preset-env': 7.20.2(@babel/core@7.21.8) + '@babel/preset-react': 7.18.6(@babel/core@7.21.8) + '@babel/preset-typescript': 7.21.0(@babel/core@7.21.8) + '@babel/runtime': 7.21.5 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: - supports-color dev: false - /bail/1.0.5: + /bail@1.0.5: resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} dev: false - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base-x/3.0.9: + /base-x@3.0.9: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: safe-buffer: 5.2.1 + + /base16@1.0.0: + resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} dev: false - /base/0.11.2: + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} dependencies: @@ -7755,27 +12393,22 @@ packages: isobject: 3.0.1 mixin-deep: 1.3.2 pascalcase: 0.1.1 - dev: false - /base16/1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - dev: false - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - - /batch/0.6.1: + /batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: false - /bcrypt-pbkdf/1.0.2: + /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: false - /bfj/7.0.2: + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: true + + /bfj@7.0.2: resolution: {integrity: sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==} engines: {node: '>= 8.0.0'} dependencies: @@ -7785,35 +12418,38 @@ packages: tryer: 1.0.1 dev: false - /big.js/3.2.0: + /big.js@3.2.0: resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} dev: false - /big.js/5.2.2: + /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: false - /bignumber.js/8.1.1: + /bigint-crypto-utils@3.3.0: + resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} + engines: {node: '>=14.0.0'} + dev: true + + /bignumber.js@8.1.1: resolution: {integrity: sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ==} dev: false - /binary-extensions/1.13.1: + /binary-extensions@1.13.1: resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} engines: {node: '>=0.10.0'} dev: false - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: false - /bindings/1.5.0: + /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 dev: false - /bip39/2.6.0: + /bip39@2.6.0: resolution: {integrity: sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg==} dependencies: create-hash: 1.2.0 @@ -7823,13 +12459,19 @@ packages: unorm: 1.6.0 dev: false - /bip66/1.1.5: + /bip66@1.1.5: resolution: {integrity: sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==} dependencies: safe-buffer: 5.2.1 dev: false - /bl/4.1.0: + /bl@0.8.2: + resolution: {integrity: sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==} + dependencies: + readable-stream: 1.0.34 + dev: true + + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 @@ -7837,44 +12479,30 @@ packages: readable-stream: 3.6.1 dev: false - /bluebird/3.7.2: + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: true + + /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - /bn.js/4.12.0: + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: true + + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: false - /bn.js/5.2.1: + /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false - - /body-parser/1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - /body-parser/1.20.1_supports-color@6.1.0: + /body-parser@1.20.1(supports-color@6.1.0): resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9_supports-color@6.1.0 + debug: 2.6.9(supports-color@6.1.0) depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 @@ -7888,7 +12516,7 @@ packages: - supports-color dev: false - /bonjour-service/1.1.0: + /bonjour-service@1.1.0: resolution: {integrity: sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==} dependencies: array-flatten: 2.1.2 @@ -7897,7 +12525,7 @@ packages: multicast-dns: 7.2.5 dev: false - /bonjour/3.5.0: + /bonjour@3.5.0: resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} dependencies: array-flatten: 2.1.2 @@ -7908,18 +12536,21 @@ packages: multicast-dns-service-types: 1.1.0 dev: false - /boolbase/1.0.0: + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false - /bootstrap/4.6.2: + /bootstrap@4.6.2(jquery@3.7.0)(popper.js@1.16.1): resolution: {integrity: sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==} peerDependencies: jquery: 1.9.1 - 3 popper.js: ^1.16.1 + dependencies: + jquery: 3.7.0 + popper.js: 1.16.1 dev: false - /boxen/1.3.0: + /boxen@1.3.0: resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} engines: {node: '>=4'} dependencies: @@ -7930,9 +12561,8 @@ packages: string-width: 2.1.1 term-size: 1.2.0 widest-line: 2.0.1 - dev: false - /boxen/4.2.0: + /boxen@4.2.0: resolution: {integrity: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==} engines: {node: '>=8'} dependencies: @@ -7946,7 +12576,7 @@ packages: widest-line: 3.1.0 dev: false - /boxen/5.1.2: + /boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} dependencies: @@ -7960,7 +12590,7 @@ packages: wrap-ansi: 7.0.0 dev: false - /boxen/6.2.1: + /boxen@6.2.1: resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -7974,19 +12604,18 @@ packages: wrap-ansi: 8.1.0 dev: false - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - dev: false - /braces/1.8.5: + /braces@1.8.5: resolution: {integrity: sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==} engines: {node: '>=0.10.0'} dependencies: @@ -7995,25 +12624,7 @@ packages: repeat-element: 1.1.4 dev: false - /braces/2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /braces/2.3.2_supports-color@6.1.0: + /braces@2.3.2(supports-color@6.1.0): resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} engines: {node: '>=0.10.0'} dependencies: @@ -8023,30 +12634,39 @@ packages: fill-range: 4.0.0 isobject: 3.0.1 repeat-element: 1.1.4 - snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon: 0.8.2(supports-color@6.1.0) snapdragon-node: 2.1.1 split-string: 3.1.0 to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: false - /brorand/1.1.0: + /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: false - /browser-process-hrtime/1.0.0: + /browser-level@1.0.1: + resolution: {integrity: sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==} + dependencies: + abstract-level: 1.0.4 + catering: 2.1.1 + module-error: 1.0.2 + run-parallel-limit: 1.1.0 + dev: true + + /browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: false - /browserify-aes/1.2.0: + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + + /browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: buffer-xor: 1.0.3 @@ -8055,33 +12675,37 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /browserify-cipher/1.0.1: + /browserify-cipher@1.0.1: resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} dependencies: browserify-aes: 1.2.0 browserify-des: 1.0.2 evp_bytestokey: 1.0.3 - dev: false - /browserify-des/1.0.2: + /browserify-des@1.0.2: resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} dependencies: cipher-base: 1.0.4 des.js: 1.0.1 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /browserify-rsa/4.1.0: + /browserify-fs@1.0.0: + resolution: {integrity: sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==} + dependencies: + level-filesystem: 1.2.0 + level-js: 2.2.4 + levelup: 0.18.6 + dev: true + + /browserify-rsa@4.1.0: resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} dependencies: bn.js: 5.2.1 randombytes: 2.1.0 - dev: false - /browserify-sign/4.2.1: + /browserify-sign@4.2.1: resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} dependencies: bn.js: 5.2.1 @@ -8093,106 +12717,95 @@ packages: parse-asn1: 5.1.6 readable-stream: 3.6.1 safe-buffer: 5.2.1 - dev: false - /browserify-zlib/0.2.0: + /browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} dependencies: pako: 1.0.11 dev: false - /browserslist/4.14.2: + /browserslist@4.14.2: resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001462 + caniuse-lite: 1.0.30001489 electron-to-chromium: 1.4.322 escalade: 3.1.1 node-releases: 1.1.77 dev: false - /browserslist/4.21.5: + /browserslist@4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001462 + caniuse-lite: 1.0.30001489 electron-to-chromium: 1.4.322 node-releases: 2.0.10 - update-browserslist-db: 1.0.10_browserslist@4.21.5 - dev: false + update-browserslist-db: 1.0.10(browserslist@4.21.5) - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 - dev: false - /bs58/4.0.1: + /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} dependencies: base-x: 3.0.9 - dev: false - /bs58check/2.1.2: + /bs58check@2.1.2: resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} dependencies: bs58: 4.0.1 create-hash: 1.2.0 safe-buffer: 5.2.1 - dev: false - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 - dev: false - /buffer-es6/4.9.3: + /buffer-es6@4.9.3: resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} - dev: false - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false - /buffer-indexof/1.1.1: + /buffer-indexof@1.1.1: resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} dev: false - /buffer-json/2.0.0: + /buffer-json@2.0.0: resolution: {integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==} dev: false - /buffer-xor/1.0.3: + /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: false - /buffer/4.9.2: + /buffer@4.9.2: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 isarray: 1.0.0 - dev: false - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false - /buffer/6.0.3: + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /bufferutil/4.0.7: + /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} engines: {node: '>=6.14.2'} requiresBuild: true @@ -8200,21 +12813,19 @@ packages: node-gyp-build: 4.6.0 dev: false - /builtin-modules/2.0.0: + /builtin-modules@2.0.0: resolution: {integrity: sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==} engines: {node: '>=4'} - dev: false - /builtin-modules/3.3.0: + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - dev: false - /builtin-status-codes/3.0.0: + /builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: false - /bundle-require/2.1.8_esbuild@0.14.7: + /bundle-require@2.1.8(esbuild@0.14.7): resolution: {integrity: sha512-oOEg3A0hy/YzvNWNowtKD0pmhZKseOFweCbgyMqTIih4gRY1nJWsvrOCT27L9NbIyL5jMjTFrAUpGxxpW68Puw==} peerDependencies: esbuild: '>=0.13' @@ -8222,22 +12833,21 @@ packages: esbuild: 0.14.7 dev: false - /bytes/3.0.0: + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: false - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - dev: false - /cac/6.7.14: + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: false - /cacache/12.0.4: + /cacache@12.0.4: resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} dependencies: bluebird: 3.7.2 @@ -8250,14 +12860,14 @@ packages: mississippi: 3.0.0 mkdirp: 0.5.6 move-concurrently: 1.0.1 - promise-inflight: 1.0.1_bluebird@3.7.2 + promise-inflight: 1.0.1(bluebird@3.7.2) rimraf: 2.7.1 ssri: 6.0.2 unique-filename: 1.1.1 y18n: 4.0.3 dev: false - /cache-base/1.0.1: + /cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} dependencies: @@ -8270,9 +12880,8 @@ packages: to-object-path: 0.3.0 union-value: 1.0.1 unset-value: 1.0.0 - dev: false - /cache-loader/3.0.1_webpack@4.46.0: + /cache-loader@3.0.1(webpack@4.46.0): resolution: {integrity: sha512-HzJIvGiGqYsFUrMjAJNDbVZoG7qQA+vy9AIoKs7s9DscNfki0I589mf2w6/tW+kkFH3zyiknoWV5Jdynu6b/zw==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -8284,10 +12893,10 @@ packages: mkdirp: 0.5.6 neo-async: 2.6.2 schema-utils: 1.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) dev: false - /cacheable-request/6.1.0: + /cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} engines: {node: '>=8'} dependencies: @@ -8300,147 +12909,195 @@ packages: responselike: 1.0.2 dev: false - /cachedir/2.3.0: + /cachedir@2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} dev: false - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.0 - dev: false - /call-me-maybe/1.0.2: + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + dev: true + + /call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} dev: false - /caller-callsite/2.0.0: + /caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} engines: {node: '>=4'} dependencies: callsites: 2.0.0 - dev: false - /caller-path/2.0.0: + /caller-path@2.0.0: resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} engines: {node: '>=4'} dependencies: caller-callsite: 2.0.0 - dev: false - /callsites/2.0.0: + /callsites@2.0.0: resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} engines: {node: '>=4'} - dev: false - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: false - /camel-case/3.0.0: + /camel-case@3.0.0: resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} dependencies: no-case: 2.3.2 upper-case: 1.1.3 dev: false - /camel-case/4.1.2: + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /camelcase-css/2.0.1: + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: false - /camelcase-keys/4.2.0: + /camelcase-keys@4.2.0: resolution: {integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==} engines: {node: '>=4'} dependencies: camelcase: 4.1.0 map-obj: 2.0.0 quick-lru: 1.1.0 - dev: false - /camelcase/4.1.0: + /camelcase@4.1.0: resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} engines: {node: '>=4'} - dev: false - /camelcase/5.3.1: + /camelcase@5.0.0: + resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==} + engines: {node: '>=6'} + + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - dev: false - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: false - /camelize/1.0.1: + /camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-api/3.0.0: + /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001462 + caniuse-lite: 1.0.30001489 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false - /caniuse-lite/1.0.30001462: + /caniuse-lite@1.0.30001462: resolution: {integrity: sha512-PDd20WuOBPiasZ7KbFnmQRyuLE7cFXW2PVd7dmALzbkUXEP46upAuCDm9eY9vho8fgNMGmbAX92QBZHzcnWIqw==} dev: false - /capture-exit/2.0.0: + /caniuse-lite@1.0.30001489: + resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} + + /capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} dependencies: rsvp: 4.8.5 - dev: false - /capture-stack-trace/1.0.2: + /capture-stack-trace@1.0.2: resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} engines: {node: '>=0.10.0'} - dev: false - /case-sensitive-paths-webpack-plugin/2.4.0: + /case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} dev: false - /caseless/0.12.0: + /case@1.6.3: + resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: false - /catharsis/0.9.0: + /catering@2.1.1: + resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} + engines: {node: '>=6'} + dev: true + + /catharsis@0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} engines: {node: '>= 10'} dependencies: lodash: 4.17.21 - /ccount/1.1.0: + /cbor@8.1.0: + resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} + engines: {node: '>=12.19'} + dependencies: + nofilter: 3.1.0 + dev: true + + /cbor@9.0.2: + resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==} + engines: {node: '>=16'} + dependencies: + nofilter: 3.1.0 + dev: true + + /ccount@1.1.0: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: false - /chalk/2.4.2: + /chai-as-promised@7.1.1(chai@4.4.1): + resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} + peerDependencies: + chai: '>= 2.1.2 < 5' + dependencies: + chai: 4.4.1 + check-error: 1.0.3 + dev: true + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: false - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -8448,49 +13105,58 @@ packages: supports-color: 7.2.0 dev: false - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk/5.2.0: + /chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: false - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - dev: false - /char-regex/2.0.1: + /char-regex@2.0.1: resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} engines: {node: '>=12.20'} dev: false - /character-entities-legacy/1.1.4: + /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: false - /character-entities/1.2.4: + /character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} dev: false - /character-reference-invalid/1.1.4: + /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: false - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: false - /check-types/11.2.2: + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /check-types@11.2.2: resolution: {integrity: sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==} dev: false - /cheerio-select/2.1.0: + /cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} dependencies: boolbase: 1.0.0 @@ -8501,7 +13167,7 @@ packages: domutils: 3.0.1 dev: false - /cheerio/1.0.0-rc.12: + /cheerio@1.0.0-rc.12: resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} dependencies: @@ -8514,41 +13180,20 @@ packages: parse5-htmlparser2-tree-adapter: 7.0.0 dev: false - /chokidar/2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2 - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - dev: false - - /chokidar/2.1.8_supports-color@6.1.0: + /chokidar@2.1.8(supports-color@6.1.0): resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies dependencies: - anymatch: 2.0.0_supports-color@6.1.0 + anymatch: 2.0.0(supports-color@6.1.0) async-each: 1.0.6 - braces: 2.3.2_supports-color@6.1.0 + braces: 2.3.2(supports-color@6.1.0) glob-parent: 3.1.0 inherits: 2.0.4 is-binary-path: 1.0.1 is-glob: 4.0.3 normalize-path: 3.0.0 path-is-absolute: 1.0.1 - readdirp: 2.2.1_supports-color@6.1.0 + readdirp: 2.2.1(supports-color@6.1.0) upath: 1.2.0 optionalDependencies: fsevents: 1.2.13 @@ -8556,7 +13201,7 @@ packages: - supports-color dev: false - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -8569,46 +13214,39 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: false - /chownr/1.1.4: + /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false - /chrome-trace-event/1.0.3: + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - dev: false - /ci-info/1.6.0: + /ci-info@1.6.0: resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} - dev: false - /ci-info/2.0.0: + /ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - /ci-info/3.8.0: + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} - dev: false - /cipher-base/1.0.4: + /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /cjs-module-lexer/0.6.0: + /cjs-module-lexer@0.6.0: resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} - dev: false - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: false - /class-utils/0.3.6: + /class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} dependencies: @@ -8616,71 +13254,88 @@ packages: define-property: 0.2.5 isobject: 3.0.1 static-extend: 0.1.2 - dev: false - /classnames/2.3.2: + /classic-level@1.4.1: + resolution: {integrity: sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==} + engines: {node: '>=12'} + requiresBuild: true + dependencies: + abstract-level: 1.0.4 + catering: 2.1.1 + module-error: 1.0.2 + napi-macros: 2.2.2 + node-gyp-build: 4.6.0 + dev: true + + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /clean-css/4.2.4: + /clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} engines: {node: '>= 4.0'} dependencies: source-map: 0.6.1 dev: false - /clean-css/5.3.2: + /clean-css@5.3.2: resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} dependencies: source-map: 0.6.1 dev: false - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - dev: false - /cli-boxes/1.0.0: + /cli-boxes@1.0.0: resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} engines: {node: '>=0.10.0'} - dev: false - /cli-boxes/2.2.1: + /cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} dev: false - /cli-boxes/3.0.0: + /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} dev: false - /cli-cursor/2.1.0: + /cli-cursor@2.1.0: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 - dev: false - /cli-cursor/3.1.0: + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: false - /cli-spinners/1.3.1: + /cli-spinners@1.3.1: resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} engines: {node: '>=4'} - dev: false - /cli-spinners/2.7.0: + /cli-spinners@2.7.0: resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} engines: {node: '>=6'} dev: false - /cli-table3/0.6.3: + /cli-table3@0.5.1: + resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} + engines: {node: '>=6'} + dependencies: + object-assign: 4.1.1 + string-width: 2.1.1 + optionalDependencies: + colors: 1.4.0 + dev: true + + /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} dependencies: @@ -8689,40 +13344,46 @@ packages: '@colors/colors': 1.5.0 dev: false - /cli-width/3.0.0: + /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} dev: false - /client-only/0.0.1: + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui/5.0.0: + /cliui@5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} dependencies: string-width: 3.1.0 strip-ansi: 5.2.0 wrap-ansi: 5.1.0 - dev: false - /cliui/6.0.0: + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: false - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false - /clone-deep/4.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} dependencies: @@ -8731,28 +13392,30 @@ packages: shallow-clone: 3.0.1 dev: false - /clone-response/1.0.3: + /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 dev: false - /clone/1.0.4: + /clone@0.1.19: + resolution: {integrity: sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==} + dev: true + + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: false - /clsx/1.2.1: + /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} dev: false - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false - /coa/2.0.2: + /coa@2.0.2: resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} engines: {node: '>= 4.0'} dependencies: @@ -8761,55 +13424,56 @@ packages: q: 1.5.1 dev: false - /collapse-white-space/1.0.6: + /collapse-white-space@1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} dev: false - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: false - /collection-visit/1.0.0: + /collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} dependencies: map-visit: 1.0.0 object-visit: 1.0.1 - dev: false - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: false - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string/0.3.0: + /color-string@0.3.0: resolution: {integrity: sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==} dependencies: color-name: 1.1.4 dev: false - /color-string/1.9.1: + /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false - /color/0.11.4: + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: true + + /color@0.11.4: resolution: {integrity: sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==} dependencies: clone: 1.0.4 @@ -8817,65 +13481,96 @@ packages: color-string: 0.3.0 dev: false - /color/3.2.1: + /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} dependencies: color-convert: 1.9.3 color-string: 1.9.1 dev: false - /colord/2.9.3: + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false - /colorette/2.0.19: + /colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: false - /combine-promises/1.1.0: + /colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + dev: true + + /combine-promises@1.1.0: resolution: {integrity: sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==} engines: {node: '>=10'} dev: false - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: false - /comma-separated-tokens/1.0.8: + /comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} dev: false - /commander/2.17.1: + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: true + + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + dev: true + + /commander@2.17.1: resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==} dev: false - /commander/2.19.0: + /commander@2.19.0: resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} dev: false - /commander/2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false - /commander/5.1.0: + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true + + /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} dev: false - /commander/7.2.0: + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} dev: false - /commander/8.3.0: + /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} dev: false - /commitizen/4.3.0: + /commitizen@4.3.0: resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} hasBin: true @@ -8899,53 +13594,40 @@ packages: - '@swc/wasm' dev: false - /common-path-prefix/3.0.0: + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: false - /common-tags/1.8.2: + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} dev: false - /commondir/1.0.1: + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - /component-emitter/1.3.0: + /compare-versions@6.1.0: + resolution: {integrity: sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==} + dev: true + + /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: false - /compressible/2.0.18: + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: false - /compression/1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /compression/1.7.4_supports-color@6.1.0: + /compression@1.7.4(supports-color@6.1.0): resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 bytes: 3.0.0 compressible: 2.0.18 - debug: 2.6.9_supports-color@6.1.0 + debug: 2.6.9(supports-color@6.1.0) on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 @@ -8953,10 +13635,10 @@ packages: - supports-color dev: false - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concat-stream/1.6.2: + /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} dependencies: @@ -8964,9 +13646,24 @@ packages: inherits: 2.0.4 readable-stream: 2.3.8 typedarray: 0.0.6 - dev: false - /configstore/3.1.5: + /concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.1 + shell-quote: 1.8.1 + spawn-command: 0.0.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + dev: true + + /configstore@3.1.5: resolution: {integrity: sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==} engines: {node: '>=4'} dependencies: @@ -8976,9 +13673,8 @@ packages: unique-string: 1.0.0 write-file-atomic: 2.4.3 xdg-basedir: 3.0.0 - dev: false - /configstore/5.0.1: + /configstore@5.0.1: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} dependencies: @@ -8990,29 +13686,29 @@ packages: xdg-basedir: 4.0.0 dev: false - /confusing-browser-globals/1.0.11: + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: false - /connect-history-api-fallback/1.6.0: + /connect-history-api-fallback@1.6.0: resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} engines: {node: '>=0.8'} dev: false - /connect-history-api-fallback/2.0.0: + /connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} dev: false - /consola/2.15.3: + /consola@2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} dev: false - /console-browserify/1.2.0: + /console-browserify@1.2.0: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} dev: false - /consolidate/0.15.1_biqbaboplfbrettd7655fr4n2y: + /consolidate@0.15.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} engines: {node: '>= 0.10.0'} peerDependencies: @@ -9179,52 +13875,56 @@ packages: dependencies: bluebird: 3.7.2 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /constants-browserify/1.0.0: + /constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} dev: false - /content-disposition/0.5.2: + /content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} dev: false - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: false - /content-type/1.0.5: + /content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} dev: false - /conventional-commit-types/3.0.0: + /conventional-commit-types@3.0.0: resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} dev: false - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: false - /cookie-signature/1.0.6: + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: false - /cookie/0.5.0: + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: false - /copy-concurrently/1.0.5: + /copy-concurrently@1.0.5: resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} dependencies: aproba: 1.2.0 @@ -9235,17 +13935,16 @@ packages: run-queue: 1.0.3 dev: false - /copy-descriptor/0.1.1: + /copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} - dev: false - /copy-text-to-clipboard/3.0.1: + /copy-text-to-clipboard@3.0.1: resolution: {integrity: sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==} engines: {node: '>=12'} dev: false - /copy-webpack-plugin/11.0.0_webpack@5.75.0: + /copy-webpack-plugin@11.0.0(webpack@5.76.0): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -9257,10 +13956,10 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /copy-webpack-plugin/5.1.2_webpack@4.46.0: + /copy-webpack-plugin@5.1.2(webpack@4.46.0): resolution: {integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -9277,51 +13976,51 @@ packages: p-limit: 2.3.0 schema-utils: 1.0.0 serialize-javascript: 4.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) webpack-log: 2.0.0 dev: false - /core-js-compat/3.29.0: + /core-js-compat@3.29.0: resolution: {integrity: sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ==} dependencies: browserslist: 4.21.5 dev: false - /core-js-pure/3.29.0: + /core-js-pure@3.29.0: resolution: {integrity: sha512-v94gUjN5UTe1n0yN/opTihJ8QBWD2O8i19RfTZR7foONPWArnjB96QA/wk5ozu1mm6ja3udQCzOzwQXTxi3xOQ==} requiresBuild: true dev: false - /core-js/3.29.0: + /core-js@3.29.0: resolution: {integrity: sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==} requiresBuild: true dev: false - /core-util-is/1.0.2: + /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: false - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - /cosmiconfig-typescript-loader/4.3.0_y2okb5cfqgxv537umje5rj3w6m: + /cosmiconfig-typescript-loader@4.3.0(@types/node@20.9.0)(cosmiconfig@8.1.0)(ts-node@10.9.1)(typescript@5.3.3): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} + requiresBuild: true peerDependencies: '@types/node': '*' cosmiconfig: '>=7' ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 cosmiconfig: 8.1.0 - ts-node: 10.9.1_alpjt73dvgv6kni625hu7f2l4m - typescript: 4.9.5 + ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) + typescript: 5.3.3 dev: false optional: true - /cosmiconfig/5.2.1: + /cosmiconfig@5.2.1: resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} engines: {node: '>=4'} dependencies: @@ -9329,9 +14028,8 @@ packages: is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - dev: false - /cosmiconfig/6.0.0: + /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} dependencies: @@ -9342,7 +14040,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig/7.1.0: + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: @@ -9353,9 +14051,10 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig/8.1.0: + /cosmiconfig@8.1.0: resolution: {integrity: sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==} engines: {node: '>=14'} + requiresBuild: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -9364,21 +14063,25 @@ packages: dev: false optional: true - /create-ecdh/4.0.4: + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: bn.js: 4.12.0 elliptic: 6.5.4 - dev: false - /create-error-class/3.0.2: + /create-error-class@3.0.2: resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} engines: {node: '>=0.10.0'} dependencies: capture-stack-trace: 1.0.2 - dev: false - /create-hash/1.2.0: + /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: cipher-base: 1.0.4 @@ -9386,9 +14089,8 @@ packages: md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 - dev: false - /create-hmac/1.1.7: + /create-hmac@1.1.7: resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} dependencies: cipher-base: 1.0.4 @@ -9397,37 +14099,42 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: false - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: false - optional: true + requiresBuild: true - /cross-fetch/2.2.5: + /cross-fetch@2.2.5: resolution: {integrity: sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w==} dependencies: node-fetch: 2.6.1 whatwg-fetch: 2.0.4 dev: false - /cross-fetch/3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + /cross-fetch@2.2.6: + resolution: {integrity: sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==} dependencies: node-fetch: 2.6.7 + whatwg-fetch: 2.0.4 transitivePeerDependencies: - encoding dev: false - /cross-spawn/5.1.0: + /cross-fetch@3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - dev: false - /cross-spawn/6.0.5: + /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} dependencies: @@ -9436,18 +14143,20 @@ packages: semver: 5.7.1 shebang-command: 1.2.0 which: 1.3.1 - dev: false - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: false - /crypto-browserify/3.12.0: + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: true + + /crypto-browserify@3.12.0: resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} dependencies: browserify-cipher: 1.0.1 @@ -9461,19 +14170,21 @@ packages: public-encrypt: 4.0.3 randombytes: 2.1.0 randomfill: 1.0.4 + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} dev: false - /crypto-random-string/1.0.0: + /crypto-random-string@1.0.0: resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} engines: {node: '>=4'} - dev: false - /crypto-random-string/2.0.0: + /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} dev: false - /css-blank-pseudo/3.0.3_postcss@8.4.21: + /css-blank-pseudo@3.0.3(postcss@8.4.21): resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} engines: {node: ^12 || ^14 || >=16} hasBin: true @@ -9481,25 +14192,35 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /css-blank-pseudo@5.0.2(postcss@8.4.23): + resolution: {integrity: sha512-aCU4AZ7uEcVSUzagTlA9pHciz7aWPKA/YzrEkpdSopJ2pvhIxiQ5sYeMz1/KByxlIo4XBdvMNJAVKMg/GRnhfw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /css-box-model/1.2.1: + /css-box-model@1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} dependencies: tiny-invariant: 1.3.1 dev: false - /css-color-keywords/1.0.0: + /css-color-keywords@1.0.0: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} dev: false - /css-color-names/0.0.4: + /css-color-names@0.0.4: resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} dev: false - /css-declaration-sorter/4.0.1: + /css-declaration-sorter@4.0.1: resolution: {integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==} engines: {node: '>4'} dependencies: @@ -9507,7 +14228,7 @@ packages: timsort: 0.3.0 dev: false - /css-declaration-sorter/6.3.1_postcss@8.4.21: + /css-declaration-sorter@6.3.1(postcss@8.4.21): resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} engines: {node: ^10 || ^12 || >=14} peerDependencies: @@ -9516,7 +14237,16 @@ packages: postcss: 8.4.21 dev: false - /css-has-pseudo/3.0.4_postcss@8.4.21: + /css-declaration-sorter@6.3.1(postcss@8.4.23): + resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.23 + dev: false + + /css-has-pseudo@3.0.4(postcss@8.4.21): resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} engines: {node: ^12 || ^14 || >=16} hasBin: true @@ -9524,10 +14254,22 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /css-has-pseudo@5.0.2(postcss@8.4.23): + resolution: {integrity: sha512-q+U+4QdwwB7T9VEW/LyO6CFrLAeLqOykC5mDqJXc7aKZAhDbq7BvGT13VGJe+IwBfdN2o3Xdw2kJ5IxwV1Sc9Q==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 dev: false - /css-loader/2.1.1_webpack@4.46.0: + /css-loader@2.1.1(webpack@5.76.0): resolution: {integrity: sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -9544,27 +14286,27 @@ packages: postcss-modules-values: 2.0.0 postcss-value-parser: 3.3.1 schema-utils: 1.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /css-loader/6.7.3_webpack@5.75.0: + /css-loader@6.7.3(webpack@5.76.0): resolution: {integrity: sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.21 - postcss: 8.4.21 - postcss-modules-extract-imports: 3.0.0_postcss@8.4.21 - postcss-modules-local-by-default: 4.0.0_postcss@8.4.21 - postcss-modules-scope: 3.0.0_postcss@8.4.21 - postcss-modules-values: 4.0.0_postcss@8.4.21 + icss-utils: 5.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.23) + postcss-modules-local-by-default: 4.0.0(postcss@8.4.23) + postcss-modules-scope: 3.0.0(postcss@8.4.23) + postcss-modules-values: 4.0.0(postcss@8.4.23) postcss-value-parser: 4.2.0 - semver: 7.3.8 - webpack: 5.75.0_webpack-cli@3.3.12 + semver: 7.5.2 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /css-minimizer-webpack-plugin/3.4.1_webpack@5.75.0: + /css-minimizer-webpack-plugin@3.4.1(esbuild@0.14.7)(webpack@5.76.0): resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -9583,16 +14325,17 @@ packages: esbuild: optional: true dependencies: - cssnano: 5.1.15_postcss@8.4.21 + cssnano: 5.1.15(postcss@8.4.23) + esbuild: 0.14.7 jest-worker: 27.5.1 - postcss: 8.4.21 + postcss: 8.4.23 schema-utils: 4.0.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /css-minimizer-webpack-plugin/4.2.2_dpcjkp5o5ztxuvt4quwwvenemi: + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(esbuild@0.14.7)(webpack@5.76.0): resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -9618,22 +14361,23 @@ packages: optional: true dependencies: clean-css: 5.3.2 - cssnano: 5.1.15_postcss@8.4.21 + cssnano: 5.1.15(postcss@8.4.23) + esbuild: 0.14.7 jest-worker: 29.5.0 - postcss: 8.4.21 + postcss: 8.4.23 schema-utils: 4.0.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /css-parse/2.0.0: + /css-parse@2.0.0: resolution: {integrity: sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==} dependencies: css: 2.2.4 dev: false - /css-prefers-color-scheme/6.0.3_postcss@8.4.21: + /css-prefers-color-scheme@6.0.3(postcss@8.4.21): resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} engines: {node: ^12 || ^14 || >=16} hasBin: true @@ -9643,11 +14387,20 @@ packages: postcss: 8.4.21 dev: false - /css-select-base-adapter/0.1.1: + /css-prefers-color-scheme@8.0.2(postcss@8.4.23): + resolution: {integrity: sha512-OvFghizHJ45x7nsJJUSYLyQNTzsCU8yWjxAc/nhPQg1pbs18LMoET8N3kOweFDPy0JV0OSXN2iqRFhPBHYOeMA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + dev: false + + /css-select-base-adapter@0.1.1: resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} dev: false - /css-select/2.1.0: + /css-select@2.1.0: resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} dependencies: boolbase: 1.0.0 @@ -9656,7 +14409,7 @@ packages: nth-check: 1.0.2 dev: false - /css-select/4.3.0: + /css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: boolbase: 1.0.0 @@ -9666,7 +14419,7 @@ packages: nth-check: 2.1.1 dev: false - /css-select/5.1.0: + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: boolbase: 1.0.0 @@ -9676,7 +14429,7 @@ packages: nth-check: 2.1.1 dev: false - /css-to-react-native/2.3.2: + /css-to-react-native@2.3.2: resolution: {integrity: sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==} dependencies: camelize: 1.0.1 @@ -9684,7 +14437,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /css-tree/1.0.0-alpha.37: + /css-tree@1.0.0-alpha.37: resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} engines: {node: '>=8.0.0'} dependencies: @@ -9692,7 +14445,7 @@ packages: source-map: 0.6.1 dev: false - /css-tree/1.1.3: + /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} dependencies: @@ -9700,21 +14453,21 @@ packages: source-map: 0.6.1 dev: false - /css-what/3.4.2: + /css-what@3.4.2: resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} engines: {node: '>= 6'} dev: false - /css-what/6.1.0: + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} dev: false - /css.escape/1.5.1: + /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: false - /css/2.2.4: + /css@2.2.4: resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} dependencies: inherits: 2.0.4 @@ -9723,32 +14476,32 @@ packages: urix: 0.1.0 dev: false - /cssdb/7.4.1: - resolution: {integrity: sha512-0Q8NOMpXJ3iTDDbUv9grcmQAfdDx4qz+fN/+Md2FGbevT+6+bJNQ2LjB2YIUlLbpBTM32idU1Sb+tb/uGt6/XQ==} + /cssdb@7.6.0: + resolution: {integrity: sha512-Nna7rph8V0jC6+JBY4Vk4ndErUmfJfV6NJCaZdurL0omggabiy+QB2HCQtu5c/ACLZ0I7REv7A4QyPIoYzZx0w==} dev: false - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false - /cssnano-preset-advanced/5.3.10_postcss@8.4.21: + /cssnano-preset-advanced@5.3.10(postcss@8.4.23): resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - autoprefixer: 10.4.13_postcss@8.4.21 - cssnano-preset-default: 5.2.14_postcss@8.4.21 - postcss: 8.4.21 - postcss-discard-unused: 5.1.0_postcss@8.4.21 - postcss-merge-idents: 5.1.1_postcss@8.4.21 - postcss-reduce-idents: 5.2.0_postcss@8.4.21 - postcss-zindex: 5.1.0_postcss@8.4.21 + autoprefixer: 10.4.14(postcss@8.4.23) + cssnano-preset-default: 5.2.14(postcss@8.4.23) + postcss: 8.4.23 + postcss-discard-unused: 5.1.0(postcss@8.4.23) + postcss-merge-idents: 5.1.1(postcss@8.4.23) + postcss-reduce-idents: 5.2.0(postcss@8.4.23) + postcss-zindex: 5.1.0(postcss@8.4.23) dev: false - /cssnano-preset-default/4.0.8: + /cssnano-preset-default@4.0.8: resolution: {integrity: sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==} engines: {node: '>=6.9.0'} dependencies: @@ -9784,67 +14537,105 @@ packages: postcss-unique-selectors: 4.0.1 dev: false - /cssnano-preset-default/5.2.14_postcss@8.4.21: + /cssnano-preset-default@5.2.14(postcss@8.4.21): resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.3.1_postcss@8.4.21 - cssnano-utils: 3.1.0_postcss@8.4.21 + css-declaration-sorter: 6.3.1(postcss@8.4.21) + cssnano-utils: 3.1.0(postcss@8.4.21) postcss: 8.4.21 - postcss-calc: 8.2.4_postcss@8.4.21 - postcss-colormin: 5.3.1_postcss@8.4.21 - postcss-convert-values: 5.1.3_postcss@8.4.21 - postcss-discard-comments: 5.1.2_postcss@8.4.21 - postcss-discard-duplicates: 5.1.0_postcss@8.4.21 - postcss-discard-empty: 5.1.1_postcss@8.4.21 - postcss-discard-overridden: 5.1.0_postcss@8.4.21 - postcss-merge-longhand: 5.1.7_postcss@8.4.21 - postcss-merge-rules: 5.1.4_postcss@8.4.21 - postcss-minify-font-values: 5.1.0_postcss@8.4.21 - postcss-minify-gradients: 5.1.1_postcss@8.4.21 - postcss-minify-params: 5.1.4_postcss@8.4.21 - postcss-minify-selectors: 5.2.1_postcss@8.4.21 - postcss-normalize-charset: 5.1.0_postcss@8.4.21 - postcss-normalize-display-values: 5.1.0_postcss@8.4.21 - postcss-normalize-positions: 5.1.1_postcss@8.4.21 - postcss-normalize-repeat-style: 5.1.1_postcss@8.4.21 - postcss-normalize-string: 5.1.0_postcss@8.4.21 - postcss-normalize-timing-functions: 5.1.0_postcss@8.4.21 - postcss-normalize-unicode: 5.1.1_postcss@8.4.21 - postcss-normalize-url: 5.1.0_postcss@8.4.21 - postcss-normalize-whitespace: 5.1.1_postcss@8.4.21 - postcss-ordered-values: 5.1.3_postcss@8.4.21 - postcss-reduce-initial: 5.1.2_postcss@8.4.21 - postcss-reduce-transforms: 5.1.0_postcss@8.4.21 - postcss-svgo: 5.1.0_postcss@8.4.21 - postcss-unique-selectors: 5.1.1_postcss@8.4.21 - dev: false - - /cssnano-util-get-arguments/4.0.0: + postcss-calc: 8.2.4(postcss@8.4.21) + postcss-colormin: 5.3.1(postcss@8.4.21) + postcss-convert-values: 5.1.3(postcss@8.4.21) + postcss-discard-comments: 5.1.2(postcss@8.4.21) + postcss-discard-duplicates: 5.1.0(postcss@8.4.21) + postcss-discard-empty: 5.1.1(postcss@8.4.21) + postcss-discard-overridden: 5.1.0(postcss@8.4.21) + postcss-merge-longhand: 5.1.7(postcss@8.4.21) + postcss-merge-rules: 5.1.4(postcss@8.4.21) + postcss-minify-font-values: 5.1.0(postcss@8.4.21) + postcss-minify-gradients: 5.1.1(postcss@8.4.21) + postcss-minify-params: 5.1.4(postcss@8.4.21) + postcss-minify-selectors: 5.2.1(postcss@8.4.21) + postcss-normalize-charset: 5.1.0(postcss@8.4.21) + postcss-normalize-display-values: 5.1.0(postcss@8.4.21) + postcss-normalize-positions: 5.1.1(postcss@8.4.21) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.21) + postcss-normalize-string: 5.1.0(postcss@8.4.21) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.21) + postcss-normalize-unicode: 5.1.1(postcss@8.4.21) + postcss-normalize-url: 5.1.0(postcss@8.4.21) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.21) + postcss-ordered-values: 5.1.3(postcss@8.4.21) + postcss-reduce-initial: 5.1.2(postcss@8.4.21) + postcss-reduce-transforms: 5.1.0(postcss@8.4.21) + postcss-svgo: 5.1.0(postcss@8.4.21) + postcss-unique-selectors: 5.1.1(postcss@8.4.21) + dev: false + + /cssnano-preset-default@5.2.14(postcss@8.4.23): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.3.1(postcss@8.4.23) + cssnano-utils: 3.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-calc: 8.2.4(postcss@8.4.23) + postcss-colormin: 5.3.1(postcss@8.4.23) + postcss-convert-values: 5.1.3(postcss@8.4.23) + postcss-discard-comments: 5.1.2(postcss@8.4.23) + postcss-discard-duplicates: 5.1.0(postcss@8.4.23) + postcss-discard-empty: 5.1.1(postcss@8.4.23) + postcss-discard-overridden: 5.1.0(postcss@8.4.23) + postcss-merge-longhand: 5.1.7(postcss@8.4.23) + postcss-merge-rules: 5.1.4(postcss@8.4.23) + postcss-minify-font-values: 5.1.0(postcss@8.4.23) + postcss-minify-gradients: 5.1.1(postcss@8.4.23) + postcss-minify-params: 5.1.4(postcss@8.4.23) + postcss-minify-selectors: 5.2.1(postcss@8.4.23) + postcss-normalize-charset: 5.1.0(postcss@8.4.23) + postcss-normalize-display-values: 5.1.0(postcss@8.4.23) + postcss-normalize-positions: 5.1.1(postcss@8.4.23) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.23) + postcss-normalize-string: 5.1.0(postcss@8.4.23) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.23) + postcss-normalize-unicode: 5.1.1(postcss@8.4.23) + postcss-normalize-url: 5.1.0(postcss@8.4.23) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.23) + postcss-ordered-values: 5.1.3(postcss@8.4.23) + postcss-reduce-initial: 5.1.2(postcss@8.4.23) + postcss-reduce-transforms: 5.1.0(postcss@8.4.23) + postcss-svgo: 5.1.0(postcss@8.4.23) + postcss-unique-selectors: 5.1.1(postcss@8.4.23) + dev: false + + /cssnano-util-get-arguments@4.0.0: resolution: {integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==} engines: {node: '>=6.9.0'} dev: false - /cssnano-util-get-match/4.0.0: + /cssnano-util-get-match@4.0.0: resolution: {integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==} engines: {node: '>=6.9.0'} dev: false - /cssnano-util-raw-cache/4.0.1: + /cssnano-util-raw-cache@4.0.1: resolution: {integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==} engines: {node: '>=6.9.0'} dependencies: postcss: 7.0.39 dev: false - /cssnano-util-same-parent/4.0.1: + /cssnano-util-same-parent@4.0.1: resolution: {integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==} engines: {node: '>=6.9.0'} dev: false - /cssnano-utils/3.1.0_postcss@8.4.21: + /cssnano-utils@3.1.0(postcss@8.4.21): resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -9853,7 +14644,16 @@ packages: postcss: 8.4.21 dev: false - /cssnano/4.1.11: + /cssnano-utils@3.1.0(postcss@8.4.23): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + dev: false + + /cssnano@4.1.11: resolution: {integrity: sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==} engines: {node: '>=6.9.0'} dependencies: @@ -9863,60 +14663,68 @@ packages: postcss: 7.0.39 dev: false - /cssnano/5.1.15_postcss@8.4.21: + /cssnano@5.1.15(postcss@8.4.21): resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 5.2.14_postcss@8.4.21 + cssnano-preset-default: 5.2.14(postcss@8.4.21) lilconfig: 2.1.0 postcss: 8.4.21 yaml: 1.10.2 dev: false - /csso/4.2.0: + /cssnano@5.1.15(postcss@8.4.23): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.23) + lilconfig: 2.1.0 + postcss: 8.4.23 + yaml: 1.10.2 + dev: false + + /csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} dependencies: css-tree: 1.1.3 dev: false - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: false - /cssom/0.4.4: + /cssom@0.4.4: resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: false - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: false - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 - dev: false - /csstype/3.1.1: + /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: false - /currently-unhandled/0.4.1: + /currently-unhandled@0.4.1: resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} engines: {node: '>=0.10.0'} dependencies: array-find-index: 1.0.2 - dev: false - /cyclist/1.0.1: + /cyclist@1.0.1: resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==} dev: false - /cz-conventional-changelog/3.3.0: + /cz-conventional-changelog@3.3.0: resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: @@ -9927,32 +14735,25 @@ packages: longest: 2.0.1 word-wrap: 1.2.3 optionalDependencies: - '@commitlint/load': 17.4.4 + '@commitlint/load': 17.5.0 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: false - /d/1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} - dependencies: - es5-ext: 0.10.62 - type: 1.2.0 - dev: false - - /d3-array/3.2.2: + /d3-array@3.2.2: resolution: {integrity: sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ==} engines: {node: '>=12'} dependencies: internmap: 2.0.3 dev: false - /d3-axis/3.0.0: + /d3-axis@3.0.0: resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} dev: false - /d3-brush/3.0.0: + /d3-brush@3.0.0: resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} engines: {node: '>=12'} dependencies: @@ -9960,41 +14761,41 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3-chord/3.0.1: + /d3-chord@3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: d3-path: 3.1.0 dev: false - /d3-color/3.1.0: + /d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} dev: false - /d3-contour/4.0.2: + /d3-contour@4.0.2: resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.2 dev: false - /d3-delaunay/6.0.2: + /d3-delaunay@6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 dev: false - /d3-dispatch/3.0.1: + /d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} dev: false - /d3-drag/3.0.0: + /d3-drag@3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} dependencies: @@ -10002,7 +14803,7 @@ packages: d3-selection: 3.0.0 dev: false - /d3-dsv/3.0.1: + /d3-dsv@3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} hasBin: true @@ -10012,19 +14813,19 @@ packages: rw: 1.3.3 dev: false - /d3-ease/3.0.1: + /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} dev: false - /d3-fetch/3.0.1: + /d3-fetch@3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} dependencies: d3-dsv: 3.0.1 dev: false - /d3-force/3.0.0: + /d3-force@3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} dependencies: @@ -10033,51 +14834,51 @@ packages: d3-timer: 3.0.1 dev: false - /d3-format/3.1.0: + /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} dev: false - /d3-geo/3.1.0: + /d3-geo@3.1.0: resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.2 dev: false - /d3-hierarchy/3.1.2: + /d3-hierarchy@3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} dev: false - /d3-interpolate/3.0.1: + /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 dev: false - /d3-path/3.1.0: + /d3-path@3.1.0: resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} dev: false - /d3-polygon/3.0.1: + /d3-polygon@3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} dev: false - /d3-quadtree/3.0.1: + /d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} dev: false - /d3-random/3.0.1: + /d3-random@3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} dev: false - /d3-scale-chromatic/3.0.0: + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} dependencies: @@ -10085,7 +14886,7 @@ packages: d3-interpolate: 3.0.1 dev: false - /d3-scale/4.0.2: + /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} dependencies: @@ -10096,38 +14897,38 @@ packages: d3-time-format: 4.1.0 dev: false - /d3-selection/3.0.0: + /d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} dev: false - /d3-shape/3.2.0: + /d3-shape@3.2.0: resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} dependencies: d3-path: 3.1.0 dev: false - /d3-time-format/4.1.0: + /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.1.0 dev: false - /d3-time/3.1.0: + /d3-time@3.1.0: resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} dependencies: d3-array: 3.2.2 dev: false - /d3-timer/3.0.1: + /d3-timer@3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} dev: false - /d3-transition/3.0.1_d3-selection@3.0.0: + /d3-transition@3.0.1(d3-selection@3.0.0): resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} peerDependencies: @@ -10141,7 +14942,7 @@ packages: d3-timer: 3.0.1 dev: false - /d3-zoom/3.0.0: + /d3-zoom@3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} dependencies: @@ -10149,10 +14950,10 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3/7.8.2: + /d3@7.8.2: resolution: {integrity: sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==} engines: {node: '>=12'} dependencies: @@ -10184,36 +14985,41 @@ packages: d3-time: 3.1.0 d3-time-format: 4.1.0 d3-timer: 3.0.1 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 dev: false - /damerau-levenshtein/1.0.8: + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: false - /dashdash/1.14.1: + /dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 dev: false - /data-uri-to-buffer/4.0.1: + /data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} dev: false - /data-urls/2.0.0: + /data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} dependencies: abab: 2.0.6 whatwg-mimetype: 2.3.0 whatwg-url: 8.7.0 - dev: false - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -10222,26 +15028,26 @@ packages: whatwg-url: 11.0.0 dev: false - /dayjs/1.11.7: + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.21.5 + dev: true + + /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false - /de-indent/1.0.2: + /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: false - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false + /death@1.1.0: + resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} + dev: true - /debug/2.6.9_supports-color@6.1.0: + /debug@2.6.9(supports-color@6.1.0): resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -10251,9 +15057,8 @@ packages: dependencies: ms: 2.0.0 supports-color: 6.1.0 - dev: false - /debug/3.1.0: + /debug@3.1.0: resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} peerDependencies: supports-color: '*' @@ -10264,18 +15069,7 @@ packages: ms: 2.0.0 dev: false - /debug/3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /debug/3.2.7_supports-color@6.1.0: + /debug@3.2.7(supports-color@6.1.0): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -10285,9 +15079,8 @@ packages: dependencies: ms: 2.1.3 supports-color: 6.1.0 - dev: false - /debug/4.3.4: + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -10297,9 +15090,10 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 5.5.0 dev: false - /debug/4.3.4_supports-color@5.5.0: + /debug@4.3.4(supports-color@6.1.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -10309,10 +15103,9 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 5.5.0 - dev: false + supports-color: 6.1.0 - /debug/4.3.4_supports-color@6.1.0: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -10322,50 +15115,57 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 6.1.0 - dev: false + supports-color: 8.1.1 + dev: true - /decamelize-keys/1.1.1: + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 map-obj: 1.0.1 - dev: false - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - dev: false - /decamelize/2.0.0: + /decamelize@2.0.0: resolution: {integrity: sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==} engines: {node: '>=4'} dependencies: xregexp: 4.0.0 - dev: false - /decimal.js/10.4.3: + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: false - /decode-uri-component/0.2.2: + /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dev: false - /decompress-response/3.3.0: + /decompress-response@3.3.0: resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} engines: {node: '>=4'} dependencies: mimic-response: 1.0.1 dev: false - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: false - /deep-equal/1.1.1: + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-equal@1.1.1: resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} dependencies: is-arguments: 1.1.1 @@ -10376,7 +15176,7 @@ packages: regexp.prototype.flags: 1.4.3 dev: false - /deep-equal/2.2.0: + /deep-equal@2.2.0: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: call-bind: 1.0.2 @@ -10398,25 +15198,23 @@ packages: which-typed-array: 1.1.9 dev: false - /deep-extend/0.6.0: + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deepmerge/1.5.2: + /deepmerge@1.5.2: resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} engines: {node: '>=0.10.0'} dev: false - /deepmerge/4.3.0: + /deepmerge@4.3.0: resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} engines: {node: '>=0.10.0'} - dev: false - /default-gateway/4.2.0: + /default-gateway@4.2.0: resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} engines: {node: '>=6'} dependencies: @@ -10424,63 +15222,73 @@ packages: ip-regex: 2.1.0 dev: false - /default-gateway/6.0.3: + /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} dependencies: execa: 5.1.1 dev: false - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: false - /defer-to-connect/1.1.3: + /defer-to-connect@1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: false - /define-lazy-prop/2.0.0: + /deferred-leveldown@0.2.0: + resolution: {integrity: sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==} + dependencies: + abstract-leveldown: 0.12.4 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + dev: true + + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: false - /define-properties/1.2.0: + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: false - /define-property/0.2.5: + /define-property@0.2.5: resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 0.1.6 - dev: false - /define-property/1.0.0: + /define-property@1.0.0: resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.2 - dev: false - /define-property/2.0.2: + /define-property@2.0.2: resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.2 isobject: 3.0.1 - dev: false - /defined/1.0.1: + /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: false - /del/4.1.1: + /del@4.1.1: resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} engines: {node: '>=6'} dependencies: @@ -10493,7 +15301,7 @@ packages: rimraf: 2.7.1 dev: false - /del/6.1.1: + /del@6.1.1: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} dependencies: @@ -10507,91 +15315,85 @@ packages: slash: 3.0.0 dev: false - /delaunator/5.0.0: + /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: robust-predicates: 3.0.1 dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dev: false - /depd/1.1.2: + /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} dev: false - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dev: false - /dequal/2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: false - /des.js/1.0.1: + /des.js@1.0.1: resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false - /detab/2.0.4: + /detab@2.0.4: resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} dependencies: repeat-string: 1.6.1 dev: false - /detect-file/1.0.0: + /detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} engines: {node: '>=0.10.0'} - dev: false - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: false - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - dev: false - /detect-node/2.1.0: + /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: false - /detect-port-alt/1.1.6: + /detect-port-alt@1.1.6: resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} engines: {node: '>= 4.2.1'} hasBin: true dependencies: - address: 1.1.2 - debug: 2.6.9 + address: 1.2.2 + debug: 2.6.9(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: false - /detect-port/1.5.1: + /detect-port@1.5.1: resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} hasBin: true dependencies: address: 1.2.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color - dev: false - /detective/5.2.1: + /detective@5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} engines: {node: '>=0.8.0'} hasBin: true @@ -10601,90 +15403,100 @@ packages: minimist: 1.2.8 dev: false - /didyoumean/1.2.2: + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-match-patch/1.0.5: + /diff-match-patch@1.0.5: resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} dev: false - /diff-sequences/26.6.2: + /diff-sequences@26.6.2: resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} engines: {node: '>= 10.14.2'} - dev: false - /diff-sequences/27.5.1: + /diff-sequences@27.5.1: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: false - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false - /diff/4.0.2: + /diff@3.5.0: + resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: false - optional: true + requiresBuild: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true - /diffie-hellman/5.0.3: + /diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} dependencies: bn.js: 4.12.0 miller-rabin: 4.0.1 randombytes: 2.1.0 - dev: false - /dir-glob/2.2.2: + /difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + dependencies: + heap: 0.2.7 + dev: true + + /dir-glob@2.2.2: resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} engines: {node: '>=4'} dependencies: path-type: 3.0.0 dev: false - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: false - /discontinuous-range/1.0.0: + /discontinuous-range@1.0.0: resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} dev: false - /dlv/1.1.3: + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false - /dns-equal/1.0.0: + /dns-equal@1.0.0: resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: false - /dns-packet/1.3.4: + /dns-packet@1.3.4: resolution: {integrity: sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==} dependencies: ip: 1.1.8 safe-buffer: 5.2.1 dev: false - /dns-packet/5.4.0: + /dns-packet@5.4.0: resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.4 dev: false - /dns-txt/2.0.2: + /dns-txt@2.0.2: resolution: {integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==} dependencies: buffer-indexof: 1.1.1 dev: false - /docsearch.js/2.6.3: + /docsearch.js@2.6.3: resolution: {integrity: sha512-GN+MBozuyz664ycpZY0ecdQE0ND/LSgJKhTLA0/v3arIS3S1Rpf2OJz6A35ReMsm91V5apcmzr5/kM84cvUg+A==} deprecated: This package has been deprecated and is no longer maintained. Please use @docsearch/js. dependencies: @@ -10699,51 +15511,50 @@ packages: - supports-color dev: false - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: false - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: false - /dom-accessibility-api/0.5.16: + /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: false - /dom-converter/0.2.0: + /dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dependencies: utila: 0.4.0 dev: false - /dom-helpers/3.4.0: + /dom-helpers@3.4.0: resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 dev: false - /dom-helpers/5.2.1: + /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 csstype: 3.1.1 dev: false - /dom-serializer/0.2.2: + /dom-serializer@0.2.2: resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} dependencies: domelementtype: 2.3.0 entities: 2.2.0 dev: false - /dom-serializer/1.4.1: + /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: domelementtype: 2.3.0 @@ -10751,7 +15562,7 @@ packages: entities: 2.2.0 dev: false - /dom-serializer/2.0.0: + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 @@ -10759,59 +15570,58 @@ packages: entities: 4.4.0 dev: false - /dom-walk/0.1.2: + /dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} dev: false - /domain-browser/1.2.0: + /domain-browser@1.2.0: resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} engines: {node: '>=0.4', npm: '>=1.2'} dev: false - /domelementtype/1.3.1: + /domelementtype@1.3.1: resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} dev: false - /domelementtype/2.3.0: + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false - /domexception/2.0.1: + /domexception@2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} engines: {node: '>=8'} dependencies: webidl-conversions: 5.0.0 - dev: false - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: false - /domhandler/4.3.1: + /domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: false - /domhandler/5.0.3: + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: false - /domutils/1.7.0: + /domutils@1.7.0: resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} dependencies: dom-serializer: 0.2.2 domelementtype: 1.3.1 dev: false - /domutils/2.8.0: + /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: dom-serializer: 1.4.1 @@ -10819,7 +15629,7 @@ packages: domhandler: 4.3.1 dev: false - /domutils/3.0.1: + /domutils@3.0.1: resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} dependencies: dom-serializer: 2.0.0 @@ -10827,37 +15637,40 @@ packages: domhandler: 5.0.3 dev: false - /dot-case/3.0.4: + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /dot-prop/4.2.1: + /dot-prop@4.2.1: resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==} engines: {node: '>=4'} dependencies: is-obj: 1.0.1 - dev: false - /dot-prop/5.3.0: + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 dev: false - /dotenv-expand/5.1.0: + /dotenv-expand@5.1.0: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} dev: false - /dotenv/10.0.0: + /dotenv@10.0.0: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} dev: false - /drbg.js/1.0.1: + /dotenv@16.4.1: + resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} + engines: {node: '>=12'} + + /drbg.js@1.0.1: resolution: {integrity: sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==} engines: {node: '>=0.10'} dependencies: @@ -10866,15 +15679,14 @@ packages: create-hmac: 1.1.7 dev: false - /duplexer/0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: false - - /duplexer3/0.1.5: + /duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: false - /duplexify/3.7.1: + /duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: end-of-stream: 1.4.4 @@ -10883,22 +15695,22 @@ packages: stream-shift: 1.0.1 dev: false - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: false - /ecc-jsbn/0.1.2: + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 dev: false - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /ejs/3.1.8: + /ejs@3.1.8: resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -10906,11 +15718,10 @@ packages: jake: 10.8.5 dev: false - /electron-to-chromium/1.4.322: + /electron-to-chromium@1.4.322: resolution: {integrity: sha512-KovjizNC9XB7dno/2GjxX8VS0SlfPpCjtyoKft+bCO+UfD8bFy16hY4Sh9s0h9BDxbRH2U0zX5VBjpM1LTcNlg==} - dev: false - /elliptic/6.5.4: + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: bn.js: 4.12.0 @@ -10920,106 +15731,102 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - /emittery/0.10.2: + /emittery@0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} engines: {node: '>=12'} dev: false - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: false - /emittery/0.7.2: + /emittery@0.7.2: resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} engines: {node: '>=10'} - dev: false - /emittery/0.8.1: + /emittery@0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} engines: {node: '>=10'} dev: false - /emoji-regex/7.0.3: + /emoji-regex@7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - dev: false - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: false - /emojis-list/2.1.0: + /emojis-list@2.1.0: resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} engines: {node: '>= 0.10'} dev: false - /emojis-list/3.0.0: + /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: false - /emoticon/3.2.0: + /emoticon@3.2.0: resolution: {integrity: sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==} dev: false - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: false - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: false - /enhanced-resolve/4.5.0: + /enhanced-resolve@4.5.0: resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} engines: {node: '>=6.9.0'} dependencies: graceful-fs: 4.2.10 memory-fs: 0.5.0 tapable: 1.1.3 - dev: false - /enhanced-resolve/5.12.0: + /enhanced-resolve@5.12.0: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 - dev: false - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 - dev: false - /entities/1.1.2: + /entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} dev: false - /entities/2.1.0: + /entities@2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - /entities/2.2.0: + /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: false - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: false - /envify/4.1.0: + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /envify@4.1.0: resolution: {integrity: sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==} hasBin: true dependencies: @@ -11027,20 +15834,20 @@ packages: through: 2.3.8 dev: false - /envinfo/7.8.1: + /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true dev: false - /enzyme-shallow-equal/1.0.5: + /enzyme-shallow-equal@1.0.5: resolution: {integrity: sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==} dependencies: has: 1.0.3 object-is: 1.1.5 dev: false - /enzyme-to-json/3.6.2_enzyme@3.11.0: + /enzyme-to-json@3.6.2(enzyme@3.11.0): resolution: {integrity: sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==} engines: {node: '>=6.0.0'} peerDependencies: @@ -11052,7 +15859,7 @@ packages: react-is: 16.13.1 dev: false - /enzyme/3.11.0: + /enzyme@3.11.0: resolution: {integrity: sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==} dependencies: array.prototype.flat: 1.3.1 @@ -11079,26 +15886,24 @@ packages: string.prototype.trim: 1.2.7 dev: false - /errno/0.1.8: + /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true dependencies: prr: 1.0.1 - dev: false - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: false - /error-stack-parser/2.1.4: + /error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 dev: false - /es-abstract/1.21.1: + /es-abstract@1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} dependencies: @@ -11135,13 +15940,57 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.9 - dev: false - /es-array-method-boxes-properly/1.0.0: + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: false - /es-get-iterator/1.1.3: + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 @@ -11155,35 +16004,31 @@ packages: stop-iteration-iterator: 1.0.0 dev: false - /es-module-lexer/0.9.3: + /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: false - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.0 has: 1.0.3 has-tostringtag: 1.0.0 - dev: false - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 - dev: false - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: false - /es5-ext/0.10.62: + /es5-ext@0.10.62: resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} engines: {node: '>=0.10'} requiresBuild: true @@ -11191,168 +16036,148 @@ packages: es6-iterator: 2.0.3 es6-symbol: 3.1.3 next-tick: 1.1.0 - dev: false - /es6-iterator/2.0.3: + /es6-iterator@2.0.3: resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: d: 1.0.1 es5-ext: 0.10.62 es6-symbol: 3.1.3 - dev: false - /es6-object-assign/1.1.0: + /es6-object-assign@1.1.0: resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} dev: false - /es6-promise/4.2.8: + /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} dev: false - /es6-symbol/3.1.3: + /es6-symbol@3.1.3: resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} dependencies: d: 1.0.1 ext: 1.7.0 - dev: false - /esbuild-android-arm64/0.14.7: + /esbuild-android-arm64@0.14.7: resolution: {integrity: sha512-9/Q1NC4JErvsXzJKti0NHt+vzKjZOgPIjX/e6kkuCzgfT/GcO3FVBcGIv4HeJG7oMznE6KyKhvLrFgt7CdU2/w==} cpu: [arm64] os: [android] requiresBuild: true - dev: false optional: true - /esbuild-darwin-64/0.14.7: + /esbuild-darwin-64@0.14.7: resolution: {integrity: sha512-Z9X+3TT/Xj+JiZTVlwHj2P+8GoiSmUnGVz0YZTSt8WTbW3UKw5Pw2ucuJ8VzbD2FPy0jbIKJkko/6CMTQchShQ==} cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true - /esbuild-darwin-arm64/0.14.7: + /esbuild-darwin-arm64@0.14.7: resolution: {integrity: sha512-68e7COhmwIiLXBEyxUxZSSU0akgv8t3e50e2QOtKdBUE0F6KIRISzFntLe2rYlNqSsjGWsIO6CCc9tQxijjSkw==} cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true - /esbuild-freebsd-64/0.14.7: + /esbuild-freebsd-64@0.14.7: resolution: {integrity: sha512-76zy5jAjPiXX/S3UvRgG85Bb0wy0zv/J2lel3KtHi4V7GUTBfhNUPt0E5bpSXJ6yMT7iThhnA5rOn+IJiUcslQ==} cpu: [x64] os: [freebsd] requiresBuild: true - dev: false optional: true - /esbuild-freebsd-arm64/0.14.7: + /esbuild-freebsd-arm64@0.14.7: resolution: {integrity: sha512-lSlYNLiqyzd7qCN5CEOmLxn7MhnGHPcu5KuUYOG1i+t5A6q7LgBmfYC9ZHJBoYyow3u4CNu79AWHbvVLpE/VQQ==} cpu: [arm64] os: [freebsd] requiresBuild: true - dev: false optional: true - /esbuild-linux-32/0.14.7: + /esbuild-linux-32@0.14.7: resolution: {integrity: sha512-Vk28u409wVOXqTaT6ek0TnfQG4Ty1aWWfiysIaIRERkNLhzLhUf4i+qJBN8mMuGTYOkE40F0Wkbp6m+IidOp2A==} cpu: [ia32] os: [linux] requiresBuild: true - dev: false optional: true - /esbuild-linux-64/0.14.7: + /esbuild-linux-64@0.14.7: resolution: {integrity: sha512-+Lvz6x+8OkRk3K2RtZwO+0a92jy9si9cUea5Zoru4yJ/6EQm9ENX5seZE0X9DTwk1dxJbjmLsJsd3IoowyzgVg==} cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true - /esbuild-linux-arm/0.14.7: - resolution: {integrity: sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ==} - cpu: [arm] + /esbuild-linux-arm64@0.14.7: + resolution: {integrity: sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg==} + cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true - /esbuild-linux-arm64/0.14.7: - resolution: {integrity: sha512-kJd5beWSqteSAW086qzCEsH6uwpi7QRIpzYWHzEYwKKu9DiG1TwIBegQJmLpPsLp4v5RAFjea0JAmAtpGtRpqg==} - cpu: [arm64] + /esbuild-linux-arm@0.14.7: + resolution: {integrity: sha512-OzpXEBogbYdcBqE4uKynuSn5YSetCvK03Qv1HcOY1VN6HmReuatjJ21dCH+YPHSpMEF0afVCnNfffvsGEkxGJQ==} + cpu: [arm] os: [linux] requiresBuild: true - dev: false optional: true - /esbuild-linux-mips64le/0.14.7: + /esbuild-linux-mips64le@0.14.7: resolution: {integrity: sha512-mFWpnDhZJmj/h7pxqn1GGDsKwRfqtV7fx6kTF5pr4PfXe8pIaTERpwcKkoCwZUkWAOmUEjMIUAvFM72A6hMZnA==} cpu: [mips64el] os: [linux] requiresBuild: true - dev: false optional: true - /esbuild-linux-ppc64le/0.14.7: + /esbuild-linux-ppc64le@0.14.7: resolution: {integrity: sha512-wM7f4M0bsQXfDL4JbbYD0wsr8cC8KaQ3RPWc/fV27KdErPW7YsqshZZSjDV0kbhzwpNNdhLItfbaRT8OE8OaKA==} cpu: [ppc64] os: [linux] requiresBuild: true - dev: false optional: true - /esbuild-netbsd-64/0.14.7: + /esbuild-netbsd-64@0.14.7: resolution: {integrity: sha512-J/afS7woKyzGgAL5FlgvMyqgt5wQ597lgsT+xc2yJ9/7BIyezeXutXqfh05vszy2k3kSvhLesugsxIA71WsqBw==} cpu: [x64] os: [netbsd] requiresBuild: true - dev: false optional: true - /esbuild-openbsd-64/0.14.7: + /esbuild-openbsd-64@0.14.7: resolution: {integrity: sha512-7CcxgdlCD+zAPyveKoznbgr3i0Wnh0L8BDGRCjE/5UGkm5P/NQko51tuIDaYof8zbmXjjl0OIt9lSo4W7I8mrw==} cpu: [x64] os: [openbsd] requiresBuild: true - dev: false optional: true - /esbuild-sunos-64/0.14.7: + /esbuild-sunos-64@0.14.7: resolution: {integrity: sha512-GKCafP2j/KUljVC3nesw1wLFSZktb2FGCmoT1+730zIF5O6hNroo0bSEofm6ZK5mNPnLiSaiLyRB9YFgtkd5Xg==} cpu: [x64] os: [sunos] requiresBuild: true - dev: false optional: true - /esbuild-windows-32/0.14.7: + /esbuild-windows-32@0.14.7: resolution: {integrity: sha512-5I1GeL/gZoUUdTPA0ws54bpYdtyeA2t6MNISalsHpY269zK8Jia/AXB3ta/KcDHv2SvNwabpImeIPXC/k0YW6A==} cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true - /esbuild-windows-64/0.14.7: + /esbuild-windows-64@0.14.7: resolution: {integrity: sha512-CIGKCFpQOSlYsLMbxt8JjxxvVw9MlF1Rz2ABLVfFyHUF5OeqHD5fPhGrCVNaVrhO8Xrm+yFmtjcZudUGr5/WYQ==} cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true - /esbuild-windows-arm64/0.14.7: + /esbuild-windows-arm64@0.14.7: resolution: {integrity: sha512-eOs1eSivOqN7cFiRIukEruWhaCf75V0N8P0zP7dh44LIhLl8y6/z++vv9qQVbkBm5/D7M7LfCfCTmt1f1wHOCw==} cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true - /esbuild/0.14.7: + /esbuild@0.14.7: resolution: {integrity: sha512-+u/msd6iu+HvfysUPkZ9VHm83LImmSNnecYPfFI01pQ7TTcsFR+V0BkybZX7mPtIaI7LCrse6YRj+v3eraJSgw==} hasBin: true requiresBuild: true @@ -11374,37 +16199,33 @@ packages: esbuild-windows-32: 0.14.7 esbuild-windows-64: 0.14.7 esbuild-windows-arm64: 0.14.7 - dev: false - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: false - /escape-goat/2.1.1: + /escape-goat@2.1.1: resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} engines: {node: '>=8'} dev: false - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: false - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: false - /escodegen/1.14.3: + /escodegen@1.14.3: resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} engines: {node: '>=4.0'} hasBin: true @@ -11416,7 +16237,20 @@ packages: optionalDependencies: source-map: 0.6.1 - /escodegen/2.0.0: + /escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + dev: true + + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -11427,9 +16261,8 @@ packages: optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 - dev: false - /eslint-config-react-app/7.0.1_ljqobdah26xed5awkccjerz33i: + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -11439,21 +16272,56 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.21.0 - '@babel/eslint-parser': 7.19.1_ccoxihxmx25rm5cufeee3dmlne + '@babel/core': 7.21.8 + '@babel/eslint-parser': 7.19.1(@babel/core@7.21.8)(eslint@7.32.0) '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.54.1_2raik7ghbnj434s5izctn4kvma - '@typescript-eslint/parser': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.56.0(eslint@7.32.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 7.32.0 - eslint-plugin-flowtype: 8.0.3_eslint@7.32.0 - eslint-plugin-import: 2.27.5_y5aoosavmctqhzdmcrrejwl76a - eslint-plugin-jest: 25.7.0_4xhz6fmmg7vj4gcvf3wqsa2otq - eslint-plugin-jsx-a11y: 6.7.1_eslint@7.32.0 - eslint-plugin-react: 7.32.2_eslint@7.32.0 - eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 - eslint-plugin-testing-library: 5.10.2_jofidmxrjzhj7l6vknpw5ecvfe + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@7.32.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.56.0)(eslint@7.32.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.56.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@7.32.0) + eslint-plugin-react: 7.32.2(eslint@7.32.0) + eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) + eslint-plugin-testing-library: 5.10.2(eslint@7.32.0)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: false + + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@8.41.0)(jest@27.5.1)(typescript@4.9.5): + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.21.8 + '@babel/eslint-parser': 7.19.1(@babel/core@7.21.8)(eslint@8.41.0) + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.41.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.41.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@8.41.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.56.0)(eslint@8.41.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.41.0)(jest@27.5.1)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.41.0) + eslint-plugin-react: 7.32.2(eslint@8.41.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.41.0) + eslint-plugin-testing-library: 5.10.2(eslint@8.41.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -11464,17 +16332,17 @@ packages: - supports-color dev: false - /eslint-import-resolver-node/0.3.7: + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: - debug: 3.2.7 + debug: 3.2.7(supports-color@6.1.0) is-core-module: 2.11.0 resolve: 1.22.1 transitivePeerDependencies: - supports-color dev: false - /eslint-module-utils/2.7.4_puxlj7cq3c4pn5cudxrjaowfee: + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-node@0.3.7)(eslint@7.32.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -11495,15 +16363,44 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe - debug: 3.2.7 + '@typescript-eslint/parser': 5.56.0(eslint@7.32.0)(typescript@4.9.5) + debug: 3.2.7(supports-color@6.1.0) eslint: 7.32.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color dev: false - /eslint-plugin-flowtype/8.0.3_eslint@7.32.0: + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-node@0.3.7)(eslint@8.41.0): + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + debug: 3.2.7(supports-color@6.1.0) + eslint: 8.41.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@7.32.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -11511,12 +16408,29 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: + '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.21.8) + '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.21.8) eslint: 7.32.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: false - /eslint-plugin-import/2.27.5_y5aoosavmctqhzdmcrrejwl76a: + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@8.41.0): + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + dependencies: + '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx': 7.21.5(@babel/core@7.21.0) + eslint: 8.41.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: false + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.56.0)(eslint@7.32.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -11526,15 +16440,48 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/parser': 5.56.0(eslint@7.32.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 - debug: 3.2.7 + debug: 3.2.7(supports-color@6.1.0) doctrine: 2.1.0 eslint: 7.32.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_puxlj7cq3c4pn5cudxrjaowfee + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-node@0.3.7)(eslint@7.32.0) + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.56.0)(eslint@8.41.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7(supports-color@6.1.0) + doctrine: 2.1.0 + eslint: 8.41.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.56.0)(eslint-import-resolver-node@0.3.7)(eslint@8.41.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -11549,7 +16496,7 @@ packages: - supports-color dev: false - /eslint-plugin-jest/25.7.0_4xhz6fmmg7vj4gcvf3wqsa2otq: + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.56.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11562,22 +16509,69 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.54.1_2raik7ghbnj434s5izctn4kvma - '@typescript-eslint/experimental-utils': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.54.1(eslint@7.32.0)(typescript@4.9.5) eslint: 7.32.0 - jest: 27.5.1 + jest: 27.5.1(ts-node@10.9.1) + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.56.0)(eslint@8.41.0)(jest@27.5.1)(typescript@4.9.5): + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.56.0(@typescript-eslint/parser@5.56.0)(eslint@8.41.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.54.1(eslint@8.41.0)(typescript@4.9.5) + eslint: 8.41.0 + jest: 27.5.1(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: false - /eslint-plugin-jsx-a11y/6.7.1_eslint@7.32.0: + /eslint-plugin-jsx-a11y@6.7.1(eslint@7.32.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.3 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 7.32.0 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: false + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.41.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.21.5 aria-query: 5.1.3 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 @@ -11586,7 +16580,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 7.32.0 + eslint: 8.41.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -11596,7 +16590,7 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: + /eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: @@ -11605,7 +16599,16 @@ packages: eslint: 7.32.0 dev: false - /eslint-plugin-react/7.32.2_eslint@7.32.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.41.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.41.0 + dev: false + + /eslint-plugin-react@7.32.2(eslint@7.32.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -11629,43 +16632,97 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-plugin-testing-library/5.10.2_jofidmxrjzhj7l6vknpw5ecvfe: + /eslint-plugin-react@7.32.2(eslint@8.41.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.41.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-plugin-testing-library@5.10.2(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.54.1_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/utils': 5.56.0(eslint@7.32.0)(typescript@4.9.5) eslint: 7.32.0 transitivePeerDependencies: - supports-color - typescript dev: false - /eslint-scope/4.0.3: + /eslint-plugin-testing-library@5.10.2(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.56.0(eslint@8.41.0)(typescript@4.9.5) + eslint: 8.41.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /eslint-plugin-vue@5.0.0(eslint@7.32.0): + resolution: {integrity: sha512-mSv2Ebz3RaPP+XJO/mu7F+SdR9lrMyGISSExnarLFqqf3pF5wTmwWNrhHW1o9zKzKI811UVTIIkWJJvgO6SsUQ==} + engines: {node: '>=6.5'} + peerDependencies: + eslint: ^5.0.0 + dependencies: + eslint: 7.32.0 + vue-eslint-parser: 4.0.3(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope@4.0.3: resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} engines: {node: '>=4.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: false - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 dev: false - /eslint-utils/2.1.0: + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 - dev: false - /eslint-utils/3.0.0_eslint@7.32.0: + /eslint-utils@3.0.0(eslint@7.32.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -11673,23 +16730,31 @@ packages: dependencies: eslint: 7.32.0 eslint-visitor-keys: 2.1.0 + + /eslint-utils@3.0.0(eslint@8.41.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 2.1.0 dev: false - /eslint-visitor-keys/1.3.0: + /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} - /eslint-visitor-keys/2.1.0: + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} - dev: false - /eslint-visitor-keys/3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint-webpack-plugin/3.2.0_u2ubl3shblmc7225ne6wflnyua: + /eslint-webpack-plugin@3.2.0(eslint@7.32.0)(webpack@5.76.0): resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -11702,10 +16767,26 @@ packages: micromatch: 4.0.5 normalize-path: 3.0.0 schema-utils: 4.0.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + dev: false + + /eslint-webpack-plugin@3.2.0(eslint@8.41.0)(webpack@5.76.0): + resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^5.0.0 + dependencies: + '@types/eslint': 8.21.1 + eslint: 8.41.0 + jest-worker: 28.1.3 + micromatch: 4.0.5 + normalize-path: 3.0.0 + schema-utils: 4.0.0 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /eslint/7.32.0: + /eslint@7.32.0: resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} engines: {node: ^10.12.0 || >=12.0.0} hasBin: true @@ -11716,7 +16797,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) doctrine: 3.0.0 enquirer: 2.3.6 escape-string-regexp: 4.0.0 @@ -11744,7 +16825,7 @@ packages: optionator: 0.9.1 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.3.8 + semver: 7.5.2 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 table: 6.8.1 @@ -11752,108 +16833,353 @@ packages: v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color + + /eslint@8.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.41.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@6.1.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + graphemer: 1.4.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color dev: false - /espree/7.3.1: + /espree@4.1.0: + resolution: {integrity: sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==} + engines: {node: '>=6.0.0'} + dependencies: + acorn: 6.4.2 + acorn-jsx: 5.3.2(acorn@6.4.2) + eslint-visitor-keys: 1.3.0 + dev: true + + /espree@7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: acorn: 7.4.1 - acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) eslint-visitor-keys: 1.3.0 - /esprima/4.0.1: + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.1 + dev: false + + /esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - /esquery/1.5.0: + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: false - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: false - /estraverse/4.3.0: + /estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + dev: true + + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - /estree-walker/0.5.2: + /estree-walker@0.5.2: resolution: {integrity: sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==} - dev: false - /estree-walker/0.6.1: + /estree-walker@0.6.1: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - dev: false - /estree-walker/1.0.1: + /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: false - /esutils/2.0.3: + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /eta/2.0.1: + /eta@2.0.1: resolution: {integrity: sha512-46E2qDPDm7QA+usjffUWz9KfXsxVZclPOuKsXs4ZWZdI/X1wpDF7AO424pt7fdYohCzWsIkXAhNGXSlwo5naAg==} engines: {node: '>=6.0.0'} dev: false - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: false - /eval/0.1.8: + /eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} + peerDependencies: + '@codechecks/client': ^0.1.0 + peerDependenciesMeta: + '@codechecks/client': + optional: true + dependencies: + '@solidity-parser/parser': 0.14.5 + axios: 1.6.5(debug@4.3.4) + cli-table3: 0.5.1 + colors: 1.4.0 + ethereum-cryptography: 1.2.0 + ethers: 5.7.2 + fs-readdir-recursive: 1.1.0 + lodash: 4.17.21 + markdown-table: 1.1.3 + mocha: 10.2.0 + req-cwd: 2.0.0 + sha1: 1.1.1 + sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: true + + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + dev: true + + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 + dev: true + + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + dev: true + + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + dev: true + + /ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + dev: true + + /ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.4 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + dev: true + + /ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/bn.js': 5.1.1 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + dev: true + + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /ethers@6.10.0: + resolution: {integrity: sha512-nMNwYHzs6V1FR3Y4cdfxSQmNgZsRj1RiTU25JwvnJLmyzw9z3SKxNc2XKDuiXXo/v9ds5Mp9m6HBabgYQQ26tA==} + engines: {node: '>=14.0.0'} + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: true + + /ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + dev: true + bundledDependencies: false + + /eval@0.1.8: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 require-like: 0.1.2 dev: false - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false - /events/1.1.1: + /events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} engines: {node: '>=0.4.x'} dev: false - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: false - /eventsource/2.0.2: + /eventsource@2.0.2: resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} engines: {node: '>=12.0.0'} dev: false - /evp_bytestokey/1.0.3: + /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - dev: false - /exec-sh/0.3.6: + /exec-sh@0.3.6: resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} - dev: false - /execa/0.7.0: + /execa@0.7.0: resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} engines: {node: '>=4'} dependencies: @@ -11864,9 +17190,8 @@ packages: p-finally: 1.0.0 signal-exit: 3.0.7 strip-eof: 1.0.0 - dev: false - /execa/1.0.0: + /execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} dependencies: @@ -11877,9 +17202,8 @@ packages: p-finally: 1.0.0 signal-exit: 3.0.7 strip-eof: 1.0.0 - dev: false - /execa/4.1.0: + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} dependencies: @@ -11892,9 +17216,8 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: false - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -11909,63 +17232,45 @@ packages: strip-final-newline: 2.0.0 dev: false - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - dev: false - /expand-brackets/0.1.5: + /expand-brackets@0.1.5: resolution: {integrity: sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==} engines: {node: '>=0.10.0'} dependencies: is-posix-bracket: 0.1.1 dev: false - /expand-brackets/2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /expand-brackets/2.1.4_supports-color@6.1.0: + /expand-brackets@2.1.4(supports-color@6.1.0): resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} dependencies: - debug: 2.6.9_supports-color@6.1.0 + debug: 2.6.9(supports-color@6.1.0) define-property: 0.2.5 extend-shallow: 2.0.1 posix-character-classes: 0.1.1 regex-not: 1.0.2 - snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon: 0.8.2(supports-color@6.1.0) to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /expand-range/1.8.2: + /expand-range@1.8.2: resolution: {integrity: sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==} engines: {node: '>=0.10.0'} dependencies: fill-range: 2.2.4 dev: false - /expand-tilde/2.0.2: + /expand-tilde@2.0.2: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} dependencies: homedir-polyfill: 1.0.3 - dev: false - /expect/26.6.2: + /expect@26.6.2: resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} engines: {node: '>= 10.14.2'} dependencies: @@ -11975,9 +17280,8 @@ packages: jest-matcher-utils: 26.6.2 jest-message-util: 26.6.2 jest-regex-util: 26.0.0 - dev: false - /expect/27.5.1: + /expect@27.5.1: resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -11987,7 +17291,7 @@ packages: jest-message-util: 27.5.1 dev: false - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -11995,65 +17299,26 @@ packages: jest-get-type: 29.4.3 jest-matcher-utils: 29.5.0 jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: false - - /express/4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color + jest-util: 29.5.0 dev: false - /express/4.18.2_supports-color@6.1.0: + /express@4.18.2(supports-color@6.1.0): resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1_supports-color@6.1.0 + body-parser: 1.20.1(supports-color@6.1.0) content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.5.0 cookie-signature: 1.0.6 - debug: 2.6.9_supports-color@6.1.0 + debug: 2.6.9(supports-color@6.1.0) depd: 2.0.0 encodeurl: 1.0.2 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0_supports-color@6.1.0 + finalhandler: 1.2.0(supports-color@6.1.0) fresh: 0.5.2 http-errors: 2.0.0 merge-descriptors: 1.0.1 @@ -12065,8 +17330,8 @@ packages: qs: 6.11.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0_supports-color@6.1.0 - serve-static: 1.15.0_supports-color@6.1.0 + send: 0.18.0(supports-color@6.1.0) + serve-static: 1.15.0(supports-color@6.1.0) setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -12076,32 +17341,29 @@ packages: - supports-color dev: false - /ext/1.7.0: + /ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: type: 2.7.2 - dev: false - /extend-shallow/2.0.1: + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 - dev: false - /extend-shallow/3.0.2: + /extend-shallow@3.0.2: resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} engines: {node: '>=0.10.0'} dependencies: assign-symbols: 1.0.0 is-extendable: 1.0.1 - dev: false - /extend/3.0.2: + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -12110,55 +17372,50 @@ packages: tmp: 0.0.33 dev: false - /extglob/0.3.2: + /extglob@0.3.2: resolution: {integrity: sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 1.0.0 dev: false - /extglob/2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /extglob/2.0.4_supports-color@6.1.0: + /extglob@2.0.4(supports-color@6.1.0): resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} engines: {node: '>=0.10.0'} dependencies: array-unique: 0.3.2 define-property: 1.0.0 - expand-brackets: 2.1.4_supports-color@6.1.0 + expand-brackets: 2.1.4(supports-color@6.1.0) extend-shallow: 2.0.1 fragment-cache: 0.2.1 regex-not: 1.0.2 - snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon: 0.8.2(supports-color@6.1.0) to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /extsprintf/1.3.0: + /extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} dev: false - /fast-deep-equal/3.1.3: + /fancy-log@1.3.2: + resolution: {integrity: sha512-7E6IFy84FpO6jcnzEsCcoxDleHpMTFzncmCXXBIVYq1/Oakqnbc/lTKPJyyW6edGeC/rnZmV78hJe7SuoZo0aQ==} + engines: {node: '>= 0.10'} + dependencies: + ansi-gray: 0.1.1 + color-support: 1.1.3 + time-stamp: 1.1.0 + dev: true + + /fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + dev: true + + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - /fast-glob/2.2.7: + /fast-glob@2.2.7: resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} engines: {node: '>=4.0.0'} dependencies: @@ -12167,12 +17424,12 @@ packages: glob-parent: 3.1.0 is-glob: 4.0.3 merge2: 1.4.1 - micromatch: 3.1.10 + micromatch: 3.1.10(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: false - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -12181,41 +17438,37 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: false - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: false - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-url-parser/1.1.3: + /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: punycode: 1.4.1 dev: false - /fastq/1.15.0: + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: false - /faye-websocket/0.11.4: + /faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} dependencies: websocket-driver: 0.7.4 dev: false - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 - dev: false - /fbemitter/3.0.0: + /fbemitter@3.0.0: resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} dependencies: fbjs: 3.0.4 @@ -12223,11 +17476,11 @@ packages: - encoding dev: false - /fbjs-css-vars/1.0.2: + /fbjs-css-vars@1.0.2: resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} dev: false - /fbjs/3.0.4: + /fbjs@3.0.4: resolution: {integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==} dependencies: cross-fetch: 3.1.5 @@ -12241,14 +17494,14 @@ packages: - encoding dev: false - /feed/4.2.2: + /feed@4.2.2: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} dependencies: xml-js: 1.6.11 dev: false - /fetch-blob/3.2.0: + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} dependencies: @@ -12256,25 +17509,24 @@ packages: web-streams-polyfill: 3.2.1 dev: false - /figgy-pudding/3.5.2: + /figgy-pudding@3.5.2: resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} dev: false - /figures/3.2.0: + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: false - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: false - /file-loader/3.0.1_webpack@4.46.0: + /file-loader@3.0.1(webpack@4.46.0): resolution: {integrity: sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -12282,10 +17534,10 @@ packages: dependencies: loader-utils: 1.4.2 schema-utils: 1.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) dev: false - /file-loader/6.2.0_webpack@5.75.0: + /file-loader@6.2.0(webpack@5.76.0): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -12293,42 +17545,42 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.1.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /file-selector/0.6.0: + /file-selector@0.6.0: resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} engines: {node: '>= 12'} dependencies: tslib: 2.5.0 dev: false - /file-uri-to-path/1.0.0: + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false - /filelist/1.0.4: + /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 dev: false - /filename-regex/2.0.1: + /filename-regex@2.0.1: resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} engines: {node: '>=0.10.0'} dev: false - /filesize/6.1.0: + /filesize@6.1.0: resolution: {integrity: sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==} engines: {node: '>= 0.4.0'} dev: false - /filesize/8.0.7: + /filesize@8.0.7: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} dev: false - /fill-range/2.2.4: + /fill-range@2.2.4: resolution: {integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==} engines: {node: '>=0.10.0'} dependencies: @@ -12339,7 +17591,7 @@ packages: repeat-string: 1.6.1 dev: false - /fill-range/4.0.0: + /fill-range@4.0.0: resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} engines: {node: '>=0.10.0'} dependencies: @@ -12347,20 +17599,18 @@ packages: is-number: 3.0.0 repeat-string: 1.6.1 to-regex-range: 2.1.1 - dev: false - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: false - /finalhandler/1.2.0: + /finalhandler@1.2.0(supports-color@6.1.0): resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@6.1.0) encodeurl: 1.0.2 escape-html: 1.0.3 on-finished: 2.4.1 @@ -12371,22 +17621,7 @@ packages: - supports-color dev: false - /finalhandler/1.2.0_supports-color@6.1.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9_supports-color@6.1.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /find-cache-dir/2.1.0: + /find-cache-dir@2.1.0: resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} engines: {node: '>=6'} dependencies: @@ -12395,69 +17630,70 @@ packages: pkg-dir: 3.0.0 dev: false - /find-cache-dir/3.3.2: + /find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - dev: false - /find-node-modules/2.1.3: + /find-node-modules@2.1.3: resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} dependencies: findup-sync: 4.0.0 merge: 2.1.1 dev: false - /find-root/1.1.0: + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false - /find-up/2.1.0: + /find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} dependencies: locate-path: 2.0.0 - dev: false - /find-up/3.0.0: + /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} dependencies: locate-path: 3.0.0 - dev: false - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: false - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: false - /findup-sync/3.0.0_supports-color@6.1.0: + /findup-sync@3.0.0(supports-color@6.1.0): resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} engines: {node: '>= 0.10'} dependencies: detect-file: 1.0.0 is-glob: 4.0.3 - micromatch: 3.1.10_supports-color@6.1.0 + micromatch: 3.1.10(supports-color@6.1.0) resolve-dir: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /findup-sync/4.0.0: + /findup-sync@4.0.0: resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} engines: {node: '>= 8'} dependencies: @@ -12467,26 +17703,29 @@ packages: resolve-dir: 1.0.1 dev: false - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: false - /flatted/3.2.7: + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: false - /flush-write-stream/1.1.1: + /flush-write-stream@1.1.1: resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} dependencies: inherits: 2.0.4 readable-stream: 2.3.8 dev: false - /flux/4.0.3_react@18.2.0: + /flux@4.0.3(react@18.2.0): resolution: {integrity: sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==} peerDependencies: react: ^15.0.2 || ^16.0.0 || ^17.0.0 @@ -12498,7 +17737,7 @@ packages: - encoding dev: false - /follow-redirects/1.15.2: + /follow-redirects@1.15.2(debug@4.3.4): resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -12506,10 +17745,11 @@ packages: peerDependenciesMeta: debug: optional: true - dev: false + dependencies: + debug: 4.3.4(supports-color@6.1.0) - /follow-redirects/1.15.2_debug@4.3.4: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.5(debug@4.3.4): + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -12517,36 +17757,33 @@ packages: debug: optional: true dependencies: - debug: 4.3.4_supports-color@6.1.0 - dev: false + debug: 4.3.4(supports-color@6.1.0) + dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: false - /for-in/1.0.2: + /for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} - dev: false - /for-own/0.1.5: + /for-own@0.1.5: resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} engines: {node: '>=0.10.0'} dependencies: for-in: 1.0.2 dev: false - /foreach/2.0.6: + /foreach@2.0.6: resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - dev: false - /forever-agent/0.6.1: + /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: false - /fork-ts-checker-webpack-plugin/4.1.6_e7unsjmvxtn2mdejqwafrsmwjq: + /fork-ts-checker-webpack-plugin@4.1.6(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0): resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} peerDependencies: @@ -12560,21 +17797,21 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.10.4 + '@babel/code-frame': 7.21.4 chalk: 2.4.2 eslint: 7.32.0 - micromatch: 3.1.10 + micromatch: 3.1.10(supports-color@6.1.0) minimatch: 3.1.2 semver: 5.7.1 tapable: 1.1.3 typescript: 4.9.5 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) worker-rpc: 0.1.1 transitivePeerDependencies: - supports-color dev: false - /fork-ts-checker-webpack-plugin/6.5.3_e7unsjmvxtn2mdejqwafrsmwjq: + /fork-ts-checker-webpack-plugin@6.5.3(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12588,7 +17825,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@types/json-schema': 7.0.11 chalk: 4.1.2 chokidar: 3.5.3 @@ -12600,84 +17837,125 @@ packages: memfs: 3.4.13 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.3.8 + semver: 7.5.2 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + dev: false + + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.41.0)(typescript@4.9.5)(webpack@5.76.0): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.21.4 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.0 + eslint: 8.41.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.13 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.2 tapable: 1.1.3 typescript: 4.9.5 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /form-data/2.3.3: + /form-data@2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /form-data/3.0.1: + /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /formdata-polyfill/4.0.10: + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 dev: false - /forwarded/0.2.0: + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: false - /fraction.js/4.2.0: + /fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + dev: true + + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /fragment-cache/0.2.1: + /fragment-cache@0.2.1: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} dependencies: map-cache: 0.2.2 - dev: false - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: false - /from2/2.3.0: + /from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: inherits: 2.0.4 readable-stream: 2.3.8 dev: false - /fs-extra/10.1.0: + /fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 2.4.0 + klaw: 1.3.1 + path-is-absolute: 1.0.1 + rimraf: 2.7.1 + dev: true + + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: false - /fs-extra/7.0.0: + /fs-extra@7.0.0: resolution: {integrity: sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -12686,16 +17964,24 @@ packages: universalify: 0.1.2 dev: false - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.10 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs-extra/9.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} dependencies: @@ -12703,13 +17989,16 @@ packages: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: false - /fs-monkey/1.0.3: + /fs-monkey@1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} dev: false - /fs-write-stream-atomic/1.0.10: + /fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: true + + /fs-write-stream-atomic@1.0.10: resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} dependencies: graceful-fs: 4.2.10 @@ -12718,14 +18007,14 @@ packages: readable-stream: 2.3.8 dev: false - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/1.2.13: + /fsevents@1.2.13: resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} engines: {node: '>= 4.0'} os: [darwin] - deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. + deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 requiresBuild: true dependencies: bindings: 1.5.0 @@ -12733,7 +18022,7 @@ packages: dev: false optional: true - /fsevents/2.1.3: + /fsevents@2.1.3: resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -12742,19 +18031,21 @@ packages: dev: false optional: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: false optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: false - /function.prototype.name/1.1.5: + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -12762,91 +18053,121 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.1 functions-have-names: 1.2.3 - dev: false - /functional-red-black-tree/1.0.1: + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree@1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: false - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false - /gensync/1.0.0-beta.2: + /fwd-stream@1.0.4: + resolution: {integrity: sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==} + dependencies: + readable-stream: 1.0.34 + dev: true + + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: false - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: false - /get-intrinsic/1.2.0: + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 - dev: false - /get-own-enumerable-property-symbols/3.0.2: + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} dev: false - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - dev: false - /get-stream/3.0.0: + /get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + dev: true + + /get-stream@3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} - dev: false - /get-stream/4.1.0: + /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} dependencies: pump: 3.0.0 - dev: false - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 - dev: false - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: false - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 - dev: false - /get-value/2.0.6: + /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} - dev: false - /getpass/0.1.7: + /getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 dev: false - /github-slugger/1.5.0: + /ghost-testrpc@0.0.2: + resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} + hasBin: true + dependencies: + chalk: 2.4.2 + node-emoji: 1.11.0 + dev: true + + /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false - /glob-base/0.3.0: + /glob-base@0.3.0: resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} engines: {node: '>=0.10.0'} dependencies: @@ -12854,42 +18175,72 @@ packages: is-glob: 2.0.1 dev: false - /glob-parent/2.0.0: + /glob-parent@2.0.0: resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} dependencies: is-glob: 2.0.1 dev: false - /glob-parent/3.1.0: + /glob-parent@3.1.0: resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} dependencies: is-glob: 3.1.0 path-dirname: 1.0.2 dev: false - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: false - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: false - /glob-to-regexp/0.3.0: + /glob-to-regexp@0.3.0: resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} dev: false - /glob-to-regexp/0.4.1: + /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false - /glob/7.2.3: + /glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -12899,44 +18250,52 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-dirs/0.1.1: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 - dev: false - /global-dirs/2.1.0: + /global-dirs@2.1.0: resolution: {integrity: sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==} engines: {node: '>=8'} dependencies: ini: 1.3.7 dev: false - /global-dirs/3.0.1: + /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} dependencies: ini: 2.0.0 dev: false - /global-modules/1.0.0: + /global-modules@1.0.0: resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} engines: {node: '>=0.10.0'} dependencies: global-prefix: 1.0.2 is-windows: 1.0.2 resolve-dir: 1.0.1 - dev: false - /global-modules/2.0.0: + /global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} engines: {node: '>=6'} dependencies: global-prefix: 3.0.0 - dev: false - /global-prefix/1.0.2: + /global-prefix@1.0.2: resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} engines: {node: '>=0.10.0'} dependencies: @@ -12945,44 +18304,53 @@ packages: ini: 1.3.8 is-windows: 1.0.2 which: 1.3.1 - dev: false - /global-prefix/3.0.0: + /global-prefix@3.0.0: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} dependencies: ini: 1.3.8 kind-of: 6.0.3 which: 1.3.1 - dev: false - /global/4.4.0: + /global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} dependencies: min-document: 2.19.0 process: 0.11.10 dev: false - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - dev: false - /globals/13.20.0: + /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: false - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 - dev: false - /globby/11.0.1: + /globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@11.0.1: resolution: {integrity: sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==} engines: {node: '>=10'} dependencies: @@ -12994,7 +18362,7 @@ packages: slash: 3.0.0 dev: false - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -13004,9 +18372,8 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: false - /globby/13.1.3: + /globby@13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -13017,7 +18384,7 @@ packages: slash: 4.0.0 dev: false - /globby/6.1.0: + /globby@6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} engines: {node: '>=0.10.0'} dependencies: @@ -13028,7 +18395,7 @@ packages: pinkie-promise: 2.0.1 dev: false - /globby/7.1.1: + /globby@7.1.1: resolution: {integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==} engines: {node: '>=4'} dependencies: @@ -13040,7 +18407,7 @@ packages: slash: 1.0.0 dev: false - /globby/9.2.0: + /globby@9.2.0: resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} engines: {node: '>=6'} dependencies: @@ -13056,13 +18423,12 @@ packages: - supports-color dev: false - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.0 - dev: false - /got/6.7.1: + /got@6.7.1: resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} engines: {node: '>=4'} dependencies: @@ -13079,9 +18445,8 @@ packages: timed-out: 4.0.1 unzip-response: 2.0.1 url-parse-lax: 1.0.0 - dev: false - /got/9.6.0: + /got@9.6.0: resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} engines: {node: '>=8.6'} dependencies: @@ -13100,29 +18465,33 @@ packages: url-parse-lax: 3.0.0 dev: false - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: false - /graphql-tag/2.12.6_graphql@16.6.0: + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: false + + /graphql-tag@2.12.6(graphql@16.6.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /graphql/16.6.0: + /graphql@16.6.0: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: false - /gray-matter/4.0.3: + /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} dependencies: @@ -13132,16 +18501,16 @@ packages: strip-bom-string: 1.0.0 dev: false - /growly/1.3.0: + /growly@1.3.0: resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} - dev: false + requiresBuild: true optional: true - /gud/1.0.0: + /gud@1.0.0: resolution: {integrity: sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==} dev: false - /gzip-size/5.1.1: + /gzip-size@5.1.1: resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} engines: {node: '>=6'} dependencies: @@ -13149,139 +18518,241 @@ packages: pify: 4.0.1 dev: false - /gzip-size/6.0.0: + /gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} dependencies: duplexer: 0.1.2 dev: false - /handle-thing/2.0.1: + /handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: false - /har-schema/2.0.0: + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} dev: false - /har-validator/5.1.5: + /har-validator@5.1.5: resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} engines: {node: '>=6'} deprecated: this library is no longer supported dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - dev: false + ajv: 6.12.6 + har-schema: 2.0.0 + dev: false + + /hardhat-gas-reporter@1.0.9(hardhat@2.19.4): + resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} + peerDependencies: + hardhat: ^2.0.2 + dependencies: + array-uniq: 1.0.3 + eth-gas-reporter: 0.2.27 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + sha1: 1.1.1 + transitivePeerDependencies: + - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate + dev: true + + /hardhat@2.19.4(ts-node@10.9.1)(typescript@5.3.3): + resolution: {integrity: sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@nomicfoundation/ethereumjs-vm': 7.0.2 + '@nomicfoundation/solidity-analyzer': 0.1.1 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.1 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + chalk: 2.4.2 + chokidar: 3.5.3 + ci-info: 2.0.0 + debug: 4.3.4(supports-color@6.1.0) + enquirer: 2.3.6 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.4 + io-ts: 1.10.4 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.2.0 + p-map: 4.0.0 + raw-body: 2.5.1 + resolve: 1.17.0 + semver: 6.3.0 + solc: 0.7.3(debug@4.3.4) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + ts-node: 10.9.1(@types/node@20.9.0)(typescript@5.3.3) + tsort: 0.0.1 + typescript: 5.3.3 + undici: 5.28.2 + uuid: 8.3.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true - /harmony-reflect/1.6.2: + /harmony-reflect@1.6.2: resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} dev: false - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: false - /has-flag/3.0.0: + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: false - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.0 - dev: false - /has-proto/1.0.1: + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - dev: false - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: false - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: false - /has-value/0.3.1: + /has-value@0.3.1: resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} engines: {node: '>=0.10.0'} dependencies: get-value: 2.0.6 has-values: 0.1.4 isobject: 2.1.0 - dev: false - /has-value/1.0.0: + /has-value@1.0.0: resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} engines: {node: '>=0.10.0'} dependencies: get-value: 2.0.6 has-values: 1.0.0 isobject: 3.0.1 - dev: false - /has-values/0.1.4: + /has-values@0.1.4: resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} engines: {node: '>=0.10.0'} - dev: false - /has-values/1.0.0: + /has-values@1.0.0: resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} engines: {node: '>=0.10.0'} dependencies: is-number: 3.0.0 kind-of: 4.0.0 - dev: false - /has-yarn/2.1.0: + /has-yarn@2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} dev: false - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: false - /hash-base/3.1.0: + /hash-base@3.1.0: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} dependencies: inherits: 2.0.4 readable-stream: 3.6.1 safe-buffer: 5.2.1 - dev: false - /hash-sum/1.0.2: + /hash-sum@1.0.2: resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} dev: false - /hash-sum/2.0.0: + /hash-sum@2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} dev: false - /hash.js/1.1.7: + /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false - /hast-to-hyperscript/9.0.1: + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /hast-to-hyperscript@9.0.1: resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} dependencies: '@types/unist': 2.0.6 @@ -13293,7 +18764,7 @@ packages: web-namespaces: 1.1.4 dev: false - /hast-util-from-parse5/6.0.1: + /hast-util-from-parse5@6.0.1: resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} dependencies: '@types/parse5': 5.0.3 @@ -13304,11 +18775,11 @@ packages: web-namespaces: 1.1.4 dev: false - /hast-util-parse-selector/2.2.5: + /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: false - /hast-util-raw/6.0.1: + /hast-util-raw@6.0.1: resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} dependencies: '@types/hast': 2.3.4 @@ -13323,7 +18794,7 @@ packages: zwitch: 1.0.5 dev: false - /hast-util-to-parse5/6.0.0: + /hast-util-to-parse5@6.0.0: resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} dependencies: hast-to-hyperscript: 9.0.1 @@ -13333,7 +18804,7 @@ packages: zwitch: 1.0.5 dev: false - /hastscript/6.0.0: + /hastscript@6.0.0: resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} dependencies: '@types/hast': 2.3.4 @@ -13343,7 +18814,7 @@ packages: space-separated-tokens: 1.1.5 dev: false - /hdkey/1.1.2: + /hdkey@1.1.2: resolution: {integrity: sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ==} dependencies: bs58check: 2.1.2 @@ -13351,25 +18822,28 @@ packages: secp256k1: 3.8.0 dev: false - /he/1.2.0: + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - dev: false - /hex-color-regex/1.1.0: + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: true + + /hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} dev: false - /highlight.js/9.18.5: + /highlight.js@9.18.5: resolution: {integrity: sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==} deprecated: Support has ended for 9.x series. Upgrade to @latest requiresBuild: true dev: false - /history/4.10.1: + /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.1 @@ -13377,15 +18851,14 @@ packages: value-equal: 1.0.1 dev: false - /hmac-drbg/1.0.1: + /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - /hogan.js/3.0.2: + /hogan.js@3.0.2: resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} hasBin: true dependencies: @@ -13393,29 +18866,27 @@ packages: nopt: 1.0.10 dev: false - /hoist-non-react-statics/3.3.2: + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 dev: false - /homedir-polyfill/1.0.3: + /homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} dependencies: parse-passwd: 1.0.0 - dev: false - /hoopy/0.1.4: + /hoopy@0.1.4: resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} engines: {node: '>= 6.0.0'} dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false - /hpack.js/2.1.6: + /hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: inherits: 2.0.4 @@ -13424,48 +18895,46 @@ packages: wbuf: 1.7.3 dev: false - /hsl-regex/1.0.0: + /hsl-regex@1.0.0: resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} dev: false - /hsla-regex/1.0.0: + /hsla-regex@1.0.0: resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} dev: false - /html-element-map/1.3.1: + /html-element-map@1.3.1: resolution: {integrity: sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==} dependencies: array.prototype.filter: 1.0.2 call-bind: 1.0.2 dev: false - /html-encoding-sniffer/2.0.1: + /html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} dependencies: whatwg-encoding: 1.0.5 - dev: false - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: false - /html-entities/1.4.0: + /html-entities@1.4.0: resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} dev: false - /html-entities/2.3.3: + /html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} dev: false - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: false - /html-minifier-terser/6.1.0: + /html-minifier-terser@6.1.0: resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} engines: {node: '>=12'} hasBin: true @@ -13479,7 +18948,7 @@ packages: terser: 5.14.2 dev: false - /html-minifier/3.5.21: + /html-minifier@3.5.21: resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==} engines: {node: '>=4'} hasBin: true @@ -13493,21 +18962,21 @@ packages: uglify-js: 3.4.10 dev: false - /html-tags/2.0.0: + /html-tags@2.0.0: resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} engines: {node: '>=4'} dev: false - /html-tags/3.2.0: + /html-tags@3.2.0: resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} engines: {node: '>=8'} dev: false - /html-void-elements/1.0.5: + /html-void-elements@1.0.5: resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} dev: false - /html-webpack-plugin/5.5.0_webpack@5.75.0: + /html-webpack-plugin@5.5.0(webpack@5.76.0): resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} engines: {node: '>=10.13.0'} peerDependencies: @@ -13518,10 +18987,10 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /htmlparser2/6.1.0: + /htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} dependencies: domelementtype: 2.3.0 @@ -13530,7 +18999,7 @@ packages: entities: 2.2.0 dev: false - /htmlparser2/8.0.1: + /htmlparser2@8.0.1: resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} dependencies: domelementtype: 2.3.0 @@ -13539,15 +19008,25 @@ packages: entities: 4.4.0 dev: false - /http-cache-semantics/4.1.1: + /http-basic@8.1.3: + resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} + engines: {node: '>=6.0.0'} + dependencies: + caseless: 0.12.0 + concat-stream: 1.6.2 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + dev: true + + /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: false - /http-deceiver/1.2.7: + /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: false - /http-errors/1.6.3: + /http-errors@1.6.3: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} dependencies: @@ -13557,7 +19036,7 @@ packages: statuses: 1.5.0 dev: false - /http-errors/2.0.0: + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -13566,53 +19045,51 @@ packages: setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: false - /http-parser-js/0.5.8: + /http-parser-js@0.5.8: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: false - /http-proxy-agent/4.0.1: + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color - dev: false - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: false - /http-proxy-middleware/0.19.1_tmpgdztspuwvsxzgjkhoqk7duq: + /http-proxy-middleware@0.19.1(debug@4.3.4)(supports-color@6.1.0): resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} engines: {node: '>=4.0.0'} dependencies: - http-proxy: 1.18.1_debug@4.3.4 + http-proxy: 1.18.1(debug@4.3.4) is-glob: 4.0.3 lodash: 4.17.21 - micromatch: 3.1.10_supports-color@6.1.0 + micromatch: 3.1.10(supports-color@6.1.0) transitivePeerDependencies: - debug - supports-color dev: false - /http-proxy-middleware/1.3.1: + /http-proxy-middleware@1.3.1: resolution: {integrity: sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==} engines: {node: '>=8.0.0'} dependencies: '@types/http-proxy': 1.17.10 - http-proxy: 1.18.1 + http-proxy: 1.18.1(debug@4.3.4) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.5 @@ -13620,7 +19097,7 @@ packages: - debug dev: false - /http-proxy-middleware/2.0.6_@types+express@4.17.17: + /http-proxy-middleware@2.0.6(@types/express@4.17.17): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -13631,7 +19108,7 @@ packages: dependencies: '@types/express': 4.17.17 '@types/http-proxy': 1.17.10 - http-proxy: 1.18.1 + http-proxy: 1.18.1(debug@4.3.4) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.5 @@ -13639,29 +19116,24 @@ packages: - debug dev: false - /http-proxy/1.18.1: + /http-proxy@1.18.1(debug@4.3.4): resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2 + follow-redirects: 1.15.2(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug dev: false - /http-proxy/1.18.1_debug@4.3.4: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} + /http-response-object@3.0.2: + resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.2_debug@4.3.4 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - dev: false + '@types/node': 10.17.60 + dev: true - /http-signature/1.2.0: + /http-signature@1.2.0: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} dependencies: @@ -13670,98 +19142,102 @@ packages: sshpk: 1.17.0 dev: false - /https-browserify/1.0.0: + /https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} dev: false - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) transitivePeerDependencies: - supports-color - dev: false - /human-signals/1.1.1: + /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} - dev: false - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: false - /iconv-lite/0.4.24: + /husky@7.0.1: + resolution: {integrity: sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: false - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: false - /icss-replace-symbols/1.1.0: + /icss-replace-symbols@1.1.0: resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} dev: false - /icss-utils/4.1.1: + /icss-utils@4.1.1: resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} engines: {node: '>= 6'} dependencies: postcss: 7.0.39 dev: false - /icss-utils/5.1.0_postcss@8.4.21: + /icss-utils@5.1.0(postcss@8.4.23): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 dev: false - /idb/7.1.1: + /idb-wrapper@1.7.2: + resolution: {integrity: sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==} + dev: true + + /idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} dev: false - /identity-obj-proxy/3.0.0: + /identity-obj-proxy@3.0.0: resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} engines: {node: '>=4'} dependencies: harmony-reflect: 1.6.2 dev: false - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - /iferr/0.1.5: + /iferr@0.1.5: resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} dev: false - /ignore/3.3.10: + /ignore@3.3.10: resolution: {integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==} dev: false - /ignore/4.0.6: + /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} - dev: false - /ignore/5.2.4: + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: false - /image-size/1.0.2: + /image-size@1.0.2: resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} engines: {node: '>=14.0.0'} hasBin: true @@ -13769,143 +19245,141 @@ packages: queue: 6.0.2 dev: false - /immediate/3.3.0: + /immediate@3.3.0: resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} dev: false - /immer/8.0.1: + /immer@8.0.1: resolution: {integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==} dev: false - /immer/9.0.19: + /immer@9.0.19: resolution: {integrity: sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==} dev: false - /import-cwd/2.1.0: + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-cwd@2.1.0: resolution: {integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==} engines: {node: '>=4'} dependencies: import-from: 2.1.0 dev: false - /import-fresh/2.0.0: + /import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} engines: {node: '>=4'} dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - dev: false - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: false - /import-from/2.1.0: + /import-from@2.1.0: resolution: {integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==} engines: {node: '>=4'} dependencies: resolve-from: 3.0.0 dev: false - /import-lazy/2.1.0: + /import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} engines: {node: '>=4'} - dev: false - /import-local/1.0.0: + /import-local@1.0.0: resolution: {integrity: sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==} engines: {node: '>=4'} hasBin: true dependencies: pkg-dir: 2.0.0 resolve-cwd: 2.0.0 - dev: false - /import-local/2.0.0: + /import-local@2.0.0: resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} engines: {node: '>=6'} hasBin: true dependencies: pkg-dir: 3.0.0 resolve-cwd: 2.0.0 - dev: false - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: false - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: false - /indent-string/3.2.0: + /indent-string@3.2.0: resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} engines: {node: '>=4'} - dev: false - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - dev: false - /indexes-of/1.0.1: + /indexes-of@1.0.1: resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} dev: false - /infer-owner/1.0.4: + /indexof@0.0.1: + resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} + dev: true + + /infer-owner@1.0.4: resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} dev: false - /infima/0.2.0-alpha.42: + /infima@0.2.0-alpha.42: resolution: {integrity: sha512-ift8OXNbQQwtbIt6z16KnSWP7uJ/SysSMFI4F87MNRTicypfl4Pv3E2OGVv6N3nSZFJvA8imYulCBS64iyHYww==} engines: {node: '>=12'} dev: false - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.1: + /inherits@2.0.1: resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} dev: false - /inherits/2.0.3: + /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} dev: false - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.7: + /ini@1.3.7: resolution: {integrity: sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==} dev: false - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - /ini/2.0.0: + /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} dev: false - /inline-style-parser/0.1.1: + /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /inquirer/8.2.5: + /inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: @@ -13926,7 +19400,7 @@ packages: wrap-ansi: 7.0.0 dev: false - /internal-ip/4.3.0: + /internal-ip@4.3.0: resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} engines: {node: '>=6'} dependencies: @@ -13934,91 +19408,92 @@ packages: ipaddr.js: 1.9.1 dev: false - /internal-slot/1.0.5: + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.0 has: 1.0.3 side-channel: 1.0.4 - dev: false - /internmap/2.0.3: + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} dev: false - /interpret/1.4.0: + /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} - dev: false - /invariant/2.2.4: + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 dev: false - /ip-regex/2.1.0: + /io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + dependencies: + fp-ts: 1.19.3 + dev: true + + /ip-regex@2.1.0: resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} engines: {node: '>=4'} dev: false - /ip/1.1.8: + /ip@1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} dev: false - /ipaddr.js/1.9.1: + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} dev: false - /ipaddr.js/2.0.1: + /ipaddr.js@2.0.1: resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} engines: {node: '>= 10'} dev: false - /irregular-plurals/2.0.0: + /irregular-plurals@2.0.0: resolution: {integrity: sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==} engines: {node: '>=6'} - dev: false - /is-absolute-url/2.1.0: + /is-absolute-url@2.1.0: resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} engines: {node: '>=0.10.0'} dev: false - /is-absolute-url/3.0.3: + /is-absolute-url@3.0.3: resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} engines: {node: '>=8'} dev: false - /is-accessor-descriptor/0.1.6: + /is-accessor-descriptor@0.1.6: resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false - /is-accessor-descriptor/1.0.0: + /is-accessor-descriptor@1.0.0: resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 6.0.3 - dev: false - /is-alphabetical/1.0.4: + /is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: false - /is-alphanumerical/1.0.4: + /is-alphanumerical@1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: is-alphabetical: 1.0.4 is-decimal: 1.0.4 dev: false - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -14026,79 +19501,76 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-array-buffer/3.0.2: + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 is-typed-array: 1.1.10 - dev: false - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false - /is-arrayish/0.3.2: + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: false - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: false - /is-binary-path/1.0.1: + /is-binary-path@1.0.1: resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} engines: {node: '>=0.10.0'} dependencies: binary-extensions: 1.13.1 dev: false - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: false - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: false - /is-buffer/1.1.6: + /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - /is-buffer/2.0.5: + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} - dev: false - /is-callable/1.2.7: + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: false - /is-ci/1.2.1: + /is-ci@1.2.1: resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} hasBin: true dependencies: ci-info: 1.6.0 - dev: false - /is-ci/2.0.0: + /is-ci@2.0.0: resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} hasBin: true dependencies: ci-info: 2.0.0 - dev: false - /is-color-stop/1.1.0: + /is-color-stop@1.1.0: resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} dependencies: css-color-names: 0.0.4 @@ -14109,156 +19581,145 @@ packages: rgba-regex: 1.0.0 dev: false - /is-core-module/2.11.0: + /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 - dev: false - /is-data-descriptor/0.1.4: + /is-data-descriptor@0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false - /is-data-descriptor/1.0.0: + /is-data-descriptor@1.0.0: resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 6.0.3 - dev: false - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: false - /is-decimal/1.0.4: + /is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: false - /is-descriptor/0.1.6: + /is-descriptor@0.1.6: resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} engines: {node: '>=0.10.0'} dependencies: is-accessor-descriptor: 0.1.6 is-data-descriptor: 0.1.4 kind-of: 5.1.0 - dev: false - /is-descriptor/1.0.2: + /is-descriptor@1.0.2: resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} engines: {node: '>=0.10.0'} dependencies: is-accessor-descriptor: 1.0.0 is-data-descriptor: 1.0.0 kind-of: 6.0.3 - dev: false - /is-directory/0.3.1: + /is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} - dev: false - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false - /is-dotfile/1.0.3: + /is-dotfile@1.0.3: resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} engines: {node: '>=0.10.0'} dev: false - /is-equal-shallow/0.1.3: + /is-equal-shallow@0.1.3: resolution: {integrity: sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==} engines: {node: '>=0.10.0'} dependencies: is-primitive: 2.0.0 dev: false - /is-extendable/0.1.1: + /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} - dev: false - /is-extendable/1.0.1: + /is-extendable@1.0.1: resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} engines: {node: '>=0.10.0'} dependencies: is-plain-object: 2.0.4 - dev: false - /is-extglob/1.0.0: + /is-extglob@1.0.0: resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} engines: {node: '>=0.10.0'} dev: false - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: false - /is-fullwidth-code-point/2.0.0: + /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} - dev: false - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: false - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - dev: false - /is-generator-function/1.0.10: + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-glob/2.0.1: + /is-glob@2.0.1: resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 1.0.0 dev: false - /is-glob/3.1.0: + /is-glob@3.1.0: resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: false - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: false - /is-hexadecimal/1.0.4: + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: true + + /is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: false - /is-installed-globally/0.1.0: + /is-installed-globally@0.1.0: resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} engines: {node: '>=4'} dependencies: global-dirs: 0.1.1 is-path-inside: 1.0.1 - dev: false - /is-installed-globally/0.3.2: + /is-installed-globally@0.3.2: resolution: {integrity: sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==} engines: {node: '>=8'} dependencies: @@ -14266,7 +19727,7 @@ packages: is-path-inside: 3.0.3 dev: false - /is-installed-globally/0.4.0: + /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} dependencies: @@ -14274,20 +19735,19 @@ packages: is-path-inside: 3.0.3 dev: false - /is-interactive/1.0.0: + /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} dev: false - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: false - /is-module/1.0.0: + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: false - /is-nan/1.3.2: + /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} dependencies: @@ -14295,210 +19755,201 @@ packages: define-properties: 1.2.0 dev: false - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - dev: false - /is-npm/1.0.0: + /is-npm@1.0.0: resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==} engines: {node: '>=0.10.0'} - dev: false - /is-npm/4.0.0: + /is-npm@4.0.0: resolution: {integrity: sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==} engines: {node: '>=8'} dev: false - /is-npm/5.0.0: + /is-npm@5.0.0: resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} engines: {node: '>=10'} dev: false - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: false - /is-number/2.1.0: + /is-number@2.1.0: resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 dev: false - /is-number/3.0.0: + /is-number@3.0.0: resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false - /is-number/4.0.0: + /is-number@4.0.0: resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} engines: {node: '>=0.10.0'} dev: false - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: false - /is-obj/1.0.1: + /is-obj@1.0.1: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} - dev: false - /is-obj/2.0.0: + /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} dev: false - /is-path-cwd/2.2.0: + /is-object@0.1.2: + resolution: {integrity: sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==} + dev: true + + /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} dev: false - /is-path-in-cwd/2.1.0: + /is-path-in-cwd@2.1.0: resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} engines: {node: '>=6'} dependencies: is-path-inside: 2.1.0 dev: false - /is-path-inside/1.0.1: + /is-path-inside@1.0.1: resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} engines: {node: '>=0.10.0'} dependencies: path-is-inside: 1.0.2 - dev: false - /is-path-inside/2.1.0: + /is-path-inside@2.1.0: resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} engines: {node: '>=6'} dependencies: path-is-inside: 1.0.2 dev: false - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: false - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - dev: false - /is-plain-obj/2.1.0: + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - dev: false - /is-plain-obj/3.0.0: + /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} dev: false - /is-plain-object/2.0.4: + /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: false - /is-plain-object/5.0.0: + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} dev: false - /is-posix-bracket/0.1.1: + /is-posix-bracket@0.1.1: resolution: {integrity: sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==} engines: {node: '>=0.10.0'} dev: false - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: false - /is-primitive/2.0.0: + /is-primitive@2.0.0: resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} engines: {node: '>=0.10.0'} dev: false - /is-redirect/1.0.0: + /is-redirect@1.0.0: resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} engines: {node: '>=0.10.0'} - dev: false - /is-regex/1.1.4: + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.0 + dev: true + + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: false - /is-regexp/1.0.0: + /is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} dev: false - /is-resolvable/1.1.0: + /is-resolvable@1.1.0: resolution: {integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==} dev: false - /is-retry-allowed/1.2.0: + /is-retry-allowed@1.2.0: resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} engines: {node: '>=0.10.0'} - dev: false - /is-root/2.1.0: + /is-root@2.1.0: resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} engines: {node: '>=6'} dev: false - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: false - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - dev: false - /is-stream/1.1.0: + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} - dev: false - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: false - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: false - /is-subset/0.1.1: + /is-subset@0.1.1: resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} dev: false - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: false - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -14507,162 +19958,167 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: false - /is-typedarray/1.0.0: + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: false - /is-utf8/0.2.1: + /is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: false - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: false - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 - dev: false - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 dev: false - /is-what/3.14.1: + /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: false - /is-whitespace-character/1.0.4: + /is-whitespace-character@1.0.4: resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} dev: false - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - dev: false - /is-word-character/1.0.4: + /is-word-character@1.0.4: resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} dev: false - /is-wsl/1.1.0: + /is-wsl@1.1.0: resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} engines: {node: '>=4'} - dev: false - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false - /is-yarn-global/0.3.0: + /is-yarn-global@0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} dev: false - /isarray/0.0.1: + /is@0.2.7: + resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==} + dev: true + + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: false - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: false - /isexe/2.0.0: + /isbuffer@0.0.0: + resolution: {integrity: sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==} + dev: true + + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - /isobject/2.1.0: + /isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} dependencies: isarray: 1.0.0 - dev: false - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - dev: false - /isstream/0.1.2: + /isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.6.7 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: true + + /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: false - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} - dev: false - /istanbul-lib-instrument/4.0.3: + /istanbul-lib-instrument@4.0.3: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.21.0 - '@babel/parser': 7.21.2 + '@babel/core': 7.21.8 + '@babel/parser': 7.21.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 - dev: false - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@6.1.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: false - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - dev: false - /jake/10.8.5: + /jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} hasBin: true @@ -14673,24 +20129,23 @@ packages: minimatch: 3.1.2 dev: false - /javascript-stringify/1.6.0: + /javascript-stringify@1.6.0: resolution: {integrity: sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==} dev: false - /javascript-stringify/2.1.0: + /javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} dev: false - /jest-changed-files/26.6.2: + /jest-changed-files@26.6.2: resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 execa: 4.1.0 throat: 5.0.0 - dev: false - /jest-changed-files/27.5.1: + /jest-changed-files@27.5.1: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -14699,14 +20154,14 @@ packages: throat: 6.0.2 dev: false - /jest-circus/27.5.1: + /jest-circus@27.5.1: resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -14726,12 +20181,12 @@ packages: - supports-color dev: false - /jest-cli/26.6.3: + /jest-cli@26.6.3(ts-node@10.9.1): resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} engines: {node: '>= 10.14.2'} hasBin: true dependencies: - '@jest/core': 26.6.3 + '@jest/core': 26.6.3(ts-node@10.9.1) '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 chalk: 4.1.2 @@ -14739,7 +20194,7 @@ packages: graceful-fs: 4.2.10 import-local: 3.1.0 is-ci: 2.0.0 - jest-config: 26.6.3 + jest-config: 26.6.3(ts-node@10.9.1) jest-util: 26.6.2 jest-validate: 26.6.2 prompts: 2.4.2 @@ -14752,7 +20207,33 @@ packages: - utf-8-validate dev: false - /jest-cli/27.5.1: + /jest-cli@26.6.3(ts-node@7.0.1): + resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3(ts-node@7.0.1) + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + is-ci: 2.0.0 + jest-config: 26.6.3(ts-node@7.0.1) + jest-util: 26.6.2 + jest-validate: 26.6.2 + prompts: 2.4.2 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-cli@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -14762,27 +20243,62 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 + '@jest/core': 27.5.1(ts-node@10.9.1) + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 27.5.1(ts-node@10.9.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: false + + /jest-config@26.6.3(ts-node@10.9.1): + resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} + engines: {node: '>= 10.14.2'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.21.8 + '@jest/test-sequencer': 26.6.3(ts-node@10.9.1) + '@jest/types': 26.6.2 + babel-jest: 26.6.3(@babel/core@7.21.8) chalk: 4.1.2 - exit: 0.1.2 + deepmerge: 4.3.0 + glob: 7.2.3 graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.2 - yargs: 16.2.0 + jest-environment-jsdom: 26.6.2 + jest-environment-node: 26.6.2 + jest-get-type: 26.3.0 + jest-jasmine2: 26.6.3(ts-node@10.9.1) + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + micromatch: 4.0.5 + pretty-format: 26.6.2 + ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) transitivePeerDependencies: - bufferutil - canvas - supports-color - - ts-node - utf-8-validate dev: false - /jest-config/26.6.3: + /jest-config@26.6.3(ts-node@7.0.1): resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} engines: {node: '>= 10.14.2'} peerDependencies: @@ -14791,10 +20307,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.21.0 - '@jest/test-sequencer': 26.6.3 + '@babel/core': 7.21.8 + '@jest/test-sequencer': 26.6.3(ts-node@7.0.1) '@jest/types': 26.6.2 - babel-jest: 26.6.3_@babel+core@7.21.0 + babel-jest: 26.6.3(@babel/core@7.21.8) chalk: 4.1.2 deepmerge: 4.3.0 glob: 7.2.3 @@ -14802,21 +20318,22 @@ packages: jest-environment-jsdom: 26.6.2 jest-environment-node: 26.6.2 jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3 + jest-jasmine2: 26.6.3(ts-node@7.0.1) jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-util: 26.6.2 jest-validate: 26.6.2 micromatch: 4.0.5 pretty-format: 26.6.2 + ts-node: 7.0.1 transitivePeerDependencies: - bufferutil - canvas - supports-color - utf-8-validate - dev: false + dev: true - /jest-config/27.5.1: + /jest-config@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -14825,10 +20342,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.8 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.21.0 + babel-jest: 27.5.1(@babel/core@7.21.8) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.0 @@ -14849,6 +20366,7 @@ packages: pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) transitivePeerDependencies: - bufferutil - canvas @@ -14856,7 +20374,7 @@ packages: - utf-8-validate dev: false - /jest-diff/26.6.2: + /jest-diff@26.6.2: resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} engines: {node: '>= 10.14.2'} dependencies: @@ -14864,9 +20382,8 @@ packages: diff-sequences: 26.6.2 jest-get-type: 26.3.0 pretty-format: 26.6.2 - dev: false - /jest-diff/27.5.1: + /jest-diff@27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -14874,9 +20391,8 @@ packages: diff-sequences: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 - dev: false - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -14884,23 +20400,21 @@ packages: diff-sequences: 29.4.3 jest-get-type: 29.4.3 pretty-format: 29.5.0 - dev: false - /jest-docblock/26.0.0: + /jest-docblock@26.0.0: resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} engines: {node: '>= 10.14.2'} dependencies: detect-newline: 3.1.0 - dev: false - /jest-docblock/27.5.1: + /jest-docblock@27.5.1: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: detect-newline: 3.1.0 dev: false - /jest-each/26.6.2: + /jest-each@26.6.2: resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} engines: {node: '>= 10.14.2'} dependencies: @@ -14909,9 +20423,8 @@ packages: jest-get-type: 26.3.0 jest-util: 26.6.2 pretty-format: 26.6.2 - dev: false - /jest-each/27.5.1: + /jest-each@27.5.1: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -14922,14 +20435,14 @@ packages: pretty-format: 27.5.1 dev: false - /jest-environment-jsdom/26.6.2: + /jest-environment-jsdom@26.6.2: resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} engines: {node: '>= 10.14.2'} dependencies: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0 @@ -14938,16 +20451,15 @@ packages: - canvas - supports-color - utf-8-validate - dev: false - /jest-environment-jsdom/27.5.1: + /jest-environment-jsdom@27.5.1: resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -14958,7 +20470,7 @@ packages: - utf-8-validate dev: false - /jest-environment-jsdom/29.5.0: + /jest-environment-jsdom@29.5.0: resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -14971,7 +20483,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.1 - '@types/node': 12.20.55 + '@types/node': 20.9.0 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.3 @@ -14981,61 +20493,56 @@ packages: - utf-8-validate dev: false - /jest-environment-node/26.6.2: + /jest-environment-node@26.6.2: resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} engines: {node: '>= 10.14.2'} dependencies: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 jest-mock: 26.6.2 jest-util: 26.6.2 - dev: false - /jest-environment-node/27.5.1: + /jest-environment-node@27.5.1: resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 jest-mock: 27.5.1 jest-util: 27.5.1 dev: false - /jest-fetch-mock/3.0.3: + /jest-fetch-mock@3.0.3: resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} dependencies: cross-fetch: 3.1.5 promise-polyfill: 8.3.0 transitivePeerDependencies: - encoding - dev: false - /jest-get-type/26.3.0: + /jest-get-type@26.3.0: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} - dev: false - /jest-get-type/27.5.1: + /jest-get-type@27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: false - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false - /jest-haste-map/26.6.2: + /jest-haste-map@26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.6 - '@types/node': 18.14.6 + '@types/node': 20.9.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -15050,15 +20557,14 @@ packages: fsevents: 2.3.2 transitivePeerDependencies: - supports-color - dev: false - /jest-haste-map/27.5.1: + /jest-haste-map@27.5.1: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 18.14.6 + '@types/node': 20.9.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -15072,13 +20578,13 @@ packages: fsevents: 2.3.2 dev: false - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 - '@types/node': 18.14.6 + '@types/node': 20.9.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -15091,16 +20597,16 @@ packages: fsevents: 2.3.2 dev: false - /jest-jasmine2/26.6.3: + /jest-jasmine2@26.6.3(ts-node@10.9.1): resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/traverse': 7.21.2 + '@babel/traverse': 7.21.5 '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -15108,7 +20614,7 @@ packages: jest-each: 26.6.2 jest-matcher-utils: 26.6.2 jest-message-util: 26.6.2 - jest-runtime: 26.6.3 + jest-runtime: 26.6.3(ts-node@10.9.1) jest-snapshot: 26.6.2 jest-util: 26.6.2 pretty-format: 26.6.2 @@ -15121,7 +20627,37 @@ packages: - utf-8-validate dev: false - /jest-jasmine2/27.5.1: + /jest-jasmine2@26.6.3(ts-node@7.0.1): + resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/traverse': 7.21.5 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.9.0 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3(ts-node@7.0.1) + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-jasmine2@27.5.1: resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15129,7 +20665,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -15146,15 +20682,14 @@ packages: - supports-color dev: false - /jest-leak-detector/26.6.2: + /jest-leak-detector@26.6.2: resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} engines: {node: '>= 10.14.2'} dependencies: jest-get-type: 26.3.0 pretty-format: 26.6.2 - dev: false - /jest-leak-detector/27.5.1: + /jest-leak-detector@27.5.1: resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15162,7 +20697,7 @@ packages: pretty-format: 27.5.1 dev: false - /jest-matcher-utils/26.6.2: + /jest-matcher-utils@26.6.2: resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} engines: {node: '>= 10.14.2'} dependencies: @@ -15170,9 +20705,8 @@ packages: jest-diff: 26.6.2 jest-get-type: 26.3.0 pretty-format: 26.6.2 - dev: false - /jest-matcher-utils/27.5.1: + /jest-matcher-utils@27.5.1: resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15182,7 +20716,7 @@ packages: pretty-format: 27.5.1 dev: false - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -15192,11 +20726,11 @@ packages: pretty-format: 29.5.0 dev: false - /jest-message-util/26.6.2: + /jest-message-util@26.6.2: resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@jest/types': 26.6.2 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -15205,13 +20739,12 @@ packages: pretty-format: 26.6.2 slash: 3.0.0 stack-utils: 2.0.6 - dev: false - /jest-message-util/27.5.1: + /jest-message-util@27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@jest/types': 27.5.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -15222,11 +20755,11 @@ packages: stack-utils: 2.0.6 dev: false - /jest-message-util/28.1.3: + /jest-message-util@28.1.3: resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@jest/types': 28.1.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -15237,11 +20770,11 @@ packages: stack-utils: 2.0.6 dev: false - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -15252,32 +20785,31 @@ packages: stack-utils: 2.0.6 dev: false - /jest-mock/26.6.2: + /jest-mock@26.6.2: resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.6 - dev: false + '@types/node': 20.9.0 - /jest-mock/27.5.1: + /jest-mock@27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 dev: false - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 20.9.0 jest-util: 29.5.0 dev: false - /jest-pnp-resolver/1.2.3_jest-resolve@26.6.2: + /jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -15287,9 +20819,8 @@ packages: optional: true dependencies: jest-resolve: 26.6.2 - dev: false - /jest-pnp-resolver/1.2.3_jest-resolve@27.5.1: + /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -15301,27 +20832,26 @@ packages: jest-resolve: 27.5.1 dev: false - /jest-regex-util/26.0.0: + /jest-regex-util@26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} - dev: false - /jest-regex-util/27.5.1: + /jest-regex-util@27.5.1: resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: false - /jest-regex-util/28.0.2: + /jest-regex-util@28.0.2: resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dev: false - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: false - /jest-resolve-dependencies/26.6.3: + /jest-resolve-dependencies@26.6.3: resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} engines: {node: '>= 10.14.2'} dependencies: @@ -15330,9 +20860,8 @@ packages: jest-snapshot: 26.6.2 transitivePeerDependencies: - supports-color - dev: false - /jest-resolve-dependencies/27.5.1: + /jest-resolve-dependencies@27.5.1: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15343,21 +20872,20 @@ packages: - supports-color dev: false - /jest-resolve/26.6.2: + /jest-resolve@26.6.2: resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 chalk: 4.1.2 graceful-fs: 4.2.10 - jest-pnp-resolver: 1.2.3_jest-resolve@26.6.2 + jest-pnp-resolver: 1.2.3(jest-resolve@26.6.2) jest-util: 26.6.2 read-pkg-up: 7.0.1 resolve: 1.22.1 slash: 3.0.0 - dev: false - /jest-resolve/27.5.1: + /jest-resolve@27.5.1: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15365,7 +20893,7 @@ packages: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.3_jest-resolve@27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) jest-util: 27.5.1 jest-validate: 27.5.1 resolve: 1.22.1 @@ -15373,7 +20901,7 @@ packages: slash: 3.0.0 dev: false - /jest-runner/26.6.3: + /jest-runner@26.6.3(ts-node@10.9.1): resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} engines: {node: '>= 10.14.2'} dependencies: @@ -15381,18 +20909,18 @@ packages: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-config: 26.6.3 + jest-config: 26.6.3(ts-node@10.9.1) jest-docblock: 26.0.0 jest-haste-map: 26.6.2 jest-leak-detector: 26.6.2 jest-message-util: 26.6.2 jest-resolve: 26.6.2 - jest-runtime: 26.6.3 + jest-runtime: 26.6.3(ts-node@10.9.1) jest-util: 26.6.2 jest-worker: 26.6.2 source-map-support: 0.5.21 @@ -15405,7 +20933,39 @@ packages: - utf-8-validate dev: false - /jest-runner/27.5.1: + /jest-runner@26.6.3(ts-node@7.0.1): + resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.9.0 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-config: 26.6.3(ts-node@7.0.1) + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3(ts-node@7.0.1) + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runner@27.5.1: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15414,7 +20974,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.10 @@ -15437,7 +20997,7 @@ packages: - utf-8-validate dev: false - /jest-runtime/26.6.3: + /jest-runtime@26.6.3(ts-node@10.9.1): resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} engines: {node: '>= 10.14.2'} hasBin: true @@ -15457,7 +21017,7 @@ packages: exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-config: 26.6.3 + jest-config: 26.6.3(ts-node@10.9.1) jest-haste-map: 26.6.2 jest-message-util: 26.6.2 jest-mock: 26.6.2 @@ -15477,7 +21037,47 @@ packages: - utf-8-validate dev: false - /jest-runtime/27.5.1: + /jest-runtime@26.6.3(ts-node@7.0.1): + resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-config: 26.6.3(ts-node@7.0.1) + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runtime@27.5.1: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15507,27 +21107,26 @@ packages: - supports-color dev: false - /jest-serializer/26.6.2: + /jest-serializer@26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 graceful-fs: 4.2.10 - dev: false - /jest-serializer/27.5.1: + /jest-serializer@27.5.1: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 graceful-fs: 4.2.10 dev: false - /jest-snapshot/26.6.2: + /jest-snapshot@26.6.2: resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.5 '@jest/types': 26.6.2 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 @@ -15542,25 +21141,24 @@ packages: jest-resolve: 26.6.2 natural-compare: 1.4.0 pretty-format: 26.6.2 - semver: 7.3.8 + semver: 7.5.2 transitivePeerDependencies: - supports-color - dev: false - /jest-snapshot/27.5.1: + /jest-snapshot@27.5.1: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/core': 7.21.8 + '@babel/generator': 7.21.9 + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.8) + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.8) chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.10 @@ -15572,27 +21170,27 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.3.8 + semver: 7.5.2 transitivePeerDependencies: - supports-color dev: false - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/core': 7.21.8 + '@babel/generator': 7.21.9 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.8) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.8) + '@babel/traverse': 7.23.5 + '@babel/types': 7.21.5 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.8) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -15603,60 +21201,58 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.3.8 + semver: 7.5.2 transitivePeerDependencies: - supports-color dev: false - /jest-util/26.6.2: + /jest-util@26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 micromatch: 4.0.5 - dev: false - /jest-util/27.5.1: + /jest-util@27.5.1: resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 picomatch: 2.3.1 - dev: false - /jest-util/28.1.3: + /jest-util@28.1.3: resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: false - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: false - /jest-validate/26.6.2: + /jest-validate@26.6.2: resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} engines: {node: '>= 10.14.2'} dependencies: @@ -15666,9 +21262,8 @@ packages: jest-get-type: 26.3.0 leven: 3.1.0 pretty-format: 26.6.2 - dev: false - /jest-validate/27.5.1: + /jest-validate@27.5.1: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -15680,7 +21275,7 @@ packages: pretty-format: 27.5.1 dev: false - /jest-watch-typeahead/1.1.0_jest@27.5.1: + /jest-watch-typeahead@1.1.0(jest@27.5.1): resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -15688,7 +21283,7 @@ packages: dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 - jest: 27.5.1 + jest: 27.5.1(ts-node@10.9.1) jest-regex-util: 28.0.2 jest-watcher: 28.1.3 slash: 4.0.0 @@ -15696,7 +21291,7 @@ packages: strip-ansi: 7.0.1 dev: false - /jest-watch-typeahead/2.2.2_jest@26.6.0: + /jest-watch-typeahead@2.2.2(jest@26.6.0): resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -15704,7 +21299,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 26.6.0 + jest: 26.6.0(ts-node@10.9.1) jest-regex-util: 29.4.3 jest-watcher: 29.5.0 slash: 5.0.0 @@ -15712,39 +21307,38 @@ packages: strip-ansi: 7.0.1 dev: false - /jest-watcher/26.6.2: + /jest-watcher@26.6.2: resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} engines: {node: '>= 10.14.2'} dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 string-length: 4.0.2 - dev: false - /jest-watcher/27.5.1: + /jest-watcher@27.5.1: resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.14.6 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 string-length: 4.0.2 dev: false - /jest-watcher/28.1.3: + /jest-watcher@28.1.3: resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 18.14.6 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -15752,13 +21346,13 @@ packages: string-length: 4.0.2 dev: false - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 20.9.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -15766,51 +21360,49 @@ packages: string-length: 4.0.2 dev: false - /jest-worker/26.6.2: + /jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 merge-stream: 2.0.0 supports-color: 7.2.0 - dev: false - /jest-worker/27.5.1: + /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false - /jest-worker/28.1.3: + /jest-worker@28.1.3: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.6 + '@types/node': 20.9.0 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest/26.6.0: + /jest@26.6.0(ts-node@10.9.1): resolution: {integrity: sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==} engines: {node: '>= 10.14.2'} hasBin: true dependencies: - '@jest/core': 26.6.3 + '@jest/core': 26.6.3(ts-node@10.9.1) import-local: 3.1.0 - jest-cli: 26.6.3 + jest-cli: 26.6.3(ts-node@10.9.1) transitivePeerDependencies: - bufferutil - canvas @@ -15819,7 +21411,23 @@ packages: - utf-8-validate dev: false - /jest/27.5.1: + /jest@26.6.0(ts-node@7.0.1): + resolution: {integrity: sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3(ts-node@7.0.1) + import-local: 3.1.0 + jest-cli: 26.6.3(ts-node@7.0.1) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest@27.5.1(ts-node@10.9.1): resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -15829,9 +21437,9 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1 + '@jest/core': 27.5.1(ts-node@10.9.1) import-local: 3.1.0 - jest-cli: 27.5.1 + jest-cli: 27.5.1(ts-node@10.9.1) transitivePeerDependencies: - bufferutil - canvas @@ -15840,7 +21448,7 @@ packages: - utf-8-validate dev: false - /joi/17.8.3: + /joi@17.8.3: resolution: {integrity: sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==} dependencies: '@hapi/hoek': 9.3.0 @@ -15850,40 +21458,53 @@ packages: '@sideway/pinpoint': 2.0.0 dev: false - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /jquery@3.7.0: + resolution: {integrity: sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==} dev: false - /js-yaml/3.14.1: + /js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: true + + /js-sdsl@4.4.2: + resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} + dev: true + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: false - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - dev: false - /js2xmlparser/4.0.2: + /js2xmlparser@4.0.2: resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==} dependencies: xmlcreate: 2.0.4 - /jsbn/0.1.1: + /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: false - /jsdoc/3.6.11: + /jsdoc@3.6.11: resolution: {integrity: sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.9 '@types/markdown-it': 12.2.3 bluebird: 3.7.2 catharsis: 0.9.0 @@ -15891,7 +21512,7 @@ packages: js2xmlparser: 4.0.2 klaw: 3.0.0 markdown-it: 12.3.2 - markdown-it-anchor: 8.6.7_2zb4u3vubltivolgu556vv4aom + markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) marked: 4.2.12 mkdirp: 1.0.4 requizzle: 0.2.4 @@ -15899,7 +21520,7 @@ packages: taffydb: 2.6.2 underscore: 1.13.6 - /jsdom/16.7.0: + /jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} peerDependencies: @@ -15939,9 +21560,8 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /jsdom/20.0.3: + /jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} peerDependencies: @@ -15982,87 +21602,87 @@ packages: - utf-8-validate dev: false - /jsesc/0.5.0: + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: false - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - dev: false - /json-buffer/3.0.0: + /json-buffer@3.0.0: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: false - /json-parse-better-errors/1.0.2: + /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: false - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false - /json-schema/0.4.0: + /json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} dev: false - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: false - /json-stringify-safe/5.0.1: + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: false - /json5/0.5.1: + /json5@0.5.1: resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} hasBin: true dev: false - /json5/1.0.2: + /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: minimist: 1.2.8 - dev: false - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: false - /jsonfile/4.0.0: + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 - dev: false - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 - dev: false - /jsonpointer/5.0.1: + /jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} dev: false - /jsprim/1.4.2: + /jsonschema@1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + dev: true + + /jsprim@1.4.2: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} dependencies: @@ -16072,7 +21692,7 @@ packages: verror: 1.10.0 dev: false - /jsx-ast-utils/3.3.3: + /jsx-ast-utils@3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: @@ -16080,135 +21700,239 @@ packages: object.assign: 4.1.4 dev: false - /keyv/3.1.0: + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.0 + readable-stream: 3.6.1 + dev: true + + /keyv@3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} dependencies: json-buffer: 3.0.0 dev: false - /killable/1.0.1: + /killable@1.0.1: resolution: {integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==} dev: false - /kind-of/3.2.2: + /kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 - dev: false - /kind-of/4.0.0: + /kind-of@4.0.0: resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 - dev: false - /kind-of/5.1.0: + /kind-of@5.1.0: resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} engines: {node: '>=0.10.0'} - dev: false - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: false - /klaw/3.0.0: + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /klaw@3.0.0: resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} dependencies: graceful-fs: 4.2.10 - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - dev: false - /klona/2.0.6: + /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} dev: false - /language-subtag-registry/0.3.22: + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: false - /language-tags/1.0.5: + /language-tags@1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: false - /last-call-webpack-plugin/3.0.0: + /last-call-webpack-plugin@3.0.0: resolution: {integrity: sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==} dependencies: lodash: 4.17.21 webpack-sources: 1.4.3 dev: false - /latest-version/3.1.0: + /latest-version@3.1.0: resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} engines: {node: '>=4'} dependencies: package-json: 4.0.1 - dev: false - /latest-version/5.1.0: + /latest-version@5.1.0: resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} engines: {node: '>=8'} dependencies: - package-json: 6.5.0 - dev: false + package-json: 6.5.0 + dev: false + + /leader-line-types@1.0.5-2: + resolution: {integrity: sha512-FpFuK12XJSG29mm07fL53aOWaRERUKBUWOkeCMPEwo6+hf5rMB7Re5uJoxtAOVls/h+yHMd7SXtq8u3d3lsQCQ==} + dev: false + + /leader-line@1.0.7: + resolution: {integrity: sha512-PhJpQLV7XychSIuGPD0TEqR9PgRYBbrhReaOcmHFOVtTw4dWKfUMAtOb7UP7xTsoib6sFzq2giQeOUHy7LCuJQ==} + dev: false + + /level-blobs@0.1.7: + resolution: {integrity: sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==} + dependencies: + level-peek: 1.0.6 + once: 1.4.0 + readable-stream: 1.0.34 + dev: true + + /level-filesystem@1.2.0: + resolution: {integrity: sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==} + dependencies: + concat-stream: 1.6.2 + errno: 0.1.8 + fwd-stream: 1.0.4 + level-blobs: 0.1.7 + level-peek: 1.0.6 + level-sublevel: 5.2.3 + octal: 1.0.0 + once: 1.4.0 + xtend: 2.2.0 + dev: true + + /level-fix-range@1.0.2: + resolution: {integrity: sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==} + dev: true + + /level-fix-range@2.0.0: + resolution: {integrity: sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==} + dependencies: + clone: 0.1.19 + dev: true + + /level-hooks@4.5.0: + resolution: {integrity: sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==} + dependencies: + string-range: 1.2.2 + dev: true + + /level-js@2.2.4: + resolution: {integrity: sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==} + dependencies: + abstract-leveldown: 0.12.4 + idb-wrapper: 1.7.2 + isbuffer: 0.0.0 + ltgt: 2.2.1 + typedarray-to-buffer: 1.0.4 + xtend: 2.1.2 + dev: true + + /level-peek@1.0.6: + resolution: {integrity: sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==} + dependencies: + level-fix-range: 1.0.2 + dev: true + + /level-sublevel@5.2.3: + resolution: {integrity: sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==} + dependencies: + level-fix-range: 2.0.0 + level-hooks: 4.5.0 + string-range: 1.2.2 + xtend: 2.0.6 + dev: true + + /level-supports@4.0.1: + resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} + engines: {node: '>=12'} + dev: true + + /level-transcoder@1.0.1: + resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + module-error: 1.0.2 + dev: true - /leader-line-types/1.0.5-2: - resolution: {integrity: sha512-FpFuK12XJSG29mm07fL53aOWaRERUKBUWOkeCMPEwo6+hf5rMB7Re5uJoxtAOVls/h+yHMd7SXtq8u3d3lsQCQ==} - dev: false + /level@8.0.0: + resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} + engines: {node: '>=12'} + dependencies: + browser-level: 1.0.1 + classic-level: 1.4.1 + dev: true - /leader-line/1.0.7: - resolution: {integrity: sha512-PhJpQLV7XychSIuGPD0TEqR9PgRYBbrhReaOcmHFOVtTw4dWKfUMAtOb7UP7xTsoib6sFzq2giQeOUHy7LCuJQ==} - dev: false + /levelup@0.18.6: + resolution: {integrity: sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==} + dependencies: + bl: 0.8.2 + deferred-leveldown: 0.2.0 + errno: 0.1.8 + prr: 0.0.0 + readable-stream: 1.0.34 + semver: 2.3.2 + xtend: 3.0.0 + dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - dev: false - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: false - /lilconfig/2.1.0: + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: false - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - /linkify-it/2.2.0: + /linkify-it@2.2.0: resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} dependencies: uc.micro: 1.0.6 dev: false - /linkify-it/3.0.3: + /linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} dependencies: uc.micro: 1.0.6 - /load-json-file/4.0.0: + /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} dependencies: @@ -16216,23 +21940,21 @@ packages: parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 - dev: false - /load-script/1.0.0: + /load-script@1.0.0: resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} dev: false - /loader-runner/2.4.0: + /loader-runner@2.4.0: resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} dev: false - /loader-runner/4.3.0: + /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - dev: false - /loader-utils/0.2.17: + /loader-utils@0.2.17: resolution: {integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==} dependencies: big.js: 3.2.0 @@ -16241,16 +21963,15 @@ packages: object-assign: 4.1.1 dev: false - /loader-utils/1.4.2: + /loader-utils@1.4.2: resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} engines: {node: '>=4.0.0'} dependencies: big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.2 - dev: false - /loader-utils/2.0.0: + /loader-utils@2.0.0: resolution: {integrity: sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==} engines: {node: '>=8.9.0'} dependencies: @@ -16259,7 +21980,7 @@ packages: json5: 2.2.3 dev: false - /loader-utils/2.0.4: + /loader-utils@2.0.4: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} dependencies: @@ -16268,246 +21989,254 @@ packages: json5: 2.2.3 dev: false - /loader-utils/3.2.1: + /loader-utils@3.2.1: resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} engines: {node: '>= 12.13.0'} dev: false - /locate-path/2.0.0: + /locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} dependencies: p-locate: 2.0.0 path-exists: 3.0.0 - dev: false - /locate-path/3.0.0: + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - dev: false - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - dev: false - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: false - /lodash._reinterpolate/3.0.0: + /lodash._reinterpolate@3.0.0: resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} dev: false - /lodash.clonedeep/4.5.0: + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - dev: false - /lodash.curry/4.1.1: + /lodash.curry@4.1.1: resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} dev: false - /lodash.debounce/4.0.8: + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false - /lodash.escape/4.0.1: + /lodash.escape@4.0.1: resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} dev: false - /lodash.flattendeep/4.4.0: + /lodash.flattendeep@4.4.0: resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} dev: false - /lodash.flow/3.5.0: + /lodash.flow@3.5.0: resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} dev: false - /lodash.get/4.4.2: + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false - /lodash.isequal/4.5.0: + /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false - /lodash.isplainobject/4.0.6: + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + requiresBuild: true dev: false optional: true - /lodash.kebabcase/4.1.1: + /lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: false - /lodash.map/4.6.0: + /lodash.map@4.6.0: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} dev: false - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: false - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: false - /lodash.mergewith/4.6.2: + /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + requiresBuild: true dev: false optional: true - /lodash.sortby/4.7.0: + /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: false - /lodash.template/4.5.0: + /lodash.template@4.5.0: resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} dependencies: lodash._reinterpolate: 3.0.0 lodash.templatesettings: 4.2.0 dev: false - /lodash.templatesettings/4.2.0: + /lodash.templatesettings@4.2.0: resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} dependencies: lodash._reinterpolate: 3.0.0 dev: false - /lodash.truncate/4.4.2: + /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: false - /lodash.uniq/4.5.0: + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: false - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols/2.2.0: + /log-symbols@2.2.0: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} engines: {node: '>=4'} dependencies: chalk: 2.4.2 - dev: false - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: false - /loglevel/1.8.1: + /loglevel@1.8.1: resolution: {integrity: sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==} engines: {node: '>= 0.6.0'} dev: false - /loglevelnext/1.0.5: + /loglevelnext@1.0.5: resolution: {integrity: sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==} engines: {node: '>= 6'} dependencies: es6-symbol: 3.1.3 object.assign: 4.1.4 - dev: false - /long/4.0.0: + /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - /longest/2.0.1: + /longest@2.0.1: resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} engines: {node: '>=0.10.0'} dev: false - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 dev: false - /loud-rejection/1.6.0: + /loud-rejection@1.6.0: resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} engines: {node: '>=0.10.0'} dependencies: currently-unhandled: 0.4.1 signal-exit: 3.0.7 - dev: false - /lower-case/1.1.4: + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} dev: false - /lower-case/2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /lowercase-keys/1.0.1: + /lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} - dev: false - /lowercase-keys/2.0.0: + /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} dev: false - /lru-cache/4.1.5: + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: false - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: false - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /lz-string/1.5.0: + /lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + dev: true + + /ltgt@2.2.1: + resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} + dev: true + + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: false - /magic-string/0.22.5: + /magic-string@0.22.5: resolution: {integrity: sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==} dependencies: vlq: 0.2.3 - dev: false - /magic-string/0.25.9: + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 - dev: false - /make-dir/1.3.0: + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@1.3.0: resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} engines: {node: '>=4'} dependencies: pify: 3.0.0 - dev: false - /make-dir/2.1.0: + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} dependencies: @@ -16515,50 +22244,43 @@ packages: semver: 5.7.1 dev: false - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 - dev: false - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: false - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 - dev: false - /map-cache/0.2.2: + /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} - dev: false - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} - dev: false - /map-obj/2.0.0: + /map-obj@2.0.0: resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} engines: {node: '>=4'} - dev: false - /map-visit/1.0.0: + /map-visit@1.0.0: resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} engines: {node: '>=0.10.0'} dependencies: object-visit: 1.0.1 - dev: false - /markdown-escapes/1.0.4: + /markdown-escapes@1.0.4: resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} dev: false - /markdown-it-anchor/5.3.0_markdown-it@8.4.2: + /markdown-it-anchor@5.3.0(markdown-it@8.4.2): resolution: {integrity: sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==} peerDependencies: markdown-it: '*' @@ -16566,7 +22288,7 @@ packages: markdown-it: 8.4.2 dev: false - /markdown-it-anchor/8.6.7_2zb4u3vubltivolgu556vv4aom: + /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} peerDependencies: '@types/markdown-it': '*' @@ -16575,7 +22297,7 @@ packages: '@types/markdown-it': 12.2.3 markdown-it: 12.3.2 - /markdown-it-chain/1.3.0_markdown-it@8.4.2: + /markdown-it-chain@1.3.0(markdown-it@8.4.2): resolution: {integrity: sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==} engines: {node: '>=6.9'} peerDependencies: @@ -16585,20 +22307,20 @@ packages: webpack-chain: 4.12.1 dev: false - /markdown-it-container/2.0.0: + /markdown-it-container@2.0.0: resolution: {integrity: sha512-IxPOaq2LzrGuFGyYq80zaorXReh2ZHGFOB1/Hen429EJL1XkPI3FJTpx9TsJeua+j2qTru4h3W1TiCRdeivMmA==} dev: false - /markdown-it-emoji/1.4.0: + /markdown-it-emoji@1.4.0: resolution: {integrity: sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==} dev: false - /markdown-it-table-of-contents/0.4.4: + /markdown-it-table-of-contents@0.4.4: resolution: {integrity: sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==} engines: {node: '>6.4.0'} dev: false - /markdown-it/12.3.2: + /markdown-it@12.3.2: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true dependencies: @@ -16608,7 +22330,7 @@ packages: mdurl: 1.0.1 uc.micro: 1.0.6 - /markdown-it/8.4.2: + /markdown-it@8.4.2: resolution: {integrity: sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==} hasBin: true dependencies: @@ -16619,36 +22341,44 @@ packages: uc.micro: 1.0.6 dev: false - /marked/4.2.12: + /markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + dev: true + + /marked@4.2.12: resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} engines: {node: '>= 12'} hasBin: true - /math-random/1.0.4: + /math-random@1.0.4: resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} dev: false - /md5.js/1.3.5: + /mcl-wasm@0.7.9: + resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==} + engines: {node: '>=8.9.0'} + dev: true + + /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /mdast-squeeze-paragraphs/4.0.0: + /mdast-squeeze-paragraphs@4.0.0: resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} dependencies: unist-util-remove: 2.1.0 dev: false - /mdast-util-definitions/4.0.0: + /mdast-util-definitions@4.0.0: resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} dependencies: unist-util-visit: 2.0.3 dev: false - /mdast-util-to-hast/10.0.1: + /mdast-util-to-hast@10.0.1: resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} dependencies: '@types/mdast': 3.0.10 @@ -16661,57 +22391,69 @@ packages: unist-util-visit: 2.0.3 dev: false - /mdast-util-to-string/2.0.0: + /mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: false - /mdn-data/2.0.14: + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false - /mdn-data/2.0.4: + /mdn-data@2.0.4: resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} dev: false - /mdurl/1.0.1: + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - /meant/1.0.3: + /meant@1.0.3: resolution: {integrity: sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==} - dev: false - /media-typer/0.3.0: + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: false - /memfs/3.4.13: + /memfs@3.4.13: resolution: {integrity: sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==} engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.0.3 dev: false - /memoize-one/5.2.1: + /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false - /memory-fs/0.4.1: + /memory-fs@0.4.1: resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} dependencies: errno: 0.1.8 readable-stream: 2.3.8 dev: false - /memory-fs/0.5.0: + /memory-fs@0.5.0: resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} dependencies: errno: 0.1.8 readable-stream: 2.3.8 - dev: false - /meow/5.0.0: + /memory-level@1.0.0: + resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} + engines: {node: '>=12'} + dependencies: + abstract-level: 1.0.4 + functional-red-black-tree: 1.0.1 + module-error: 1.0.2 + dev: true + + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true + + /meow@5.0.0: resolution: {integrity: sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==} engines: {node: '>=6'} dependencies: @@ -16724,58 +22466,58 @@ packages: redent: 2.0.0 trim-newlines: 2.0.0 yargs-parser: 10.1.0 - dev: false - /merge-anything/2.4.4: + /merge-anything@2.4.4: resolution: {integrity: sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==} dependencies: is-what: 3.14.1 dev: false - /merge-descriptors/1.0.1: + /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: false - /merge-options/1.0.1: + /merge-options@1.0.1: resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} engines: {node: '>=4'} dependencies: is-plain-obj: 1.1.0 - dev: false - /merge-source-map/1.1.0: + /merge-source-map@1.1.0: resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} dependencies: source-map: 0.6.1 dev: false - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - - /merge/2.1.1: - resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - dev: false - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + + /merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} dev: false - /mersenne-twister/1.1.0: + /mersenne-twister@1.1.0: resolution: {integrity: sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==} dev: false - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: false - /microevent.ts/0.1.1: + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: true + + /microevent.ts@0.1.1: resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} dev: false - /micromatch/2.3.11: + /micromatch@2.3.11: resolution: {integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==} engines: {node: '>=0.10.0'} dependencies: @@ -16794,127 +22536,99 @@ packages: regex-cache: 0.4.4 dev: false - /micromatch/3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /micromatch/3.1.10_supports-color@6.1.0: + /micromatch@3.1.10(supports-color@6.1.0): resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} engines: {node: '>=0.10.0'} dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 - braces: 2.3.2_supports-color@6.1.0 + braces: 2.3.2(supports-color@6.1.0) define-property: 2.0.2 extend-shallow: 3.0.2 - extglob: 2.0.4_supports-color@6.1.0 + extglob: 2.0.4(supports-color@6.1.0) fragment-cache: 0.2.1 kind-of: 6.0.3 - nanomatch: 1.2.13_supports-color@6.1.0 + nanomatch: 1.2.13(supports-color@6.1.0) object.pick: 1.3.0 regex-not: 1.0.2 - snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon: 0.8.2(supports-color@6.1.0) to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: false - /miller-rabin/4.0.1: + /miller-rabin@4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true dependencies: bn.js: 4.12.0 brorand: 1.1.0 - dev: false - /mime-db/1.33.0: + /mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} dev: false - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: false - /mime-types/2.1.18: + /mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.33.0 dev: false - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: false - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: false - /mime/2.6.0: + /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} hasBin: true dev: false - /mimic-fn/1.2.0: + /mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} engines: {node: '>=4'} - dev: false - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: false - /mimic-response/1.0.1: + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} dev: false - /min-document/2.19.0: + /min-document@2.19.0: resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} dependencies: dom-walk: 0.1.2 dev: false - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: false - /mini-css-extract-plugin/0.6.0_webpack@4.46.0: + /mini-css-extract-plugin@0.6.0(webpack@4.46.0): resolution: {integrity: sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -16923,62 +22637,65 @@ packages: loader-utils: 1.4.2 normalize-url: 2.0.1 schema-utils: 1.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) webpack-sources: 1.4.3 dev: false - /mini-css-extract-plugin/2.7.2_webpack@5.75.0: + /mini-css-extract-plugin@2.7.2(webpack@5.76.0): resolution: {integrity: sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: schema-utils: 4.0.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /minimalistic-assert/1.0.1: + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false - /minimalistic-crypto-utils/1.0.1: + /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: false - /minimatch/3.0.4: + /minimatch@3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 dev: false - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/5.1.6: + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: false - /minimist-options/3.0.2: + /minimist-options@3.0.2: resolution: {integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==} engines: {node: '>= 4'} dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 - dev: false - /minimist/1.2.7: + /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: false - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /mississippi/3.0.0: + /mississippi@3.0.0: resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} engines: {node: '>=4.0.0'} dependencies: @@ -16994,49 +22711,86 @@ packages: through2: 2.0.5 dev: false - /mitt/1.2.0: + /mitt@1.2.0: resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} dev: false - /mixin-deep/1.3.2: + /mixin-deep@1.3.2: resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} engines: {node: '>=0.10.0'} dependencies: for-in: 1.0.2 is-extendable: 1.0.1 - dev: false - /mkdirp/0.3.0: + /mkdirp@0.3.0: resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) dev: false - /mkdirp/0.5.6: + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.8 - dev: false - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - /mock-socket/9.2.1: + /mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + dependencies: + obliterator: 2.0.4 + dev: true + + /mocha@10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /mock-socket@9.2.1: resolution: {integrity: sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag==} engines: {node: '>= 8'} dev: false - /moment/2.29.4: + /module-error@1.0.2: + resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + engines: {node: '>=10'} + dev: true + + /moment@2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false - /moo/0.5.2: + /moo@0.5.2: resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} dev: false - /move-concurrently/1.0.1: + /move-concurrently@1.0.1: resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} dependencies: aproba: 1.2.0 @@ -17047,28 +22801,25 @@ packages: run-queue: 1.0.3 dev: false - /mrmime/1.0.1: + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} dev: false - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - /multicast-dns-service-types/1.1.0: + /multicast-dns-service-types@1.1.0: resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} dev: false - /multicast-dns/6.2.3: + /multicast-dns@6.2.3: resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} hasBin: true dependencies: @@ -17076,7 +22827,7 @@ packages: thunky: 1.1.0 dev: false - /multicast-dns/7.2.5: + /multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true dependencies: @@ -17084,40 +22835,27 @@ packages: thunky: 1.1.0 dev: false - /mute-stream/0.0.8: + /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: false - /nan/2.17.0: + /nan@2.17.0: resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} dev: false - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: false + dev: true - /nanomatch/1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true dev: false - /nanomatch/1.2.13_supports-color@6.1.0: + /nanomatch@1.2.13(supports-color@6.1.0): resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} engines: {node: '>=0.10.0'} dependencies: @@ -17130,21 +22868,23 @@ packages: kind-of: 6.0.3 object.pick: 1.3.0 regex-not: 1.0.2 - snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon: 0.8.2(supports-color@6.1.0) to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /natural-compare-lite/1.4.0: + /napi-macros@2.2.2: + resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} + dev: true + + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: false - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: false - /nearley/2.20.1: + /nearley@2.20.1: resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} hasBin: true dependencies: @@ -17154,20 +22894,18 @@ packages: randexp: 0.4.6 dev: false - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: false - /neo-async/2.6.2: + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false - /next-tick/1.1.0: + /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: false - /next/13.0.5_biqbaboplfbrettd7655fr4n2y: + /next@13.0.5(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-awpc3DkphyKydwCotcBnuKwh6hMqkT5xdiBK4OatJtOZurDPBYLP62jtM2be/4OunpmwIbsS0Eyv+ZGU97ciEg==} engines: {node: '>=14.6.0'} hasBin: true @@ -17190,8 +22928,8 @@ packages: caniuse-lite: 1.0.30001462 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - styled-jsx: 5.1.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.0(@babel/core@7.21.8)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.0.5 '@next/swc-android-arm64': 13.0.5 @@ -17211,40 +22949,42 @@ packages: - babel-plugin-macros dev: false - /nice-try/1.0.5: + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: false - /no-case/2.3.2: + /no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} dependencies: lower-case: 1.1.4 dev: false - /no-case/3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /node-domexception/1.0.0: + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: true + + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} dev: false - /node-emoji/1.11.0: + /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 - dev: false - /node-fetch/2.6.1: + /node-fetch@2.6.1: resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} engines: {node: 4.x || >=6.0.0} dev: false - /node-fetch/2.6.7: + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -17254,9 +22994,8 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: false - /node-fetch/3.3.0: + /node-fetch@3.3.0: resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -17265,26 +23004,24 @@ packages: formdata-polyfill: 4.0.10 dev: false - /node-forge/0.10.0: + /node-forge@0.10.0: resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} engines: {node: '>= 6.0.0'} dev: false - /node-forge/1.3.1: + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} dev: false - /node-gyp-build/4.6.0: + /node-gyp-build@4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true - dev: false - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: false - /node-libs-browser/2.2.1: + /node-libs-browser@2.2.1: resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} dependencies: assert: 1.5.0 @@ -17312,61 +23049,68 @@ packages: vm-browserify: 1.1.2 dev: false - /node-notifier/8.0.2: + /node-notifier@8.0.2: resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} requiresBuild: true dependencies: growly: 1.3.0 is-wsl: 2.2.0 - semver: 7.3.8 + semver: 7.5.2 shellwords: 0.1.1 uuid: 8.3.2 which: 2.0.2 - dev: false optional: true - /node-releases/1.1.77: + /node-releases@1.1.77: resolution: {integrity: sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==} dev: false - /node-releases/2.0.10: + /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - dev: false - /nopt/1.0.10: + /nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + dev: true + + /nopt@1.0.10: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true dependencies: abbrev: 1.1.1 dev: false - /normalize-package-data/2.5.0: + /nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.1 semver: 5.7.1 validate-npm-package-license: 3.0.4 - dev: false - /normalize-path/2.1.1: + /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 - dev: false - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: false - /normalize-range/0.1.2: + /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: false - /normalize-url/2.0.1: + /normalize-url@2.0.1: resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} engines: {node: '>=4'} dependencies: @@ -17375,93 +23119,99 @@ packages: sort-keys: 2.0.0 dev: false - /normalize-url/3.3.0: + /normalize-url@3.3.0: resolution: {integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==} engines: {node: '>=6'} dev: false - /normalize-url/4.5.1: + /normalize-url@4.5.1: resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} engines: {node: '>=8'} dev: false - /normalize-url/6.1.0: + /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: false - /npm-run-path/2.0.2: + /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} dependencies: path-key: 2.0.1 - dev: false - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: false - /nprogress/0.2.0: + /nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false - /nth-check/1.0.2: + /nth-check@1.0.2: resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} dependencies: boolbase: 1.0.0 dev: false - /nth-check/2.1.1: + /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: false - /num2fraction/1.2.2: + /num2fraction@1.2.2: resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} dev: false - /numbro/2.3.6: + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: true + + /numbro@2.3.6: resolution: {integrity: sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg==} dependencies: bignumber.js: 8.1.1 dev: false - /nwsapi/2.2.2: + /nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} - dev: false - /oauth-sign/0.9.0: + /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: false - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: false - /object-copy/0.1.0: + /object-copy@0.1.0: resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} engines: {node: '>=0.10.0'} dependencies: copy-descriptor: 0.1.1 define-property: 0.2.5 kind-of: 3.2.2 - dev: false - /object-hash/3.0.0: + /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} dev: false - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: false - /object-is/1.1.5: + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: @@ -17469,19 +23219,30 @@ packages: define-properties: 1.2.0 dev: false - /object-keys/1.1.1: + /object-keys@0.2.0: + resolution: {integrity: sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==} + deprecated: Please update to the latest object-keys + dependencies: + foreach: 2.0.6 + indexof: 0.0.1 + is: 0.2.7 + dev: true + + /object-keys@0.4.0: + resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} + dev: true + + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: false - /object-visit/1.0.1: + /object-visit@1.0.1: resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: false - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -17489,9 +23250,8 @@ packages: define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: false - /object.entries/1.1.6: + /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: @@ -17500,7 +23260,7 @@ packages: es-abstract: 1.21.1 dev: false - /object.fromentries/2.0.6: + /object.fromentries@2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: @@ -17509,7 +23269,7 @@ packages: es-abstract: 1.21.1 dev: false - /object.getownpropertydescriptors/2.1.5: + /object.getownpropertydescriptors@2.1.5: resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} engines: {node: '>= 0.8'} dependencies: @@ -17519,14 +23279,14 @@ packages: es-abstract: 1.21.1 dev: false - /object.hasown/1.1.2: + /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 es-abstract: 1.21.1 dev: false - /object.omit/2.0.1: + /object.omit@2.0.1: resolution: {integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==} engines: {node: '>=0.10.0'} dependencies: @@ -17534,58 +23294,62 @@ packages: is-extendable: 0.1.1 dev: false - /object.pick/1.3.0: + /object.pick@1.3.0: resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: false - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.1 - dev: false - /obuf/1.1.2: + /obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + dev: true + + /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: false - /on-finished/2.4.1: + /octal@1.0.0: + resolution: {integrity: sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==} + dev: true + + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: false - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: false - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/2.0.1: + /onetime@2.0.1: resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 - dev: false - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: false - /open/7.4.2: + /open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} dependencies: @@ -17593,7 +23357,7 @@ packages: is-wsl: 2.2.0 dev: false - /open/8.4.2: + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} dependencies: @@ -17602,47 +23366,46 @@ packages: is-wsl: 2.2.0 dev: false - /opencollective-postinstall/2.0.3: + /opencollective-postinstall@2.0.3: resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} hasBin: true dev: false - /opener/1.5.2: + /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true dev: false - /opn/5.5.0: + /opn@5.5.0: resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} engines: {node: '>=4'} dependencies: is-wsl: 1.1.0 - dev: false - /optimism/0.10.3: + /optimism@0.10.3: resolution: {integrity: sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==} dependencies: '@wry/context': 0.4.4 dev: false - /optimism/0.16.2: + /optimism@0.16.2: resolution: {integrity: sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==} dependencies: '@wry/context': 0.7.0 '@wry/trie': 0.3.2 dev: false - /optimize-css-assets-webpack-plugin/5.0.8_webpack@4.46.0: + /optimize-css-assets-webpack-plugin@5.0.8(webpack@4.46.0): resolution: {integrity: sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==} peerDependencies: webpack: ^4.0.0 dependencies: cssnano: 4.1.11 last-call-webpack-plugin: 3.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) dev: false - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -17653,7 +23416,7 @@ packages: type-check: 0.3.2 word-wrap: 1.2.3 - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -17663,9 +23426,8 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 - dev: false - /ora/2.1.0: + /ora@2.1.0: resolution: {integrity: sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==} engines: {node: '>=4'} dependencies: @@ -17675,9 +23437,8 @@ packages: log-symbols: 2.2.0 strip-ansi: 4.0.0 wcwidth: 1.0.1 - dev: false - /ora/5.4.1: + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} dependencies: @@ -17692,99 +23453,92 @@ packages: wcwidth: 1.0.1 dev: false - /os-browserify/0.3.0: + /ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + dev: true + + /os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} dev: false - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: false - /p-cancelable/1.1.0: + /p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} dev: false - /p-each-series/2.2.0: + /p-each-series@2.2.0: resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} engines: {node: '>=8'} - dev: false - /p-finally/1.0.0: + /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - dev: false - /p-limit/1.3.0: + /p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} dependencies: p-try: 1.0.0 - dev: false - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - dev: false - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: false - /p-locate/2.0.0: + /p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} dependencies: p-limit: 1.3.0 - dev: false - /p-locate/3.0.0: + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} dependencies: p-limit: 2.3.0 - dev: false - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: false - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: false - /p-map/2.1.0: + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} dev: false - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 - dev: false - /p-retry/3.0.1: + /p-retry@3.0.1: resolution: {integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==} engines: {node: '>=6'} dependencies: retry: 0.12.0 dev: false - /p-retry/4.6.2: + /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} dependencies: @@ -17792,17 +23546,15 @@ packages: retry: 0.13.1 dev: false - /p-try/1.0.0: + /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} - dev: false - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - dev: false - /package-json/4.0.1: + /package-json@4.0.1: resolution: {integrity: sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==} engines: {node: '>=4'} dependencies: @@ -17810,9 +23562,8 @@ packages: registry-auth-token: 3.4.0 registry-url: 3.1.0 semver: 5.7.1 - dev: false - /package-json/6.5.0: + /package-json@6.5.0: resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} engines: {node: '>=8'} dependencies: @@ -17822,11 +23573,11 @@ packages: semver: 6.3.0 dev: false - /pako/1.0.11: + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: false - /parallel-transform/1.2.0: + /parallel-transform@1.2.0: resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} dependencies: cyclist: 1.0.1 @@ -17834,27 +23585,26 @@ packages: readable-stream: 2.3.8 dev: false - /param-case/2.1.1: + /param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} dependencies: no-case: 2.3.2 dev: false - /param-case/3.0.4: + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - dev: false - /parse-asn1/5.1.6: + /parse-asn1@5.1.6: resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} dependencies: asn1.js: 5.4.1 @@ -17862,9 +23612,12 @@ packages: evp_bytestokey: 1.0.3 pbkdf2: 3.1.2 safe-buffer: 5.2.1 - dev: false - /parse-entities/2.0.0: + /parse-cache-control@1.0.1: + resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} + dev: true + + /parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} dependencies: character-entities: 1.2.4 @@ -17875,7 +23628,7 @@ packages: is-hexadecimal: 1.0.4 dev: false - /parse-glob/3.0.4: + /parse-glob@3.0.4: resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==} engines: {node: '>=0.10.0'} dependencies: @@ -17885,138 +23638,129 @@ packages: is-glob: 2.0.1 dev: false - /parse-json/4.0.0: + /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: false - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: false - /parse-numeric-range/1.3.0: + /parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} dev: false - /parse-passwd/1.0.0: + /parse-passwd@1.0.0: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - dev: false - /parse-srcset/1.0.2: + /parse-srcset@1.0.2: resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} dev: false - /parse5-htmlparser2-tree-adapter/7.0.0: + /parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: domhandler: 5.0.3 parse5: 7.1.2 dev: false - /parse5/6.0.1: + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false - /parse5/7.1.2: + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: false - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: false - /pascal-case/3.1.2: + /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /pascalcase/0.1.1: + /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} - dev: false - /path-browserify/0.0.1: + /path-browserify@0.0.1: resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} dev: false - /path-dirname/1.0.2: + /path-dirname@1.0.2: resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} dev: false - /path-exists/3.0.0: + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} - dev: false - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: false - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-is-inside/1.0.2: + /path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: false - /path-key/2.0.1: + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} - dev: false - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: false - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false - /path-to-regexp/0.1.7: + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: false - /path-to-regexp/1.8.0: + /path-to-regexp@1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} dependencies: isarray: 0.0.1 dev: false - /path-to-regexp/2.2.1: + /path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} dev: false - /path-type/3.0.0: + /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} dependencies: pify: 3.0.0 - dev: false - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: false - /pbkdf2/3.1.2: + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} dependencies: @@ -18025,135 +23769,123 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: false - /performance-now/2.1.0: + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: false - /picocolors/0.2.1: + /picocolors@0.2.1: resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} dev: false - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: false - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: false - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: false - /pify/3.0.0: + /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - dev: false - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: false - /pinkie-promise/2.0.1: + /pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 dev: false - /pinkie/2.0.4: + /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} dev: false - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - dev: false - /pkg-dir/2.0.0: + /pkg-dir@2.0.0: resolution: {integrity: sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==} engines: {node: '>=4'} dependencies: find-up: 2.1.0 - dev: false - /pkg-dir/3.0.0: + /pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} dependencies: find-up: 3.0.0 - dev: false - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - dev: false - /pkg-up/3.1.0: + /pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} dependencies: find-up: 3.0.0 dev: false - /plur/3.1.1: + /plur@3.1.1: resolution: {integrity: sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==} engines: {node: '>=6'} dependencies: irregular-plurals: 2.0.0 - dev: false - /popper.js/1.16.1: + /popper.js@1.16.1: resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 dev: false - /portfinder/1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - dependencies: - async: 2.6.4 - debug: 3.2.7 - mkdirp: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: false - - /portfinder/1.0.32_supports-color@6.1.0: + /portfinder@1.0.32(supports-color@6.1.0): resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} dependencies: async: 2.6.4 - debug: 3.2.7_supports-color@6.1.0 + debug: 3.2.7(supports-color@6.1.0) mkdirp: 0.5.6 transitivePeerDependencies: - supports-color dev: false - /posix-character-classes/0.1.1: + /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} - dev: false - /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.21: + /postcss-attribute-case-insensitive@5.0.2(postcss@8.4.21): resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-attribute-case-insensitive@6.0.2(postcss@8.4.23): + resolution: {integrity: sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-browser-comments/4.0.0_jrpp4geoaqu5dz2gragkckznb4: + /postcss-browser-comments@4.0.0(browserslist@4.21.5)(postcss@8.4.21): resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} engines: {node: '>=8'} peerDependencies: @@ -18164,25 +23896,46 @@ packages: postcss: 8.4.21 dev: false - /postcss-calc/7.0.5: + /postcss-browser-comments@4.0.0(browserslist@4.21.5)(postcss@8.4.23): + resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} + engines: {node: '>=8'} + peerDependencies: + browserslist: '>=4' + postcss: '>=8' + dependencies: + browserslist: 4.21.5 + postcss: 8.4.23 + dev: false + + /postcss-calc@7.0.5: resolution: {integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==} dependencies: postcss: 7.0.39 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-calc/8.2.4_postcss@8.4.21: + /postcss-calc@8.2.4(postcss@8.4.21): resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: postcss: ^8.2.2 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-calc@8.2.4(postcss@8.4.23): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-clamp/4.1.0_postcss@8.4.21: + /postcss-clamp@4.1.0(postcss@8.4.21): resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} engines: {node: '>=7.6.0'} peerDependencies: @@ -18192,7 +23945,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-color-functional-notation/4.2.4_postcss@8.4.21: + /postcss-clamp@4.1.0(postcss@8.4.23): + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-color-functional-notation@4.2.4(postcss@8.4.21): resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18202,7 +23965,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-color-hex-alpha/8.0.4_postcss@8.4.21: + /postcss-color-functional-notation@5.0.2(postcss@8.4.23): + resolution: {integrity: sha512-M6ygxWOyd6eWf3sd1Lv8xi4SeF4iBPfJvkfMU4ITh8ExJc1qhbvh/U8Cv/uOvBgUVOMDdScvCdlg8+hREQzs7w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-color-hex-alpha@8.0.4(postcss@8.4.21): resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18212,7 +23985,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-color-rebeccapurple/7.1.1_postcss@8.4.21: + /postcss-color-hex-alpha@9.0.2(postcss@8.4.23): + resolution: {integrity: sha512-SfPjgr//VQ/DOCf80STIAsdAs7sbIbxATvVmd+Ec7JvR8onz9pjawhq3BJM3Pie40EE3TyB0P6hft16D33Nlyg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-color-rebeccapurple@7.1.1(postcss@8.4.21): resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18222,7 +24005,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-colormin/4.0.3: + /postcss-color-rebeccapurple@8.0.2(postcss@8.4.23): + resolution: {integrity: sha512-xWf/JmAxVoB5bltHpXk+uGRoGFwu4WDAR7210el+iyvTdqiKpDhtcT8N3edXMoVJY0WHFMrKMUieql/wRNiXkw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-colormin@4.0.3: resolution: {integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==} engines: {node: '>=6.9.0'} dependencies: @@ -18233,7 +24026,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-colormin/5.3.1_postcss@8.4.21: + /postcss-colormin@5.3.1(postcss@8.4.21): resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18246,7 +24039,20 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-convert-values/4.0.1: + /postcss-colormin@5.3.1(postcss@8.4.23): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-convert-values@4.0.1: resolution: {integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==} engines: {node: '>=6.9.0'} dependencies: @@ -18254,7 +24060,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-convert-values/5.1.3_postcss@8.4.21: + /postcss-convert-values@5.1.3(postcss@8.4.21): resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18265,7 +24071,18 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-custom-media/8.0.2_postcss@8.4.21: + /postcss-convert-values@5.1.3(postcss@8.4.23): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-custom-media@8.0.2(postcss@8.4.21): resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18275,7 +24092,20 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-custom-properties/12.1.11_postcss@8.4.21: + /postcss-custom-media@9.1.3(postcss@8.4.23): + resolution: {integrity: sha512-W1C4Fu6KAZ7sKYQCuGMr8gyaE4BtjTQGPLVS4m0WCaWM6l7PgVbvmDeb4ClBc5R/7kdwESYf0hdxGtEPhi9CLA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.2(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/media-query-list-parser': 2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + postcss: 8.4.23 + dev: false + + /postcss-custom-properties@12.1.11(postcss@8.4.21): resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18285,34 +24115,70 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-custom-selectors/6.0.3_postcss@8.4.21: + /postcss-custom-properties@13.1.5(postcss@8.4.23): + resolution: {integrity: sha512-98DXk81zTGqMVkGANysMHbGIg3voH383DYo3/+c+Abzay3nao+vM/f4Jgzsakk9S7BDsEw5DiW7sFy5G4W2wLA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.2(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-custom-selectors@6.0.3(postcss@8.4.21): resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.3 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-custom-selectors@7.1.3(postcss@8.4.23): + resolution: {integrity: sha512-GTVscax6O/8s7agFF0HsOoIyjrnAbLjgCUle8tn+0oDGJuVx7p56U7ClSRoC49poxFuMfu2B4Q8GnxSCOeuFKw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/cascade-layer-name-parser': 1.0.2(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-dir-pseudo-class/6.0.5_postcss@8.4.21: + /postcss-dir-pseudo-class@6.0.5(postcss@8.4.21): resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-dir-pseudo-class@7.0.2(postcss@8.4.23): + resolution: {integrity: sha512-cMnslilYxBf9k3qejnovrUONZx1rXeUZJw06fgIUBzABJe3D2LiLL5WAER7Imt3nrkaIgG05XZBztueLEf5P8w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-discard-comments/4.0.2: + /postcss-discard-comments@4.0.2: resolution: {integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==} engines: {node: '>=6.9.0'} dependencies: postcss: 7.0.39 dev: false - /postcss-discard-comments/5.1.2_postcss@8.4.21: + /postcss-discard-comments@5.1.2(postcss@8.4.21): resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18321,14 +24187,23 @@ packages: postcss: 8.4.21 dev: false - /postcss-discard-duplicates/4.0.2: + /postcss-discard-comments@5.1.2(postcss@8.4.23): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-discard-duplicates@4.0.2: resolution: {integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==} engines: {node: '>=6.9.0'} dependencies: postcss: 7.0.39 dev: false - /postcss-discard-duplicates/5.1.0_postcss@8.4.21: + /postcss-discard-duplicates@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18337,14 +24212,23 @@ packages: postcss: 8.4.21 dev: false - /postcss-discard-empty/4.0.1: + /postcss-discard-duplicates@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-discard-empty@4.0.1: resolution: {integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==} engines: {node: '>=6.9.0'} dependencies: postcss: 7.0.39 dev: false - /postcss-discard-empty/5.1.1_postcss@8.4.21: + /postcss-discard-empty@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18353,14 +24237,23 @@ packages: postcss: 8.4.21 dev: false - /postcss-discard-overridden/4.0.1: + /postcss-discard-empty@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-discard-overridden@4.0.1: resolution: {integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==} engines: {node: '>=6.9.0'} dependencies: postcss: 7.0.39 dev: false - /postcss-discard-overridden/5.1.0_postcss@8.4.21: + /postcss-discard-overridden@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18369,28 +24262,48 @@ packages: postcss: 8.4.21 dev: false - /postcss-discard-unused/5.1.0_postcss@8.4.21: + /postcss-discard-overridden@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-discard-unused@5.1.0(postcss@8.4.23): resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-double-position-gradients/3.1.2_postcss@8.4.21: + /postcss-double-position-gradients@3.1.2(postcss@8.4.21): resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: false - /postcss-env-function/4.0.6_postcss@8.4.21: + /postcss-double-position-gradients@4.0.3(postcss@8.4.23): + resolution: {integrity: sha512-Td1+C+kFCadnhRBMMf6D/eiQxjp33eAgwgMcLNYzZPcgXt1iU6vi/qEJ/YObp4nwn3QOtudFBMUOVHoGqmpfiA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-env-function@4.0.6(postcss@8.4.21): resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18400,7 +24313,7 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-flexbugs-fixes/5.0.2_postcss@8.4.21: + /postcss-flexbugs-fixes@5.0.2(postcss@8.4.21): resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} peerDependencies: postcss: ^8.1.4 @@ -18408,27 +24321,55 @@ packages: postcss: 8.4.21 dev: false - /postcss-focus-visible/6.0.4_postcss@8.4.21: + /postcss-flexbugs-fixes@5.0.2(postcss@8.4.23): + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-focus-visible@6.0.4(postcss@8.4.21): resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-focus-visible@8.0.2(postcss@8.4.23): + resolution: {integrity: sha512-f/Vd+EC/GaKElknU59esVcRYr/Y3t1ZAQyL4u2xSOgkDy4bMCmG7VP5cGvj3+BTLNE9ETfEuz2nnt4qkZwTTeA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-focus-within/5.0.4_postcss@8.4.21: + /postcss-focus-within@5.0.4(postcss@8.4.21): resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-focus-within@7.0.2(postcss@8.4.23): + resolution: {integrity: sha512-AHAJ89UQBcqBvFgQJE9XasGuwMNkKsGj4D/f9Uk60jFmEBHpAL14DrnSk3Rj+SwZTr/WUG+mh+Rvf8fid/346w==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-font-variant/5.0.0_postcss@8.4.21: + /postcss-font-variant@5.0.0(postcss@8.4.21): resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} peerDependencies: postcss: ^8.1.0 @@ -18436,7 +24377,15 @@ packages: postcss: 8.4.21 dev: false - /postcss-gap-properties/3.0.5_postcss@8.4.21: + /postcss-font-variant@5.0.0(postcss@8.4.23): + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-gap-properties@3.0.5(postcss@8.4.21): resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18445,7 +24394,16 @@ packages: postcss: 8.4.21 dev: false - /postcss-image-set-function/4.0.7_postcss@8.4.21: + /postcss-gap-properties@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-V5OuQGw4lBumPlwHWk/PRfMKjaq/LTGR4WDTemIMCaMevArVfCCA9wBJiL1VjDAd+rzuCIlkRoRvDsSiAaZ4Fg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-image-set-function@4.0.7(postcss@8.4.21): resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18455,7 +24413,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-import/14.1.0_postcss@8.4.21: + /postcss-image-set-function@5.0.2(postcss@8.4.23): + resolution: {integrity: sha512-Sszjwo0ubETX0Fi5MvpYzsONwrsjeabjMoc5YqHvURFItXgIu3HdCjcVuVKGMPGzKRhgaknmdM5uVWInWPJmeg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-import@14.1.0(postcss@8.4.21): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -18467,7 +24435,19 @@ packages: resolve: 1.22.1 dev: false - /postcss-initial/4.0.1_postcss@8.4.21: + /postcss-import@14.1.0(postcss@8.4.23): + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + + /postcss-initial@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} peerDependencies: postcss: ^8.0.0 @@ -18475,7 +24455,15 @@ packages: postcss: 8.4.21 dev: false - /postcss-js/4.0.1_postcss@8.4.21: + /postcss-initial@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-js@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: @@ -18485,26 +24473,67 @@ packages: postcss: 8.4.21 dev: false - /postcss-lab-function/4.2.1_postcss@8.4.21: + /postcss-js@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.23 + dev: false + + /postcss-lab-function@4.2.1(postcss@8.4.21): resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-lab-function@5.2.2(postcss@8.4.23): + resolution: {integrity: sha512-O5LrVYzOD3anfPqvSL1HiQ8PpKAav74Gst3pXgZBHSFo6t5sws3dLGTQMnw4hgn1t064SODWAjb9KcC39N820A==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/css-color-parser': 1.2.0(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + postcss: 8.4.23 + dev: false + + /postcss-load-config@2.1.2: + resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} + engines: {node: '>= 4'} + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + dev: false + + /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 postcss: 8.4.21 - postcss-value-parser: 4.2.0 - dev: false - - /postcss-load-config/2.1.2: - resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} - engines: {node: '>= 4'} - dependencies: - cosmiconfig: 5.2.1 - import-cwd: 2.1.0 + ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) + yaml: 1.10.2 dev: false - /postcss-load-config/3.1.4_postcss@8.4.21: + /postcss-load-config@3.1.4(postcss@8.4.23)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -18517,11 +24546,12 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.21 + postcss: 8.4.23 + ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) yaml: 1.10.2 dev: false - /postcss-loader/3.0.0: + /postcss-loader@3.0.0(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1): resolution: {integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==} engines: {node: '>= 6'} peerDependencies: @@ -18531,11 +24561,14 @@ packages: dependencies: loader-utils: 1.4.2 postcss: 7.0.39 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.23) postcss-load-config: 2.1.2 + postcss-normalize: 10.0.1(browserslist@4.21.5)(postcss@8.4.23) + postcss-preset-env: 8.4.1(postcss@8.4.23) schema-utils: 1.0.0 dev: false - /postcss-loader/6.2.1_xp6u6xd3iykakxeppj4ia62wk4: + /postcss-loader@6.2.1(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@7.8.3)(postcss@8.4.21)(webpack@5.76.0): resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -18548,14 +24581,14 @@ packages: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.4.21 - postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21 - postcss-normalize: 10.0.1_jrpp4geoaqu5dz2gragkckznb4 - postcss-preset-env: 7.8.3_postcss@8.4.21 - semver: 7.3.8 - webpack: 5.75.0_webpack-cli@3.3.12 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.21) + postcss-normalize: 10.0.1(browserslist@4.21.5)(postcss@8.4.21) + postcss-preset-env: 7.8.3(postcss@8.4.21) + semver: 7.5.2 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /postcss-loader/7.0.2_6jdsrmfenkuhhw3gx4zvjlznce: + /postcss-loader@7.0.2(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(postcss@8.4.21)(webpack@5.76.0): resolution: {integrity: sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -18568,11 +24601,14 @@ packages: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.4.21 - semver: 7.3.8 - webpack: 5.75.0_webpack-cli@3.3.12 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.23) + postcss-normalize: 10.0.1(browserslist@4.21.5)(postcss@8.4.23) + postcss-preset-env: 8.4.1(postcss@8.4.23) + semver: 7.5.2 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /postcss-logical/5.0.4_postcss@8.4.21: + /postcss-logical@5.0.4(postcss@8.4.21): resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -18581,7 +24617,17 @@ packages: postcss: 8.4.21 dev: false - /postcss-media-minmax/5.0.0_postcss@8.4.21: + /postcss-logical@6.2.0(postcss@8.4.23): + resolution: {integrity: sha512-aqlfKGaY0nnbgI9jwUikp4gJKBqcH5noU/EdnIVceghaaDPYhZuyJVxlvWNy55tlTG5tunRKCTAX9yljLiFgmw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-media-minmax@5.0.0(postcss@8.4.21): resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -18590,18 +24636,18 @@ packages: postcss: 8.4.21 dev: false - /postcss-merge-idents/5.1.1_postcss@8.4.21: + /postcss-merge-idents@5.1.1(postcss@8.4.23): resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0_postcss@8.4.21 - postcss: 8.4.21 + cssnano-utils: 3.1.0(postcss@8.4.23) + postcss: 8.4.23 postcss-value-parser: 4.2.0 dev: false - /postcss-merge-longhand/4.0.11: + /postcss-merge-longhand@4.0.11: resolution: {integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==} engines: {node: '>=6.9.0'} dependencies: @@ -18611,7 +24657,7 @@ packages: stylehacks: 4.0.3 dev: false - /postcss-merge-longhand/5.1.7_postcss@8.4.21: + /postcss-merge-longhand@5.1.7(postcss@8.4.21): resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18619,10 +24665,21 @@ packages: dependencies: postcss: 8.4.21 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1_postcss@8.4.21 + stylehacks: 5.1.1(postcss@8.4.21) + dev: false + + /postcss-merge-longhand@5.1.7(postcss@8.4.23): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.23) dev: false - /postcss-merge-rules/4.0.3: + /postcss-merge-rules@4.0.3: resolution: {integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==} engines: {node: '>=6.9.0'} dependencies: @@ -18634,7 +24691,7 @@ packages: vendors: 1.0.4 dev: false - /postcss-merge-rules/5.1.4_postcss@8.4.21: + /postcss-merge-rules@5.1.4(postcss@8.4.21): resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18642,12 +24699,25 @@ packages: dependencies: browserslist: 4.21.5 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0_postcss@8.4.21 + cssnano-utils: 3.1.0(postcss@8.4.21) postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-merge-rules@5.1.4(postcss@8.4.23): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-minify-font-values/4.0.2: + /postcss-minify-font-values@4.0.2: resolution: {integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==} engines: {node: '>=6.9.0'} dependencies: @@ -18655,7 +24725,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-minify-font-values/5.1.0_postcss@8.4.21: + /postcss-minify-font-values@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18665,7 +24735,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-minify-gradients/4.0.2: + /postcss-minify-font-values@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-gradients@4.0.2: resolution: {integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==} engines: {node: '>=6.9.0'} dependencies: @@ -18675,19 +24755,31 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-minify-gradients/5.1.1_postcss@8.4.21: + /postcss-minify-gradients@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0_postcss@8.4.21 + cssnano-utils: 3.1.0(postcss@8.4.21) postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-params/4.0.2: + /postcss-minify-gradients@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-params@4.0.2: resolution: {integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==} engines: {node: '>=6.9.0'} dependencies: @@ -18699,19 +24791,31 @@ packages: uniqs: 2.0.0 dev: false - /postcss-minify-params/5.1.4_postcss@8.4.21: + /postcss-minify-params@5.1.4(postcss@8.4.21): resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.21.5 - cssnano-utils: 3.1.0_postcss@8.4.21 + cssnano-utils: 3.1.0(postcss@8.4.21) postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-selectors/4.0.2: + /postcss-minify-params@5.1.4(postcss@8.4.23): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + cssnano-utils: 3.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-selectors@4.0.2: resolution: {integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==} engines: {node: '>=6.9.0'} dependencies: @@ -18721,117 +24825,148 @@ packages: postcss-selector-parser: 3.1.2 dev: false - /postcss-minify-selectors/5.2.1_postcss@8.4.21: + /postcss-minify-selectors@5.2.1(postcss@8.4.21): resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-extract-imports/2.0.0: + /postcss-minify-selectors@5.2.1(postcss@8.4.23): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-modules-extract-imports@2.0.0: resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} engines: {node: '>= 6'} dependencies: postcss: 7.0.39 dev: false - /postcss-modules-extract-imports/3.0.0_postcss@8.4.21: + /postcss-modules-extract-imports@3.0.0(postcss@8.4.23): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 dev: false - /postcss-modules-local-by-default/2.0.6: + /postcss-modules-local-by-default@2.0.6: resolution: {integrity: sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==} engines: {node: '>= 6'} dependencies: postcss: 7.0.39 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 postcss-value-parser: 3.3.1 dev: false - /postcss-modules-local-by-default/4.0.0_postcss@8.4.21: + /postcss-modules-local-by-default@4.0.0(postcss@8.4.23): resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.21 - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + icss-utils: 5.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-modules-scope/2.2.0: + /postcss-modules-scope@2.2.0: resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} engines: {node: '>= 6'} dependencies: postcss: 7.0.39 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-scope/3.0.0_postcss@8.4.21: + /postcss-modules-scope@3.0.0(postcss@8.4.23): resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-values/2.0.0: + /postcss-modules-values@2.0.0: resolution: {integrity: sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==} dependencies: icss-replace-symbols: 1.1.0 postcss: 7.0.39 dev: false - /postcss-modules-values/4.0.0_postcss@8.4.21: + /postcss-modules-values@4.0.0(postcss@8.4.23): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.21 - postcss: 8.4.21 + icss-utils: 5.1.0(postcss@8.4.23) + postcss: 8.4.23 dev: false - /postcss-nested/6.0.0_postcss@8.4.21: + /postcss-nested@6.0.0(postcss@8.4.21): resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 dev: false - /postcss-nesting/10.2.0_postcss@8.4.21: + /postcss-nested@6.0.0(postcss@8.4.23): + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-nesting@10.2.0(postcss@8.4.21): resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 dev: false - /postcss-normalize-charset/4.0.1: + /postcss-nesting@11.2.2(postcss@8.4.23): + resolution: {integrity: sha512-aOTiUniAB1bcPE6GGiynWRa6PZFPhOTAm5q3q5cem6QeSijIHHkWr6gs65ukCZMXeak8yXeZVbBJET3VM+HlhA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-normalize-charset@4.0.1: resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} engines: {node: '>=6.9.0'} dependencies: postcss: 7.0.39 dev: false - /postcss-normalize-charset/5.1.0_postcss@8.4.21: + /postcss-normalize-charset@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18840,7 +24975,16 @@ packages: postcss: 8.4.21 dev: false - /postcss-normalize-display-values/4.0.2: + /postcss-normalize-charset@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-normalize-display-values@4.0.2: resolution: {integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==} engines: {node: '>=6.9.0'} dependencies: @@ -18849,7 +24993,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-display-values/5.1.0_postcss@8.4.21: + /postcss-normalize-display-values@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18859,7 +25003,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-positions/4.0.2: + /postcss-normalize-display-values@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-positions@4.0.2: resolution: {integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==} engines: {node: '>=6.9.0'} dependencies: @@ -18869,7 +25023,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-positions/5.1.1_postcss@8.4.21: + /postcss-normalize-positions@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18879,7 +25033,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-repeat-style/4.0.2: + /postcss-normalize-positions@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-repeat-style@4.0.2: resolution: {integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==} engines: {node: '>=6.9.0'} dependencies: @@ -18889,7 +25053,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-repeat-style/5.1.1_postcss@8.4.21: + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18899,7 +25063,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-string/4.0.2: + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-string@4.0.2: resolution: {integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==} engines: {node: '>=6.9.0'} dependencies: @@ -18908,7 +25082,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-string/5.1.0_postcss@8.4.21: + /postcss-normalize-string@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18918,7 +25092,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-timing-functions/4.0.2: + /postcss-normalize-string@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-timing-functions@4.0.2: resolution: {integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==} engines: {node: '>=6.9.0'} dependencies: @@ -18927,7 +25111,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-timing-functions/5.1.0_postcss@8.4.21: + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18937,7 +25121,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-unicode/4.0.1: + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-unicode@4.0.1: resolution: {integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==} engines: {node: '>=6.9.0'} dependencies: @@ -18946,7 +25140,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-unicode/5.1.1_postcss@8.4.21: + /postcss-normalize-unicode@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18957,7 +25151,18 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-url/4.0.1: + /postcss-normalize-unicode@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-url@4.0.1: resolution: {integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==} engines: {node: '>=6.9.0'} dependencies: @@ -18967,7 +25172,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-url/5.1.0_postcss@8.4.21: + /postcss-normalize-url@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18978,7 +25183,18 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-whitespace/4.0.2: + /postcss-normalize-url@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-whitespace@4.0.2: resolution: {integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==} engines: {node: '>=6.9.0'} dependencies: @@ -18986,7 +25202,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-normalize-whitespace/5.1.1_postcss@8.4.21: + /postcss-normalize-whitespace@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -18996,7 +25212,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-normalize/10.0.1_jrpp4geoaqu5dz2gragkckznb4: + /postcss-normalize-whitespace@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize@10.0.1(browserslist@4.21.5)(postcss@8.4.21): resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} engines: {node: '>= 12'} peerDependencies: @@ -19006,11 +25232,25 @@ packages: '@csstools/normalize.css': 12.0.0 browserslist: 4.21.5 postcss: 8.4.21 - postcss-browser-comments: 4.0.0_jrpp4geoaqu5dz2gragkckznb4 + postcss-browser-comments: 4.0.0(browserslist@4.21.5)(postcss@8.4.21) + sanitize.css: 13.0.0 + dev: false + + /postcss-normalize@10.0.1(browserslist@4.21.5)(postcss@8.4.23): + resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} + engines: {node: '>= 12'} + peerDependencies: + browserslist: '>= 4' + postcss: '>= 8' + dependencies: + '@csstools/normalize.css': 12.0.0 + browserslist: 4.21.5 + postcss: 8.4.23 + postcss-browser-comments: 4.0.0(browserslist@4.21.5)(postcss@8.4.23) sanitize.css: 13.0.0 dev: false - /postcss-opacity-percentage/1.1.3_postcss@8.4.21: + /postcss-opacity-percentage@1.1.3(postcss@8.4.21): resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -19019,7 +25259,16 @@ packages: postcss: 8.4.21 dev: false - /postcss-ordered-values/4.1.2: + /postcss-opacity-percentage@2.0.0(postcss@8.4.23): + resolution: {integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-ordered-values@4.1.2: resolution: {integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==} engines: {node: '>=6.9.0'} dependencies: @@ -19028,18 +25277,29 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-ordered-values/5.1.3_postcss@8.4.21: + /postcss-ordered-values@5.1.3(postcss@8.4.21): resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0_postcss@8.4.21 + cssnano-utils: 3.1.0(postcss@8.4.21) postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: false - /postcss-overflow-shorthand/3.0.4_postcss@8.4.21: + /postcss-ordered-values@5.1.3(postcss@8.4.23): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.23) + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-overflow-shorthand@3.0.4(postcss@8.4.21): resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -19049,7 +25309,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-page-break/3.0.4_postcss@8.4.21: + /postcss-overflow-shorthand@4.0.1(postcss@8.4.23): + resolution: {integrity: sha512-HQZ0qi/9iSYHW4w3ogNqVNr2J49DHJAl7r8O2p0Meip38jsdnRPgiDW7r/LlLrrMBMe3KHkvNtAV2UmRVxzLIg==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-page-break@3.0.4(postcss@8.4.21): resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} peerDependencies: postcss: ^8 @@ -19057,7 +25327,15 @@ packages: postcss: 8.4.21 dev: false - /postcss-place/7.0.5_postcss@8.4.21: + /postcss-page-break@3.0.4(postcss@8.4.23): + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-place@7.0.5(postcss@8.4.21): resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} engines: {node: ^12 || ^14 || >=16} peerDependencies: @@ -19067,85 +25345,170 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-preset-env/7.8.3_postcss@8.4.21: + /postcss-place@8.0.1(postcss@8.4.23): + resolution: {integrity: sha512-Ow2LedN8sL4pq8ubukO77phSVt4QyCm35ZGCYXKvRFayAwcpgB0sjNJglDoTuRdUL32q/ZC1VkPBo0AOEr4Uiw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-preset-env@7.8.3(postcss@8.4.21): resolution: {integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-cascade-layers': 1.1.1_postcss@8.4.21 - '@csstools/postcss-color-function': 1.1.1_postcss@8.4.21 - '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.21 - '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.21 - '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.21 - '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.21 - '@csstools/postcss-nested-calc': 1.0.0_postcss@8.4.21 - '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.21 - '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.21 - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 - '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.21 - '@csstools/postcss-text-decoration-shorthand': 1.0.0_postcss@8.4.21 - '@csstools/postcss-trigonometric-functions': 1.0.2_postcss@8.4.21 - '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.21 - autoprefixer: 10.4.13_postcss@8.4.21 + '@csstools/postcss-cascade-layers': 1.1.1(postcss@8.4.21) + '@csstools/postcss-color-function': 1.1.1(postcss@8.4.21) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.21) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.21) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.21) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.21) + '@csstools/postcss-nested-calc': 1.0.0(postcss@8.4.21) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.21) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.21) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.21) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.21) + '@csstools/postcss-text-decoration-shorthand': 1.0.0(postcss@8.4.21) + '@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.4.21) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.21) + autoprefixer: 10.4.14(postcss@8.4.21) browserslist: 4.21.5 - css-blank-pseudo: 3.0.3_postcss@8.4.21 - css-has-pseudo: 3.0.4_postcss@8.4.21 - css-prefers-color-scheme: 6.0.3_postcss@8.4.21 - cssdb: 7.4.1 + css-blank-pseudo: 3.0.3(postcss@8.4.21) + css-has-pseudo: 3.0.4(postcss@8.4.21) + css-prefers-color-scheme: 6.0.3(postcss@8.4.21) + cssdb: 7.6.0 postcss: 8.4.21 - postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.21 - postcss-clamp: 4.1.0_postcss@8.4.21 - postcss-color-functional-notation: 4.2.4_postcss@8.4.21 - postcss-color-hex-alpha: 8.0.4_postcss@8.4.21 - postcss-color-rebeccapurple: 7.1.1_postcss@8.4.21 - postcss-custom-media: 8.0.2_postcss@8.4.21 - postcss-custom-properties: 12.1.11_postcss@8.4.21 - postcss-custom-selectors: 6.0.3_postcss@8.4.21 - postcss-dir-pseudo-class: 6.0.5_postcss@8.4.21 - postcss-double-position-gradients: 3.1.2_postcss@8.4.21 - postcss-env-function: 4.0.6_postcss@8.4.21 - postcss-focus-visible: 6.0.4_postcss@8.4.21 - postcss-focus-within: 5.0.4_postcss@8.4.21 - postcss-font-variant: 5.0.0_postcss@8.4.21 - postcss-gap-properties: 3.0.5_postcss@8.4.21 - postcss-image-set-function: 4.0.7_postcss@8.4.21 - postcss-initial: 4.0.1_postcss@8.4.21 - postcss-lab-function: 4.2.1_postcss@8.4.21 - postcss-logical: 5.0.4_postcss@8.4.21 - postcss-media-minmax: 5.0.0_postcss@8.4.21 - postcss-nesting: 10.2.0_postcss@8.4.21 - postcss-opacity-percentage: 1.1.3_postcss@8.4.21 - postcss-overflow-shorthand: 3.0.4_postcss@8.4.21 - postcss-page-break: 3.0.4_postcss@8.4.21 - postcss-place: 7.0.5_postcss@8.4.21 - postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.21 - postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.21 - postcss-selector-not: 6.0.1_postcss@8.4.21 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.21) + postcss-clamp: 4.1.0(postcss@8.4.21) + postcss-color-functional-notation: 4.2.4(postcss@8.4.21) + postcss-color-hex-alpha: 8.0.4(postcss@8.4.21) + postcss-color-rebeccapurple: 7.1.1(postcss@8.4.21) + postcss-custom-media: 8.0.2(postcss@8.4.21) + postcss-custom-properties: 12.1.11(postcss@8.4.21) + postcss-custom-selectors: 6.0.3(postcss@8.4.21) + postcss-dir-pseudo-class: 6.0.5(postcss@8.4.21) + postcss-double-position-gradients: 3.1.2(postcss@8.4.21) + postcss-env-function: 4.0.6(postcss@8.4.21) + postcss-focus-visible: 6.0.4(postcss@8.4.21) + postcss-focus-within: 5.0.4(postcss@8.4.21) + postcss-font-variant: 5.0.0(postcss@8.4.21) + postcss-gap-properties: 3.0.5(postcss@8.4.21) + postcss-image-set-function: 4.0.7(postcss@8.4.21) + postcss-initial: 4.0.1(postcss@8.4.21) + postcss-lab-function: 4.2.1(postcss@8.4.21) + postcss-logical: 5.0.4(postcss@8.4.21) + postcss-media-minmax: 5.0.0(postcss@8.4.21) + postcss-nesting: 10.2.0(postcss@8.4.21) + postcss-opacity-percentage: 1.1.3(postcss@8.4.21) + postcss-overflow-shorthand: 3.0.4(postcss@8.4.21) + postcss-page-break: 3.0.4(postcss@8.4.21) + postcss-place: 7.0.5(postcss@8.4.21) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.21) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.21) + postcss-selector-not: 6.0.1(postcss@8.4.21) + postcss-value-parser: 4.2.0 + dev: false + + /postcss-preset-env@8.4.1(postcss@8.4.23): + resolution: {integrity: sha512-IlcUT8ZSuQFWXJ/F+KvqmkzT85u33rlvd36IzM6qhdnccO7Rs3uBrHY802BFjNcPRawqSCDmPv7KKyCzNxx5Fw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-cascade-layers': 3.0.1(postcss@8.4.23) + '@csstools/postcss-color-function': 2.2.2(postcss@8.4.23) + '@csstools/postcss-color-mix-function': 1.0.2(postcss@8.4.23) + '@csstools/postcss-font-format-keywords': 2.0.2(postcss@8.4.23) + '@csstools/postcss-gradients-interpolation-method': 3.0.5(postcss@8.4.23) + '@csstools/postcss-hwb-function': 2.2.2(postcss@8.4.23) + '@csstools/postcss-ic-unit': 2.0.3(postcss@8.4.23) + '@csstools/postcss-is-pseudo-class': 3.2.1(postcss@8.4.23) + '@csstools/postcss-logical-float-and-clear': 1.0.1(postcss@8.4.23) + '@csstools/postcss-logical-resize': 1.0.1(postcss@8.4.23) + '@csstools/postcss-logical-viewport-units': 1.0.3(postcss@8.4.23) + '@csstools/postcss-media-minmax': 1.0.2(postcss@8.4.23) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 1.0.2(postcss@8.4.23) + '@csstools/postcss-nested-calc': 2.0.2(postcss@8.4.23) + '@csstools/postcss-normalize-display-values': 2.0.1(postcss@8.4.23) + '@csstools/postcss-oklab-function': 2.2.2(postcss@8.4.23) + '@csstools/postcss-progressive-custom-properties': 2.2.0(postcss@8.4.23) + '@csstools/postcss-relative-color-syntax': 1.0.0(postcss@8.4.23) + '@csstools/postcss-scope-pseudo-class': 2.0.2(postcss@8.4.23) + '@csstools/postcss-stepped-value-functions': 2.1.1(postcss@8.4.23) + '@csstools/postcss-text-decoration-shorthand': 2.2.4(postcss@8.4.23) + '@csstools/postcss-trigonometric-functions': 2.1.1(postcss@8.4.23) + '@csstools/postcss-unset-value': 2.0.1(postcss@8.4.23) + autoprefixer: 10.4.14(postcss@8.4.23) + browserslist: 4.21.5 + css-blank-pseudo: 5.0.2(postcss@8.4.23) + css-has-pseudo: 5.0.2(postcss@8.4.23) + css-prefers-color-scheme: 8.0.2(postcss@8.4.23) + cssdb: 7.6.0 + postcss: 8.4.23 + postcss-attribute-case-insensitive: 6.0.2(postcss@8.4.23) + postcss-clamp: 4.1.0(postcss@8.4.23) + postcss-color-functional-notation: 5.0.2(postcss@8.4.23) + postcss-color-hex-alpha: 9.0.2(postcss@8.4.23) + postcss-color-rebeccapurple: 8.0.2(postcss@8.4.23) + postcss-custom-media: 9.1.3(postcss@8.4.23) + postcss-custom-properties: 13.1.5(postcss@8.4.23) + postcss-custom-selectors: 7.1.3(postcss@8.4.23) + postcss-dir-pseudo-class: 7.0.2(postcss@8.4.23) + postcss-double-position-gradients: 4.0.3(postcss@8.4.23) + postcss-focus-visible: 8.0.2(postcss@8.4.23) + postcss-focus-within: 7.0.2(postcss@8.4.23) + postcss-font-variant: 5.0.0(postcss@8.4.23) + postcss-gap-properties: 4.0.1(postcss@8.4.23) + postcss-image-set-function: 5.0.2(postcss@8.4.23) + postcss-initial: 4.0.1(postcss@8.4.23) + postcss-lab-function: 5.2.2(postcss@8.4.23) + postcss-logical: 6.2.0(postcss@8.4.23) + postcss-nesting: 11.2.2(postcss@8.4.23) + postcss-opacity-percentage: 2.0.0(postcss@8.4.23) + postcss-overflow-shorthand: 4.0.1(postcss@8.4.23) + postcss-page-break: 3.0.4(postcss@8.4.23) + postcss-place: 8.0.1(postcss@8.4.23) + postcss-pseudo-class-any-link: 8.0.2(postcss@8.4.23) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.23) + postcss-selector-not: 7.0.1(postcss@8.4.23) postcss-value-parser: 4.2.0 dev: false - /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.21: + /postcss-pseudo-class-any-link@7.1.6(postcss@8.4.21): resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-pseudo-class-any-link@8.0.2(postcss@8.4.23): + resolution: {integrity: sha512-FYTIuRE07jZ2CW8POvctRgArQJ43yxhr5vLmImdKUvjFCkR09kh8pIdlCwdx/jbFm7MiW4QP58L4oOUv3grQYA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-reduce-idents/5.2.0_postcss@8.4.21: + /postcss-reduce-idents@5.2.0(postcss@8.4.23): resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-initial/4.0.3: + /postcss-reduce-initial@4.0.3: resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} engines: {node: '>=6.9.0'} dependencies: @@ -19155,7 +25518,7 @@ packages: postcss: 7.0.39 dev: false - /postcss-reduce-initial/5.1.2_postcss@8.4.21: + /postcss-reduce-initial@5.1.2(postcss@8.4.21): resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -19166,7 +25529,18 @@ packages: postcss: 8.4.21 dev: false - /postcss-reduce-transforms/4.0.2: + /postcss-reduce-initial@5.1.2(postcss@8.4.23): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + caniuse-api: 3.0.0 + postcss: 8.4.23 + dev: false + + /postcss-reduce-transforms@4.0.2: resolution: {integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==} engines: {node: '>=6.9.0'} dependencies: @@ -19176,7 +25550,7 @@ packages: postcss-value-parser: 3.3.1 dev: false - /postcss-reduce-transforms/5.1.0_postcss@8.4.21: + /postcss-reduce-transforms@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -19186,7 +25560,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.21: + /postcss-reduce-transforms@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.21): resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} peerDependencies: postcss: ^8.0.3 @@ -19194,24 +25578,42 @@ packages: postcss: 8.4.21 dev: false - /postcss-safe-parser/4.0.2: + /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.23): + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.23 + dev: false + + /postcss-safe-parser@4.0.2: resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} engines: {node: '>=6.0.0'} dependencies: postcss: 7.0.39 dev: false - /postcss-selector-not/6.0.1_postcss@8.4.21: + /postcss-selector-not@6.0.1(postcss@8.4.21): resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: - postcss: ^8.2 + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-selector-not@7.0.1(postcss@8.4.23): + resolution: {integrity: sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-selector-parser/3.1.2: + /postcss-selector-parser@3.1.2: resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} engines: {node: '>=8'} dependencies: @@ -19220,7 +25622,7 @@ packages: uniq: 1.0.1 dev: false - /postcss-selector-parser/6.0.11: + /postcss-selector-parser@6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: @@ -19228,17 +25630,25 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-sort-media-queries/4.3.0_postcss@8.4.21: + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-sort-media-queries@4.3.0(postcss@8.4.23): resolution: {integrity: sha512-jAl8gJM2DvuIJiI9sL1CuiHtKM4s5aEIomkU8G3LFvbP+p8i7Sz8VV63uieTgoewGqKbi+hxBTiOKJlB35upCg==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.4.16 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 sort-css-media-queries: 2.1.0 dev: false - /postcss-svgo/4.0.3: + /postcss-svgo@4.0.3: resolution: {integrity: sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==} engines: {node: '>=6.9.0'} dependencies: @@ -19247,7 +25657,7 @@ packages: svgo: 1.3.2 dev: false - /postcss-svgo/5.1.0_postcss@8.4.21: + /postcss-svgo@5.1.0(postcss@8.4.21): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -19258,7 +25668,18 @@ packages: svgo: 2.8.0 dev: false - /postcss-unique-selectors/4.0.1: + /postcss-svgo@5.1.0(postcss@8.4.23): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: false + + /postcss-unique-selectors@4.0.1: resolution: {integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==} engines: {node: '>=6.9.0'} dependencies: @@ -19267,34 +25688,44 @@ packages: uniqs: 2.0.0 dev: false - /postcss-unique-selectors/5.1.1_postcss@8.4.21: + /postcss-unique-selectors@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-unique-selectors@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /postcss-value-parser/3.3.1: + /postcss-value-parser@3.3.1: resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} dev: false - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss-zindex/5.1.0_postcss@8.4.21: + /postcss-zindex@5.1.0(postcss@8.4.23): resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 dev: false - /postcss/7.0.39: + /postcss@7.0.39: resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} engines: {node: '>=6.0.0'} dependencies: @@ -19302,76 +25733,87 @@ packages: source-map: 0.6.1 dev: false - /postcss/8.4.14: + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: false - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: false - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: false - /prepend-http/1.0.4: + /prepend-http@1.0.4: resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} engines: {node: '>=0.10.0'} - dev: false - /prepend-http/2.0.0: + /prepend-http@2.0.0: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} dev: false - /preserve/0.2.0: + /preserve@0.2.0: resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} engines: {node: '>=0.10.0'} dev: false - /prettier/2.8.4: + /prettier@2.8.4: resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} engines: {node: '>=10.13.0'} hasBin: true requiresBuild: true - dev: false - optional: true + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + requiresBuild: true - /pretty-bytes/5.6.0: + /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} - dev: false - /pretty-error/2.1.2: + /pretty-error@2.1.2: resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} dependencies: lodash: 4.17.21 renderkid: 2.0.7 dev: false - /pretty-error/4.0.0: + /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: lodash: 4.17.21 renderkid: 3.0.0 dev: false - /pretty-format/26.6.2: + /pretty-format@26.6.2: resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} engines: {node: '>= 10'} dependencies: @@ -19379,18 +25821,16 @@ packages: ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 - dev: false - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: false - /pretty-format/28.1.3: + /pretty-format@28.1.3: resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: @@ -19400,21 +25840,20 @@ packages: react-is: 18.2.0 dev: false - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: false - /pretty-time/1.1.0: + /pretty-time@1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} dev: false - /prism-react-renderer/1.3.5_react@18.2.0: + /prism-react-renderer@1.3.5(react@18.2.0): resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} peerDependencies: react: '>=0.14.9' @@ -19422,30 +25861,27 @@ packages: react: 18.2.0 dev: false - /prismjs/1.29.0: + /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} dev: false - /process-es6/0.11.6: + /process-es6@0.11.6: resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} - dev: false - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - /process/0.11.10: + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} dev: false - /progress/2.0.3: + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - dev: false - /promise-inflight/1.0.1_bluebird@3.7.2: + /promise-inflight@1.0.1(bluebird@3.7.2): resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: bluebird: '*' @@ -19456,23 +25892,21 @@ packages: bluebird: 3.7.2 dev: false - /promise-polyfill/8.3.0: + /promise-polyfill@8.3.0: resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} - dev: false - /promise/7.3.1: + /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 dev: false - /promise/8.3.0: + /promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} dependencies: asap: 2.0.6 - dev: false - /prompts/2.4.0: + /prompts@2.4.0: resolution: {integrity: sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==} engines: {node: '>= 6'} dependencies: @@ -19480,15 +25914,14 @@ packages: sisteransi: 1.0.5 dev: false - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: false - /prop-types-extra/1.1.1_react@18.2.0: + /prop-types-extra@1.1.1(react@18.2.0): resolution: {integrity: sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==} peerDependencies: react: '>=0.14.0' @@ -19498,7 +25931,7 @@ packages: warning: 4.0.3 dev: false - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -19506,13 +25939,21 @@ packages: react-is: 16.13.1 dev: false - /property-information/5.6.0: + /proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + dependencies: + graceful-fs: 4.2.10 + retry: 0.12.0 + signal-exit: 3.0.7 + dev: true + + /property-information@5.6.0: resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} dependencies: xtend: 4.0.2 dev: false - /protobufjs/6.11.3: + /protobufjs@6.11.3: resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} hasBin: true requiresBuild: true @@ -19528,7 +25969,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.14.6 + '@types/node': 20.9.0 chalk: 4.1.2 escodegen: 1.14.3 espree: 7.3.1 @@ -19537,11 +25978,11 @@ packages: jsdoc: 3.6.11 long: 4.0.0 minimist: 1.2.8 - semver: 7.3.8 + semver: 7.5.2 tmp: 0.2.1 uglify-js: 3.17.4 - /proxy-addr/2.0.7: + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: @@ -19549,19 +25990,24 @@ packages: ipaddr.js: 1.9.1 dev: false - /prr/1.0.1: + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /prr@0.0.0: + resolution: {integrity: sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==} + dev: true + + /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: false - /pseudomap/1.0.2: + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: false - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: false - /public-encrypt/4.0.3: + /public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} dependencies: bn.js: 4.12.0 @@ -19570,23 +26016,21 @@ packages: parse-asn1: 5.1.6 randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: false - /pump/2.0.1: + /pump@2.0.1: resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: false - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: false - /pumpify/1.5.1: + /pumpify@1.5.1: resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} dependencies: duplexify: 3.7.1 @@ -19594,48 +26038,46 @@ packages: pump: 2.0.1 dev: false - /punycode/1.3.2: + /punycode@1.3.2: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} dev: false - /punycode/1.4.1: + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false - /punycode/2.3.0: + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: false - /pupa/2.1.1: + /pupa@2.1.1: resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} engines: {node: '>=8'} dependencies: escape-goat: 2.1.1 dev: false - /pure-color/1.3.0: + /pure-color@1.3.0: resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} dev: false - /q/1.5.1: + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: false - /qs/6.11.0: + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 - dev: false - /qs/6.5.3: + /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} dev: false - /query-string/5.1.1: + /query-string@5.1.1: resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} engines: {node: '>=0.10.0'} dependencies: @@ -19644,56 +26086,53 @@ packages: strict-uri-encode: 1.1.0 dev: false - /querystring-es3/0.2.1: + /querystring-es3@0.2.1: resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} engines: {node: '>=0.4.x'} dev: false - /querystring/0.2.0: + /querystring@0.2.0: resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. dev: false - /querystringify/2.2.0: + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: false - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - /queue/6.0.2: + /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 dev: false - /quick-lru/1.1.0: + /quick-lru@1.1.0: resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==} engines: {node: '>=4'} - dev: false - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} dev: false - /raf-schd/4.0.3: + /raf-schd@4.0.3: resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} dev: false - /raf/3.4.1: + /raf@3.4.1: resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} dependencies: performance-now: 2.1.0 dev: false - /railroad-diagrams/1.0.0: + /railroad-diagrams@1.0.0: resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} dev: false - /randexp/0.4.6: + /randexp@0.4.6: resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} engines: {node: '>=0.12'} dependencies: @@ -19701,7 +26140,7 @@ packages: ret: 0.1.15 dev: false - /randomatic/3.1.1: + /randomatic@3.1.1: resolution: {integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==} engines: {node: '>= 0.10.0'} dependencies: @@ -19710,30 +26149,28 @@ packages: math-random: 1.0.4 dev: false - /randombytes/2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: false - /randomfill/1.0.4: + /randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} dependencies: randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: false - /range-parser/1.2.0: + /range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} dev: false - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: false - /raw-body/2.5.1: + /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: @@ -19741,16 +26178,15 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: false - /rc-steps/3.6.0: + /rc-steps@3.6.0: resolution: {integrity: sha512-UH0ggF5UB4QBoAXeJH6JUSnPVg3H9z3o3nyf6yZ5QYXcsFn4tIJyjtnE9h+yhQIBQDVzwNY1r5yhW2PYrzO1tw==} dependencies: classnames: 2.3.2 lodash: 4.17.21 dev: false - /rc-switch/4.0.0_biqbaboplfbrettd7655fr4n2y: + /rc-switch@4.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-IfrYC99vN0gKaTyjQdqYuADU0eH00SAFHg3jOp8HrmUpJruhV1SohJzrCbPqPraZeX/6X/QKkdLfkdnUub05WA==} peerDependencies: react: '>=16.9.0' @@ -19758,24 +26194,24 @@ packages: dependencies: '@babel/runtime': 7.21.0 classnames: 2.3.2 - rc-util: 5.28.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.28.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /rc-util/5.28.0_biqbaboplfbrettd7655fr4n2y: + /rc-util@5.28.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-KYDjhGodswVj29v0TRciKTqRPgumIFvFDndbCD227pitQ+0Cei196rxk+OXb/blu6V8zdTRK5RjCJn+WmHLvBA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-is: 16.13.1 dev: false - /rc/1.2.8: + /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true dependencies: @@ -19783,9 +26219,8 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false - /react-ace/10.1.0_biqbaboplfbrettd7655fr4n2y: + /react-ace@10.1.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-VkvUjZNhdYTuKOKQpMIZi7uzZZVgzCjM7cLYu6F64V0mejY8a2XTyPUIMszC6A4trbeMIHbK5fYFcT/wkP/8VA==} peerDependencies: react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 @@ -19797,10 +26232,10 @@ packages: lodash.isequal: 4.5.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /react-apollo/3.1.5_4hkbjrep5ureiqkcwz4kv7433y: + /react-apollo@3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xOxMqxORps+WHrUYbjVHPliviomefOpu5Sh35oO3osuOyPTxvrljdfTLGCggMhcXBsDljtS5Oy4g+ijWg3D4JQ==} peerDependencies: '@types/react': ^16.8.0 @@ -19809,22 +26244,23 @@ packages: react: ^16.8.0 react-dom: ^16.8.0 dependencies: - '@apollo/react-common': 3.1.4_ajh7ypzlfydfyxaxyqhsembn4i - '@apollo/react-components': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y - '@apollo/react-hoc': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y - '@apollo/react-hooks': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y - '@apollo/react-ssr': 3.1.5_4hkbjrep5ureiqkcwz4kv7433y + '@apollo/react-common': 3.1.4(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react@18.2.0) + '@apollo/react-components': 3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + '@apollo/react-hoc': 3.1.5(@types/react@18.0.28)(apollo-cache@1.3.5)(apollo-client@2.6.10)(apollo-link@1.2.14)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + '@apollo/react-hooks': 3.1.5(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + '@apollo/react-ssr': 3.1.5(@types/react@18.0.28)(apollo-client@2.6.10)(apollo-utilities@1.3.4)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.28 + apollo-client: 2.6.10(graphql@16.6.0) graphql: 16.6.0 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - apollo-cache - apollo-link - apollo-utilities dev: false - /react-app-polyfill/2.0.0: + /react-app-polyfill@2.0.0: resolution: {integrity: sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA==} engines: {node: '>=10'} dependencies: @@ -19836,7 +26272,7 @@ packages: whatwg-fetch: 3.6.2 dev: false - /react-app-polyfill/3.0.0: + /react-app-polyfill@3.0.0: resolution: {integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==} engines: {node: '>=14'} dependencies: @@ -19848,17 +26284,17 @@ packages: whatwg-fetch: 3.6.2 dev: false - /react-app-rewired/2.2.1_react-scripts@5.0.1: + /react-app-rewired@2.2.1(react-scripts@5.0.1): resolution: {integrity: sha512-uFQWTErXeLDrMzOJHKp0h8P1z0LV9HzPGsJ6adOtGlA/B9WfT6Shh4j2tLTTGlXOfiVx6w6iWpp7SOC5pvk+gA==} hasBin: true peerDependencies: react-scripts: '>=2.1.3' dependencies: - react-scripts: 5.0.1_ib5tnk5fgxazch2pplhdyc3rlm + react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(esbuild@0.14.7)(eslint@7.32.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5)(webpack-cli@3.3.12) semver: 5.7.1 dev: false - /react-async-script/1.2.0_react@18.2.0: + /react-async-script@1.2.0(react@18.2.0): resolution: {integrity: sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==} peerDependencies: react: '>=16.4.1' @@ -19868,7 +26304,7 @@ packages: react: 18.2.0 dev: false - /react-base16-styling/0.6.0: + /react-base16-styling@0.6.0: resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} dependencies: base16: 1.0.0 @@ -19877,7 +26313,7 @@ packages: pure-color: 1.3.0 dev: false - /react-beautiful-dnd/13.1.1_biqbaboplfbrettd7655fr4n2y: + /react-beautiful-dnd@13.1.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==} peerDependencies: react: ^16.8.5 || ^17.0.0 || ^18.0.0 @@ -19888,23 +26324,23 @@ packages: memoize-one: 5.2.1 raf-schd: 4.0.3 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-redux: 7.2.9_biqbaboplfbrettd7655fr4n2y + react-dom: 18.2.0(react@18.2.0) + react-redux: 7.2.9(react-dom@18.2.0)(react@18.2.0) redux: 4.2.1 - use-memo-one: 1.1.3_react@18.2.0 + use-memo-one: 1.1.3(react@18.2.0) transitivePeerDependencies: - react-native dev: false - /react-bootstrap/1.6.6_biqbaboplfbrettd7655fr4n2y: + /react-bootstrap@1.6.6(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pSzYyJT5u4rc8+5myM8Vid2JG52L8AmYSkpznReH/GM4+FhLqEnxUa0+6HRTaGwjdEixQNGchwY+b3xCdYWrDA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@babel/runtime': 7.21.0 - '@restart/context': 2.1.4_react@18.2.0 - '@restart/hooks': 0.4.9_react@18.2.0 + '@restart/context': 2.1.4(react@18.2.0) + '@restart/hooks': 0.4.9(react@18.2.0) '@types/invariant': 2.2.35 '@types/prop-types': 15.7.5 '@types/react': 18.0.28 @@ -19914,16 +26350,16 @@ packages: dom-helpers: 5.2.1 invariant: 2.2.4 prop-types: 15.8.1 - prop-types-extra: 1.1.1_react@18.2.0 + prop-types-extra: 1.1.1(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-overlays: 5.2.1_biqbaboplfbrettd7655fr4n2y - react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y - uncontrollable: 7.2.1_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-overlays: 5.2.1(react-dom@18.2.0)(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + uncontrollable: 7.2.1(react@18.2.0) warning: 4.0.3 dev: false - /react-contenteditable/3.3.7_react@18.2.0: + /react-contenteditable@3.3.7(react@18.2.0): resolution: {integrity: sha512-GA9NbC0DkDdpN3iGvib/OMHWTJzDX2cfkgy5Tt98JJAbA3kLnyrNbBIpsSpPpq7T8d3scD39DHP+j8mAM7BIfQ==} peerDependencies: react: '>=16.3' @@ -19933,18 +26369,19 @@ packages: react: 18.2.0 dev: false - /react-custom-scroll/4.4.0_biqbaboplfbrettd7655fr4n2y: + /react-custom-scroll@4.4.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-FN8F8rWq7Ub4lxScJqAqBd/owkMnunH71YAMvOyzjamDRfMxv3lVieUA1lUwIjsPaXcyPGi+R2k/N3tUr0rIZw==} peerDependencies: prop-types: '*' react: '*' react-dom: '*' dependencies: + prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /react-dev-utils/11.0.4_e7unsjmvxtn2mdejqwafrsmwjq: + /react-dev-utils@11.0.4(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0): resolution: {integrity: sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==} engines: {node: '>=10'} peerDependencies: @@ -19963,7 +26400,7 @@ packages: escape-string-regexp: 2.0.0 filesize: 6.1.0 find-up: 4.1.0 - fork-ts-checker-webpack-plugin: 4.1.6_e7unsjmvxtn2mdejqwafrsmwjq + fork-ts-checker-webpack-plugin: 4.1.6(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0) global-modules: 2.0.0 globby: 11.0.1 gzip-size: 5.1.1 @@ -19979,14 +26416,14 @@ packages: strip-ansi: 6.0.0 text-table: 0.2.0 typescript: 4.9.5 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) transitivePeerDependencies: - eslint - supports-color - vue-template-compiler dev: false - /react-dev-utils/12.0.1_e7unsjmvxtn2mdejqwafrsmwjq: + /react-dev-utils@12.0.1(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -19996,7 +26433,49 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 + address: 1.2.2 + browserslist: 4.21.5 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.19 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.0 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + + /react-dev-utils@12.0.1(eslint@8.41.0)(typescript@4.9.5)(webpack@5.76.0): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.21.4 address: 1.2.2 browserslist: 4.21.5 chalk: 4.1.2 @@ -20005,7 +26484,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3_e7unsjmvxtn2mdejqwafrsmwjq + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.41.0)(typescript@4.9.5)(webpack@5.76.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -20021,14 +26500,14 @@ packages: strip-ansi: 6.0.1 text-table: 0.2.0 typescript: 4.9.5 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) transitivePeerDependencies: - eslint - supports-color - vue-template-compiler dev: false - /react-dom/18.2.0_react@18.2.0: + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 @@ -20038,7 +26517,7 @@ packages: scheduler: 0.23.0 dev: false - /react-dropzone/14.2.3_react@18.2.0: + /react-dropzone@14.2.3(react@18.2.0): resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} engines: {node: '>= 10.13'} peerDependencies: @@ -20050,15 +26529,15 @@ packages: react: 18.2.0 dev: false - /react-error-overlay/6.0.11: + /react-error-overlay@6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} dev: false - /react-fast-compare/3.2.0: + /react-fast-compare@3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: false - /react-fontawesome/1.7.1_react@18.2.0: + /react-fontawesome@1.7.1(react@18.2.0): resolution: {integrity: sha512-kottReWW1I9Uupub6A5YX4VK7qfpFnEjAcm5zB4Aepst7iofONT27GJYdTcRsj7q5uQu9PXBL7GsxAFKANNUVg==} engines: {node: '>=0.10.0'} peerDependencies: @@ -20068,32 +26547,32 @@ packages: react: 18.2.0 dev: false - /react-google-recaptcha/1.1.0_react@18.2.0: + /react-google-recaptcha@1.1.0(react@18.2.0): resolution: {integrity: sha512-GMWZEsIKyBVG+iXfVMwtMVKFJATu5c+oguL/5i95H3Jb5d5CG4DY0W9t4QhdSSulgkXbZMgv0VSuGF/GV1ENTA==} peerDependencies: react: '>=16.4.1' dependencies: prop-types: 15.8.1 react: 18.2.0 - react-async-script: 1.2.0_react@18.2.0 + react-async-script: 1.2.0(react@18.2.0) dev: false - /react-helmet-async/1.3.0_biqbaboplfbrettd7655fr4n2y: + /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-fast-compare: 3.2.0 shallowequal: 1.1.0 dev: false - /react-hooks-worker/1.0.4_react@18.2.0: + /react-hooks-worker@1.0.4(react@18.2.0): resolution: {integrity: sha512-72U6J+UcwfEjzygVU6OQpKeFo8hzuai4Ir3lNvNk5RXv9vhbMqgJGSgIlHWfvh5/qEAOeAcWyF2jIWXjnGO3rw==} peerDependencies: react: '>=16.8.0' @@ -20101,28 +26580,26 @@ packages: react: 18.2.0 dev: false - /react-icons/3.11.0_react@18.2.0: + /react-icons@3.11.0(react@18.2.0): resolution: {integrity: sha512-JRgiI/vdF6uyBgyZhVyYJUZAop95Sy4XDe/jmT3R/bKliFWpO/uZBwvSjWEdxwzec7SYbEPNPck0Kff2tUGM2Q==} peerDependencies: react: '*' dependencies: - camelcase: 5.3.1 + camelcase: 5.0.0 react: 18.2.0 dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: false - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: false - /react-jazzicon/0.1.3_react@18.2.0: + /react-jazzicon@0.1.3(react@18.2.0): resolution: {integrity: sha512-9iJPMoPlNYg/GbAnHwdco1SUF4dM1HyOOJ9ouI27TKXXmRUeDq/ZaS4RFlHnOtcA6Yw/Uz1rUOu1bowThTCRCg==} peerDependencies: react: ^15.3.2 @@ -20133,64 +26610,64 @@ packages: react: 18.2.0 dev: false - /react-json-view/1.21.3_zula6vjvt3wdocc4mwcxqa6nzi: + /react-json-view@1.21.3(@types/react@18.0.28)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} peerDependencies: react: ^17.0.0 || ^16.3.0 || ^15.5.4 react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 dependencies: - flux: 4.0.3_react@18.2.0 + flux: 4.0.3(react@18.2.0) react: 18.2.0 react-base16-styling: 0.6.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.4.0_pmekkgnqduwlme35zpnqhenc34 + react-textarea-autosize: 8.4.0(@types/react@18.0.28)(react@18.2.0) transitivePeerDependencies: - '@types/react' - encoding dev: false - /react-lifecycles-compat/3.0.4: + /react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} dev: false - /react-loadable-ssr-addon-v5-slorber/1.0.1_pwfl7zyferpbeh35vaepqxwaky: + /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.76.0): resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} engines: {node: '>=10.13.0'} peerDependencies: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.21.0 - react-loadable: /@docusaurus/react-loadable/5.5.2_react@18.2.0 - webpack: 5.75.0_webpack-cli@3.3.12 + '@babel/runtime': 7.21.5 + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /react-overlays/5.2.1_biqbaboplfbrettd7655fr4n2y: + /react-overlays@5.2.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==} peerDependencies: react: '>=16.3.0' react-dom: '>=16.3.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 '@popperjs/core': 2.11.6 - '@restart/hooks': 0.4.9_react@18.2.0 + '@restart/hooks': 0.4.9(react@18.2.0) '@types/warning': 3.0.0 dom-helpers: 5.2.1 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - uncontrollable: 7.2.1_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + uncontrollable: 7.2.1(react@18.2.0) warning: 4.0.3 dev: false - /react-popper/1.3.11_react@18.2.0: + /react-popper@1.3.11(react@18.2.0): resolution: {integrity: sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==} peerDependencies: react: 0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.21.0 - '@hypnosphi/create-react-context': 0.3.1_sh5qlbywuemxd2y3xkrw2y2kr4 + '@babel/runtime': 7.21.5 + '@hypnosphi/create-react-context': 0.3.1(prop-types@15.8.1)(react@18.2.0) deep-equal: 1.1.1 popper.js: 1.16.1 prop-types: 15.8.1 @@ -20199,7 +26676,7 @@ packages: warning: 4.0.3 dev: false - /react-redux/7.2.9_biqbaboplfbrettd7655fr4n2y: + /react-redux@7.2.9(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} peerDependencies: react: ^16.8.3 || ^17 || ^18 @@ -20211,38 +26688,38 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 '@types/react-redux': 7.1.25 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-is: 17.0.2 dev: false - /react-refresh/0.11.0: + /react-refresh@0.11.0: resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} engines: {node: '>=0.10.0'} dev: false - /react-refresh/0.8.3: + /react-refresh@0.8.3: resolution: {integrity: sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==} engines: {node: '>=0.10.0'} dev: false - /react-router-config/5.1.1_rlw3ibuvnpt5jvejeevjcf4ije: + /react-router-config@5.1.1(react-router@5.3.4)(react@18.2.0): resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 react: 18.2.0 - react-router: 5.3.4_react@18.2.0 + react-router: 5.3.4(react@18.2.0) dev: false - /react-router-dom/5.3.4_react@18.2.0: + /react-router-dom@5.3.4(react@18.2.0): resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} peerDependencies: react: '>=15' @@ -20252,17 +26729,17 @@ packages: loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 - react-router: 5.3.4_react@18.2.0 + react-router: 5.3.4(react@18.2.0) tiny-invariant: 1.3.1 tiny-warning: 1.0.3 dev: false - /react-router/5.3.4_react@18.2.0: + /react-router@5.3.4(react@18.2.0): resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -20274,7 +26751,7 @@ packages: tiny-warning: 1.0.3 dev: false - /react-router/6.8.2_react@18.2.0: + /react-router@6.8.2(react@18.2.0): resolution: {integrity: sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==} engines: {node: '>=14'} peerDependencies: @@ -20284,7 +26761,7 @@ packages: react: 18.2.0 dev: false - /react-scripts/5.0.1_ib5tnk5fgxazch2pplhdyc3rlm: + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(esbuild@0.14.7)(eslint@7.32.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5)(webpack-cli@3.3.12): resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -20297,54 +26774,151 @@ packages: optional: true dependencies: '@babel/core': 7.21.0 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_unmakpayn7vcxadrrsbqlrpehy + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(webpack-dev-server@4.11.1)(webpack@5.76.0) '@svgr/webpack': 5.5.0 - babel-jest: 27.5.1_@babel+core@7.21.0 - babel-loader: 8.3.0_qoaxtqicpzj5p3ubthw53xafqm - babel-plugin-named-asset-import: 0.3.8_@babel+core@7.21.0 + babel-jest: 27.5.1(@babel/core@7.21.0) + babel-loader: 8.3.0(@babel/core@7.21.0)(webpack@5.76.0) + babel-plugin-named-asset-import: 0.3.8(@babel/core@7.21.0) babel-preset-react-app: 10.0.1 bfj: 7.0.2 browserslist: 4.21.5 camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 - css-loader: 6.7.3_webpack@5.75.0 - css-minimizer-webpack-plugin: 3.4.1_webpack@5.75.0 + css-loader: 6.7.3(webpack@5.76.0) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.14.7)(webpack@5.76.0) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 7.32.0 - eslint-config-react-app: 7.0.1_ljqobdah26xed5awkccjerz33i - eslint-webpack-plugin: 3.2.0_u2ubl3shblmc7225ne6wflnyua - file-loader: 6.2.0_webpack@5.75.0 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5) + eslint-webpack-plugin: 3.2.0(eslint@7.32.0)(webpack@5.76.0) + file-loader: 6.2.0(webpack@5.76.0) + fs-extra: 10.1.0 + html-webpack-plugin: 5.5.0(webpack@5.76.0) + identity-obj-proxy: 3.0.0 + jest: 27.5.1(ts-node@10.9.1) + jest-resolve: 27.5.1 + jest-watch-typeahead: 1.1.0(jest@27.5.1) + mini-css-extract-plugin: 2.7.2(webpack@5.76.0) + postcss: 8.4.21 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.21) + postcss-loader: 6.2.1(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@7.8.3)(postcss@8.4.21)(webpack@5.76.0) + postcss-normalize: 10.0.1(browserslist@4.21.5)(postcss@8.4.21) + postcss-preset-env: 7.8.3(postcss@8.4.21) + prompts: 2.4.2 + react: 18.2.0 + react-app-polyfill: 3.0.0 + react-dev-utils: 12.0.1(eslint@7.32.0)(typescript@4.9.5)(webpack@5.76.0) + react-refresh: 0.11.0 + resolve: 1.22.1 + resolve-url-loader: 4.0.0 + sass-loader: 12.6.0(webpack@5.76.0) + semver: 7.5.2 + source-map-loader: 3.0.2(webpack@5.76.0) + style-loader: 3.3.1(webpack@5.76.0) + tailwindcss: 3.2.7(postcss@8.4.21)(ts-node@10.9.1) + terser-webpack-plugin: 5.3.6(esbuild@0.14.7)(webpack@5.76.0) + typescript: 4.9.5 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-dev-server: 4.11.1(webpack-cli@3.3.12)(webpack@5.76.0) + webpack-manifest-plugin: 4.1.1(webpack@5.76.0) + workbox-webpack-plugin: 6.5.4(webpack@5.76.0) + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/webpack' + - bufferutil + - canvas + - clean-css + - csso + - debug + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - fibers + - node-notifier + - node-sass + - rework + - rework-visit + - sass + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - type-fest + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(esbuild@0.14.7)(eslint@8.41.0)(react@18.2.0)(ts-node@10.9.1)(typescript@4.9.5)(webpack-cli@3.3.12): + resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} + engines: {node: '>=14.0.0'} + hasBin: true + peerDependencies: + eslint: '*' + react: '>= 16' + typescript: ^3.2.1 || ^4 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.21.0 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(webpack-dev-server@4.11.1)(webpack@5.76.0) + '@svgr/webpack': 5.5.0 + babel-jest: 27.5.1(@babel/core@7.21.0) + babel-loader: 8.3.0(@babel/core@7.21.0)(webpack@5.76.0) + babel-plugin-named-asset-import: 0.3.8(@babel/core@7.21.0) + babel-preset-react-app: 10.0.1 + bfj: 7.0.2 + browserslist: 4.21.5 + camelcase: 6.3.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + css-loader: 6.7.3(webpack@5.76.0) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.14.7)(webpack@5.76.0) + dotenv: 10.0.0 + dotenv-expand: 5.1.0 + eslint: 8.41.0 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@8.41.0)(jest@27.5.1)(typescript@4.9.5) + eslint-webpack-plugin: 3.2.0(eslint@8.41.0)(webpack@5.76.0) + file-loader: 6.2.0(webpack@5.76.0) fs-extra: 10.1.0 - html-webpack-plugin: 5.5.0_webpack@5.75.0 + html-webpack-plugin: 5.5.0(webpack@5.76.0) identity-obj-proxy: 3.0.0 - jest: 27.5.1 + jest: 27.5.1(ts-node@10.9.1) jest-resolve: 27.5.1 - jest-watch-typeahead: 1.1.0_jest@27.5.1 - mini-css-extract-plugin: 2.7.2_webpack@5.75.0 + jest-watch-typeahead: 1.1.0(jest@27.5.1) + mini-css-extract-plugin: 2.7.2(webpack@5.76.0) postcss: 8.4.21 - postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21 - postcss-loader: 6.2.1_xp6u6xd3iykakxeppj4ia62wk4 - postcss-normalize: 10.0.1_jrpp4geoaqu5dz2gragkckznb4 - postcss-preset-env: 7.8.3_postcss@8.4.21 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.21) + postcss-loader: 6.2.1(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@7.8.3)(postcss@8.4.21)(webpack@5.76.0) + postcss-normalize: 10.0.1(browserslist@4.21.5)(postcss@8.4.21) + postcss-preset-env: 7.8.3(postcss@8.4.21) prompts: 2.4.2 react: 18.2.0 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1_e7unsjmvxtn2mdejqwafrsmwjq + react-dev-utils: 12.0.1(eslint@8.41.0)(typescript@4.9.5)(webpack@5.76.0) react-refresh: 0.11.0 resolve: 1.22.1 resolve-url-loader: 4.0.0 - sass-loader: 12.6.0_webpack@5.75.0 - semver: 7.3.8 - source-map-loader: 3.0.2_webpack@5.75.0 - style-loader: 3.3.1_webpack@5.75.0 - tailwindcss: 3.2.7 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 + sass-loader: 12.6.0(webpack@5.76.0) + semver: 7.5.2 + source-map-loader: 3.0.2(webpack@5.76.0) + style-loader: 3.3.1(webpack@5.76.0) + tailwindcss: 3.2.7(postcss@8.4.21)(ts-node@10.9.1) + terser-webpack-plugin: 5.3.6(esbuild@0.14.7)(webpack@5.76.0) typescript: 4.9.5 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-dev-server: 4.11.1_qbo4h6w4yojlzp3yj3rjykuawy - webpack-manifest-plugin: 4.1.1_webpack@5.75.0 - workbox-webpack-plugin: 6.5.4_webpack@5.75.0 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-dev-server: 4.11.1(webpack-cli@3.3.12)(webpack@5.76.0) + webpack-manifest-plugin: 4.1.1(webpack@5.76.0) + workbox-webpack-plugin: 6.5.4(webpack@5.76.0) optionalDependencies: fsevents: 2.3.2 transitivePeerDependencies: @@ -20381,7 +26955,7 @@ packages: - webpack-plugin-serve dev: false - /react-shallow-renderer/16.15.0_react@18.2.0: + /react-shallow-renderer@16.15.0(react@18.2.0): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 @@ -20391,7 +26965,7 @@ packages: react-is: 18.2.0 dev: false - /react-table/7.8.0_react@18.2.0: + /react-table@7.8.0(react@18.2.0): resolution: {integrity: sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==} peerDependencies: react: ^16.8.3 || ^17.0.0-0 || ^18.0.0 @@ -20399,32 +26973,32 @@ packages: react: 18.2.0 dev: false - /react-test-renderer/18.2.0_react@18.2.0: + /react-test-renderer@18.2.0(react@18.2.0): resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} peerDependencies: react: ^18.2.0 dependencies: react: 18.2.0 react-is: 18.2.0 - react-shallow-renderer: 16.15.0_react@18.2.0 + react-shallow-renderer: 16.15.0(react@18.2.0) scheduler: 0.23.0 dev: false - /react-textarea-autosize/8.4.0_pmekkgnqduwlme35zpnqhenc34: + /react-textarea-autosize@8.4.0(@types/react@18.0.28)(react@18.2.0): resolution: {integrity: sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ==} engines: {node: '>=10'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 react: 18.2.0 - use-composed-ref: 1.3.0_react@18.2.0 - use-latest: 1.2.1_pmekkgnqduwlme35zpnqhenc34 + use-composed-ref: 1.3.0(react@18.2.0) + use-latest: 1.2.1(@types/react@18.0.28)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false - /react-transition-group/3.0.0_biqbaboplfbrettd7655fr4n2y: + /react-transition-group@3.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-A9ojB/LWECbFj58SNfjK1X9aaAU+1olLS0DFSikvrr2KfMaiBELemHDa5dKNvcTk2t3gUtDL/PJpFrBKDfMpLg==} peerDependencies: react: '>=16.6.0' @@ -20434,32 +27008,32 @@ packages: loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-lifecycles-compat: 3.0.4 dev: false - /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /react/18.2.0: + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 dev: false - /reactstrap/8.10.1_biqbaboplfbrettd7655fr4n2y: + /reactstrap@8.10.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-StjLADa/12yMNjafrSs+UD7sZAGtKpLO9fZp++2Dj0IzJinqY7eQhXlM3nFf0q40YsIcLvQdFc9pKF8PF4f0Qg==} peerDependencies: react: '>=16.3.0' @@ -20469,44 +27043,41 @@ packages: classnames: 2.3.2 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-popper: 1.3.11_react@18.2.0 - react-transition-group: 3.0.0_biqbaboplfbrettd7655fr4n2y + react-dom: 18.2.0(react@18.2.0) + react-popper: 1.3.11(react@18.2.0) + react-transition-group: 3.0.0(react-dom@18.2.0)(react@18.2.0) dev: false - /read-cache/1.0.0: + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: false - /read-pkg-up/3.0.0: + /read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} dependencies: find-up: 2.1.0 read-pkg: 3.0.0 - dev: false - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: false - /read-pkg/3.0.0: + /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} dependencies: load-json-file: 4.0.0 normalize-package-data: 2.5.0 path-type: 3.0.0 - dev: false - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -20514,9 +27085,17 @@ packages: normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: false - /readable-stream/2.3.8: + /readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 @@ -20526,80 +27105,63 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false - /readable-stream/3.6.1: + /readable-stream@3.6.1: resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==} engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - - /readdirp/2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - dependencies: - graceful-fs: 4.2.10 - micromatch: 3.1.10 - readable-stream: 2.3.8 - transitivePeerDependencies: - - supports-color - dev: false - /readdirp/2.2.1_supports-color@6.1.0: + /readdirp@2.2.1(supports-color@6.1.0): resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} engines: {node: '>=0.10'} dependencies: graceful-fs: 4.2.10 - micromatch: 3.1.10_supports-color@6.1.0 + micromatch: 3.1.10(supports-color@6.1.0) readable-stream: 2.3.8 transitivePeerDependencies: - supports-color dev: false - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: false - /reading-time/1.5.0: + /reading-time@1.5.0: resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} dev: false - /rechoir/0.6.2: + /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 - dev: false - /recursive-readdir/2.2.2: + /recursive-readdir@2.2.2: resolution: {integrity: sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==} engines: {node: '>=0.10.0'} dependencies: minimatch: 3.0.4 dev: false - /recursive-readdir/2.2.3: + /recursive-readdir@2.2.3: resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} engines: {node: '>=6.0.0'} dependencies: minimatch: 3.1.2 - dev: false - /redent/2.0.0: + /redent@2.0.0: resolution: {integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==} engines: {node: '>=4'} dependencies: indent-string: 3.2.0 strip-indent: 2.0.0 - dev: false - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -20607,73 +27169,83 @@ packages: strip-indent: 3.0.0 dev: false - /reduce/1.0.2: + /reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + dev: true + + /reduce@1.0.2: resolution: {integrity: sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==} dependencies: object-keys: 1.1.1 dev: false - /redux/4.2.1: + /redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 dev: false - /regenerate-unicode-properties/10.1.0: + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 dev: false - /regenerate/1.4.2: + /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: false - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false - /regenerator-transform/0.15.1: + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 dev: false - /regex-cache/0.4.4: + /regex-cache@0.4.4: resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==} engines: {node: '>=0.10.0'} dependencies: is-equal-shallow: 0.1.3 dev: false - /regex-not/1.0.2: + /regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} dependencies: extend-shallow: 3.0.2 safe-regex: 1.1.0 - dev: false - /regex-parser/2.2.11: + /regex-parser@2.2.11: resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} dev: false - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 functions-have-names: 1.2.3 - dev: false - /regexpp/3.2.0: + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + set-function-name: 2.0.1 + dev: true + + /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - dev: false - /regexpu-core/5.3.1: + /regexpu-core@5.3.1: resolution: {integrity: sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==} engines: {node: '>=4'} dependencies: @@ -20685,47 +27257,45 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: false - /registry-auth-token/3.4.0: + /registry-auth-token@3.4.0: resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} dependencies: rc: 1.2.8 safe-buffer: 5.2.1 - dev: false - /registry-auth-token/4.2.2: + /registry-auth-token@4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} engines: {node: '>=6.0.0'} dependencies: rc: 1.2.8 dev: false - /registry-url/3.1.0: + /registry-url@3.1.0: resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} dependencies: rc: 1.2.8 - dev: false - /registry-url/5.1.0: + /registry-url@5.1.0: resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} engines: {node: '>=8'} dependencies: rc: 1.2.8 dev: false - /regjsparser/0.9.1: + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 dev: false - /relateurl/0.2.7: + /relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} dev: false - /remark-emoji/2.2.0: + /remark-emoji@2.2.0: resolution: {integrity: sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==} dependencies: emoticon: 3.2.0 @@ -20733,17 +27303,17 @@ packages: unist-util-visit: 2.0.3 dev: false - /remark-footnotes/2.0.0: + /remark-footnotes@2.0.0: resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} dev: false - /remark-mdx/1.6.22: + /remark-mdx@1.6.22: resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} dependencies: '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) '@mdx-js/util': 1.6.22 is-alphabetical: 1.0.4 remark-parse: 8.0.3 @@ -20752,7 +27322,7 @@ packages: - supports-color dev: false - /remark-parse/8.0.3: + /remark-parse@8.0.3: resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} dependencies: ccount: 1.1.0 @@ -20773,17 +27343,16 @@ packages: xtend: 4.0.2 dev: false - /remark-squeeze-paragraphs/4.0.0: + /remark-squeeze-paragraphs@4.0.0: resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} dependencies: mdast-squeeze-paragraphs: 4.0.0 dev: false - /remove-trailing-separator/1.1.0: + /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: false - /renderkid/2.0.7: + /renderkid@2.0.7: resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} dependencies: css-select: 4.3.0 @@ -20793,7 +27362,7 @@ packages: strip-ansi: 3.0.1 dev: false - /renderkid/3.0.0: + /renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: css-select: 4.3.0 @@ -20803,17 +27372,29 @@ packages: strip-ansi: 6.0.1 dev: false - /repeat-element/1.1.4: + /repeat-element@1.1.4: resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} engines: {node: '>=0.10.0'} - dev: false - /repeat-string/1.6.1: + /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} - dev: false - /request/2.88.2: + /req-cwd@2.0.0: + resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} + engines: {node: '>=4'} + dependencies: + req-from: 2.0.0 + dev: true + + /req-from@2.0.0: + resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + + /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 @@ -20840,83 +27421,74 @@ packages: uuid: 3.4.0 dev: false - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: false - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: false - /require-like/0.1.2: + /require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} dev: false - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: false - /requizzle/0.2.4: + /requizzle@0.2.4: resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} dependencies: lodash: 4.17.21 - /resolve-cwd/2.0.0: + /resolve-cwd@2.0.0: resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} engines: {node: '>=4'} dependencies: resolve-from: 3.0.0 - dev: false - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - dev: false - /resolve-dir/1.0.1: + /resolve-dir@1.0.1: resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} engines: {node: '>=0.10.0'} dependencies: expand-tilde: 2.0.2 global-modules: 1.0.0 - dev: false - /resolve-from/3.0.0: + /resolve-from@3.0.0: resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} engines: {node: '>=4'} - dev: false - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: false - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: false - /resolve-global/1.0.0: + /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} engines: {node: '>=8'} + requiresBuild: true dependencies: global-dirs: 0.1.1 dev: false optional: true - /resolve-pathname/3.0.0: + /resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} dev: false - /resolve-url-loader/4.0.0: + /resolve-url-loader@4.0.0: resolution: {integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==} engines: {node: '>=8.9'} peerDependencies: @@ -20935,32 +27507,40 @@ packages: source-map: 0.6.1 dev: false - /resolve-url/0.2.1: + /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated - dev: false - /resolve.exports/1.1.1: + /resolve.exports@1.1.1: resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} engines: {node: '>=10'} dev: false - /resolve/1.22.1: + /resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + dev: true + + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + dependencies: + path-parse: 1.0.7 + dev: true + + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false - /resolve/1.8.1: + /resolve@1.8.1: resolution: {integrity: sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==} dependencies: path-parse: 1.0.7 dev: false - /resolve/2.0.0-next.4: + /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: @@ -20969,26 +27549,25 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false - /response-iterator/0.2.6: + /response-iterator@0.2.6: resolution: {integrity: sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==} engines: {node: '>=0.8'} dev: false - /responselike/1.0.2: + /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} dependencies: lowercase-keys: 1.0.1 dev: false - /restore-cursor/2.0.0: + /restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} dependencies: onetime: 2.0.1 signal-exit: 3.0.7 - dev: false - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -20996,66 +27575,66 @@ packages: signal-exit: 3.0.7 dev: false - /ret/0.1.15: + /ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} - dev: false - /retry/0.12.0: + /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - dev: false - /retry/0.13.1: + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - dev: false - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - /rgb-regex/1.0.1: + /rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} dev: false - /rgba-regex/1.0.0: + /rgba-regex@1.0.0: resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} dev: false - /rimraf/2.7.1: + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.3 - dev: false - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /ripemd160/2.0.2: + /ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 - dev: false - /robust-predicates/3.0.1: + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + dependencies: + bn.js: 5.2.1 + dev: true + + /robust-predicates@3.0.1: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false - /rollup-plugin-alias/1.5.2: + /rollup-plugin-alias@1.5.2: resolution: {integrity: sha512-ODeZXhTxpD48sfcYLAFc1BGrsXKDj7o1CSNH3uYbdK3o0NxyMmaQPTNgW+ko+am92DLC8QSTe4kyxTuEkI5S5w==} deprecated: This module has moved and is now available at @rollup/plugin-alias. Please update your dependencies. This version is no longer maintained. dependencies: slash: 3.0.0 - dev: false - /rollup-plugin-commonjs/9.3.4_rollup@2.3.0: + /rollup-plugin-commonjs@9.3.4(rollup@2.3.0): resolution: {integrity: sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs. peerDependencies: @@ -21068,14 +27647,35 @@ packages: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-json/3.1.0: + /rollup-plugin-commonjs@9.3.4(rollup@2.78.0): + resolution: {integrity: sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs. + peerDependencies: + rollup: '>=0.56.0' + dependencies: + estree-walker: 0.6.1 + magic-string: 0.25.9 + resolve: 1.22.1 + rollup: 2.78.0 + rollup-pluginutils: 2.8.2 + dev: true + + /rollup-plugin-json@3.1.0: resolution: {integrity: sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw==} deprecated: This module has been deprecated and is no longer maintained. Please use @rollup/plugin-json. dependencies: rollup-pluginutils: 2.8.2 - dev: false - /rollup-plugin-node-globals/1.4.0: + /rollup-plugin-node-builtins@2.1.2: + resolution: {integrity: sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==} + dependencies: + browserify-fs: 1.0.0 + buffer-es6: 4.9.3 + crypto-browserify: 3.12.0 + process-es6: 0.11.6 + dev: true + + /rollup-plugin-node-globals@1.4.0: resolution: {integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==} dependencies: acorn: 5.7.4 @@ -21084,31 +27684,37 @@ packages: magic-string: 0.22.5 process-es6: 0.11.6 rollup-pluginutils: 2.8.2 - dev: false - /rollup-plugin-node-resolve/3.4.0: + /rollup-plugin-node-resolve@3.4.0: resolution: {integrity: sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. dependencies: builtin-modules: 2.0.0 is-module: 1.0.0 resolve: 1.22.1 - dev: false - /rollup-plugin-terser/7.0.2_rollup@2.79.1: + /rollup-plugin-polyfill-node@0.12.0(rollup@2.78.0): + resolution: {integrity: sha512-PWEVfDxLEKt8JX1nZ0NkUAgXpkZMTb85rO/Ru9AQ69wYW8VUCfDgP4CGRXXWYni5wDF0vIeR1UoF3Jmw/Lt3Ug==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 + dependencies: + '@rollup/plugin-inject': 5.0.3(rollup@2.78.0) + rollup: 2.78.0 + dev: true + + /rollup-plugin-terser@7.0.2(rollup@2.78.0): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: rollup: ^2.0.0 dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 jest-worker: 26.6.2 - rollup: 2.79.1 + rollup: 2.78.0 serialize-javascript: 4.0.0 terser: 5.14.2 - dev: false - /rollup-plugin-typescript2/0.17.1_hv6j66ztj3ffqlhbyi5jzfu7gi: + /rollup-plugin-typescript2@0.17.1(rollup@2.3.0)(typescript@4.9.5): resolution: {integrity: sha512-WZJ220IID2UJm3P15zIWQR6vi6YekRsL4irXYq/C9JHg+j9rqQOsihzXQM644LMgtwS3NUWKegbCOhUlCO7hKQ==} peerDependencies: rollup: '>=0.50.0' @@ -21122,20 +27728,34 @@ packages: typescript: 4.9.5 dev: false - /rollup-pluginutils/2.3.3: + /rollup-plugin-typescript2@0.34.1(rollup@2.78.0)(typescript@4.9.5): + resolution: {integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + find-cache-dir: 3.3.2 + fs-extra: 10.1.0 + rollup: 2.78.0 + semver: 7.5.2 + tslib: 2.5.0 + typescript: 4.9.5 + dev: true + + /rollup-pluginutils@2.3.3: resolution: {integrity: sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==} dependencies: estree-walker: 0.5.2 micromatch: 2.3.11 dev: false - /rollup-pluginutils/2.8.2: + /rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} dependencies: estree-walker: 0.6.1 - dev: false - /rollup/2.3.0: + /rollup@2.3.0: resolution: {integrity: sha512-nIq2Z9YwNbEfqTlAXe/tVl8CwUsjX/8Q5Jxlx+JRoYCu5keKLc6k0zyt11sM6WtCDxhmmJEIosFy9y26ZFRx6w==} engines: {node: '>=10.0.0'} hasBin: true @@ -21143,113 +27763,130 @@ packages: fsevents: 2.1.3 dev: false - /rollup/2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + /rollup@2.78.0: + resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: false - /rst-selector-parser/2.2.3: + /rst-selector-parser@2.2.3: resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} dependencies: lodash.flattendeep: 4.4.0 nearley: 2.20.1 dev: false - /rsvp/4.8.5: + /rsvp@4.8.5: resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} engines: {node: 6.* || >= 7.*} - dev: false - /rtl-detect/1.0.4: + /rtl-detect@1.0.4: resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==} dev: false - /rtlcss/3.5.0: + /rtlcss@3.5.0: resolution: {integrity: sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==} hasBin: true dependencies: find-up: 5.0.0 picocolors: 1.0.0 - postcss: 8.4.21 + postcss: 8.4.23 strip-json-comments: 3.1.1 dev: false - /run-async/2.4.1: + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} dev: false - /run-parallel/1.2.0: + /run-parallel-limit@1.1.0: + resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: false - /run-queue/1.0.3: + /run-queue@1.0.3: resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} dependencies: aproba: 1.2.0 dev: false - /rw/1.3.3: + /rustbn.js@0.2.0: + resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} + dev: true + + /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false - /rxjs/7.8.0: + /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /safe-buffer/5.1.2: + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.3.1 + dev: true + + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 is-regex: 1.1.4 - dev: false - /safe-regex/1.1.0: + /safe-regex@1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} dependencies: ret: 0.1.15 - dev: false - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - /sane/4.1.0: + /sane@4.1.0: resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} engines: {node: 6.* || 8.* || >= 10.*} deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added hasBin: true dependencies: '@cnakazawa/watch': 1.0.4 - anymatch: 2.0.0 + anymatch: 2.0.0(supports-color@6.1.0) capture-exit: 2.0.0 exec-sh: 0.3.6 execa: 1.0.0 fb-watchman: 2.0.2 - micromatch: 3.1.10 + micromatch: 3.1.10(supports-color@6.1.0) minimist: 1.2.8 walker: 1.0.8 transitivePeerDependencies: - supports-color - dev: false - /sanitize-html/2.10.0: + /sanitize-html@2.10.0: resolution: {integrity: sha512-JqdovUd81dG4k87vZt6uA6YhDfWkUGruUu/aPmXLxXi45gZExnt9Bnw/qeQU8oGf82vPyaE0vO4aH0PbobB9JQ==} dependencies: deepmerge: 4.3.0 @@ -21260,11 +27897,11 @@ packages: postcss: 8.4.21 dev: false - /sanitize.css/13.0.0: + /sanitize.css@13.0.0: resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==} dev: false - /sass-loader/12.6.0_webpack@5.75.0: + /sass-loader@12.6.0(webpack@5.76.0): resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -21285,84 +27922,105 @@ packages: dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /sax/1.2.4: + /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false - /saxes/5.0.1: + /saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} dependencies: xmlchars: 2.2.0 - dev: false - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: false - /scheduler/0.23.0: + /sc-istanbul@0.4.6: + resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} + hasBin: true + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + dev: true + + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false - /schema-utils/1.0.0: + /schema-utils@1.0.0: resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} engines: {node: '>= 4'} dependencies: ajv: 6.12.6 - ajv-errors: 1.0.1_ajv@6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-errors: 1.0.1(ajv@6.12.6) + ajv-keywords: 3.5.2(ajv@6.12.6) dev: false - /schema-utils/2.7.0: + /schema-utils@2.7.0: resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} engines: {node: '>= 8.9.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) dev: false - /schema-utils/2.7.1: + /schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} engines: {node: '>= 8.9.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) dev: false - /schema-utils/3.1.1: + /schema-utils@3.1.1: resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 - dev: false + ajv-keywords: 3.5.2(ajv@6.12.6) - /schema-utils/4.0.0: + /schema-utils@4.0.0: resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 8.12.0 - ajv-formats: 2.1.1 - ajv-keywords: 5.1.0_ajv@8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) dev: false - /scrypt-js/3.0.1: + /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + /scryptsy@2.1.0: + resolution: {integrity: sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==} dev: false - /secp256k1/3.8.0: + /secp256k1@3.8.0: resolution: {integrity: sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==} engines: {node: '>=4.0.0'} requiresBuild: true @@ -21377,7 +28035,17 @@ packages: safe-buffer: 5.2.1 dev: false - /section-matter/1.0.0: + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.6.0 + dev: true + + /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} dependencies: @@ -21385,59 +28053,61 @@ packages: kind-of: 6.0.3 dev: false - /select-hose/2.0.0: + /select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: false - /selfsigned/1.10.14: + /selfsigned@1.10.14: resolution: {integrity: sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==} dependencies: node-forge: 0.10.0 dev: false - /selfsigned/2.1.1: + /selfsigned@2.1.1: resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} engines: {node: '>=10'} dependencies: node-forge: 1.3.1 dev: false - /semver-diff/2.1.0: + /semver-diff@2.1.0: resolution: {integrity: sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==} engines: {node: '>=0.10.0'} dependencies: semver: 5.7.1 - dev: false - /semver-diff/3.1.1: + /semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: false - /semver/5.7.1: + /semver@2.3.2: + resolution: {integrity: sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==} + hasBin: true + dev: true + + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true - dev: false - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - dev: false - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.2: + resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /send/0.18.0: + /send@0.18.0(supports-color@6.1.0): resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@6.1.0) depd: 2.0.0 destroy: 1.2.0 encodeurl: 1.0.2 @@ -21454,40 +28124,23 @@ packages: - supports-color dev: false - /send/0.18.0_supports-color@6.1.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + /serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: - debug: 2.6.9_supports-color@6.1.0 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: false + randombytes: 2.1.0 - /serialize-javascript/4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 - dev: false + dev: true - /serialize-javascript/6.0.1: + /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 - dev: false - /serve-handler/6.1.5: + /serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} dependencies: bytes: 3.0.0 @@ -21500,28 +28153,13 @@ packages: range-parser: 1.2.0 dev: false - /serve-index/1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /serve-index/1.9.1_supports-color@6.1.0: + /serve-index@1.9.1(supports-color@6.1.0): resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 batch: 0.6.1 - debug: 2.6.9_supports-color@6.1.0 + debug: 2.6.9(supports-color@6.1.0) escape-html: 1.0.3 http-errors: 1.6.3 mime-types: 2.1.35 @@ -21530,35 +28168,42 @@ packages: - supports-color dev: false - /serve-static/1.15.0: + /serve-static@1.15.0(supports-color@6.1.0): resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.18.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: false - /serve-static/1.15.0_supports-color@6.1.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0_supports-color@6.1.0 - transitivePeerDependencies: - - supports-color - dev: false + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: true - /set-value/2.0.1: + /set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} dependencies: @@ -21566,72 +28211,75 @@ packages: is-extendable: 0.1.1 is-plain-object: 2.0.4 split-string: 3.1.0 - dev: false - /setimmediate/1.0.5: + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false - /setprototypeof/1.1.0: + /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} dev: false - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false - /sha.js/2.4.11: + /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /shallow-clone/3.0.1: + /sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + dev: true + + /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} dependencies: kind-of: 6.0.3 dev: false - /shallowequal/1.1.0: + /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: false - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 - dev: false - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: false - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} - dev: false - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: false - /shell-quote/1.7.2: + /shell-quote@1.7.2: resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} dev: false - /shell-quote/1.8.0: + /shell-quote@1.8.0: resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} dev: false - /shelljs/0.8.5: + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} hasBin: true @@ -21639,32 +28287,29 @@ packages: glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 - dev: false - /shellwords/0.1.1: + /shellwords@0.1.1: resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} - dev: false + requiresBuild: true optional: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.0 object-inspect: 1.12.3 - dev: false - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - /simple-swizzle/0.2.2: + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 dev: false - /sirv/1.0.19: + /sirv@1.0.19: resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} dependencies: @@ -21673,11 +28318,10 @@ packages: totalist: 1.1.0 dev: false - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false - /sitemap/7.1.1: + /sitemap@7.1.1: resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} engines: {node: '>=12.0.0', npm: '>=5.6.0'} hasBin: true @@ -21688,82 +28332,62 @@ packages: sax: 1.2.4 dev: false - /slash/1.0.0: + /slash@1.0.0: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} dev: false - /slash/2.0.0: + /slash@2.0.0: resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} engines: {node: '>=6'} dev: false - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: false - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: false - /slash/5.0.0: + /slash@5.0.0: resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} engines: {node: '>=14.16'} dev: false - /slice-ansi/4.0.0: + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: false - /smoothscroll-polyfill/0.4.4: + /smoothscroll-polyfill@0.4.4: resolution: {integrity: sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==} dev: false - /snapdragon-node/2.1.1: + /snapdragon-node@2.1.1: resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} engines: {node: '>=0.10.0'} dependencies: define-property: 1.0.0 isobject: 3.0.1 snapdragon-util: 3.0.1 - dev: false - /snapdragon-util/3.0.1: + /snapdragon-util@3.0.1: resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false - - /snapdragon/0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.6 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false - /snapdragon/0.8.2_supports-color@6.1.0: + /snapdragon@0.8.2(supports-color@6.1.0): resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} engines: {node: '>=0.10.0'} dependencies: base: 0.11.2 - debug: 2.6.9_supports-color@6.1.0 + debug: 2.6.9(supports-color@6.1.0) define-property: 0.2.5 extend-shallow: 2.0.1 map-cache: 0.2.2 @@ -21772,13 +28396,12 @@ packages: use: 3.1.1 transitivePeerDependencies: - supports-color - dev: false - /sockjs-client/1.6.1_supports-color@6.1.0: + /sockjs-client@1.6.1(supports-color@6.1.0): resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} engines: {node: '>=12'} dependencies: - debug: 3.2.7_supports-color@6.1.0 + debug: 3.2.7(supports-color@6.1.0) eventsource: 2.0.2 faye-websocket: 0.11.4 inherits: 2.0.4 @@ -21787,7 +28410,7 @@ packages: - supports-color dev: false - /sockjs/0.3.24: + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: faye-websocket: 0.11.4 @@ -21795,42 +28418,83 @@ packages: websocket-driver: 0.7.4 dev: false - /sodium-native/3.3.0: - resolution: {integrity: sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==} - requiresBuild: true + /solc@0.7.3(debug@4.3.4): + resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} + engines: {node: '>=8.0.0'} + hasBin: true dependencies: - node-gyp-build: 4.6.0 - dev: false + command-exists: 1.2.9 + commander: 3.0.2 + follow-redirects: 1.15.2(debug@4.3.4) + fs-extra: 0.30.0 + js-sha3: 0.8.0 + memorystream: 0.3.1 + require-from-string: 2.0.2 + semver: 5.7.1 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + dev: true - /sodium-randbytes/0.14.0: - resolution: {integrity: sha512-X5HXTHiorRs8Jte7+SEwxnX0ZPmDdU3TxYIIOoTklEgdiFELtQ1CwwyBBePPZlN0T+XDNBlNaikPRarfT0cK/A==} + /solidity-ast@0.4.55: + resolution: {integrity: sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==} dependencies: - '@types/sodium-native': 2.3.5 - sodium-native: 3.3.0 - dev: false + array.prototype.findlast: 1.2.3 + dev: true + + /solidity-coverage@0.8.5(hardhat@2.19.4): + resolution: {integrity: sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==} + hasBin: true + peerDependencies: + hardhat: ^2.11.0 + dependencies: + '@ethersproject/abi': 5.7.0 + '@solidity-parser/parser': 0.16.2 + chalk: 2.4.2 + death: 1.1.0 + detect-port: 1.5.1 + difflib: 0.2.4 + fs-extra: 8.1.0 + ghost-testrpc: 0.0.2 + global-modules: 2.0.0 + globby: 10.0.2 + hardhat: 2.19.4(ts-node@10.9.1)(typescript@5.3.3) + jsonschema: 1.4.1 + lodash: 4.17.21 + mocha: 10.2.0 + node-emoji: 1.11.0 + pify: 4.0.1 + recursive-readdir: 2.2.3 + sc-istanbul: 0.4.6 + semver: 7.5.2 + shelljs: 0.8.5 + web3-utils: 1.10.3 + transitivePeerDependencies: + - supports-color + dev: true - /sort-css-media-queries/2.1.0: + /sort-css-media-queries@2.1.0: resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} engines: {node: '>= 6.3.0'} dev: false - /sort-keys/2.0.0: + /sort-keys@2.0.0: resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} engines: {node: '>=4'} dependencies: is-plain-obj: 1.1.0 dev: false - /source-list-map/2.0.1: + /source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: false - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: false - /source-map-loader/3.0.2_webpack@5.75.0: + /source-map-loader@3.0.2(webpack@5.76.0): resolution: {integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -21839,10 +28503,10 @@ packages: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.0.2 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /source-map-resolve/0.5.3: + /source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: @@ -21851,89 +28515,79 @@ packages: resolve-url: 0.2.1 source-map-url: 0.4.1 urix: 0.1.0 - dev: false - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false - /source-map-url/0.4.1: + /source-map-url@0.4.1: resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: false - /source-map/0.5.6: + /source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + amdefine: 1.0.1 + dev: true + optional: true + + /source-map@0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} - dev: false - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.4: + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - dev: false - /source-map/0.8.0-beta.0: + /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 dev: false - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead - dev: false - /space-separated-tokens/1.1.5: + /space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} dev: false - /spdx-correct/3.2.0: + /spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + dev: true + + /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 - dev: false - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: false - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 - dev: false - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - dev: false - - /spdy-transport/3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - dependencies: - debug: 4.3.4 - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.1 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - dev: false - /spdy-transport/3.0.0_supports-color@6.1.0: + /spdy-transport@3.0.0(supports-color@6.1.0): resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4_supports-color@6.1.0 + debug: 4.3.4(supports-color@6.1.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -21943,44 +28597,29 @@ packages: - supports-color dev: false - /spdy/4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - dependencies: - debug: 4.3.4 - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /spdy/4.0.2_supports-color@6.1.0: + /spdy@4.0.2(supports-color@6.1.0): resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4_supports-color@6.1.0 + debug: 4.3.4(supports-color@6.1.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 - spdy-transport: 3.0.0_supports-color@6.1.0 + spdy-transport: 3.0.0(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: false - /split-string/3.1.0: + /split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} dependencies: extend-shallow: 3.0.2 - dev: false - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false - /sshpk/1.17.0: + /sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -21996,96 +28635,100 @@ packages: tweetnacl: 0.14.5 dev: false - /ssri/6.0.2: + /ssri@6.0.2: resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} dependencies: figgy-pudding: 3.5.2 dev: false - /stable/0.1.8: + /stable@0.1.8: resolution: {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: false - /stack-utils/1.0.5: + /stack-utils@1.0.5: resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} engines: {node: '>=8'} dependencies: escape-string-regexp: 2.0.0 dev: false - /stack-utils/2.0.6: + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - dev: false - /stackframe/1.3.4: + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: false - /state-toggle/1.0.3: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: true + + /state-toggle@1.0.3: resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} dev: false - /static-extend/0.1.2: + /static-extend@0.1.2: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} dependencies: define-property: 0.2.5 object-copy: 0.1.0 - dev: false - /statuses/1.5.0: + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} dev: false - /statuses/2.0.1: + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - dev: false - /std-env/2.3.1: + /std-env@2.3.1: resolution: {integrity: sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==} dependencies: ci-info: 3.8.0 dev: false - /std-env/3.3.2: + /std-env@3.3.2: resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} dev: false - /stop-iteration-iterator/1.0.0: + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 dev: false - /stream-browserify/2.0.2: + /stream-browserify@2.0.2: resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} dependencies: inherits: 2.0.4 readable-stream: 2.3.8 dev: false - /stream-browserify/3.0.0: + /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: inherits: 2.0.4 readable-stream: 3.6.1 dev: false - /stream-each/1.2.3: + /stream-each@1.2.3: resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} dependencies: end-of-stream: 1.4.4 stream-shift: 1.0.1 dev: false - /stream-http/2.8.3: + /stream-http@2.8.3: resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} dependencies: builtin-status-codes: 3.0.0 @@ -22095,7 +28738,7 @@ packages: xtend: 4.0.2 dev: false - /stream-http/3.2.0: + /stream-http@3.2.0: resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} dependencies: builtin-status-codes: 3.0.0 @@ -22104,24 +28747,27 @@ packages: xtend: 4.0.2 dev: false - /stream-shift/1.0.1: + /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} dev: false - /strict-uri-encode/1.1.0: + /strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} dev: false - /string-length/4.0.2: + /string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + dev: true + + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: false - /string-length/5.0.1: + /string-length@5.0.1: resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} engines: {node: '>=12.20'} dependencies: @@ -22129,37 +28775,38 @@ packages: strip-ansi: 7.0.1 dev: false - /string-natural-compare/3.0.1: + /string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: false - /string-width/2.1.1: + /string-range@1.2.2: + resolution: {integrity: sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==} + dev: true + + /string-width@2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} engines: {node: '>=4'} dependencies: is-fullwidth-code-point: 2.0.0 strip-ansi: 4.0.0 - dev: false - /string-width/3.1.0: + /string-width@3.1.0: resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} engines: {node: '>=6'} dependencies: emoji-regex: 7.0.3 is-fullwidth-code-point: 2.0.0 strip-ansi: 5.2.0 - dev: false - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: false - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -22168,7 +28815,7 @@ packages: strip-ansi: 7.0.1 dev: false - /string.prototype.matchall/4.0.8: + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 @@ -22181,7 +28828,7 @@ packages: side-channel: 1.0.4 dev: false - /string.prototype.trim/1.2.7: + /string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: @@ -22190,35 +28837,60 @@ packages: es-abstract: 1.21.1 dev: false - /string.prototype.trimend/1.0.6: + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.1 - dev: false - /string.prototype.trimstart/1.0.6: + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.1 - dev: false - /string_decoder/1.1.1: + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + dev: true + + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: true + + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: false - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: false - /stringify-object/3.3.0: + /stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} dependencies: @@ -22227,100 +28899,98 @@ packages: is-regexp: 1.0.0 dev: false - /strip-ansi/3.0.1: + /strip-ansi@3.0.1: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 dev: false - /strip-ansi/4.0.0: + /strip-ansi@4.0.0: resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} engines: {node: '>=4'} dependencies: ansi-regex: 3.0.1 - dev: false - /strip-ansi/5.2.0: + /strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 - dev: false - /strip-ansi/6.0.0: + /strip-ansi@6.0.0: resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: false - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: false - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: false - /strip-bom-string/1.0.0: + /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} dev: false - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - dev: false - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - dev: false - /strip-comments/2.0.1: + /strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} dev: false - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} - dev: false - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: false - /strip-indent/2.0.0: + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: true + + /strip-indent@2.0.0: resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} engines: {node: '>=4'} - dev: false - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: false - /strip-json-comments/2.0.1: + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: false - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /style-loader/1.3.0_webpack@5.75.0: + /style-loader@1.3.0(webpack@5.76.0): resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} engines: {node: '>= 8.9.0'} peerDependencies: @@ -22328,25 +28998,25 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 2.7.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /style-loader/3.3.1_webpack@5.75.0: + /style-loader@3.3.1(webpack@5.76.0): resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /style-to-object/0.3.0: + /style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} dependencies: inline-style-parser: 0.1.1 dev: false - /styled-components/4.4.1_biqbaboplfbrettd7655fr4n2y: + /styled-components@4.4.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==} requiresBuild: true peerDependencies: @@ -22354,23 +29024,23 @@ packages: react-dom: '>= 16.3.0' dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/traverse': 7.21.2_supports-color@5.5.0 + '@babel/traverse': 7.23.5(supports-color@5.5.0) '@emotion/is-prop-valid': 0.8.8 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.0.7_styled-components@4.4.1 + babel-plugin-styled-components: 2.0.7(styled-components@4.4.1) css-to-react-native: 2.3.2 memoize-one: 5.2.1 merge-anything: 2.4.4 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-is: 16.13.1 stylis: 3.5.4 - stylis-rule-sheet: 0.0.10_stylis@3.5.4 + stylis-rule-sheet: 0.0.10(stylis@3.5.4) supports-color: 5.5.0 dev: false - /styled-jsx/5.1.0_react@18.2.0: + /styled-jsx@5.1.0(@babel/core@7.21.8)(react@18.2.0): resolution: {integrity: sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -22383,11 +29053,12 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.21.8 client-only: 0.0.1 react: 18.2.0 dev: false - /stylehacks/4.0.3: + /stylehacks@4.0.3: resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==} engines: {node: '>=6.9.0'} dependencies: @@ -22396,7 +29067,7 @@ packages: postcss-selector-parser: 3.1.2 dev: false - /stylehacks/5.1.1_postcss@8.4.21: + /stylehacks@5.1.1(postcss@8.4.21): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -22404,10 +29075,21 @@ packages: dependencies: browserslist: 4.21.5 postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss-selector-parser: 6.0.13 + dev: false + + /stylehacks@5.1.1(postcss@8.4.23): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + postcss: 8.4.23 + postcss-selector-parser: 6.0.13 dev: false - /stylis-rule-sheet/0.0.10_stylis@3.5.4: + /stylis-rule-sheet@0.0.10(stylis@3.5.4): resolution: {integrity: sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==} peerDependencies: stylis: ^3.5.0 @@ -22415,11 +29097,11 @@ packages: stylis: 3.5.4 dev: false - /stylis/3.5.4: + /stylis@3.5.4: resolution: {integrity: sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==} dev: false - /stylus-loader/3.0.2_stylus@0.54.8: + /stylus-loader@3.0.2(stylus@0.54.8): resolution: {integrity: sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==} peerDependencies: stylus: '>=0.52.4' @@ -22430,7 +29112,7 @@ packages: when: 3.6.4 dev: false - /stylus/0.54.8: + /stylus@0.54.8: resolution: {integrity: sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==} hasBin: true dependencies: @@ -22446,55 +29128,57 @@ packages: - supports-color dev: false - /supports-color/5.5.0: + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: false - /supports-color/6.1.0: + /supports-color@6.1.0: resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} engines: {node: '>=6'} dependencies: has-flag: 3.0.0 - dev: false - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: false - /supports-hyperlinks/2.3.0: + /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 supports-color: 7.2.0 - dev: false - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: false - /svg-parser/2.0.4: + /svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: false - /svg-tags/1.0.0: + /svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: false - /svgo/1.3.2: + /svgo@1.3.2: resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} engines: {node: '>=4.0.0'} deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. @@ -22515,7 +29199,7 @@ packages: util.promisify: 1.0.1 dev: false - /svgo/2.8.0: + /svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} engines: {node: '>=10.13.0'} hasBin: true @@ -22529,21 +29213,45 @@ packages: stable: 0.1.8 dev: false - /symbol-observable/1.2.0: + /symbol-observable@1.2.0: resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} engines: {node: '>=0.10.0'} dev: false - /symbol-observable/4.0.0: + /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} dev: false - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: false - /table/6.8.1: + /sync-request@6.1.0: + resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} + engines: {node: '>=8.0.0'} + dependencies: + http-response-object: 3.0.2 + sync-rpc: 1.3.6 + then-request: 6.0.2 + dev: true + + /sync-rpc@1.3.6: + resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} + dependencies: + get-port: 3.2.0 + dev: true + + /table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + dev: true + + /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: @@ -22552,15 +29260,16 @@ packages: slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /taffydb/2.6.2: + /taffydb@2.6.2: resolution: {integrity: sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==} - /tailwindcss/3.2.7: + /tailwindcss@3.2.7(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} engines: {node: '>=12.13.0'} hasBin: true + peerDependencies: + postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -22577,10 +29286,44 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0_postcss@8.4.21 - postcss-js: 4.0.1_postcss@8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 6.0.0_postcss@8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-nested: 6.0.0(postcss@8.4.21) + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: false + + /tailwindcss@3.2.7(postcss@8.4.23)(ts-node@10.9.1): + resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.23 + postcss-import: 14.1.0(postcss@8.4.23) + postcss-js: 4.0.1(postcss@8.4.23) + postcss-load-config: 3.1.4(postcss@8.4.23)(ts-node@10.9.1) + postcss-nested: 6.0.0(postcss@8.4.23) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -22589,22 +29332,20 @@ packages: - ts-node dev: false - /tapable/1.1.3: + /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} - dev: false - /tapable/2.2.1: + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - dev: false - /temp-dir/2.0.0: + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} dev: false - /tempy/0.6.0: + /tempy@0.6.0: resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} engines: {node: '>=10'} dependencies: @@ -22614,27 +29355,25 @@ packages: unique-string: 2.0.0 dev: false - /term-size/1.2.0: + /term-size@1.2.0: resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} engines: {node: '>=4'} dependencies: execa: 0.7.0 - dev: false - /term-size/2.2.1: + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: false - /terminal-link/2.1.1: + /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} dependencies: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - dev: false - /terser-webpack-plugin/1.4.5_webpack@4.46.0: + /terser-webpack-plugin@1.4.5(webpack@4.46.0): resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -22647,12 +29386,12 @@ packages: serialize-javascript: 4.0.0 source-map: 0.6.1 terser: 4.8.1 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) webpack-sources: 1.4.3 worker-farm: 1.7.0 dev: false - /terser-webpack-plugin/5.3.6_webpack@5.75.0: + /terser-webpack-plugin@5.3.6(esbuild@0.14.7)(webpack@5.76.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -22668,15 +29407,15 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 + esbuild: 0.14.7 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 terser: 5.14.2 - webpack: 5.75.0_webpack-cli@3.3.12 - dev: false + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) - /terser/4.8.1: + /terser@4.8.1: resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} engines: {node: '>=6.0.0'} hasBin: true @@ -22687,7 +29426,7 @@ packages: source-map-support: 0.5.21 dev: false - /terser/5.14.2: + /terser@5.14.2: resolution: {integrity: sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==} engines: {node: '>=10'} hasBin: true @@ -22696,130 +29435,141 @@ packages: acorn: 8.8.2 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: false - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: false - /throat/5.0.0: + /then-request@6.0.2: + resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} + engines: {node: '>=6.0.0'} + dependencies: + '@types/concat-stream': 1.6.1 + '@types/form-data': 0.0.33 + '@types/node': 8.10.66 + '@types/qs': 6.9.7 + caseless: 0.12.0 + concat-stream: 1.6.2 + form-data: 2.3.3 + http-basic: 8.1.3 + http-response-object: 3.0.2 + promise: 8.3.0 + qs: 6.11.0 + dev: true + + /throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: false - /throat/6.0.2: + /throat@6.0.2: resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} dev: false - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false - - /through2/2.0.5: + /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 dev: false - /thunky/1.1.0: + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: false + + /thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: false - /timed-out/4.0.1: + /time-stamp@1.1.0: + resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} + engines: {node: '>=0.10.0'} + dev: true + + /timed-out@4.0.1: resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} engines: {node: '>=0.10.0'} - dev: false - /timers-browserify/2.0.12: + /timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} dependencies: setimmediate: 1.0.5 dev: false - /timsort/0.3.0: + /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false - /tiny-invariant/1.3.1: + /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false - /tiny-warning/1.0.3: + /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} dev: false - /titleize/1.0.1: + /titleize@1.0.1: resolution: {integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==} engines: {node: '>=0.10.0'} - dev: false - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: false - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: false - /to-arraybuffer/1.0.1: + /to-arraybuffer@1.0.1: resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} dev: false - /to-factory/1.0.0: + /to-factory@1.0.0: resolution: {integrity: sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ==} dev: false - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-object-path/0.3.0: + /to-object-path@0.3.0: resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false - /to-readable-stream/1.0.0: + /to-readable-stream@1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} engines: {node: '>=6'} dev: false - /to-regex-range/2.1.1: + /to-regex-range@2.1.1: resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} engines: {node: '>=0.10.0'} dependencies: is-number: 3.0.0 repeat-string: 1.6.1 - dev: false - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: false - /to-regex/3.0.2: + /to-regex@3.0.2: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} engines: {node: '>=0.10.0'} dependencies: @@ -22827,27 +29577,25 @@ packages: extend-shallow: 3.0.2 regex-not: 1.0.2 safe-regex: 1.1.0 - dev: false - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - dev: false - /toml/3.0.0: + /toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} dev: false - /toposort/1.0.7: + /toposort@1.0.7: resolution: {integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==} dev: false - /totalist/1.1.0: + /totalist@1.1.0: resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} engines: {node: '>=6'} dev: false - /tough-cookie/2.5.0: + /tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} dependencies: @@ -22855,7 +29603,7 @@ packages: punycode: 2.3.0 dev: false - /tough-cookie/4.1.2: + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: @@ -22863,67 +29611,86 @@ packages: punycode: 2.3.0 universalify: 0.2.0 url-parse: 1.5.10 - dev: false - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - /tr46/1.0.1: + /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.3.0 dev: false - /tr46/2.1.0: + /tr46@2.1.0: resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} engines: {node: '>=8'} dependencies: punycode: 2.3.0 - dev: false - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.3.0 dev: false - /trim-newlines/2.0.0: + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /trim-newlines@2.0.0: resolution: {integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==} engines: {node: '>=4'} - dev: false - /trim-trailing-lines/1.1.4: + /trim-trailing-lines@1.1.4: resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} dev: false - /trim/0.0.1: + /trim@0.0.1: resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} dev: false - /trough/1.0.5: + /trough@1.0.5: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: false - /tryer/1.0.1: + /tryer@1.0.1: resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} dev: false - /ts-invariant/0.10.3: + /ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + dev: true + + /ts-essentials@7.0.3(typescript@5.3.3): + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + dependencies: + typescript: 5.3.3 + dev: true + + /ts-invariant@0.10.3: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.3.1 dev: false - /ts-invariant/0.4.4: + /ts-invariant@0.4.4: resolution: {integrity: sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==} dependencies: tslib: 1.14.1 dev: false - /ts-jest/27.1.5_5ykj2ace4gydtpy63bx5wlmfey: + /ts-jest@27.1.5(@babel/core@7.21.8)(@types/jest@26.0.24)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5): resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -22944,20 +29711,58 @@ packages: esbuild: optional: true dependencies: + '@babel/core': 7.21.8 '@types/jest': 26.0.24 bs-logger: 0.2.6 + esbuild: 0.14.7 fast-json-stable-stringify: 2.1.0 - jest: 26.6.0 + jest: 26.6.0(ts-node@10.9.1) jest-util: 27.5.1 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.8 + semver: 7.5.2 typescript: 4.9.5 yargs-parser: 20.2.9 dev: false - /ts-loader/8.0.4_typescript@4.9.5: + /ts-jest@27.1.5(@babel/core@7.21.8)(@types/jest@27.0.1)(esbuild@0.14.7)(jest@26.6.0)(typescript@4.9.5): + resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: '*' + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.21.8 + '@types/jest': 27.0.1 + bs-logger: 0.2.6 + esbuild: 0.14.7 + fast-json-stable-stringify: 2.1.0 + jest: 26.6.0(ts-node@7.0.1) + jest-util: 27.5.1 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.2 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-loader@8.0.4(typescript@4.9.5): resolution: {integrity: sha512-5u8KF1SW8eCUb/Ff7At81e3wznPmT/27fvaGRO9CziVy+6NlPVRvrzSox4OwU0/e6OflOUB32Err4VquysCSAQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -22969,9 +29774,8 @@ packages: micromatch: 4.0.5 semver: 6.3.0 typescript: 4.9.5 - dev: false - /ts-node/10.9.1_alpjt73dvgv6kni625hu7f2l4m: + /ts-node@10.9.1(@types/node@12.20.55)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -22990,7 +29794,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.6 + '@types/node': 12.20.55 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -23001,9 +29805,54 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: false - optional: true - /tsconfig-paths/3.14.2: + /ts-node@10.9.1(@types/node@20.9.0)(typescript@5.3.3): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.9.0 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@7.0.1: + resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} + engines: {node: '>=4.2.0'} + hasBin: true + dependencies: + arrify: 1.0.1 + buffer-from: 1.1.2 + diff: 3.5.0 + make-error: 1.3.6 + minimist: 1.2.8 + mkdirp: 0.5.6 + source-map-support: 0.5.21 + yn: 2.0.0 + dev: true + + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 @@ -23012,23 +29861,28 @@ packages: strip-bom: 3.0.0 dev: false - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - /tslib/1.9.3: + /tslib@1.9.3: resolution: {integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==} dev: false - /tslib/2.3.1: + /tslib@2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - dev: false - /tslib/2.5.0: + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: true + + /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: false - /tsutils/3.21.0_typescript@4.9.5: + /tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + dev: true + + /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -23036,76 +29890,82 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - /tty-browserify/0.0.0: + /tty-browserify@0.0.0: resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} dev: false - /tunnel-agent/0.6.0: + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 dev: false - /tweetnacl/0.14.5: + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: true + + /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: false - /type-check/0.3.2: + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: true + + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: false - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - dev: false - /type-fest/0.16.0: + /type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} dev: false - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: false - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: false - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} - dev: false - /type-fest/0.8.1: + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - dev: false - /type-fest/2.19.0: + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: false - /type-fest/3.6.1: + /type-fest@3.6.1: resolution: {integrity: sha512-htXWckxlT6U4+ilVgweNliPqlsVSSucbxVexRYllyMVJDtf5rTjv6kF/s+qAd4QSL1BZcnJPEJavYBPQiWuZDA==} engines: {node: '>=14.16'} dev: false - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -23113,55 +29973,125 @@ packages: mime-types: 2.1.35 dev: false - /type/1.2.0: + /type@1.2.0: resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - dev: false - /type/2.7.2: + /type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: false - /typed-array-length/1.0.4: + /typechain@8.3.2(typescript@5.3.3): + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + dependencies: + '@types/prettier': 2.7.2 + debug: 4.3.4(supports-color@6.1.0) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.10 - dev: false - /typed-styles/0.0.7: + /typed-styles@0.0.7: resolution: {integrity: sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==} dev: false - /typedarray-to-buffer/3.1.5: + /typedarray-to-buffer@1.0.4: + resolution: {integrity: sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==} + dev: true + + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 - dev: false - /typedarray/0.0.6: + /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: false - /typescript/4.9.5: + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - dev: false - /ua-parser-js/0.7.34: + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + dev: true + + /ua-parser-js@0.7.34: resolution: {integrity: sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==} dev: false - /uc.micro/1.0.6: + /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - /uglify-js/3.17.4: + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} hasBin: true - /uglify-js/3.4.10: + /uglify-js@3.4.10: resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} engines: {node: '>=0.8.0'} hasBin: true @@ -23170,43 +30100,56 @@ packages: source-map: 0.6.1 dev: false - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: false - /uncontrollable/7.2.1_react@18.2.0: + /uncontrollable@7.2.1(react@18.2.0): resolution: {integrity: sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==} peerDependencies: react: '>=15.0.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.21.5 '@types/react': 18.0.28 invariant: 2.2.4 react: 18.2.0 react-lifecycles-compat: 3.0.4 dev: false - /underscore/1.13.6: + /underscore@1.13.6: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - /unherit/1.1.3: + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + + /unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: true + + /unherit@1.1.3: resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} dependencies: inherits: 2.0.4 xtend: 4.0.2 dev: false - /unicode-canonical-property-names-ecmascript/2.0.0: + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} dev: false - /unicode-match-property-ecmascript/2.0.0: + /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} dependencies: @@ -23214,17 +30157,17 @@ packages: unicode-property-aliases-ecmascript: 2.1.0 dev: false - /unicode-match-property-value-ecmascript/2.1.0: + /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} dev: false - /unicode-property-aliases-ecmascript/2.1.0: + /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} dev: false - /unified/9.2.0: + /unified@9.2.0: resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} dependencies: '@types/unist': 2.0.6 @@ -23236,7 +30179,7 @@ packages: vfile: 4.2.1 dev: false - /unified/9.2.2: + /unified@9.2.2: resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} dependencies: '@types/unist': 2.0.6 @@ -23248,7 +30191,7 @@ packages: vfile: 4.2.1 dev: false - /union-value/1.0.1: + /union-value@1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} dependencies: @@ -23256,84 +30199,82 @@ packages: get-value: 2.0.6 is-extendable: 0.1.1 set-value: 2.0.1 - dev: false - /uniq/1.0.1: + /uniq@1.0.1: resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} dev: false - /uniqs/2.0.0: + /uniqs@2.0.0: resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} dev: false - /unique-filename/1.1.1: + /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} dependencies: unique-slug: 2.0.2 dev: false - /unique-slug/2.0.2: + /unique-slug@2.0.2: resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} dependencies: imurmurhash: 0.1.4 dev: false - /unique-string/1.0.0: + /unique-string@1.0.0: resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} engines: {node: '>=4'} dependencies: crypto-random-string: 1.0.0 - dev: false - /unique-string/2.0.0: + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 dev: false - /unist-builder/2.0.3: + /unist-builder@2.0.3: resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} dev: false - /unist-util-generated/1.1.6: + /unist-util-generated@1.1.6: resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} dev: false - /unist-util-is/4.1.0: + /unist-util-is@4.1.0: resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} dev: false - /unist-util-position/3.1.0: + /unist-util-position@3.1.0: resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} dev: false - /unist-util-remove-position/2.0.1: + /unist-util-remove-position@2.0.1: resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} dependencies: unist-util-visit: 2.0.3 dev: false - /unist-util-remove/2.1.0: + /unist-util-remove@2.1.0: resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} dependencies: unist-util-is: 4.1.0 dev: false - /unist-util-stringify-position/2.0.3: + /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-visit-parents/3.1.1: + /unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} dependencies: '@types/unist': 2.0.6 unist-util-is: 4.1.0 dev: false - /unist-util-visit/2.0.3: + /unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} dependencies: '@types/unist': 2.0.6 @@ -23341,54 +30282,48 @@ packages: unist-util-visit-parents: 3.1.1 dev: false - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - dev: false - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - dev: false - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: false - /unorm/1.6.0: + /unorm@1.6.0: resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} engines: {node: '>= 0.4.0'} dev: false - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - dev: false - /unquote/1.1.1: + /unquote@1.1.1: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} dev: false - /unset-value/1.0.0: + /unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} dependencies: has-value: 0.3.1 isobject: 3.0.1 - dev: false - /unzip-response/2.0.1: + /unzip-response@2.0.1: resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} engines: {node: '>=4'} - dev: false - /upath/1.2.0: + /upath@1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} dev: false - /update-browserslist-db/1.0.10_browserslist@4.21.5: + /update-browserslist-db@1.0.10(browserslist@4.21.5): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -23397,9 +30332,8 @@ packages: browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 - dev: false - /update-notifier/2.5.0: + /update-notifier@2.5.0: resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} engines: {node: '>=4'} dependencies: @@ -23413,9 +30347,8 @@ packages: latest-version: 3.1.0 semver-diff: 2.1.0 xdg-basedir: 3.0.0 - dev: false - /update-notifier/4.1.3: + /update-notifier@4.1.3: resolution: {integrity: sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==} engines: {node: '>=8'} dependencies: @@ -23434,7 +30367,7 @@ packages: xdg-basedir: 4.0.0 dev: false - /update-notifier/5.1.0: + /update-notifier@5.1.0: resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} engines: {node: '>=10'} dependencies: @@ -23449,27 +30382,25 @@ packages: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.3.8 + semver: 7.5.2 semver-diff: 3.1.1 xdg-basedir: 4.0.0 dev: false - /upper-case/1.1.3: + /upper-case@1.1.3: resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} dev: false - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: false - /urix/0.1.0: + /urix@0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} deprecated: Please see https://github.com/lydell/urix#deprecated - dev: false - /url-loader/1.1.2_webpack@4.46.0: + /url-loader@1.1.2(webpack@4.46.0): resolution: {integrity: sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -23478,10 +30409,10 @@ packages: loader-utils: 1.4.2 mime: 2.6.0 schema-utils: 1.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) dev: false - /url-loader/4.1.1_p5dl6emkcwslbw72e37w4ug7em: + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.76.0): resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -23491,42 +30422,40 @@ packages: file-loader: optional: true dependencies: - file-loader: 6.2.0_webpack@5.75.0 + file-loader: 6.2.0(webpack@5.76.0) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.1.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /url-parse-lax/1.0.0: + /url-parse-lax@1.0.0: resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} engines: {node: '>=0.10.0'} dependencies: prepend-http: 1.0.4 - dev: false - /url-parse-lax/3.0.0: + /url-parse-lax@3.0.0: resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} dependencies: prepend-http: 2.0.0 dev: false - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: false - /url/0.11.0: + /url@0.11.0: resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} dependencies: punycode: 1.3.2 querystring: 0.2.0 dev: false - /use-composed-ref/1.3.0_react@18.2.0: + /use-composed-ref@1.3.0(react@18.2.0): resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -23534,7 +30463,7 @@ packages: react: 18.2.0 dev: false - /use-isomorphic-layout-effect/1.1.2_pmekkgnqduwlme35zpnqhenc34: + /use-isomorphic-layout-effect@1.1.2(@types/react@18.0.28)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -23547,7 +30476,7 @@ packages: react: 18.2.0 dev: false - /use-latest/1.2.1_pmekkgnqduwlme35zpnqhenc34: + /use-latest@1.2.1(@types/react@18.0.28)(react@18.2.0): resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: '@types/react': '*' @@ -23558,10 +30487,10 @@ packages: dependencies: '@types/react': 18.0.28 react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2_pmekkgnqduwlme35zpnqhenc34 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.0.28)(react@18.2.0) dev: false - /use-memo-one/1.1.3_react@18.2.0: + /use-memo-one@1.1.3(react@18.2.0): resolution: {integrity: sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -23569,7 +30498,7 @@ packages: react: 18.2.0 dev: false - /use-sync-external-store/1.2.0_react@18.2.0: + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -23577,12 +30506,11 @@ packages: react: 18.2.0 dev: false - /use/3.1.1: + /use@3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} engines: {node: '>=0.10.0'} - dev: false - /utf-8-validate/5.0.10: + /utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} requiresBuild: true @@ -23590,18 +30518,21 @@ packages: node-gyp-build: 4.6.0 dev: false - /util-deprecate/1.0.2: + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: true + + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - /util.promisify/1.0.0: + /util.promisify@1.0.0: resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} dependencies: define-properties: 1.2.0 object.getownpropertydescriptors: 2.1.5 dev: false - /util.promisify/1.0.1: + /util.promisify@1.0.1: resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} dependencies: define-properties: 1.2.0 @@ -23610,19 +30541,19 @@ packages: object.getownpropertydescriptors: 2.1.5 dev: false - /util/0.10.3: + /util@0.10.3: resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} dependencies: inherits: 2.0.1 dev: false - /util/0.11.1: + /util@0.11.1: resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} dependencies: inherits: 2.0.3 dev: false - /util/0.12.5: + /util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 @@ -23632,55 +30563,50 @@ packages: which-typed-array: 1.1.9 dev: false - /utila/0.4.0: + /utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} dev: false - /utility-types/2.1.0: + /utility-types@2.1.0: resolution: {integrity: sha512-/nP2gqavggo6l38rtQI/CdeV+2fmBGXVvHgj9kV2MAnms3TIi77Mz9BtapPFI0+GZQCqqom0vACQ+VlTTaCovw==} engines: {node: '>= 4'} dev: false - /utility-types/3.10.0: + /utility-types@3.10.0: resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} engines: {node: '>= 4'} dev: false - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: false - /uuid/3.4.0: + /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true - dev: false - /uuid/8.3.2: + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - dev: false - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: false - optional: true + requiresBuild: true - /v8-compile-cache/2.3.0: + /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: false - /v8-to-istanbul/7.1.2: + /v8-to-istanbul@7.1.2: resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} engines: {node: '>=10.10.0'} dependencies: '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 source-map: 0.7.4 - dev: false - /v8-to-istanbul/8.1.1: + /v8-to-istanbul@8.1.1: resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} engines: {node: '>=10.12.0'} dependencies: @@ -23689,27 +30615,26 @@ packages: source-map: 0.7.4 dev: false - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: false - /value-equal/1.0.1: + /value-equal@1.0.1: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} dev: false - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false - /vendors/1.0.4: + /vendors@1.0.4: resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} dev: false - /verror/1.10.0: + /verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} dependencies: @@ -23718,18 +30643,18 @@ packages: extsprintf: 1.3.0 dev: false - /vfile-location/3.2.0: + /vfile-location@3.2.0: resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} dev: false - /vfile-message/2.0.4: + /vfile-message@2.0.4: resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 2.0.3 dev: false - /vfile/4.2.1: + /vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} dependencies: '@types/unist': 2.0.6 @@ -23738,19 +30663,35 @@ packages: vfile-message: 2.0.4 dev: false - /vlq/0.2.3: + /vlq@0.2.3: resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} - dev: false - /vm-browserify/1.1.2: + /vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: false - /vue-hot-reload-api/2.3.4: + /vue-eslint-parser@4.0.3(eslint@7.32.0): + resolution: {integrity: sha512-AUeQsYdO6+7QXCems+WvGlrXd37PHv/zcRQSQdY1xdOMwdFAPEnMBsv7zPvk0TPGulXkK/5p/ITgrjiYB7k3ag==} + engines: {node: '>=6.5'} + peerDependencies: + eslint: ^5.0.0 + dependencies: + debug: 4.3.4(supports-color@6.1.0) + eslint: 7.32.0 + eslint-scope: 4.0.3 + eslint-visitor-keys: 1.3.0 + espree: 4.1.0 + esquery: 1.5.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-hot-reload-api@2.3.4: resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} dev: false - /vue-loader/15.10.1_qzstiqwy2sezhwult7kg3hfzxm: + /vue-loader@15.10.1(cache-loader@3.0.1)(css-loader@2.1.1)(react-dom@18.2.0)(react@18.2.0)(vue-template-compiler@2.7.14)(webpack@4.46.0): resolution: {integrity: sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==} peerDependencies: '@vue/compiler-sfc': ^3.0.8 @@ -23766,15 +30707,15 @@ packages: vue-template-compiler: optional: true dependencies: - '@vue/component-compiler-utils': 3.3.0_biqbaboplfbrettd7655fr4n2y - cache-loader: 3.0.1_webpack@4.46.0 - css-loader: 2.1.1_webpack@4.46.0 + '@vue/component-compiler-utils': 3.3.0(react-dom@18.2.0)(react@18.2.0) + cache-loader: 3.0.1(webpack@4.46.0) + css-loader: 2.1.1(webpack@5.76.0) hash-sum: 1.0.2 loader-utils: 1.4.2 vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) transitivePeerDependencies: - arc-templates - atpl @@ -23831,7 +30772,7 @@ packages: - whiskers dev: false - /vue-router/3.6.5_vue@2.7.14: + /vue-router@3.6.5(vue@2.7.14): resolution: {integrity: sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==} peerDependencies: vue: ^2 @@ -23839,7 +30780,7 @@ packages: vue: 2.7.14 dev: false - /vue-server-renderer/2.7.14: + /vue-server-renderer@2.7.14: resolution: {integrity: sha512-NlGFn24tnUrj7Sqb8njhIhWREuCJcM3140aMunLNcx951BHG8j3XOrPP7psSCaFA8z6L4IWEjudztdwTp1CBVw==} dependencies: chalk: 4.1.2 @@ -23852,32 +30793,32 @@ packages: source-map: 0.5.6 dev: false - /vue-style-loader/4.1.3: + /vue-style-loader@4.1.3: resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} dependencies: hash-sum: 1.0.2 loader-utils: 1.4.2 dev: false - /vue-template-compiler/2.7.14: + /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: de-indent: 1.0.2 he: 1.2.0 dev: false - /vue-template-es2015-compiler/1.9.1: + /vue-template-es2015-compiler@1.9.1: resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} dev: false - /vue/2.7.14: + /vue@2.7.14: resolution: {integrity: sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==} dependencies: '@vue/compiler-sfc': 2.7.14 csstype: 3.1.1 dev: false - /vuepress-html-webpack-plugin/3.2.0_webpack@4.46.0: + /vuepress-html-webpack-plugin@3.2.0(webpack@4.46.0): resolution: {integrity: sha512-BebAEl1BmWlro3+VyDhIOCY6Gef2MCBllEVAP3NUAtMguiyOwo/dClbwJ167WYmcxHJKLl7b0Chr9H7fpn1d0A==} engines: {node: '>=6.9'} peerDependencies: @@ -23890,10 +30831,10 @@ packages: tapable: 1.1.3 toposort: 1.0.7 util.promisify: 1.0.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) dev: false - /vuepress-plugin-container/2.1.5: + /vuepress-plugin-container@2.1.5: resolution: {integrity: sha512-TQrDX/v+WHOihj3jpilVnjXu9RcTm6m8tzljNJwYhxnJUW0WWQ0hFLcDTqTBwgKIFdEiSxVOmYE+bJX/sq46MA==} dependencies: '@vuepress/shared-utils': 1.9.9 @@ -23902,19 +30843,19 @@ packages: - supports-color dev: false - /vuepress-plugin-smooth-scroll/0.0.3: + /vuepress-plugin-smooth-scroll@0.0.3: resolution: {integrity: sha512-qsQkDftLVFLe8BiviIHaLV0Ea38YLZKKonDGsNQy1IE0wllFpFIEldWD8frWZtDFdx6b/O3KDMgVQ0qp5NjJCg==} dependencies: smoothscroll-polyfill: 0.4.4 dev: false - /vuepress/1.9.9_e322xq5kuxkpabmokoacnekxsq: + /vuepress@1.9.9(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12)(webpack-command@0.4.2): resolution: {integrity: sha512-CU94W3EdWaCavGx2VSvQJMI/hyv+m/YMdrvJJw67EVfmmJJDb1iTGrilDgLd0qsyrXzBy0Ru9Qi6rkf4IwcOTg==} engines: {node: '>=8.6'} hasBin: true requiresBuild: true dependencies: - '@vuepress/core': 1.9.9_e322xq5kuxkpabmokoacnekxsq + '@vuepress/core': 1.9.9(postcss-flexbugs-fixes@5.0.2)(postcss-normalize@10.0.1)(postcss-preset-env@8.4.1)(react-dom@18.2.0)(react@18.2.0)(webpack-cli@3.3.12)(webpack-command@0.4.2) '@vuepress/theme-default': 1.9.9 '@vuepress/types': 1.9.9 cac: 6.7.14 @@ -23987,28 +30928,26 @@ packages: - whiskers dev: false - /w3c-hr-time/1.0.2: + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 - dev: false - /w3c-xmlserializer/2.0.0: + /w3c-xmlserializer@2.0.0: resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} engines: {node: '>=10'} dependencies: xml-name-validator: 3.0.0 - dev: false - /w3c-xmlserializer/4.0.0: + /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: false - /wait-on/6.0.1: + /wait-on@6.0.1: resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} engines: {node: '>=10.0.0'} hasBin: true @@ -24022,29 +30961,28 @@ packages: - debug dev: false - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 - dev: false - /warning/4.0.3: + /warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: loose-envify: 1.4.0 dev: false - /watchpack-chokidar2/2.0.1: + /watchpack-chokidar2@2.0.1: resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} requiresBuild: true dependencies: - chokidar: 2.1.8 + chokidar: 2.1.8(supports-color@6.1.0) transitivePeerDependencies: - supports-color dev: false optional: true - /watchpack/1.7.5: + /watchpack@1.7.5: resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} dependencies: graceful-fs: 4.2.10 @@ -24056,63 +30994,72 @@ packages: - supports-color dev: false - /watchpack/2.4.0: + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.10 - dev: false - /wbuf/1.7.3: + /wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: minimalistic-assert: 1.0.1 dev: false - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: false - /web-namespaces/1.1.4: + /web-namespaces@1.1.4: resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} dev: false - /web-streams-polyfill/3.2.1: + /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} dev: false - /web-vitals/2.1.4: + /web-vitals@2.1.4: resolution: {integrity: sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==} dev: false - /webidl-conversions/3.0.1: + /web3-utils@1.10.3: + resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: true + + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - /webidl-conversions/4.0.2: + /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: false - /webidl-conversions/5.0.0: + /webidl-conversions@5.0.0: resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} engines: {node: '>=8'} - dev: false - /webidl-conversions/6.1.0: + /webidl-conversions@6.1.0: resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} engines: {node: '>=10.4'} - dev: false - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: false - /webpack-bundle-analyzer/4.8.0: + /webpack-bundle-analyzer@4.8.0: resolution: {integrity: sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==} engines: {node: '>= 10.13.0'} hasBin: true @@ -24132,14 +31079,14 @@ packages: - utf-8-validate dev: false - /webpack-chain/4.12.1: + /webpack-chain@4.12.1: resolution: {integrity: sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==} dependencies: deepmerge: 1.5.2 javascript-stringify: 1.6.0 dev: false - /webpack-chain/6.5.1: + /webpack-chain@6.5.1: resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} engines: {node: '>=8'} dependencies: @@ -24147,7 +31094,7 @@ packages: javascript-stringify: 2.1.0 dev: false - /webpack-cli/3.3.12_webpack@5.75.0: + /webpack-cli@3.3.12(webpack@5.76.0): resolution: {integrity: sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==} engines: {node: '>=6.11.5'} hasBin: true @@ -24157,29 +31104,28 @@ packages: chalk: 2.4.2 cross-spawn: 6.0.5 enhanced-resolve: 4.5.0 - findup-sync: 3.0.0_supports-color@6.1.0 + findup-sync: 3.0.0(supports-color@6.1.0) global-modules: 2.0.0 import-local: 2.0.0 interpret: 1.4.0 loader-utils: 1.4.2 supports-color: 6.1.0 v8-compile-cache: 2.3.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) yargs: 13.3.2 - dev: false - /webpack-command/0.4.2_webpack@5.75.0: + /webpack-command@0.4.2(webpack@5.76.0): resolution: {integrity: sha512-2JZRlV+eT2nsw0DGDS/F4ndv0e/QVkyYj4/1fagp9DbjRagQ02zuVzELp/QF5mrCESKKvnXiBQoaBJUOjAMp8w==} engines: {node: '>= 6.9.0 <7.0.0 || >= 8.9.0'} hasBin: true peerDependencies: webpack: ^4.4.0 dependencies: - '@webpack-contrib/config-loader': 1.2.1_webpack@5.75.0 - '@webpack-contrib/schema-utils': 1.0.0-beta.0_webpack@5.75.0 - camelcase: 5.3.1 + '@webpack-contrib/config-loader': 1.2.1(webpack@5.76.0) + '@webpack-contrib/schema-utils': 1.0.0-beta.0(webpack@5.76.0) + camelcase: 5.0.0 chalk: 2.4.2 - debug: 3.2.7 + debug: 3.2.7(supports-color@6.1.0) decamelize: 2.0.0 enhanced-resolve: 4.5.0 import-local: 1.0.0 @@ -24200,14 +31146,13 @@ packages: titleize: 1.0.1 update-notifier: 2.5.0 v8-compile-cache: 2.3.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) webpack-log: 1.2.0 wordwrap: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /webpack-dev-middleware/3.7.3_webpack@4.46.0: + /webpack-dev-middleware@3.7.3(webpack@4.46.0): resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} engines: {node: '>= 6'} peerDependencies: @@ -24217,11 +31162,11 @@ packages: mime: 2.6.0 mkdirp: 0.5.6 range-parser: 1.2.1 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) webpack-log: 2.0.0 dev: false - /webpack-dev-middleware/5.3.3_webpack@5.75.0: + /webpack-dev-middleware@5.3.3(webpack@5.76.0): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -24232,10 +31177,10 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /webpack-dev-server/3.11.3_i3w7szmgtxghzdij4arpgmor5i: + /webpack-dev-server@3.11.3(webpack-cli@3.3.12)(webpack@4.46.0): resolution: {integrity: sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==} engines: {node: '>= 6.11.5'} hasBin: true @@ -24248,14 +31193,14 @@ packages: dependencies: ansi-html-community: 0.0.8 bonjour: 3.5.0 - chokidar: 2.1.8_supports-color@6.1.0 - compression: 1.7.4_supports-color@6.1.0 + chokidar: 2.1.8(supports-color@6.1.0) + compression: 1.7.4(supports-color@6.1.0) connect-history-api-fallback: 1.6.0 - debug: 4.3.4_supports-color@6.1.0 + debug: 4.3.4(supports-color@6.1.0) del: 4.1.1 - express: 4.18.2_supports-color@6.1.0 + express: 4.18.2(supports-color@6.1.0) html-entities: 1.4.0 - http-proxy-middleware: 0.19.1_tmpgdztspuwvsxzgjkhoqk7duq + http-proxy-middleware: 0.19.1(debug@4.3.4)(supports-color@6.1.0) import-local: 2.0.0 internal-ip: 4.3.0 ip: 1.1.8 @@ -24264,20 +31209,20 @@ packages: loglevel: 1.8.1 opn: 5.5.0 p-retry: 3.0.1 - portfinder: 1.0.32_supports-color@6.1.0 + portfinder: 1.0.32(supports-color@6.1.0) schema-utils: 1.0.0 selfsigned: 1.10.14 semver: 6.3.0 - serve-index: 1.9.1_supports-color@6.1.0 + serve-index: 1.9.1(supports-color@6.1.0) sockjs: 0.3.24 - sockjs-client: 1.6.1_supports-color@6.1.0 - spdy: 4.0.2_supports-color@6.1.0 + sockjs-client: 1.6.1(supports-color@6.1.0) + spdy: 4.0.2(supports-color@6.1.0) strip-ansi: 3.0.1 supports-color: 6.1.0 url: 0.11.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm - webpack-cli: 3.3.12_webpack@5.75.0 - webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) + webpack-cli: 3.3.12(webpack@5.76.0) + webpack-dev-middleware: 3.7.3(webpack@4.46.0) webpack-log: 2.0.0 ws: 6.2.2 yargs: 13.3.2 @@ -24286,7 +31231,7 @@ packages: - utf-8-validate dev: false - /webpack-dev-server/4.11.1_qbo4h6w4yojlzp3yj3rjykuawy: + /webpack-dev-server@4.11.1(webpack-cli@3.3.12)(webpack@5.76.0): resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} engines: {node: '>= 12.13.0'} hasBin: true @@ -24308,25 +31253,25 @@ packages: bonjour-service: 1.1.0 chokidar: 3.5.3 colorette: 2.0.19 - compression: 1.7.4 + compression: 1.7.4(supports-color@6.1.0) connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.18.2 + express: 4.18.2(supports-color@6.1.0) graceful-fs: 4.2.10 html-entities: 2.3.3 - http-proxy-middleware: 2.0.6_@types+express@4.17.17 + http-proxy-middleware: 2.0.6(@types/express@4.17.17) ipaddr.js: 2.0.1 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 schema-utils: 4.0.0 selfsigned: 2.1.1 - serve-index: 1.9.1 + serve-index: 1.9.1(supports-color@6.1.0) sockjs: 0.3.24 - spdy: 4.0.2 - webpack: 5.75.0_webpack-cli@3.3.12 - webpack-cli: 3.3.12_webpack@5.75.0 - webpack-dev-middleware: 5.3.3_webpack@5.75.0 + spdy: 4.0.2(supports-color@6.1.0) + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) + webpack-cli: 3.3.12(webpack@5.76.0) + webpack-dev-middleware: 5.3.3(webpack@5.76.0) ws: 8.12.1 transitivePeerDependencies: - bufferutil @@ -24335,7 +31280,7 @@ packages: - utf-8-validate dev: false - /webpack-log/1.2.0: + /webpack-log@1.2.0: resolution: {integrity: sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==} engines: {node: '>=6'} dependencies: @@ -24343,9 +31288,8 @@ packages: log-symbols: 2.2.0 loglevelnext: 1.0.5 uuid: 3.4.0 - dev: false - /webpack-log/2.0.0: + /webpack-log@2.0.0: resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} engines: {node: '>= 6'} dependencies: @@ -24353,24 +31297,24 @@ packages: uuid: 3.4.0 dev: false - /webpack-manifest-plugin/4.1.1_webpack@5.75.0: + /webpack-manifest-plugin@4.1.1(webpack@5.76.0): resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==} engines: {node: '>=12.22.0'} peerDependencies: webpack: ^4.44.2 || ^5.47.0 dependencies: tapable: 2.2.1 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) webpack-sources: 2.3.1 dev: false - /webpack-merge/4.2.2: + /webpack-merge@4.2.2: resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} dependencies: lodash: 4.17.21 dev: false - /webpack-merge/5.8.0: + /webpack-merge@5.8.0: resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} engines: {node: '>=10.0.0'} dependencies: @@ -24378,14 +31322,14 @@ packages: wildcard: 2.0.0 dev: false - /webpack-sources/1.4.3: + /webpack-sources@1.4.3: resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} dependencies: source-list-map: 2.0.1 source-map: 0.6.1 dev: false - /webpack-sources/2.3.1: + /webpack-sources@2.3.1: resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} engines: {node: '>=10.13.0'} dependencies: @@ -24393,12 +31337,11 @@ packages: source-map: 0.6.1 dev: false - /webpack-sources/3.2.3: + /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - dev: false - /webpack/4.46.0_4qomtlfubzi6y7ka2dpcaocurm: + /webpack@4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2): resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} engines: {node: '>=6.11.5'} hasBin: true @@ -24417,7 +31360,7 @@ packages: '@webassemblyjs/wasm-parser': 1.9.0 acorn: 6.4.2 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) chrome-trace-event: 1.0.3 enhanced-resolve: 4.5.0 eslint-scope: 4.0.3 @@ -24425,23 +31368,23 @@ packages: loader-runner: 2.4.0 loader-utils: 1.4.2 memory-fs: 0.4.1 - micromatch: 3.1.10 + micromatch: 3.1.10(supports-color@6.1.0) mkdirp: 0.5.6 neo-async: 2.6.2 node-libs-browser: 2.2.1 schema-utils: 1.0.0 tapable: 1.1.3 - terser-webpack-plugin: 1.4.5_webpack@4.46.0 + terser-webpack-plugin: 1.4.5(webpack@4.46.0) watchpack: 1.7.5 - webpack-cli: 3.3.12_webpack@5.75.0 - webpack-command: 0.4.2_webpack@5.75.0 + webpack-cli: 3.3.12(webpack@5.76.0) + webpack-command: 0.4.2(webpack@5.76.0) webpack-sources: 1.4.3 transitivePeerDependencies: - supports-color dev: false - /webpack/5.75.0_webpack-cli@3.3.12: - resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} + /webpack@5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12): + resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -24456,7 +31399,7 @@ packages: '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.2 - acorn-import-assertions: 1.8.0_acorn@8.8.2 + acorn-import-assertions: 1.8.0(acorn@8.8.2) browserslist: 4.21.5 chrome-trace-event: 1.0.3 enhanced-resolve: 5.12.0 @@ -24471,17 +31414,16 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 + terser-webpack-plugin: 5.3.6(esbuild@0.14.7)(webpack@5.76.0) watchpack: 2.4.0 - webpack-cli: 3.3.12_webpack@5.75.0 + webpack-cli: 3.3.12(webpack@5.76.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: false - /webpackbar/3.2.0_webpack@4.46.0: + /webpackbar@3.2.0(webpack@4.46.0): resolution: {integrity: sha512-PC4o+1c8gWWileUfwabe0gqptlXUDJd5E0zbpr2xHP1VSOVlZVPBZ8j6NCR8zM5zbKdxPhctHXahgpNK1qFDPw==} engines: {node: '>= 6.9.0'} peerDependencies: @@ -24494,11 +31436,11 @@ packages: pretty-time: 1.1.0 std-env: 2.3.1 text-table: 0.2.0 - webpack: 4.46.0_4qomtlfubzi6y7ka2dpcaocurm + webpack: 4.46.0(webpack-cli@3.3.12)(webpack-command@0.4.2) wrap-ansi: 5.1.0 dev: false - /webpackbar/5.0.2_webpack@5.75.0: + /webpackbar@5.0.2(webpack@5.76.0): resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} engines: {node: '>=12'} peerDependencies: @@ -24508,10 +31450,10 @@ packages: consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.3.2 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /websocket-driver/0.7.4: + /websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} engines: {node: '>=0.8.0'} dependencies: @@ -24520,17 +31462,17 @@ packages: websocket-extensions: 0.1.4 dev: false - /websocket-extensions/0.1.4: + /websocket-extensions@0.1.4: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} dev: false - /websocket/1.0.34: + /websocket@1.0.34: resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} engines: {node: '>=4.0.0'} dependencies: bufferutil: 4.0.7 - debug: 2.6.9 + debug: 2.6.9(supports-color@6.1.0) es5-ext: 0.10.62 typedarray-to-buffer: 3.1.5 utf-8-validate: 5.0.10 @@ -24539,37 +31481,35 @@ packages: - supports-color dev: false - /whatwg-encoding/1.0.5: + /whatwg-encoding@1.0.5: resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} dependencies: iconv-lite: 0.4.24 - dev: false - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: false - /whatwg-fetch/2.0.4: + /whatwg-fetch@2.0.4: resolution: {integrity: sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==} dev: false - /whatwg-fetch/3.6.2: + /whatwg-fetch@3.6.2: resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} dev: false - /whatwg-mimetype/2.3.0: + /whatwg-mimetype@2.3.0: resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: false - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: false - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -24577,14 +31517,13 @@ packages: webidl-conversions: 7.0.0 dev: false - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /whatwg-url/7.1.0: + /whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: lodash.sortby: 4.7.0 @@ -24592,20 +31531,19 @@ packages: webidl-conversions: 4.0.2 dev: false - /whatwg-url/8.7.0: + /whatwg-url@8.7.0: resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} engines: {node: '>=10'} dependencies: lodash: 4.17.21 tr46: 2.1.0 webidl-conversions: 6.1.0 - dev: false - /when/3.6.4: + /when@3.6.4: resolution: {integrity: sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==} dev: false - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -24613,9 +31551,8 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: false - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -24624,11 +31561,21 @@ packages: is-weakset: 2.0.2 dev: false - /which-module/2.0.0: + /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: false - /which-typed-array/1.1.9: + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -24638,80 +31585,83 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.0 is-typed-array: 1.1.10 - dev: false - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 - dev: false - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - dev: false - /widest-line/2.0.1: + /widest-line@2.0.1: resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} engines: {node: '>=4'} dependencies: string-width: 2.1.1 - dev: false - /widest-line/3.1.0: + /widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} dependencies: string-width: 4.2.3 dev: false - /widest-line/4.0.1: + /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} dependencies: string-width: 5.1.2 dev: false - /wildcard/2.0.0: + /wildcard@2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: false - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - /wordwrap/1.0.0: + /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: false - /workbox-background-sync/6.5.4: + /wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + dev: true + + /workbox-background-sync@6.5.4: resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==} dependencies: idb: 7.1.1 workbox-core: 6.5.4 dev: false - /workbox-broadcast-update/6.5.4: + /workbox-broadcast-update@6.5.4: resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==} dependencies: workbox-core: 6.5.4 dev: false - /workbox-build/6.5.4: + /workbox-build@6.5.4: resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==} engines: {node: '>=10.0.0'} dependencies: - '@apideck/better-ajv-errors': 0.3.6_ajv@8.12.0 - '@babel/core': 7.21.0 - '@babel/preset-env': 7.20.2_@babel+core@7.21.0 - '@babel/runtime': 7.21.0 - '@rollup/plugin-babel': 5.3.1_4tnfxcmsyr7y5qv3uwkivwqysm - '@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1 - '@rollup/plugin-replace': 2.4.2_rollup@2.79.1 + '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) + '@babel/core': 7.21.8 + '@babel/preset-env': 7.20.2(@babel/core@7.21.8) + '@babel/runtime': 7.21.5 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.21.8)(rollup@2.78.0) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.78.0) + '@rollup/plugin-replace': 2.4.2(rollup@2.78.0) '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.12.0 common-tags: 1.8.2 @@ -24720,8 +31670,8 @@ packages: glob: 7.2.3 lodash: 4.17.21 pretty-bytes: 5.6.0 - rollup: 2.79.1 - rollup-plugin-terser: 7.0.2_rollup@2.79.1 + rollup: 2.78.0 + rollup-plugin-terser: 7.0.2(rollup@2.78.0) source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 @@ -24747,24 +31697,24 @@ packages: - supports-color dev: false - /workbox-cacheable-response/6.5.4: + /workbox-cacheable-response@6.5.4: resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==} dependencies: workbox-core: 6.5.4 dev: false - /workbox-core/6.5.4: + /workbox-core@6.5.4: resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==} dev: false - /workbox-expiration/6.5.4: + /workbox-expiration@6.5.4: resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==} dependencies: idb: 7.1.1 workbox-core: 6.5.4 dev: false - /workbox-google-analytics/6.5.4: + /workbox-google-analytics@6.5.4: resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==} dependencies: workbox-background-sync: 6.5.4 @@ -24773,13 +31723,13 @@ packages: workbox-strategies: 6.5.4 dev: false - /workbox-navigation-preload/6.5.4: + /workbox-navigation-preload@6.5.4: resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==} dependencies: workbox-core: 6.5.4 dev: false - /workbox-precaching/6.5.4: + /workbox-precaching@6.5.4: resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==} dependencies: workbox-core: 6.5.4 @@ -24787,13 +31737,13 @@ packages: workbox-strategies: 6.5.4 dev: false - /workbox-range-requests/6.5.4: + /workbox-range-requests@6.5.4: resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==} dependencies: workbox-core: 6.5.4 dev: false - /workbox-recipes/6.5.4: + /workbox-recipes@6.5.4: resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==} dependencies: workbox-cacheable-response: 6.5.4 @@ -24804,30 +31754,30 @@ packages: workbox-strategies: 6.5.4 dev: false - /workbox-routing/6.5.4: + /workbox-routing@6.5.4: resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==} dependencies: workbox-core: 6.5.4 dev: false - /workbox-strategies/6.5.4: + /workbox-strategies@6.5.4: resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==} dependencies: workbox-core: 6.5.4 dev: false - /workbox-streams/6.5.4: + /workbox-streams@6.5.4: resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==} dependencies: workbox-core: 6.5.4 workbox-routing: 6.5.4 dev: false - /workbox-sw/6.5.4: + /workbox-sw@6.5.4: resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==} dev: false - /workbox-webpack-plugin/6.5.4_webpack@5.75.0: + /workbox-webpack-plugin@6.5.4(webpack@5.76.0): resolution: {integrity: sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -24836,7 +31786,7 @@ packages: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) webpack-sources: 1.4.3 workbox-build: 6.5.4 transitivePeerDependencies: @@ -24844,62 +31794,63 @@ packages: - supports-color dev: false - /workbox-window/6.5.4: + /workbox-window@6.5.4: resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==} dependencies: '@types/trusted-types': 2.0.3 workbox-core: 6.5.4 dev: false - /worker-farm/1.7.0: + /worker-farm@1.7.0: resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} dependencies: errno: 0.1.8 dev: false - /worker-plugin/5.0.1_webpack@5.75.0: + /worker-plugin@5.0.1(webpack@5.76.0): resolution: {integrity: sha512-Pn7+19jIiANcGuTSGdy+vrzyF+SGH03A5wV8iu4jRTMAOfAC9bNeiHo4+l5tPS7F0uvICMBv+h8UCvL7lunxcA==} peerDependencies: webpack: '>= 4' dependencies: loader-utils: 1.4.2 - webpack: 5.75.0_webpack-cli@3.3.12 + webpack: 5.76.0(esbuild@0.14.7)(webpack-cli@3.3.12) dev: false - /worker-rpc/0.1.1: + /worker-rpc@0.1.1: resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} dependencies: microevent.ts: 0.1.1 dev: false - /wrap-ansi/5.1.0: + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + + /wrap-ansi@5.1.0: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} dependencies: ansi-styles: 3.2.1 string-width: 3.1.0 strip-ansi: 5.2.0 - dev: false - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /wrap-ansi/8.1.0: + /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} dependencies: @@ -24908,27 +31859,25 @@ packages: strip-ansi: 7.0.1 dev: false - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/2.4.3: + /write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: graceful-fs: 4.2.10 imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: false - /write-file-atomic/3.0.3: + /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - dev: false - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -24936,7 +31885,7 @@ packages: signal-exit: 3.0.7 dev: false - /ws/6.2.2: + /ws@6.2.2: resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} peerDependencies: bufferutil: ^4.0.1 @@ -24950,7 +31899,20 @@ packages: async-limiter: 1.0.1 dev: false - /ws/7.5.9: + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -24961,9 +31923,8 @@ packages: optional: true utf-8-validate: optional: true - dev: false - /ws/8.12.1: + /ws@8.12.1: resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} engines: {node: '>=10.0.0'} peerDependencies: @@ -24976,105 +31937,151 @@ packages: optional: true dev: false - /xdg-basedir/3.0.0: + /ws@8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xdg-basedir@3.0.0: resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==} engines: {node: '>=4'} - dev: false - /xdg-basedir/4.0.0: + /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} dev: false - /xml-js/1.6.11: + /xml-js@1.6.11: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true dependencies: sax: 1.2.4 dev: false - /xml-name-validator/3.0.0: + /xml-name-validator@3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: false - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: false - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: false - /xmlcreate/2.0.4: + /xmlcreate@2.0.4: resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} - /xregexp/4.0.0: + /xregexp@4.0.0: resolution: {integrity: sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==} - dev: false - /xtend/4.0.2: + /xtend@2.0.6: + resolution: {integrity: sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==} + engines: {node: '>=0.4'} + dependencies: + is-object: 0.1.2 + object-keys: 0.2.0 + dev: true + + /xtend@2.1.2: + resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} + engines: {node: '>=0.4'} + dependencies: + object-keys: 0.4.0 + dev: true + + /xtend@2.2.0: + resolution: {integrity: sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==} + engines: {node: '>=0.4'} + dev: true + + /xtend@3.0.0: + resolution: {integrity: sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==} + engines: {node: '>=0.4'} + dev: true + + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: false - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false - /yaeti/0.0.6: + /yaeti@0.0.6: resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} engines: {node: '>=0.10.32'} dev: false - /yallist/2.1.2: + /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: false - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: false - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yargs-parser/10.1.0: + /yargs-parser@10.1.0: resolution: {integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==} dependencies: camelcase: 4.1.0 - dev: false - /yargs-parser/13.1.2: + /yargs-parser@13.1.2: resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} dependencies: - camelcase: 5.3.1 + camelcase: 5.0.0 decamelize: 1.2.0 - dev: false - /yargs-parser/18.1.3: + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: - camelcase: 5.3.1 + camelcase: 5.0.0 decamelize: 1.2.0 - dev: false - /yargs-parser/20.2.9: + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - dev: false - /yargs/13.3.2: + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs@13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} dependencies: cliui: 5.0.0 @@ -25087,9 +32094,8 @@ packages: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 13.1.2 - dev: false - /yargs/15.4.1: + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -25104,9 +32110,8 @@ packages: which-module: 2.0.0 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: false - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -25117,40 +32122,55 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: false - /yn/3.1.1: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn@2.0.0: + resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} + engines: {node: '>=4'} + dev: true + + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: false - optional: true + requiresBuild: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: false - /zen-observable-ts/0.8.21: + /zen-observable-ts@0.8.21: resolution: {integrity: sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==} dependencies: tslib: 1.14.1 zen-observable: 0.8.15 dev: false - /zen-observable-ts/1.2.5: + /zen-observable-ts@1.2.5: resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} dependencies: zen-observable: 0.8.15 dev: false - /zen-observable/0.8.15: + /zen-observable@0.8.15: resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} dev: false - /zepto/1.2.0: + /zepto@1.2.0: resolution: {integrity: sha512-C1x6lfvBICFTQIMgbt3JqMOno3VOtkWat/xEakLTOurskYIHPmzJrzd1e8BnmtdDVJlGuk5D+FxyCA8MPmkIyA==} dev: false - /zwitch/1.0.5: + /zwitch@1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..2f271ab4d --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,15 @@ +packages: + - "zilliqa/js/account" + - "zilliqa/js/blockchain" + - "zilliqa/js/contract" + - "zilliqa/js/core" + - "zilliqa/js/crypto" + - "zilliqa/js/proto" + - "zilliqa/js/subscriptions" + - "zilliqa/js/typings" + - "zilliqa/js/util" + - "zilliqa/js/zilliqa" + - "examples/zilliqa-js/latest-block" + - "examples/zilliqa-js/react-zilliqa-js" + - "contracts/experimental/ERC20ProxyForZRC2" + - "products/bridge/smart-contracts" diff --git a/products/bluebell/.dockerignore b/products/bluebell/.dockerignore new file mode 100644 index 000000000..1d1b5a707 --- /dev/null +++ b/products/bluebell/.dockerignore @@ -0,0 +1,8 @@ +.git/ +.github/ +target/ + +**/.git/ +**/.github/ +**/target/ +docs/ diff --git a/products/bluebell/Cargo.lock b/products/bluebell/Cargo.lock new file mode 100644 index 000000000..4341cac0c --- /dev/null +++ b/products/bluebell/Cargo.lock @@ -0,0 +1,2545 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "anymap" +version = "1.0.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1f8f5a6f3d50d89e3797d7593a50f96bb2aaa20ca0cc7be1fb673232c91d72" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-trait" +version = "0.1.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "auto_impl" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bluebell" +version = "0.1.0" +dependencies = [ + "diffy", + "evm", + "evm_assembly", + "hex", + "lalrpop 0.19.12", + "lalrpop-util 0.19.12", + "log", + "primitive-types", + "regex", + "scilla-parser", + "serde", + "serde_json", + "sha3", +] + +[[package]] +name = "bluebell-playground" +version = "0.1.0" +dependencies = [ + "bluebell", + "evm", + "evm_assembly", + "getrandom", + "gloo-console", + "gloo-timers 0.3.0", + "gloo-utils", + "hex", + "js-sys", + "log", + "primitive-types", + "regex", + "serde", + "serde-wasm-bindgen 0.4.5", + "serde_json", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-logger", + "web-sys", + "yew", + "yew-router", + "yewdux", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cargo-webdev" +version = "0.1.0" +dependencies = [ + "notify", + "tokio", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d" +dependencies = [ + "clap_builder", + "clap_derive", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "clap_lex" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "cli" +version = "0.1.0" +dependencies = [ + "bluebell", + "clap", + "evm", + "evm_assembly", + "hex", + "log", + "primitive-types", + "scilla-parser", + "serde", + "serde_json", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "diffy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" +dependencies = [ + "nu-ansi-term", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7" +dependencies = [ + "bytes", + "ethereum-types", + "hash-db", + "hash256-std-hasher", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "sha3", + "triehash", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "evm" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "auto_impl", + "environmental", + "ethereum", + "evm-core", + "evm-gasometer", + "evm-runtime", + "log", + "parity-scale-codec", + "primitive-types", + "rlp", + "scale-info", + "serde", + "sha3", +] + +[[package]] +name = "evm-core" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "parity-scale-codec", + "primitive-types", + "scale-info", + "serde", +] + +[[package]] +name = "evm-gasometer" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "environmental", + "evm-core", + "evm-runtime", + "primitive-types", +] + +[[package]] +name = "evm-runtime" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "auto_impl", + "environmental", + "evm-core", + "primitive-types", + "sha3", +] + +[[package]] +name = "evm_assembly" +version = "0.1.0" +dependencies = [ + "evm", + "hex", + "log", + "primitive-types", + "serde", + "serde_json", + "sha3", +] + +[[package]] +name = "filetime" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "windows-sys", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] +name = "gloo" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d" +dependencies = [ + "gloo-console", + "gloo-dialogs", + "gloo-events", + "gloo-file", + "gloo-history", + "gloo-net", + "gloo-render", + "gloo-storage", + "gloo-timers 0.2.6", + "gloo-utils", + "gloo-worker", +] + +[[package]] +name = "gloo-console" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "futures-channel", + "gloo-events", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f" +dependencies = [ + "gloo-events", + "gloo-utils", + "serde", + "serde-wasm-bindgen 0.5.0", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "http", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "hash-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "implicit-clone" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c6ecbd987bb94f1f3c76c6787879756cf4b6f73bfff48d79308e8c56b46f65f" +dependencies = [ + "indexmap 1.9.3", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "kqueue" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "lalrpop" +version = "0.19.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools", + "lalrpop-util 0.19.12", + "petgraph", + "regex", + "regex-syntax 0.6.29", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools", + "lalrpop-util 0.20.0", + "petgraph", + "pico-args", + "regex", + "regex-syntax 0.7.4", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.19.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" +dependencies = [ + "regex", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +dependencies = [ + "regex", +] + +[[package]] +name = "lexpr" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a84de6a9df442363b08f5dbf0cd5b92edc70097b89c4ce4bfea4679fe48bc67" +dependencies = [ + "itoa", + "lexpr-macros", + "ryu", +] + +[[package]] +name = "lexpr-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36b5cb8bb985c81a8ac1a0f8b5c4865214f574ddd64397ef7a99c236e21f35bb" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "notify" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +dependencies = [ + "bitflags 2.3.3", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "walkdir", + "windows-sys", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parity-scale-codec" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap 1.9.3", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a829027bd95e54cfe13e3e258a1ae7b645960553fb82b75ff852c29688ee595b" +dependencies = [ + "futures", + "rustversion", + "thiserror", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907a61bd0f64c2f29cd1cf1dc34d05176426a3f504a78010f08416ddb7b13708" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prokio" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" +dependencies = [ + "futures", + "gloo", + "num_cpus", + "once_cell", + "pin-project", + "pinned", + "tokio", + "tokio-stream", + "wasm-bindgen-futures", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustix" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +dependencies = [ + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustversion" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scilla-parser" +version = "0.11.0" +source = "git+https://github.com/Zilliqa/rs-scilla-parser.git?branch=main#7ffc7c39a1b7d1cbc1b7e86a9298b55c71b5496b" +dependencies = [ + "lalrpop 0.20.0", + "lalrpop-util 0.20.0", + "lexpr", + "regex", + "thiserror", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1726efe18f42ae774cc644f330953a5e7b3c3003d3edcecf18850fe9d4dd9afb" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f8751d9c1b03c6500c387e96f81f815a4f8e72d142d2d4a9ffa6fedd51ddee7" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "triehash" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" +dependencies = [ + "hash-db", + "rlp", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.47", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.47", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "wasm-logger" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718" +dependencies = [ + "log", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yew" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dbecfe44343b70cc2932c3eb445425969ae21754a8ab3a0966981c1cf7af1cc" +dependencies = [ + "console_error_panic_hook", + "futures", + "gloo", + "implicit-clone", + "indexmap 1.9.3", + "js-sys", + "prokio", + "rustversion", + "serde", + "slab", + "thiserror", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-macro" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64c253c1d401f1ea868ca9988db63958cfa15a69f739101f338d6f05eea8301" +dependencies = [ + "boolinator", + "once_cell", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "yew-router" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "426ee0486d2572a6c5e39fbdbc48b58d59bb555f3326f54631025266cf04146e" +dependencies = [ + "gloo", + "js-sys", + "route-recognizer", + "serde", + "serde_urlencoded", + "tracing", + "wasm-bindgen", + "web-sys", + "yew", + "yew-router-macro", +] + +[[package]] +name = "yew-router-macro" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b249cdb39e0cddaf0644dedc781854524374664793479fdc01e6a65d6e6ae3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "yewdux" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c528544a814a0beb30059c8340eb78c88160141db788112b51a5a08098cef2d" +dependencies = [ + "anymap", + "async-trait", + "log", + "serde", + "serde_json", + "slab", + "thiserror", + "wasm-bindgen", + "web-sys", + "yew", + "yewdux-macros", +] + +[[package]] +name = "yewdux-macros" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc318072e34a9083d651ecd126153e9f1c39ae705794ef953a30b561b5eaab6d" +dependencies = [ + "darling", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/products/bluebell/Cargo.toml b/products/bluebell/Cargo.toml new file mode 100644 index 000000000..90ea13387 --- /dev/null +++ b/products/bluebell/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +resolver = "2" +members = [ + "core", + "evm_assembly", + "cli", + "playground", + "cargo-webdev", +] diff --git a/products/bluebell/Dockerfile b/products/bluebell/Dockerfile new file mode 100644 index 000000000..ee6217eaf --- /dev/null +++ b/products/bluebell/Dockerfile @@ -0,0 +1,46 @@ +FROM ubuntu:22.04 AS builder +WORKDIR /src + +RUN apt update && apt -y install curl build-essential +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +RUN ~/.cargo/bin/rustup update + +ENV CARGO_HOME="/root/.cargo/" +ENV PATH="/root/.cargo/bin/:${PATH}" +RUN echo 'source $HOME/.cargo/env' >> $HOME/.bashrc +ENV PATH="/root/.cargo/bin:${PATH}" + +# See https://github.com/cross-rs/cross/issues/260 +RUN printf '#!/bin/sh\nexport CARGO_HOME=/opt/cargo\nexec /bin/sh "$@"\n' >/usr/local/bin/sh + +RUN rustup target add wasm32-unknown-unknown + +RUN apt-get update \ + && apt-get install -y ca-certificates curl gnupg \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && NODE_MAJOR=20 \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update \ + && apt-get install nodejs -y \ + && rm -rf /var/lib/apt/lists/* +RUN npm install -g tailwindcss +RUN curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 \ + && chmod +x tailwindcss-linux-x64 \ + && mv tailwindcss-linux-x64 tailwindcss + +RUN cargo install --locked trunk + +## Building + +COPY . /src/ +WORKDIR /src/playground/ +ENV NODE_ENV=production +RUN ../tailwindcss -c ./tailwind.config.js -o ./tailwind.css --minify +RUN trunk build + + +FROM nginx:mainline-alpine3.18-slim +EXPOSE 80 +COPY --from=builder /src/playground/dist/ /usr/share/nginx/html/ +COPY --from=builder /src/nginx/default.conf /etc/nginx/conf.d/ diff --git a/products/bluebell/Makefile b/products/bluebell/Makefile new file mode 100644 index 000000000..18c0b85d1 --- /dev/null +++ b/products/bluebell/Makefile @@ -0,0 +1,13 @@ +.PHONY: all +all: image/build-and-push + +.ONESHELL: +SHELL := /bin/bash +.SHELLFLAGS = -ec + +IMAGE_TAG ?= localhost:5001/bluebell-playground:latest + +## Build and push the Docker image +image/build-and-push: + docker build -t "${IMAGE_TAG}" . + docker push "${IMAGE_TAG}" \ No newline at end of file diff --git a/products/bluebell/README.md b/products/bluebell/README.md new file mode 100644 index 000000000..7fe9bc32d --- /dev/null +++ b/products/bluebell/README.md @@ -0,0 +1,36 @@ +# Bluebell Scilla Compiler + +This README provides examples of how to use the Bluebell command line tool. + +## Running a Scilla File + +To run a Scilla file, use the `Run` command followed by the `--entry_point` flag to specify the function to invoke, the `--args` flag to pass arguments to the function, and the `--backend` flag to specify the backend to use. Here is an example: + +```bash +cargo run --bin cli -- examples/hello-world.scilla --runtime-enable debug run --backend evm --entry-point "HelloWorld::setHello" --args "[\"Zilliqa ❤️ Rocks\"]" +``` + +This command will run the `main` function of the `hello-world.scilla` file with the argument `[\"Zilliqa ❤️ Rocks\"]` using the EVM backend. This should produce an output similar to + +```bash +Zilliqa ❤️ Rocks + + +Exit reason: Succeed( + Returned, +)Result: []% +``` + +This is a basic example of compiling a Scilla contract into EVM bytecode and running the code in a EVM instance. Note that this example makes use of external precompiles which provides the `print` command to print `Zilliqa ❤️ Rocks` to the terminal. + +## Running the playground + +To set up Rust to run the playground, first follow these steps: + +1. Install Rust by following the instructions on the official Rust website. +2. Add WebAssembly (Wasm) support to your Rust setup by running `rustup target add wasm32-unknown-unknown`. +3. Install Trunk by running `cargo install trunk`. +4. Navigate to your project `playground/`. +5. Run `trunk serve` to start the development server. + +A more detailed guide can be found in the playground's [README.md](playground/README.md) file. diff --git a/products/bluebell/cargo-webdev/Cargo.toml b/products/bluebell/cargo-webdev/Cargo.toml new file mode 100644 index 000000000..06e6c6e4d --- /dev/null +++ b/products/bluebell/cargo-webdev/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "cargo-webdev" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tokio = { version = "1", features = ["full"] } +notify = "6.1.1" diff --git a/products/bluebell/cargo-webdev/src/main.rs b/products/bluebell/cargo-webdev/src/main.rs new file mode 100644 index 000000000..74d854710 --- /dev/null +++ b/products/bluebell/cargo-webdev/src/main.rs @@ -0,0 +1,127 @@ +use std::{ + path::Path, + sync::{Arc, Mutex}, +}; + +use notify::{recommended_watcher, RecursiveMode, Watcher}; +use tokio::{ + io::{self, AsyncReadExt, AsyncWriteExt}, + process::{Child, Command}, + sync::broadcast, + time::{sleep, Duration}, +}; + +async fn stream_output(mut child: Child) -> Result> { + let mut stdout = child + .stdout + .take() + .ok_or("Child process did not have a stdout")?; + let mut stderr = child + .stderr + .take() + .ok_or("Child process did not have a stderr")?; + + let _stdout_handle = tokio::spawn(async move { + let mut buf = vec![0u8; 1024]; + loop { + match stdout.read(&mut buf).await { + Ok(0) => break, + Ok(n) => { + io::stdout() + .write_all(&buf[..n]) + .await + .expect("Failed to write to stdout"); + } + Err(e) => eprintln!("Error reading from stdout: {:?}", e), + } + } + }); + + let _stderr_handle = tokio::spawn(async move { + let mut buf = vec![0u8; 1024]; + loop { + match stderr.read(&mut buf).await { + Ok(0) => break, + Ok(n) => { + io::stderr() + .write_all(&buf[..n]) + .await + .expect("Failed to write to stderr"); + } + Err(e) => eprintln!("Error reading from stderr: {:?}", e), + } + } + }); + + // tokio::try_join!(stdout_handle, stderr_handle)?; + Ok(child) +} + +async fn run_command(command: &str, args: &[&str]) -> Result> { + let child = Command::new(command) + .args(args) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + .spawn()?; + + Ok(child) +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let (send, mut recv) = broadcast::channel::<()>(24); + let send = Arc::new(Mutex::new(send)); + + std::thread::spawn(move || { + let mut watcher = recommended_watcher(move |res| match res { + Ok(event) => { + println!("event: {:?}", event); + send.lock().unwrap().send(()).unwrap(); + } + Err(e) => { + println!("watch error: {:?}", e); + } + }) + .unwrap(); + watcher + .watch(Path::new("."), RecursiveMode::Recursive) + .unwrap(); + }); + + loop { + sleep(Duration::from_secs(1)).await; + + let trunk = run_command("sleep", &["10"]).await?; + let cargo_watch = run_command("sleep", &["100"]).await?; + + let mut trunk_handle = stream_output(trunk).await?; + let mut cargo_watch_handle = stream_output(cargo_watch).await?; + sleep(Duration::from_secs(1)).await; + + tokio::select! { + _ = trunk_handle.wait() => { + println!("Trunk stopped."); + let _ = trunk_handle.kill(); + let _ = cargo_watch_handle.kill(); + break; + + }, + _ = cargo_watch_handle.wait() => { + println!("Cargo stopped."); + let _ = trunk_handle.kill(); + let _ = cargo_watch_handle.kill(); + break; + }, + + _ = recv.recv() => { + println!("Refreshing."); + let _ = trunk_handle.kill(); + let _ = cargo_watch_handle.kill(); + break; + // If a change is detected, break out of the select! macro to kill and restart the processes. + } + + } + } + Ok(()) +} diff --git a/products/bluebell/cli/Cargo.toml b/products/bluebell/cli/Cargo.toml new file mode 100644 index 000000000..a835f6d01 --- /dev/null +++ b/products/bluebell/cli/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "cli" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +bluebell = { path = "../core" } + +# CLI +clap = { version = "4.3.11", features = ["derive"] } +log = "0.4.6" + + +# DEPRECATED +# # LLVM stuff +# inkwell = {version = "0.2.0", features= ["llvm16-0"]} + + +# EVM +evm = { git = "https://github.com/Zilliqa/evm.git", branch="master" } +evm_assembly = { path = "../evm_assembly" } +primitive-types = { version = "0.12", default-features = false } +hex = "0.4" + +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" + +scilla-parser = { git = "https://github.com/Zilliqa/rs-scilla-parser.git", branch="main" } \ No newline at end of file diff --git a/products/bluebell/cli/README.md b/products/bluebell/cli/README.md new file mode 100644 index 000000000..5da70bf27 --- /dev/null +++ b/products/bluebell/cli/README.md @@ -0,0 +1,5 @@ +# Bluebell CLI + +``` +cargo run --bin cli -- examples/target4.scilla --runtime-enable debug run --backend evm --entry-point "HelloWorld::setHello" --args "[\"Zilliqa ❤️ Rocks\"]" +``` diff --git a/products/bluebell/cli/src/main.rs b/products/bluebell/cli/src/main.rs new file mode 100644 index 000000000..fd56f6a9e --- /dev/null +++ b/products/bluebell/cli/src/main.rs @@ -0,0 +1,285 @@ +use std::{fs::File, io::Read, process}; + +use bluebell::support::{ + evm::EvmCompiler, + modules::{ScillaDebugBuiltins, ScillaDefaultBuiltins, ScillaDefaultTypes}, +}; +use clap::{Parser, Subcommand, ValueEnum}; +use evm_assembly::types::EvmTypeValue; +use log::{Log, Metadata, Record}; +use scilla_parser::{ + ast::nodes::NodeProgram, + parser::{lexer, lexer::Lexer, parser, ParserError}, +}; + +// Logger struct to capture logs +struct CaptureLogger {} + +// Implementation of logger +impl CaptureLogger { + // Constructor for CaptureLogger + fn new() -> Self { + Self {} + } +} + +// Implementing Log trait for CaptureLogger +impl Log for CaptureLogger { + // Method to check if logging is enabled + fn enabled(&self, _metadata: &Metadata) -> bool { + // self.delegate.enabled(metadata) + true + } + + // Method to log a record + fn log(&self, record: &Record) { + if self.enabled(record.metadata()) { + print!("{}", record.args().to_string()); + } + } + + // Method to flush the logger + fn flush(&self) {} +} + +// Function to setup the logger +fn setup_logger() { + let logger = Box::new(CaptureLogger::new()); + log::set_boxed_logger(logger).unwrap(); + log::set_max_level(log::LevelFilter::Info); +} + +// Enum to define the output format of Bluebell +#[derive(Clone, Debug, Subcommand)] +enum BluebellOutputFormat { + FormattedScilla, +} + +// Enum to define the backend of Bluebell +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)] +enum BluebellBackend { + Evm, +} + +// Enum to define the command of Bluebell +#[derive(Clone, Debug, Subcommand)] +enum BluebellCommand { + Emit { + /// Format to output + #[command(subcommand)] + format: BluebellOutputFormat, + + /// Filename of output file + #[arg(short, long)] + output: Option, + }, + Run { + /// Backend to use + #[arg(long, value_enum)] + backend: BluebellBackend, + + /// Function to name to invoke + #[arg(short, long)] + entry_point: String, + + /// Arguments to pass to function + #[arg(short, long, default_value_t= String::new())] + args: String, + }, +} + +// Struct to hold the arguments for Scilla compiler and executor +#[derive(Parser, Debug)] +#[command(author, version, about, long_about = None)] +struct Args { + /// Path to the source file + filename: String, + + /// Whether or not to produce debug information + #[arg(long, default_value_t = false)] + debug: bool, + + /// Features to enable at runtime + #[arg(long = "runtime-enable")] + features_raw: Option, + + /// Command to execute + #[command(subcommand)] + mode: BluebellCommand, +} + +// Implementation of Args struct +impl Args { + // Method to get the features + fn features(&self) -> Vec { + match &self.features_raw { + Some(v) => v.split(",").map(|s| s.to_string()).collect(), + _ => Vec::new(), + } + } +} + +// Function to run Bluebell with EVM backend +fn bluebell_evm_run( + ast: &NodeProgram, + entry_point: String, + args: String, + features: Vec, + _debug: bool, +) { + let mut compiler = EvmCompiler::new(); + + // Defining capabilities + let default_types = ScillaDefaultTypes {}; + let default_builtins = ScillaDefaultBuiltins {}; + + compiler.attach(&default_types); + compiler.attach(&default_builtins); + + for feature in features { + match &feature[..] { + "debug" => { + let feature = ScillaDebugBuiltins {}; + compiler.attach(&feature); + } + _ => { + panic!("Unknown feature {}", feature) + } + } + } + + let executable = match compiler.executable_from_ast(ast) { + Err(e) => panic!("{:?}", e), + Ok(v) => v, + }; + + let arguments: Vec = if args == "" { + [].to_vec() + } else { + serde_json::from_str(&args).expect("Failed to deserialize arguments") + }; + + executable.execute(&entry_point, arguments); +} + +// Main function +fn main() { + // Setting up the logger + setup_logger(); + // Parsing the arguments + let args = Args::parse(); + + // Getting the features + let features = args.features(); + // Accessing the values + let mut errors: Vec = [].to_vec(); + // Opening the file + let mut file = File::open(args.filename).expect("Unable to open file"); + let mut script = String::new(); + // Reading the file + file.read_to_string(&mut script) + .expect("Unable to read file"); + + // Creating a new lexer + let lexer = Lexer::new(&script); + + // Creating a new parser + let parser = parser::ProgramParser::new(); + + // Parsing the script + match parser.parse(&mut errors, lexer) { + Ok(ast) => { + // Running the appropriate command based on the mode + match args.mode { + BluebellCommand::Run { + entry_point, + args: arguments, + backend, + } => match backend { + // Running with EVM backend + BluebellBackend::Evm => { + bluebell_evm_run(&ast, entry_point, arguments, features, args.debug) + } + }, + _ => unimplemented!(), + } + + /* + //let _inferred_types = infer_types(&ast).unwrap(); + let mut formatter = BluebellFormatter::new(); + let mut ast2 = ast.clone(); + let formatted_ast = formatter.emit(&mut ast2); // Call to_string on the top-level AST node to get formatted output + + let mut formatter = BluebellFormatter::new(); + let mut ast2 = ast.clone(); + formatter.emit(&mut ast2); + */ + } + Err(error) => { + // Handling syntax errors + let message = format!("Syntax error {:?}", error); + let mut pos: Vec = [].to_vec(); + error.map_location(|l| { + pos.push(l.clone()); + l + }); + + let mut n = 0; + let mut line_counter = 0; + let mut char_counter = 0; + let mut line_start = 0; + let mut line_end = 0; + let mut should_stop = false; + for ch in script.chars() { + if ch == '\n' { + if should_stop { + line_end = n; + break; + } else { + line_start = n + 1; + } + } + if !should_stop && n == pos[0].position { + should_stop = true; + } + + n += 1; + if !should_stop { + char_counter += 1; + } + + if ch == '\n' { + line_counter += 1; + char_counter = 0; + } + } + + if line_end < line_start { + line_end = script.len(); + } + + // Printing the line with the error + let line = &script[line_start..line_end]; + println!("Line {},{}:{}", line_counter, char_counter, line); + print!( + "{}", + " ".repeat(char_counter + format!("Line {},{}:", line_counter, char_counter).len()) + ); + if pos.len() > 1 { + println!("{}", "^".repeat(pos[1].position - pos[0].position)); + } + + // Creating a new ParserError + let my_error = ParserError { + message, + line: 0, //error.location_line(), + column: 0, // err.location_column(), + }; + // Printing the error + println!("{}", my_error); + + // Exiting the process with an error code + process::exit(-1); + } + } +} diff --git a/products/bluebell/core/Cargo.lock b/products/bluebell/core/Cargo.lock new file mode 100644 index 000000000..5d2197d0a --- /dev/null +++ b/products/bluebell/core/Cargo.lock @@ -0,0 +1,1471 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "auto_impl" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bluebell" +version = "0.1.0" +dependencies = [ + "clap", + "diffy", + "evm", + "hex", + "inkwell", + "lalrpop", + "lalrpop-util", + "primitive-types", + "regex", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d" +dependencies = [ + "clap_builder", + "clap_derive", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.25", +] + +[[package]] +name = "clap_lex" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "diffy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" +dependencies = [ + "nu-ansi-term", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7" +dependencies = [ + "bytes", + "ethereum-types", + "hash-db", + "hash256-std-hasher", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "sha3", + "triehash", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "evm" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "auto_impl", + "environmental", + "ethereum", + "evm-core", + "evm-gasometer", + "evm-runtime", + "log", + "parity-scale-codec", + "primitive-types", + "rlp", + "scale-info", + "serde", + "sha3", +] + +[[package]] +name = "evm-core" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "parity-scale-codec", + "primitive-types", + "scale-info", + "serde", +] + +[[package]] +name = "evm-gasometer" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "environmental", + "evm-core", + "evm-runtime", + "primitive-types", +] + +[[package]] +name = "evm-runtime" +version = "0.37.0" +source = "git+https://github.com/Zilliqa/evm.git?branch=master#ef7a9d1476f15660aad98dec5275beae016e83e4" +dependencies = [ + "auto_impl", + "environmental", + "evm-core", + "primitive-types", + "sha3", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hash-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "inkwell" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4fcb4a4fa0b8f7b4178e24e6317d6f8b95ab500d8e6e1bd4283b6860e369c1" +dependencies = [ + "either", + "inkwell_internals", + "libc", + "llvm-sys", + "once_cell", + "parking_lot", +] + +[[package]] +name = "inkwell_internals" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b185e7d068d6820411502efa14d8fbf010750485399402156b72dd2a548ef8e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.25", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "is-terminal" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +dependencies = [ + "hermit-abi", + "io-lifetimes", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lalrpop" +version = "0.19.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools", + "lalrpop-util", + "petgraph", + "pico-args", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.19.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5c1f7869c94d214466c5fd432dfed12c379fd87786768d36455892d46b18edd" +dependencies = [ + "regex", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.141" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" + +[[package]] +name = "linux-raw-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" + +[[package]] +name = "llvm-sys" +version = "160.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c23bd4905c97f88d0dfec97095829f4ac7eff8ce28fec74a8f8eb8e64830a86e" +dependencies = [ + "cc", + "lazy_static", + "libc", + "regex", + "semver", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parity-scale-codec" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.45.0", +] + +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap 1.9.3", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustix" +version = "0.37.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "scale-info" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" + +[[package]] +name = "serde" +version = "1.0.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.25", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.25", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "triehash" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" +dependencies = [ + "hash-db", + "rlp", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a2094c43cc94775293eaa0e499fbc30048a6d824ac82c0351a8c0bf9112529" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] diff --git a/products/bluebell/core/Cargo.toml b/products/bluebell/core/Cargo.toml new file mode 100644 index 000000000..00e5c51c9 --- /dev/null +++ b/products/bluebell/core/Cargo.toml @@ -0,0 +1,53 @@ +[package] +name = "bluebell" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[build-dependencies] +lalrpop = "0.19.9" + +[dependencies] +lalrpop-util = {version = "0.19", features = ["lexer"]} + +# DEPRECATED +# # LLVM stuff +# inkwell = {version = "0.2.0", features= ["llvm16-0"]} + +scilla-parser = { git = "https://github.com/Zilliqa/rs-scilla-parser.git", branch="main" } + +# EVM stuff +evm = { git = "https://github.com/Zilliqa/evm.git", branch="master" } +evm_assembly = { path = "../evm_assembly" } +primitive-types = { version = "0.12", default-features = false } +hex = "0.4" +sha3 = "0.10.8" + + +# Logging +log = "0.4.2" + +# Test +regex = "1.10.2" +diffy = "0.3.0" + +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" + + + +[package.metadata.raze] +workspace_path = "//products/bluebell" +targets = [ + "aarch64-apple-darwin", + "aarch64-unknown-linux-gnu", + "x86_64-apple-darwin", + "x86_64-pc-windows-msvc", + "x86_64-unknown-linux-gnu", +] +output_buildfile_suffix = "BUILD.bazel" +gen_workspace_prefix = "vendored_hello_cargo_library" +genmode = "Vendored" +package_aliases_dir = "cargo" +default_gen_buildrs = false diff --git a/products/bluebell/core/README.md b/products/bluebell/core/README.md new file mode 100644 index 000000000..33de5474f --- /dev/null +++ b/products/bluebell/core/README.md @@ -0,0 +1,15 @@ +# Bluebell core + +This crate contains the base infrastructure of the Scilla compiler, Bluebell. + +## Useful references + +An example of source location can he found +[here](https://github.com/gluon-lang/gluon/blob/f8326d21a14b5f21d203e9c43fa5bb7f0688a74c/base/src/source.rs#L22-L35) + +Memory formatter in Python: + +```python +def f(x): + print('\n'.join([str(hex(i*32)).ljust(4) + ": " + x[64*i:64*(i+1)] for i in range(int(len(x)/64))])) +``` diff --git a/products/bluebell/core/src/constants.rs b/products/bluebell/core/src/constants.rs new file mode 100644 index 000000000..2dbe70f83 --- /dev/null +++ b/products/bluebell/core/src/constants.rs @@ -0,0 +1,32 @@ +// Symbol constant: These are the constants we use when representing types and instances +// internally. + +/// prefix for global variables and functions +pub const GLOBAL_VAR_PREFIX: &str = "@"; + +/// prefix for global variables and functions +pub const NAMESPACE_SEPARATOR: &str = "::"; + +/// marks the start of template parameters +pub const TEMPLATE_PARAMETERS_START: &str = "<"; + +/// marks the end of template parameters +pub const TEMPLATE_PARAMETERS_END: &str = ">"; + +/// separator of template parameters +pub const TEMPLATE_PARAMETERS_SEPARATOR: &str = ","; + +/// marks the start of function arguments +pub const FUNCTION_ARGUMENTS_START: &str = "("; + +/// marks the end of function arguments +pub const FUNCTION_ARGUMENTS_END: &str = ")"; + +/// separator of function arguments +pub const FUNCTION_ARGUMENTS_SEPARATOR: &str = ","; + +/// separates function arguments and return type +pub const FUNCTION_RETURN_TYPE_SEPARATOR: &str = "->"; + +/// prefix for local variables +pub const LOCAL_VAR_PREFIX: &str = "%"; diff --git a/products/bluebell/core/src/contract_executor.rs b/products/bluebell/core/src/contract_executor.rs new file mode 100644 index 000000000..f5400cd8e --- /dev/null +++ b/products/bluebell/core/src/contract_executor.rs @@ -0,0 +1,32 @@ +/// `ContractExecutor` is a trait that defines the interface for smart contract execution. +/// This is designed for compilers that create Ethereum Virtual Machine (EVM) and LLVM code, among others. +/// This trait is intended for production code and it is expected that any implementation is sandboxed with +/// a best effort to protect against undesirable side effects. +pub trait ContractExecutor { + /// Executes the smart contract identified by `name`. This typically involves running the + /// compiled code associated with the contract. It returns a byte array + /// representing the result of the execution if successful and otherwise an error string. + fn execute(&self, name: &str) -> Result, String>; + + /// Links the given `name` to a physical address `addr`. This is typically used to + /// resolve dynamic dependencies during the execution phase. + fn link_symbol(&self, name: &str, addr: usize); +} + +/// `UnsafeContractExecutor` is a trait similar to `ContractExecutor`, but its methods are marked unsafe. +/// This means that compilers need to make sure they're calling these methods in a safe way, as unsafe +/// blocks signal to the Rust compiler that the programmer has manually ensured correctness despite potential +/// risks of undefined behavior. This trait is intended for testing and rapid prototyping. +/// WARNING! There is no garantuee that implementations of this trait will be safe and it may expose direct access +/// to memory and/or system that should not be allowed in a production system. +pub trait UnsafeContractExecutor { + /// An `unsafe` version of the `execute` method in the `ContractExecutor` trait. The called + /// contract is responsible for maintaining safety since this method could potentially work directly + /// with low-level memory and system operations. + unsafe fn execute(&self, name: &str) -> Result, String>; + + /// An `unsafe` version of the `link_symbol` method in the `ContractExecutor` trait. This method + /// is marked unsafe since it deals directly with memory addresses and thus requires the caller + /// to ensure it's used correctly to prevent potential risks. + unsafe fn link_symbol(&self, name: &str, addr: usize); +} diff --git a/products/bluebell/core/src/errors.rs b/products/bluebell/core/src/errors.rs new file mode 100644 index 000000000..d2a4f1bde --- /dev/null +++ b/products/bluebell/core/src/errors.rs @@ -0,0 +1,14 @@ +use scilla_parser::parser::lexer; + +// Struct to represent source errors +// Contains the position of the error in the source code and the error message +pub struct SourceError { + /// Source position of the error + pub position: lexer::SourcePosition, + + /// Associated error message + pub message: String, +} + +// Type alias for a list of source errors +pub type ErrorList = Vec; diff --git a/products/bluebell/core/src/evm_bytecode_generator.rs b/products/bluebell/core/src/evm_bytecode_generator.rs new file mode 100644 index 000000000..bebf86d17 --- /dev/null +++ b/products/bluebell/core/src/evm_bytecode_generator.rs @@ -0,0 +1,714 @@ +use std::{collections::BTreeSet, mem, str::FromStr}; + +use evm_assembly::{ + block::EvmBlock, + compiler_context::EvmCompilerContext, + executable::EvmExecutable, + instruction::EvmSourcePosition, + types::{EvmType, EvmTypeValue}, + EvmByteCodeBuilder, +}; +use primitive_types::U256; +use scilla_parser::ast::TreeTraversalMode; +use sha3::{Digest, Keccak256}; + +use crate::{ + intermediate_representation::{ + pass::IrPass, + primitives::{IntermediateRepresentation, Operation}, + symbol_table::StateLayoutEntry, + }, + passes::debug_printer::DebugPrinter, +}; + +/// `EvmBytecodeGenerator` is a structure responsible for generating Ethereum Virtual Machine (EVM) bytecode. +/// It stores an EVM bytecode builder and an intermediate representation (IR) of the program to be compiled. +/// +/// 'ctx lifetime marker is tied with `EvmByteCodeBuilder`'s lifetime which represents the lifetime of the EvmCompilerContext. +pub struct EvmBytecodeGenerator<'ctx> { + /// `builder` is an instance of `EvmByteCodeBuilder` that provides methods to construct + /// EVM bytecode sequentially. The lifetime of this builder should not outlive the context 'ctx. + builder: EvmByteCodeBuilder<'ctx>, + + /// `ir` is an intermediate representation (IR) of the smart contract code. It's a + /// high-level, platform-independent representation used for code optimization before + /// it's translated into the target bytecode. + ir: Box, +} + +impl<'ctx> EvmBytecodeGenerator<'ctx> { + /// This constructs a new `EvmBytecodeGenerator`. It takes an existing EVM compiler context + /// and a boxed intermediate representation (IR) of the program. + pub fn new( + context: &'ctx mut EvmCompilerContext, + ir: Box, + abi_support: bool, + ) -> Self { + let builder = if abi_support { + context.create_builder() + } else { + context.create_builder_no_abi_support() + }; + Self { builder, ir } + } + + /// TODO: + pub fn build_state_layout(&mut self) -> Result<(), String> { + // TODO: Add support for immutables + let mut address_offset: u64 = 4919; + + for field in &self.ir.fields_definitions { + let name = &field.variable.name.unresolved; + let address = U256::from(address_offset); + let initializer = U256::from(0); + + let state = StateLayoutEntry { + address_offset: address, + size: 1, // TODO: + initializer, + }; + + self.ir + .symbol_table + .state_layout + .insert(name.to_string(), state); + address_offset += 1; + } + + Ok(()) + } + + /// This function writes function definitions from the IR to the EVM module. + /// It loops over all function definitions in the IR and creates corresponding function definitions + /// in the EVM module using the byte code builder. + pub fn write_function_definitions_to_module(&mut self) -> Result { + for func in &mut self.ir.function_definitions { + /* + let mut ir_printer = DebugPrinter::new(); + let _ = ir_printer.visit_concrete_function(TreeTraversalMode::Enter, func, &mut self.ir.symbol_table); + info!("{}", format!("IR: {}", ir_printer.value())); + */ + + let arg_types: Vec<&str> = func + .arguments + .iter() + .map(|arg| arg.typename.unresolved.as_str()) + .collect(); + + let arg_names: BTreeSet = func + .arguments + .iter() + .map(|arg| { + arg.name + .resolved + .clone() + .expect("Unresolved function argument name") + }) + .collect(); + + let function_name = func + .name + .qualified_name() + .unwrap_or(func.name.unresolved.clone()); + + let return_type = match func.return_type.as_ref() { + Some(return_type) => return_type.as_str(), + None => "Uint256", // TODO: panic!("Void type not implemented for EVM") + }; + + self.builder + .define_function(&function_name, arg_types, return_type) + .build(|code_builder| { + let mut ret: Vec = Vec::new(); + let mut symbol_table = self.ir.symbol_table.clone(); + + // TODO: Check that arg_names matches length of the arguments in the first block + if let Some(entry) = func.body.blocks.first() { + if arg_names.len() != entry.block_arguments.len() { + panic!("Internal error: Function argument names differ from block names in length: {:?} vs {:?}", arg_names, entry.block_arguments); + } + if arg_names != entry.block_arguments { + panic!("Internal error: Function argument names differ from block names in order"); + } + } + + + + + // Return PC + Arguments are expected to be on the stack + for block in &func.body.blocks { + let block_name = match block.name.qualified_name() { + Ok(b) => b, + Err(_) => panic!("Failed to get qualified name."), + }; + + // Creating entry function + let block_args : BTreeSet = block.block_arguments.clone(); + let mut evm_block = + code_builder.new_evm_block_with_args(&block_name, block_args); + + for instr in &block.instructions { + let mut instruction_printer = DebugPrinter::new(); + let mut instr_copy = instr.clone(); + let _ = instruction_printer.visit_instruction(TreeTraversalMode::Enter, &mut instr_copy, &mut symbol_table); + evm_block.set_next_instruction_comment(instruction_printer.value()); + + let (l_pos, r_pos) = &instr.source_location; + if l_pos.is_valid() && r_pos.is_valid() { + let pos = EvmSourcePosition { + start: l_pos.position, + end: r_pos.position, + line: l_pos.line, + column: l_pos.column, + }; + evm_block.set_next_instruction_location(pos); + } + + + match &instr.operation { + Operation::CallFunction { + ref name, + ref arguments, + } + | Operation::CallExternalFunction { + ref name, + ref arguments, + } => { + + // Invoking + let qualified_name = match &name.resolved { + Some(n) => n, + None => { + // TODO: Fix error propagation + panic!( + "Encountered unresolved function name {}", + name.unresolved + ) + } + }; + + let mut ctx = &mut code_builder.context; + // We have three types of calls: + // - Precompiles / external function + // - Inline assembler generics + // - Internal calls + + // Copying arguments to stack + for arg in arguments { + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + match &arg.resolved { + Some(n) => match evm_block.duplicate_stack_name(n) { + Err(e) => { + print!("Block: {:#?}", evm_block); + panic!("{} in {}", e, evm_block.name) + } + _ => (), + }, + None => panic!("Argument name was not resolved"), + } + } + + let args_types: Vec = arguments + .iter() + .map(|arg| arg.type_reference.clone().unwrap()) + .collect(); + + if ctx.function_declarations.contains_key(qualified_name) { + let signature = match ctx.get_function(qualified_name) { + Some(s) => s, + None => panic!( + "Internal error: Unable to retrieve function" + ), + }; + + // Precompiled or external function + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + + // TODO: Consider if argument mapping should be managed by the runtime module + evm_block.call(signature, args_types .iter() + .map(|s| EvmType::from_str(s).unwrap()) + .collect()); + } else if ctx.inline_generics.contains_key(&name.unresolved) { + // TODO: This ought to be the resovled name, but it should be resovled without instance parameters - make a or update pass + // Builtin assembly generator + + let block_generator = + ctx.inline_generics.get(&name.unresolved).unwrap(); + let new_blocks = + block_generator(&mut ctx, &mut evm_block, args_types); + match new_blocks { + Ok(new_blocks) => { + for block in new_blocks { + ret.push(block); + } + } + Err(e) => { + panic!("Error in external call: {}", e); + } + } + } else { + // Internal function call + let exit_block_args: BTreeSet = arguments.iter().map(|arg| { + match &arg.resolved { + Some(a) =>a.clone(), + None => panic!("Unable to resolve {}", arg.unresolved), + } + }).collect(); + let mut exit_block = code_builder.new_evm_block_with_args("exit_block", exit_block_args); + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.push_label(&exit_block.name); + + for arg in arguments { + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + let _ = match &arg.resolved { + Some(a) => evm_block.duplicate_stack_name(&a), + None => panic!("Unable to resolve {}", arg.unresolved), + }; + } + + // Jumping to function + // TODO: Check that internal function is defined and throw an error if not. + let label = match &name.resolved { + Some(v) => { + // TODO: "Rsplit" hack to compensate for that the labels does not contain function parameter types + if let Some(index) = v.rfind("::<") { + &v[..index] + } else { + v + } + } + None => panic!( + "Unresolved function name in function call {:?}", + name + ), + }; + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + + // Note that we do not need to add scopes to function jumps as these are + // outside of the function scope + evm_block.jump_to(&label); + mem::swap(&mut evm_block, &mut exit_block); + ret.push(exit_block); + } + } + + Operation::Literal { + ref data, + ref typename, + } => { + let qualified_name = match typename.qualified_name() { + Ok(v) => v, + _ => panic!("Qualified name could not be resolved"), + }; + let ssa_name = match &instr.ssa_name { + Some(v) => match &v.resolved { + Some(x) => x, + _ => panic!("Literal symbol name was unresolved."), + }, + _ => panic!("Literals with no SSA name are not supported"), + }; + + match qualified_name.as_str() { + "String" => { + let payload = data.clone(); + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + let payload = payload[1..payload.len()-1].as_bytes(); + evm_block.allocate_object(payload.to_vec()); + match evm_block.register_stack_name(ssa_name) { + Err(_) => { + panic!("Failed to register SSA stack name.") + } + _ => (), + } + + } + "Uint64" => { + let value = EvmTypeValue::Uint64(data.parse().unwrap()); + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.push(value.to_bytes_unpadded()); + match evm_block.register_stack_name(ssa_name) { + Err(_) => { + panic!("Failed to register SSA stack name.") + } + _ => (), + } + } + // TODO: add cases for other types of literals here if needed + _ => { + panic!( + "{}", + format!( + "Unhandled literal type: {:?}", + typename.qualified_name() + ) + ); + } + } + } + Operation::ResolveContextResource {ref symbol} => { + let mut ctx = &mut code_builder.context; + + if ctx.special_variables.contains_key(&symbol.unresolved) { + // TODO: This ought to be the resovled name, but it should be resovled without instance parameters - make a or update pass + // Builtin assembly generator + let block_generator = + ctx.special_variables.get(&symbol.unresolved).unwrap(); + let new_blocks = + block_generator(&mut ctx, &mut evm_block ); + match new_blocks { + Ok(new_blocks) => { + for block in new_blocks { + ret.push(block); + } + } + Err(e) => { + panic!("Error in external call: {}", e); + } + } + } + else { + panic!("Special variable {} not found", symbol.unresolved); + } + } + Operation::ResolveSymbol { ref symbol } => { + let source = match &symbol.resolved { + Some(v) => v, + None => panic!("Unresolved symbol: {:?}", symbol), + }; + let dest = match &instr.ssa_name { + Some(v) => match &v.resolved { + Some(x) => x, + _ => panic!("Alias symbol name was unresolved."), + }, + _ => panic!("Alias with no SSA name are not supported"), + }; + + if let Err(e) = evm_block.register_alias(source, dest) { + panic!("Failed registering alias: {:?}", e); + } + } + Operation::StateStore { + ref address, + ref value, + } => { + // TODO: Ensure that we used resolved address name + let binding = &self.ir.symbol_table.state_layout.get(&address.name.unresolved); + let state = match binding { + Some(v) => v, + None => panic!( + "{}", + format!( + "Unable to find state {} (storing {})", + address.name.unresolved, value.unresolved + ) + ), + }; + + let address = state.address_offset; + + let value_name = match &value.resolved { + Some(v) => v, + None => { + panic!("{}", format!("Unable to resolve {:?}", value)) + } + }; + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + if let Err(e) = evm_block.duplicate_stack_name(value_name) { + panic!("Unable to resolve value to be stored: {:?}", e); + } + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.push_u256(address); + evm_block.external_sstore(); + } + + Operation::StateLoad { + ref address, + } => { + // TODO: Ensure that we used resolved address name + let binding = &self.ir.symbol_table.state_layout.get(&address.name.unresolved); + let value = match &instr.ssa_name { + Some(v) => v, + None => panic!("Load does not assign value") + + }; + let state = match binding { + Some(v) => v, + None => panic!( + "{}", + format!( + "Unable to find state {} (loading to {})", + address.name.unresolved, + value.unresolved + ) + ), + }; + + let address = state.address_offset; + + let value_name = match &value.resolved { + Some(v) => v, + None => { + panic!("{}", format!("Unable to resolve {:?}", value)) + } + }; + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.push_u256(address); + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.external_sload(); + let _ = evm_block.register_stack_name(value_name); + } + Operation::Return(ref _value) => { + // Assumes that the next element on the stack is return pointer + // TODO: Pop all elements that were not used yet. + // TODO: Push value if exists and swap1, then jump + + while evm_block.scope.stack_counter > 0 { + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.pop(); + } + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.jump(); + } + Operation::CallStaticFunction { + // TODO: Poor name + ref name, + owner: _, + ref arguments, + } => { + if arguments.len() > 0 { + // TODO: Pack data + unimplemented!(); + } + let name = match &name.resolved { + Some(n) => n, + None => { + panic!("Unable to resolve name {:?}", name.unresolved) + } + }; + + let ctx = &mut code_builder.context; + if let Some(constructor) = &ctx.default_constructors.get(name) { + constructor(&mut evm_block); + } else { + // Falling back to plain enum type naming with no data associated + // for custom types. + let hash = Keccak256::digest(name); + let mut selector = Vec::new(); + selector.extend_from_slice(&hash[..4]); + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.push(selector); + } + } + Operation::IsEqual { + ref left, + ref right, + } => { + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + match &left.resolved { + Some(l) => match evm_block.duplicate_stack_name(l) { + Ok(()) => (), + Err(e) => panic!("{:#?}", e), + }, + None => panic!("Unresolved left hand side"), + } + match &right.resolved { + Some(r) => match evm_block.duplicate_stack_name(r) { + Ok(()) => (), + Err(e) => panic!("{:#?}", e), + }, + None => panic!("Unresolved left hand side"), + } + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.eq(); + } + Operation::Jump(label) => { + let label = match &label.resolved { + Some(l) => l, + None => panic!("Could not resolve default label"), + }; + + let mut pop_count = evm_block.scope.stack_counter; + let jump_args = block + .jump_required_arguments + .get(label) + .unwrap_or(&BTreeSet::new()) + .clone(); + + // Preserving the args to the next block + pop_count -= jump_args.len() as i32; + + // Moving arguments + // Notice the reversing of the arguments, since positions are in relative stack + // depth and consenquently the first argument becomes the deepest (highest number) + for (i, arg) in jump_args.iter().rev().enumerate() { + let pos = pop_count+i as i32; + evm_block.set_next_instruction_comment(format!("Moving argument {} '{}' behind {}",pos,arg, pop_count).to_string()) ; + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + match evm_block.move_stack_name(&arg, pos) { + Ok(()) => (), + Err(e) => panic!("{:#?}", e), + } + + } + + + while pop_count > 0 { + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.pop(); + pop_count -= 1; + } + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.jump_to(&code_builder.add_scope_to_label(label)); + } + Operation::ConditionalJump { + ref expression, + ref on_success, + ref on_failure, + } => { + + let _ = match &expression.resolved { + Some(name) => evm_block.duplicate_stack_name(&name), + None => panic!("Expression does not have a SSA name"), + }; + + let mut pop_count = evm_block.scope.stack_counter; + + let success_label = match &on_success.resolved { + Some(l) => l, + None => panic!("Could not resolve on_success label"), + }; + + let failure_label = match &on_failure.resolved { + Some(l) => l, + None => panic!("Could not resolve on_failure label"), + }; + // TODO: Fix this such that it is done properly + + let success_jump_args = block + .jump_required_arguments + .get(success_label) + .unwrap_or(&BTreeSet::new()) + .clone(); + let failure_jump_args = block + .jump_required_arguments + .get(failure_label) + .unwrap_or(&BTreeSet::new()) + .clone(); + + if !success_jump_args.eq(&failure_jump_args) { + panic!("Block termination must require same number of subsequent variable dependencies."); + } + + + // Preserving the args to the next block and the condition + pop_count -= success_jump_args.len() as i32; + assert!(pop_count>=0); + + // Putting all arguments on the stack and preparing to pop before jumping + // Notice the reversing of the arguments, since positions are in relative stack + // depth and consenquently the first argument becomes the deepest (highest number) + for (i, arg) in success_jump_args.iter().rev().enumerate() { + let pos = pop_count+i as i32; + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.set_next_instruction_comment(format!("Moving argument {} '{}' to {}",i, arg, pos).to_string()) ; + //assert_eq!(pos, evm_block.scope.stack_counter+1 - (success_jump_args.len() - i) as i32); + + match evm_block.move_stack_name(&arg, pos) { + Ok(()) => (), + Err(e) => panic!("{:#?}", e), + } + } + + // Making room for the condition + assert!(pop_count>0); + pop_count-= 1; + + if pop_count > 0 { + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.set_next_instruction_comment(format!("Preserving jump condition and preparing stack deletion {}", pop_count).to_string()); + evm_block.swap(pop_count); + } + + while pop_count > 0 { + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.pop(); + pop_count -= 1; + } + + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.jump_if_to(&code_builder.add_scope_to_label(success_label)); + + // TODO: manage stack + evm_block.set_next_rust_position(file!().to_string(), line!() as usize); + evm_block.jump_to(&code_builder.add_scope_to_label(failure_label)); + } + Operation::TerminatingRef (_) => { + // Ignore terminating ref as this will just be pop at the end of the block. + } + _ => { + panic!("Unhandled operation {:#?}",instr); + } + } + + // Handling SSA + if let Some(ssa_name) = &instr.ssa_name { + let ssa_name = match &ssa_name.resolved { + Some(x) => x, + _ => panic!("SSA symbol name was unresolved."), + }; + + match instr.operation { + Operation::ResolveSymbol { symbol: _ } + | Operation::StateStore { + address: _, + value: _, + } + | Operation::StateLoad { + address: _, + } + | Operation::Literal { + data: _, + typename: _, + } => (), // Literals are handled in the first match statement + _ => { + match evm_block.register_stack_name(ssa_name) { + Err(_) => { + panic!( + "Failed to register SSA stack name: {}.", + ssa_name + ); + } + _ => (), + } + } + } + } + } + + ret.push(evm_block); + } + + ret + }); + } + + Ok(0) + } + + pub fn build_executable(&mut self) -> Result { + self.build_state_layout()?; + + self.write_function_definitions_to_module()?; + + self.builder.finalize_blocks(); + Ok(self.builder.build()) + } +} diff --git a/products/bluebell/core/src/formatter.rs b/products/bluebell/core/src/formatter.rs new file mode 100644 index 000000000..672dff4b6 --- /dev/null +++ b/products/bluebell/core/src/formatter.rs @@ -0,0 +1,1180 @@ +use scilla_parser::{ + ast::{ + converting::AstConverting, nodes::*, visitor::AstVisitor, TraversalResult, + TreeTraversalMode, + }, + parser::lexer::SourcePosition, +}; + +/// `BluebellFormatter` is a structure responsible for generating a formatted script from an AST. +/// It stores the current indentation level for the partially generated script `script`. +pub struct BluebellFormatter { + /// `indent_level` keeps track of the current indentation level in the script. + /// It will typically increase with each nested construct. + indent_level: usize, + + /// `script` is a string representing the partially generated script. + script: String, +} + +impl BluebellFormatter { + /// This constructs a new `BluebellFormatter` with an initial `indent_level` of 0 and an empty `script`. + pub fn new() -> Self { + Self { + indent_level: 0, + script: "".to_string(), + } + } + + /// This function returns the current state of the script as a `String`. + pub fn to_string(&self) -> &String { + &self.script + } + + /// After resetting the current `script`, this function makes `ast` visit the instance of `BluebellFormatter`. + /// The `NodeProgram`'s `visit` method will walk down the AST rooted at `ast`, and mutate the `script` + /// and `indent_level` as it sees fit. After visiting the `ast`, it returns the current state of the `script`. + pub fn emit(&mut self, ast: &mut NodeProgram) -> String { + self.script = "".to_string(); + // TODO: Handle errors + // Consider adding an error logger and be greedy + // when collecting errors + let _ = ast.visit(self); + self.script.clone() + } + + /// This function adds newlines to the `script`. The number of newlines to be added is specified by the + /// `count` parameter. After adding the newlines, it appends spaces equivalent to twice the current + /// `indent_level` to maintain indentation. + fn add_newlines(&mut self, count: usize) { + self.script.push_str(&"\n".repeat(count)); + // TODO: Consider making indentation configurable from constants.rs + self.script.push_str(&" ".repeat(self.indent_level * 2)); + } +} + +impl AstConverting for BluebellFormatter { + fn push_source_position(&mut self, _start: &SourcePosition, _end: &SourcePosition) {} + + fn pop_source_position(&mut self) {} + + fn emit_byte_str( + &mut self, + mode: TreeTraversalMode, + node: &NodeByteStr, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeByteStr::Constant(s) => { + self.script.push_str(&format!("\"{}\"", s)); // Push a constant byte string to the script + } + NodeByteStr::Type(s) => { + self.script.push_str(&format!("{}", s)); // Push a byte string type definition to the script + } + }, + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_type_name_identifier( + &mut self, + mode: TreeTraversalMode, + node: &NodeTypeNameIdentifier, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeTypeNameIdentifier::ByteStringType(_) => (), + NodeTypeNameIdentifier::EventType => { + self.script.push_str("Event"); + } + NodeTypeNameIdentifier::TypeOrEnumLikeIdentifier(n) => { + self.script.push_str(&n.node); + } + }, + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_imported_name( + &mut self, + mode: TreeTraversalMode, + __node: &NodeImportedName, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.add_newlines(1); + self.script.push_str("import "); + } + TreeTraversalMode::Exit => (), + } + + Ok(TraversalResult::Continue) + } + + fn emit_import_declarations( + &mut self, + mode: TreeTraversalMode, + __node: &NodeImportDeclarations, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.add_newlines(1); + } + TreeTraversalMode::Exit => (), + } + + Ok(TraversalResult::Continue) + } + + fn emit_meta_identifier( + &mut self, + mode: TreeTraversalMode, + node: &NodeMetaIdentifier, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeMetaIdentifier::MetaNameInNamespace(l, r) => { + let _ = l.node.visit(self)?; + self.script.push_str("."); + let _ = r.node.visit(self)?; + return Ok(TraversalResult::SkipChildren); + } + NodeMetaIdentifier::MetaNameInHexspace(l, r) => { + self.script.push_str(&l.node); + self.script.push_str("."); + let _ = r.node.visit(self)?; + return Ok(TraversalResult::SkipChildren); + } + NodeMetaIdentifier::ByteString => { + self.script.push_str("ByStr"); + } + NodeMetaIdentifier::MetaName(_) => (), + }, + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_variable_identifier( + &mut self, + mode: TreeTraversalMode, + node: &NodeVariableIdentifier, + ) -> Result { + match mode { + TreeTraversalMode::Enter => (), + TreeTraversalMode::Exit => match node { + NodeVariableIdentifier::VariableName(v) => self.script.push_str(&v.node), + NodeVariableIdentifier::SpecialIdentifier(v) => self.script.push_str(&v.node), + NodeVariableIdentifier::VariableInNamespace(_, v) => { + self.script.push_str("."); + self.script.push_str(&v.node); + } + }, + } + Ok(TraversalResult::Continue) + } + + fn emit_builtin_arguments( + &mut self, + _mode: TreeTraversalMode, + node: &NodeBuiltinArguments, + ) -> Result { + if node.arguments.len() == 0 { + self.script.push_str("()"); + } else { + for (i, arg) in node.arguments.iter().enumerate() { + if i != 0 { + self.script.push_str(" "); + } + let _ = arg.node.visit(self)?; + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_map_key( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTypeMapKey, + ) -> Result { + match node { + NodeTypeMapKey::GenericMapKey(value) => { + let _ = value.node.visit(self)?; + } + NodeTypeMapKey::EnclosedGenericId(value) => { + self.script.push_str("("); + let _ = value.node.visit(self)?; + self.script.push_str(")"); + } + NodeTypeMapKey::EnclosedAddressMapKeyType(value) => { + self.script.push_str("("); + let _ = value.node.visit(self)?; + self.script.push_str(")"); + } + NodeTypeMapKey::AddressMapKeyType(value) => { + let _ = value.node.visit(self)?; + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_map_value( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTypeMapValue, + ) -> Result { + match node { + NodeTypeMapValue::MapValueTypeOrEnumLikeIdentifier(value) => { + let _ = value.node.visit(self)?; + } + NodeTypeMapValue::MapKeyValue(value) => { + let _ = (*value).node.visit(self)?; + } + NodeTypeMapValue::MapValueParanthesizedType(value) => { + self.script.push_str("("); + let _ = (*value).node.visit(self)?; + self.script.push_str(")"); + } + NodeTypeMapValue::MapValueAddressType(value) => { + let _ = (*value).node.visit(self)?; + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_argument( + &mut self, + mode: TreeTraversalMode, + node: &NodeTypeArgument, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeTypeArgument::MapTypeArgument(_, _) => { + self.script.push_str("Map "); + } + NodeTypeArgument::EnclosedTypeArgument(_) => { + self.script.push_str("("); + } + NodeTypeArgument::TemplateTypeArgument(var) => { + self.script.push_str(&var.node); + } + _ => (), + }, + TreeTraversalMode::Exit => match node { + NodeTypeArgument::EnclosedTypeArgument(_) => { + self.script.push_str(")"); + } + _ => (), + }, + } + Ok(TraversalResult::Continue) + } + + fn emit_scilla_type( + &mut self, + _mode: TreeTraversalMode, + node: &NodeScillaType, + ) -> Result { + match node { + NodeScillaType::GenericTypeWithArgs(lead, args) => { + let _ = lead.node.visit(self)?; + for arg in args.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + } + NodeScillaType::MapType(key, value) => { + self.script.push_str("Map "); + let _ = key.node.visit(self)?; + self.script.push_str(" "); + let _ = value.node.visit(self)?; + } + NodeScillaType::FunctionType(a, b) => { + let _ = (*a).node.visit(self)?; + let _ = (*b).node.visit(self)?; + } + NodeScillaType::EnclosedType(a) => { + self.script.push_str("( "); + let _ = (*a).node.visit(self)?; + self.script.push_str(" )"); + } + NodeScillaType::ScillaAddresseType(a) => { + let _ = (*a).node.visit(self)?; + } + NodeScillaType::PolyFunctionType(name, a) => { + self.script.push_str(&name.node); + let _ = (*a).node.visit(self)?; + } + NodeScillaType::TypeVarType(name) => { + self.script.push_str(&name.node); + } + }; + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_map_entry( + &mut self, + _mode: TreeTraversalMode, + __node: &NodeTypeMapEntry, + ) -> Result { + /* + #[derive(Clone, Debug, PartialEq, PartialOrd, Eq)] + pub struct NodeTypeMapEntry { + pub key: NodeTypeMapKey, + pub value: NodeTypeMapValue, + pub type_annotation: Option, + } + */ + + unimplemented!() + } + + fn emit_address_type_field( + &mut self, + _mode: TreeTraversalMode, + node: &NodeAddressTypeField, + ) -> Result { + self.script.push_str("field "); + let _ = node.identifier.node.visit(self)?; + self.script.push_str(" : "); + let _ = node.type_name.node.visit(self)?; + Ok(TraversalResult::SkipChildren) + } + + fn emit_address_type( + &mut self, + _mode: TreeTraversalMode, + node: &NodeAddressType, + ) -> Result { + let _ = node.identifier.node.visit(self)?; + self.script.push_str(" with "); + + if node.type_name.node.len() > 0 { + self.script.push_str(&node.type_name.node); + self.script.push_str(" "); + } + + for field in node.address_fields.iter() { + let _ = field.node.visit(self)?; + self.script.push_str(" "); + } + + self.script.push_str("end"); + + Ok(TraversalResult::SkipChildren) + } + + fn emit_full_expression( + &mut self, + _mode: TreeTraversalMode, + node: &NodeFullExpression, + ) -> Result { + match node { + NodeFullExpression::LocalVariableDeclaration { + identifier_name, + expression, + type_annotation, + containing_expression, + } => { + self.add_newlines(1); + self.script.push_str("let "); + self.script.push_str(&identifier_name.node); + self.indent_level += 1; + if let Some(t) = type_annotation { + let _ = t.node.visit(self)?; + } + self.script.push_str(" = "); + let _ = (*expression).node.visit(self)?; + self.script.push_str(" in "); + let _ = (*containing_expression).node.visit(self)?; + self.indent_level -= 1; + } + NodeFullExpression::FunctionDeclaration { + identier_value, // TODO: Missing spelling - global replacement + type_annotation, + expression, + } => { + self.add_newlines(1); + self.script.push_str("fun "); + self.indent_level += 1; + self.script.push_str("("); + self.script.push_str(&identier_value.node); + let _ = type_annotation.node.visit(self)?; + self.script.push_str(") => "); + + let _ = (*expression).node.visit(self)?; + self.indent_level -= 1; + } + NodeFullExpression::FunctionCall { + function_name, + argument_list, + } => { + let _ = function_name.node.visit(self)?; + for arg in argument_list.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + } + NodeFullExpression::ExpressionAtomic(expr) => { + let _ = expr.node.visit(self)?; + } + NodeFullExpression::ExpressionBuiltin { b, targs, xs } => { + self.script.push_str("builtin "); + self.script.push_str(&b.node); + if let Some(args) = targs { + let _ = args.node.visit(self)?; + } + self.script.push_str(" "); + let _ = xs.node.visit(self)?; + } + NodeFullExpression::Message(entries) => { + self.script.push_str("{"); + self.indent_level += 1; + for (i, message) in entries.iter().enumerate() { + let _ = message.node.visit(self)?; + if i != entries.len() - 1 { + self.script.push_str(";") + } + } + self.indent_level -= 1; + self.add_newlines(1); + self.script.push_str("}"); + } + NodeFullExpression::Match { + match_expression, + clauses, + } => { + self.add_newlines(1); + self.script.push_str("match "); + let _ = match_expression.node.visit(self)?; + self.script.push_str(" with "); + self.indent_level += 1; + for clause in clauses.iter() { + let _ = clause.node.visit(self)?; + } + self.indent_level -= 1; + self.add_newlines(1); + self.script.push_str("end"); + } + NodeFullExpression::ConstructorCall { + identifier_name, + contract_type_arguments, + argument_list, + } => { + let _ = identifier_name.node.visit(self)?; + if let Some(cta) = contract_type_arguments { + self.script.push_str(" "); + let _ = cta.node.visit(self)?; + } + for a in argument_list.iter() { + self.script.push_str(" "); + let _ = a.node.visit(self)?; + } + } + NodeFullExpression::TemplateFunction { + identifier_name, + expression, + } => { + self.add_newlines(1); + self.script.push_str("tfun "); + self.script.push_str(&identifier_name.node); + self.script.push_str(" => "); + let _ = expression.node.visit(self)?; + } + NodeFullExpression::TApp { + identifier_name, + type_arguments, + } => { + self.script.push_str("@"); + let _ = identifier_name.node.visit(self)?; + for arg in type_arguments.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_message_entry( + &mut self, + _mode: TreeTraversalMode, + node: &NodeMessageEntry, + ) -> Result { + self.add_newlines(1); + match node { + NodeMessageEntry::MessageLiteral(var, val) => { + // Converting the variable and value literals into Scilla code + // Assuming the emit_variable_identifier and emit_value_literal are implemented + let _ = var.node.visit(self)?; + self.script.push_str(" : "); + let _ = val.node.visit(self)?; + } + NodeMessageEntry::MessageVariable(var1, var2) => { + let _ = var1.node.visit(self)?; + self.script.push_str(" : "); + let _ = var2.node.visit(self)?; + } + } + Ok(TraversalResult::SkipChildren) + } + fn emit_pattern_match_expression_clause( + &mut self, + _mode: TreeTraversalMode, + node: &NodePatternMatchExpressionClause, + ) -> Result { + self.add_newlines(1); + self.script.push_str("| "); + let _ = node.pattern.node.visit(self)?; + self.script.push_str(" => "); + let _ = node.expression.node.visit(self)?; + Ok(TraversalResult::SkipChildren) + } + + fn emit_atomic_expression( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeAtomicExpression, + ) -> Result { + // Pass through + Ok(TraversalResult::Continue) + } + + fn emit_contract_type_arguments( + &mut self, + _mode: TreeTraversalMode, + node: &NodeContractTypeArguments, + ) -> Result { + self.script.push_str("{"); + for (i, arg) in node.type_arguments.iter().enumerate() { + if i != 0 { + self.script.push_str(" "); + } + + let _ = arg.node.visit(self)?; + } + self.script.push_str("}"); + + Ok(TraversalResult::SkipChildren) + } + + fn emit_value_literal( + &mut self, + mode: TreeTraversalMode, + node: &NodeValueLiteral, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeValueLiteral::LiteralInt(n, v) => { + let _ = n.node.visit(self)?; + self.script.push_str(" "); + self.script.push_str(&v.node); + } + NodeValueLiteral::LiteralHex(h) => { + self.script.push_str(&format!("0x{}", h)); // Push the literal hexadecimal type definition to the script + } + NodeValueLiteral::LiteralString(s) => { + self.script.push_str(&format!("\"{}\"", s)); // Push the literal string type definition to the script + } + NodeValueLiteral::LiteralEmptyMap(key_type, value_type) => { + self.script.push_str("Emp "); + let _ = key_type.node.visit(self)?; + self.script.push_str(" "); + let _ = value_type.node.visit(self)?; + } + }, + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_map_access( + &mut self, + mode: TreeTraversalMode, + _node: &NodeMapAccess, + ) -> Result { + match mode { + TreeTraversalMode::Enter => self.script.push_str("["), + TreeTraversalMode::Exit => self.script.push_str("]"), + } + Ok(TraversalResult::Continue) + } + + fn emit_pattern( + &mut self, + _mode: TreeTraversalMode, + node: &NodePattern, + ) -> Result { + match node { + NodePattern::Wildcard => { + self.script.push_str("_"); + } + NodePattern::Binder(value) => { + self.script.push_str(&value.node); + } + NodePattern::Constructor(identifier, args) => { + let _ = identifier.node.visit(self)?; + + for arg in args.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_argument_pattern( + &mut self, + mode: TreeTraversalMode, + node: &NodeArgumentPattern, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeArgumentPattern::BinderArgument(s) => self.script.push_str(&s.node), + NodeArgumentPattern::WildcardArgument => self.script.push_str("_"), + NodeArgumentPattern::PatternArgument(_) => self.script.push_str("("), + _ => (), + }, + TreeTraversalMode::Exit => match node { + NodeArgumentPattern::PatternArgument(_) => self.script.push_str(")"), + _ => (), + }, + } + // Pass through + Ok(TraversalResult::Continue) + } + + fn emit_pattern_match_clause( + &mut self, + mode: TreeTraversalMode, + node: &NodePatternMatchClause, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.add_newlines(1); + self.script.push_str("| "); + let _ = node.pattern_expression.node.visit(self)?; + self.script.push_str(" =>"); + if let Some(stmt) = &node.statement_block { + let _ = stmt.node.visit(self)?; + } + } + TreeTraversalMode::Exit => {} + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_blockchain_fetch_arguments( + &mut self, + _mode: TreeTraversalMode, + node: &NodeBlockchainFetchArguments, + ) -> Result { + self.script.push_str("("); + for arg in node.arguments.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + self.script.push_str(" )"); + Ok(TraversalResult::SkipChildren) + } + + fn emit_statement( + &mut self, + _mode: TreeTraversalMode, + node: &NodeStatement, + ) -> Result { + self.add_newlines(1); + match node { + NodeStatement::Load { + left_hand_side, + right_hand_side, + } => { + self.script.push_str(&left_hand_side.node); + self.script.push_str(" <- "); + let _ = right_hand_side.node.visit(self)?; + } + NodeStatement::RemoteFetch(fetch_statement) => { + let _ = (*fetch_statement).visit(self)?; + } + NodeStatement::Store { + left_hand_side, + right_hand_side, + } => { + self.script.push_str(&left_hand_side.node); + self.script.push_str(" := "); + let _ = right_hand_side.node.visit(self)?; + } + NodeStatement::Bind { + left_hand_side, + right_hand_side, + } => { + self.script.push_str(&left_hand_side.node); + self.script.push_str(" = "); + let _ = right_hand_side.node.visit(self)?; + } + NodeStatement::ReadFromBC { + left_hand_side, + type_name, + arguments, + } => { + self.script.push_str(&left_hand_side.node); + self.script.push_str(" <-& "); + let _ = type_name.node.visit(self)?; + if let Some(args) = arguments { + let _ = args.visit(self)?; + } + } + NodeStatement::MapGet { + left_hand_side: _, + keys: _, + right_hand_side: _, + } => { + unimplemented!(); + } + NodeStatement::MapGetExists { + left_hand_side: _, + keys: _, + right_hand_side: _, + } => { + unimplemented!(); + } + NodeStatement::MapUpdate { + left_hand_side, + keys, + right_hand_side, + } => { + self.script.push_str(&left_hand_side.node); + for key in keys.iter() { + let _ = key.node.visit(self)?; + } + self.script.push_str(" := "); + let _ = right_hand_side.node.visit(self)?; + } + NodeStatement::MapUpdateDelete { + left_hand_side: _, + keys: _, + } => { + unimplemented!(); + } + NodeStatement::Accept => self.script.push_str("accept"), + NodeStatement::Send { identifier_name } => { + self.script.push_str("send "); + let _ = identifier_name.node.visit(self)?; + } + NodeStatement::CreateEvnt { identifier_name } => { + self.script.push_str("event "); + let _ = identifier_name.node.visit(self)?; + } + NodeStatement::Throw { error_variable } => { + self.script.push_str("throw"); + if let Some(e) = error_variable { + self.script.push_str(" "); + let _ = e.node.visit(self)?; + } + } + NodeStatement::MatchStmt { variable, clauses } => { + self.script.push_str("match "); + let _ = variable.node.visit(self)?; + self.script.push_str(" with"); + self.indent_level += 1; + for clause in clauses.iter() { + let _ = clause.node.visit(self)?; + } + self.indent_level -= 1; + self.add_newlines(1); + self.script.push_str("end"); + } + NodeStatement::CallProc { + component_id, + arguments, + } => { + let _ = component_id.node.visit(self)?; + for arg in arguments.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + } + NodeStatement::Iterate { + identifier_name, + component_id, + } => { + self.script.push_str("forall "); + let _ = identifier_name.node.visit(self)?; + self.script.push_str(" "); + let _ = component_id.node.visit(self)?; + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn emit_remote_fetch_statement( + &mut self, + _mode: TreeTraversalMode, + node: &NodeRemoteFetchStatement, + ) -> Result { + match node { + NodeRemoteFetchStatement::ReadStateMutable(lhs, address, identifier) => { + self.script.push_str(&format!("{} <-& {}.", lhs, address)); + let _ = identifier.node.visit(self)?; + } + NodeRemoteFetchStatement::ReadStateMutableSpecialId(lhs, address, identifier) => { + self.script + .push_str(&format!("{} <-& {}.{}", lhs, address, identifier)); + } + NodeRemoteFetchStatement::ReadStateMutableMapAccess( + lhs, + address, + member_id, + map_accesses, + ) => { + self.script + .push_str(&format!("{} <-& {}.{} ", lhs, address, member_id)); + for access in map_accesses.iter() { + let _ = access.node.visit(self)?; + } + } + NodeRemoteFetchStatement::ReadStateMutableMapAccessExists( + lhs, + address, + member_id, + map_accesses, + ) => { + self.script + .push_str(&format!("{} <-& exists {}.{} ", lhs, address, member_id)); + for access in map_accesses.iter() { + let _ = access.node.visit(self)?; + } + } + NodeRemoteFetchStatement::ReadStateMutableCastAddress( + lhs, + address_id, + address_type, + ) => { + self.script.push_str(&format!("{} <-& ", lhs)); + let _ = address_id.node.visit(self)?; + self.script.push_str(" as "); + + let _ = address_type.node.visit(self)?; + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_component_id( + &mut self, + mode: TreeTraversalMode, + node: &NodeComponentId, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeComponentId::WithRegularId(name) => self.script.push_str(&name.node), + _ => (), + }, + _ => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_component_parameters( + &mut self, + mode: TreeTraversalMode, + node: &NodeComponentParameters, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.script.push_str("("); + for (i, parameter) in node.parameters.iter().enumerate() { + if i > 0 { + self.script.push_str(", "); + } + let _ = parameter.node.visit(self)?; + } + self.script.push_str(")"); + } + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_parameter_pair( + &mut self, + __mode: TreeTraversalMode, + __node: &NodeParameterPair, + ) -> Result { + // Pass through + Ok(TraversalResult::Continue) + } + + fn emit_component_body( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeComponentBody, + ) -> Result { + // Pass through + Ok(TraversalResult::Continue) + } + + fn emit_statement_block( + &mut self, + _mode: TreeTraversalMode, + node: &NodeStatementBlock, + ) -> Result { + self.indent_level += 1; + for (i, stmt) in node.statements.iter().enumerate() { + let _ = stmt.visit(self)?; + if i != node.statements.len() - 1 { + self.script.push_str(";"); + } + } + self.indent_level -= 1; + Ok(TraversalResult::SkipChildren) + } + + fn emit_typed_identifier( + &mut self, + mode: TreeTraversalMode, + node: &NodeTypedIdentifier, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + // Assuming that annotation type is of String + self.script.push_str(&node.identifier_name.node); + } + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_type_annotation( + &mut self, + mode: TreeTraversalMode, + _node: &NodeTypeAnnotation, + ) -> Result { + match mode { + TreeTraversalMode::Enter => self.script.push_str(" : "), + _ => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_program( + &mut self, + mode: TreeTraversalMode, + node: &NodeProgram, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.script + .push_str(&format!("scilla_version {}", node.version)); + } + TreeTraversalMode::Exit => { + self.script.push_str("\n"); + } + } + Ok(TraversalResult::Continue) + } + + fn emit_library_definition( + &mut self, + mode: TreeTraversalMode, + node: &NodeLibraryDefinition, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + // Add Indent + self.add_newlines(2); + self.script.push_str(&format!("library {}", node.name)); + } + _ => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_library_single_definition( + &mut self, + mode: TreeTraversalMode, + node: &NodeLibrarySingleDefinition, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeLibrarySingleDefinition::LetDefinition { + variable_name, + type_annotation, + expression, + } => { + self.add_newlines(1); + self.script.push_str("let "); + self.script.push_str(&variable_name.node); + self.indent_level += 1; + if let Some(v) = type_annotation { + let _ = v.node.visit(self)?; + } + self.script.push_str(" = "); + let _ = expression.node.visit(self)?; + self.indent_level -= 1; + } + NodeLibrarySingleDefinition::TypeDefinition(name, clauses) => { + self.add_newlines(1); + self.script.push_str("type "); + let _ = name.node.visit(self)?; + match clauses { + Some(clauses) => { + self.script.push_str(" ="); + self.indent_level += 1; + for clause in clauses.iter() { + let _ = clause.node.visit(self)?; + } + self.indent_level -= 1; + } + None => (), + } + } + }, + _ => {} + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_contract_definition( + &mut self, + mode: TreeTraversalMode, + node: &NodeContractDefinition, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + // Add Indent + self.add_newlines(2); + + // Add Contract definition, contract name and open parentheses + self.script + .push_str(&format!("contract {}", node.contract_name)); + } + _ => (), + } + Ok(TraversalResult::Continue) + } + + fn emit_contract_field( + &mut self, + mode: TreeTraversalMode, + node: &NodeContractField, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.add_newlines(1); + self.script.push_str("field "); + let _ = node.typed_identifier.node.visit(self)?; + self.script.push_str(" = "); + let _ = node.right_hand_side.node.visit(self)?; + } + _ => (), + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_with_constraint( + &mut self, + mode: TreeTraversalMode, + _node: &NodeWithConstraint, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.script.push_str(" with "); + } + _ => { + self.script.push_str(" =>"); + } + } + Ok(TraversalResult::Continue) + } + + fn emit_component_definition( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeComponentDefinition, + ) -> Result { + // Fall through to either Transition or Procedure + Ok(TraversalResult::Continue) + } + + fn emit_procedure_definition( + &mut self, + mode: TreeTraversalMode, + _node: &NodeProcedureDefinition, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.add_newlines(2); + self.script.push_str("procedure "); + } + TreeTraversalMode::Exit => { + self.add_newlines(1); + self.script.push_str("end"); + } + } + Ok(TraversalResult::Continue) + } + + fn emit_transition_definition( + &mut self, + mode: TreeTraversalMode, + _node: &NodeTransitionDefinition, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.add_newlines(2); + self.script.push_str("transition "); + } + TreeTraversalMode::Exit => { + self.add_newlines(1); + self.script.push_str("end"); + } + } + Ok(TraversalResult::Continue) + } + + fn emit_type_alternative_clause( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTypeAlternativeClause, + ) -> Result { + self.add_newlines(1); + self.script.push_str("| "); + match node { + NodeTypeAlternativeClause::ClauseType(v) => { + let _ = v.node.visit(self)?; + } + NodeTypeAlternativeClause::ClauseTypeWithArgs(name, args) => { + let _ = name.node.visit(self)?; + self.script.push_str(" of"); + for arg in args.iter() { + self.script.push_str(" "); + let _ = arg.node.visit(self)?; + } + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_map_value_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapValueArguments, + ) -> Result { + unimplemented!() + } + + fn emit_type_map_value_allowing_type_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapValueAllowingTypeArguments, + ) -> Result { + // Pass through + Ok(TraversalResult::Continue) + } +} diff --git a/products/bluebell/core/src/intermediate_representation/emitter.rs b/products/bluebell/core/src/intermediate_representation/emitter.rs new file mode 100644 index 000000000..32895051d --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/emitter.rs @@ -0,0 +1,1742 @@ +use std::mem; + +use log::info; +use scilla_parser::{ + ast::{ + converting::AstConverting, nodes::*, visitor::AstVisitor, TraversalResult, + TreeTraversalMode, + }, + parser::lexer::SourcePosition, +}; + +use crate::intermediate_representation::{primitives::*, symbol_table::SymbolTable}; + +/// Byte Code Generation Process +/// +/// The process of generating byte code from Scilla source code involves several steps and transformations. +/// Here is a high-level overview of the process: +/// +/// ```plaintext +/// [Scilla source code] +/// | +/// v +/// [Abstract Syntax Tree (AST)] +/// | +/// | (AstConverting) +/// v +/// [Intermediate Representation (IR)] +/// | +/// | (PassManager) +/// v +/// [Optimized Intermediate Representation] +/// | +/// | (EvmBytecodeGenerator) +/// v +/// [EVM Bytecode] +/// ``` +/// +/// Each arrow (`| v`) represents a transformation or a step in the process. +/// The name in parentheses (e.g., `(AstConverting)`) is the component or the process that performs the transformation. +/// +/// 1. Scilla source code is parsed into an Abstract Syntax Tree (AST). +/// 2. The AST is converted into an Intermediate Representation (IR) using the `AstConverting` trait. +/// 3. The IR is optimized using the `PassManager`. +/// 4. The optimized IR is then converted into EVM bytecode using the `EvmBytecodeGenerator`. +/// + +/// `StackObject` is an enum representing the different types of objects that can be placed on the stack during the conversion process. +/// It includes EnumValue, IrIdentifier, Instruction, VariableDeclaration, FunctionBody, and FunctionBlock. +#[derive(Debug, Clone)] +enum StackObject { + /// Represents an EnumValue object on the stack. + EnumValue(EnumValue), + + /// Represents an IrIdentifier object on the stack. + IrIdentifier(IrIdentifier), + + /// Represents an Instruction object on the stack. + Instruction(Box), + + /// Represents a VariableDeclaration object on the stack. + VariableDeclaration(VariableDeclaration), + + /// Represents a FunctionBody object on the stack. + FunctionBody(Box), + + /// Represents a FunctionBlock object on the stack. + FunctionBlock(Box), +} + +/// The `IrEmitter` struct is used for bookkeeping during the conversion of a Scilla AST to an intermediate representation. +/// It implements the `AstConverting` trait, which is a generic trait for AST conversions. +pub struct IrEmitter { + /// Stack of objects used during the conversion process. + stack: Vec, + + /// Current function block being processed. + current_block: Box, + + /// Current function body being processed. + current_body: Box, + + /// Current namespace being processed. + current_namespace: IrIdentifier, + + /// Stack of namespaces used during the conversion process. + namespace_stack: Vec, + + /// Intermediate representation of the AST. + ir: Box, + + /// Source positions of the AST nodes. + source_positions: Vec<(SourcePosition, SourcePosition)>, +} + +impl IrEmitter { + pub fn new(symbol_table: SymbolTable) -> Self { + let current_block = FunctionBlock::new("dummy".to_string()); + let current_body = FunctionBody::new(); + let ns = IrIdentifier { + unresolved: "".to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::Namespace, + is_definition: false, + source_location: ( + SourcePosition::start_position(), + SourcePosition::start_position(), + ), + }; + // TODO: Repeat similar code for all literals + IrEmitter { + stack: Vec::new(), + current_block, + current_body, + current_namespace: ns.clone(), + namespace_stack: [ns].to_vec(), + /// current_function: None, + ir: Box::new(IntermediateRepresentation::new(symbol_table)), + source_positions: [( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + )] + .to_vec(), // TODO: this should not be necessary + } + } + + fn current_location(&self) -> (SourcePosition, SourcePosition) { + self.source_positions + .last() + .expect("Unable to determine source location") + .clone() + } + + fn push_namespace(&mut self, mut ns: IrIdentifier) { + // TODO: Update ns to use nested namespaces + ns.kind = IrIndentifierKind::Namespace; + self.namespace_stack.push(ns.clone()); + self.current_namespace = ns; + } + + fn pop_namespace(&mut self) { + self.namespace_stack.pop(); + if let Some(ns) = self.namespace_stack.last() { + self.current_namespace = ns.clone(); + } else { + panic!("Namespace stack is empty."); + } + } + fn convert_instruction_to_symbol(&mut self, mut instruction: Box) -> IrIdentifier { + // Optimisation: If previous instruction was "ResolveSymbol", + // we avoid creating an intermediate + let symbol = match instruction.operation { + Operation::ResolveSymbol { symbol } => symbol, + _ => { + let symbol = if let Some(s) = instruction.ssa_name { + s + } else { + self.ir.symbol_table.name_generator.new_intermediate() + }; + instruction.ssa_name = Some(symbol.clone()); + self.current_block.instructions.push_back(instruction); + symbol + } + }; + + symbol + } + + fn pop_function_block(&mut self) -> Result, String> { + let ret = if let Some(candidate) = self.stack.pop() { + match candidate { + StackObject::FunctionBlock(n) => n, + _ => { + return Err(format!( + "Expected function block, but found {:?}.", + candidate + )); + } + } + } else { + return Err("Expected function block, but found nothing.".to_string()); + }; + + Ok(ret) + } + + fn pop_ir_identifier(&mut self) -> Result { + let ret = if let Some(candidate) = self.stack.pop() { + match candidate { + StackObject::IrIdentifier(n) => n, + _ => { + return Err(format!("Expected symbol name, but found {:?}.", candidate)); + } + } + } else { + return Err("Expected symbol name, but found nothing.".to_string()); + }; + + Ok(ret) + } + + fn pop_instruction(&mut self) -> Result, String> { + let ret = if let Some(candidate) = self.stack.pop() { + match candidate { + StackObject::Instruction(n) => n, + _ => { + return Err(format!("Expected instruction, but found {:?}.", candidate)); + } + } + } else { + return Err("Expected instruction, but found nothing.".to_string()); + }; + + Ok(ret) + } + + fn pop_enum_value(&mut self) -> Result { + let ret = if let Some(candidate) = self.stack.pop() { + match candidate { + StackObject::EnumValue(n) => n, + _ => { + return Err(format!("Expected enum value, but found {:?}.", candidate)); + } + } + } else { + return Err("Expected enum value, but found nothing.".to_string()); + }; + + Ok(ret) + } + + fn pop_variable_declaration(&mut self) -> Result { + let ret = if let Some(candidate) = self.stack.pop() { + match candidate { + StackObject::VariableDeclaration(n) => n, + _ => { + return Err(format!( + "Expected variable declaration, but found {:?}.", + candidate + )); + } + } + } else { + return Err("Expected variable declaration, but found nothing.".to_string()); + }; + + Ok(ret) + } + + fn pop_function_body(&mut self) -> Result, String> { + let ret = if let Some(candidate) = self.stack.pop() { + match candidate { + StackObject::FunctionBody(n) => n, + _ => { + return Err(format!( + "Expected function body, but found {:?}.", + candidate + )); + } + } + } else { + return Err("Expected function body, but found nothing.".to_string()); + }; + + Ok(ret) + } + + pub fn emit(&mut self, node: &NodeProgram) -> Result, String> { + // Copying original symbol table to create a new instance of the IR at the end + // of traversing + let symbol_table = self.ir.symbol_table.clone(); + + let result = node.visit(self); + match result { + Err(m) => panic!("{}", m), + _ => (), + } + + // Creating type table + + // Annotating symbols with types + + // Returning + let mut ret = Box::new(IntermediateRepresentation::new(symbol_table)); + mem::swap(&mut self.ir, &mut ret); + + Ok(ret) + } +} + +impl AstConverting for IrEmitter { + fn push_source_position(&mut self, start: &SourcePosition, end: &SourcePosition) { + self.source_positions.push((start.clone(), end.clone())); + } + + fn pop_source_position(&mut self) { + self.source_positions.pop(); + } + + fn emit_byte_str( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeByteStr, + ) -> Result { + unimplemented!(); + } + fn emit_type_name_identifier( + &mut self, + mode: TreeTraversalMode, + node: &NodeTypeNameIdentifier, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match node { + NodeTypeNameIdentifier::ByteStringType(_) => (), + NodeTypeNameIdentifier::EventType => { + /* + self.stack.push(StackObject::Identifier(Identifier::Event( + "Event".to_string(), + ))); + */ + unimplemented!() + } + NodeTypeNameIdentifier::TypeOrEnumLikeIdentifier(name) => { + let symbol = IrIdentifier::new( + name.to_string(), + IrIndentifierKind::Unknown, + self.current_location(), + ); + + self.stack.push(StackObject::IrIdentifier(symbol)); + } + }, + TreeTraversalMode::Exit => (), + } + Ok(TraversalResult::Continue) + } + fn emit_imported_name( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeImportedName, + ) -> Result { + unimplemented!(); + } + fn emit_import_declarations( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeImportDeclarations, + ) -> Result { + unimplemented!(); + } + fn emit_meta_identifier( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeMetaIdentifier, + ) -> Result { + Ok(TraversalResult::Continue) + } + fn emit_variable_identifier( + &mut self, + _mode: TreeTraversalMode, + node: &NodeVariableIdentifier, + ) -> Result { + match node { + NodeVariableIdentifier::VariableName(name) => { + let operation = Operation::ResolveSymbol { + symbol: IrIdentifier::new( + name.to_string(), + IrIndentifierKind::VirtualRegister, + self.current_location(), + ), + }; + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + self.stack.push(StackObject::Instruction(instr)); + } + NodeVariableIdentifier::SpecialIdentifier(identifier) => { + let operation = Operation::ResolveContextResource { + symbol: IrIdentifier::new( + identifier.to_string(), + IrIndentifierKind::ContextResource, + self.current_location(), + ), + }; + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + self.stack.push(StackObject::Instruction(instr)); + } + NodeVariableIdentifier::VariableInNamespace(_namespace, _identifier) => { + unimplemented!() + } + } + Ok(TraversalResult::SkipChildren) + } + fn emit_builtin_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeBuiltinArguments, + ) -> Result { + unimplemented!(); + } + fn emit_type_map_key( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapKey, + ) -> Result { + unimplemented!(); + } + fn emit_type_map_value( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapValue, + ) -> Result { + unimplemented!(); + } + fn emit_type_argument( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTypeArgument, + ) -> Result { + match node { + NodeTypeArgument::EnclosedTypeArgument(_) => { + unimplemented!(); + } + NodeTypeArgument::GenericTypeArgument(n) => { + let _ = n.visit(self)?; + } + NodeTypeArgument::TemplateTypeArgument(_) => { + unimplemented!(); + } + NodeTypeArgument::AddressTypeArgument(_) => { + unimplemented!(); + } + NodeTypeArgument::MapTypeArgument(_, _) => { + unimplemented!(); + } + } + Ok(TraversalResult::SkipChildren) + } + fn emit_scilla_type( + &mut self, + _mode: TreeTraversalMode, + node: &NodeScillaType, + ) -> Result { + match node { + NodeScillaType::GenericTypeWithArgs(lead, args) => { + let _ = lead.visit(self)?; + if args.len() > 0 { + // TODO: Deal with arguments + unimplemented!() + } + } + NodeScillaType::MapType(key, value) => { + let _ = key.visit(self)?; + let _ = value.visit(self)?; + // TODO: Pop the two and create type Map + unimplemented!() + } + NodeScillaType::FunctionType(a, b) => { + let _ = (*a).visit(self)?; + let _ = (*b).visit(self)?; + // TODO: Implement the function type + unimplemented!() + } + + NodeScillaType::PolyFunctionType(_name, a) => { + // TODO: What to do with name + let _ = (*a).visit(self)?; + unimplemented!() + } + NodeScillaType::EnclosedType(a) => { + let _ = (*a).visit(self)?; + } + NodeScillaType::ScillaAddresseType(a) => { + let _ = (*a).visit(self)?; + } + NodeScillaType::TypeVarType(_name) => { + /* + self.stack + .push(StackObject::Identifier(Identifier::TypeName( + name.to_string(), + ))); + */ + unimplemented!() + } + }; + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_map_entry( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapEntry, + ) -> Result { + unimplemented!(); + } + fn emit_address_type_field( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeAddressTypeField, + ) -> Result { + unimplemented!(); + } + fn emit_address_type( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeAddressType, + ) -> Result { + unimplemented!(); + } + + fn emit_full_expression( + &mut self, + _mode: TreeTraversalMode, + node: &NodeFullExpression, + ) -> Result { + match node { + NodeFullExpression::LocalVariableDeclaration { + identifier_name: _, + expression, + type_annotation: _, + containing_expression, + } => { + expression.visit(self)?; + containing_expression.visit(self)?; + unimplemented!(); + } + NodeFullExpression::FunctionDeclaration { + identier_value: _, // TODO: Missing spelling - global replacement + type_annotation, + expression, + } => { + // identier_value.visit(self)?; + type_annotation.visit(self)?; + expression.visit(self)?; + + unimplemented!(); + } + NodeFullExpression::FunctionCall { + function_name: _, + argument_list: _, + } => { + unimplemented!(); + } + NodeFullExpression::ExpressionAtomic(expr) => match &(**expr).node { + NodeAtomicExpression::AtomicSid(identifier) => { + let _ = identifier.visit(self)?; + } + NodeAtomicExpression::AtomicLit(literal) => { + let _ = literal.visit(self)?; + } + }, + NodeFullExpression::ExpressionBuiltin { b, targs, xs } => { + if let Some(_targs) = targs { + unimplemented!(); + } + + let mut arguments: Vec = [].to_vec(); + for arg in xs.node.arguments.iter() { + // TODO: xs should be rename .... not clear what this is, but it means function arguments + let _ = arg.visit(self)?; + let instruction = self.pop_instruction()?; + + let symbol = self.convert_instruction_to_symbol(instruction); + arguments.push(symbol); + } + + let name = IrIdentifier { + unresolved: format!("builtin__{}", b).to_string(), // TODO: Use name generator + resolved: None, + type_reference: None, + kind: IrIndentifierKind::TemplateFunctionName, + is_definition: false, + source_location: self.current_location(), + }; + + let operation = Operation::CallExternalFunction { name, arguments }; + + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + + self.stack.push(StackObject::Instruction(instr)); + } + NodeFullExpression::Message(_entries) => { + unimplemented!(); + } + NodeFullExpression::Match { + match_expression: _, + clauses: _, + } => { + unimplemented!(); + } /* TODO: { + + info!("Match statement"); + let _ = match_expression.visit(self)?; + let expression = self.pop_instruction()?; + let source_location = expression.source_location.clone(); + + let main_expression_symbol = self.convert_instruction_to_symbol(expression); + + let finally_exit_label = self + .ir + .symbol_table + .name_generator + .new_block_label("match_finally"); + + let mut phi_results: Vec = Vec::new(); + + for clause in clauses.iter() { + info!("Next clause"); + let fail_label = self + .ir + .symbol_table + .name_generator + .new_block_label("match_fail"); + todo!("Catch all is untested."); // + + match &clause.node.pattern.node { + NodePattern::Wildcard => { + info!("Dealing with wildcard"); + // Doing nothing as we will just write the instructions to the current block + } + NodePattern::Binder(_) => { + unimplemented!() + } + NodePattern::Constructor(name, args) => { + info!("Setting {} up", name); + clause.node.pattern.visit(self)?; + + // Creating compare instruction + // TODO: Pop instruction or symbol + let expected_value = self.pop_ir_identifier()?; + assert!(expected_value.kind == IrIndentifierKind::Unknown); + + let source_location = expected_value.source_location.clone(); + + let compare_instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::IsEqual { + left: main_expression_symbol.clone(), + right: expected_value, + }, + source_location: source_location.clone(), + }); + let case = self.convert_instruction_to_symbol(compare_instr); + + // Blocks for success + + let success_label = self + .ir + .symbol_table + .name_generator + .new_block_label("match_success"); + let mut success_block = + FunctionBlock::new_from_symbol(success_label.clone()); + + // Terminating current block + let op = Operation::ConditionalJump { + expression: case, + on_success: success_label, + on_failure: fail_label.clone(), + }; + self.current_block + .instructions + .push_back(Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: op, + source_location, + })); + + // Finishing current_block and moving it onto + // to the current body while preparing the success block + // as current + mem::swap(&mut success_block, &mut self.current_block); + self.current_body.blocks.push(success_block); + } + } + + let _ = clause.node.expression.visit(self)?; + let expr_instr = self.pop_instruction()?; + let source_location = expr_instr.source_location.clone(); + + let result_sym = self.convert_instruction_to_symbol(expr_instr); + phi_results.push(result_sym); + + let exit_instruction = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::Jump(finally_exit_label.clone()), + source_location, + }); + self.current_block.instructions.push_back(exit_instruction); + self.current_block.terminated = true; + // Pushing sucess block and creating fail block + + let mut fail_block = FunctionBlock::new_from_symbol(fail_label.clone()); + mem::swap(&mut fail_block, &mut self.current_block); + self.current_body.blocks.push(fail_block); + + // let fail_label = self.ir.symbol_table.name_generator.new_block_label("match_case"); + // let fail_block = FunctionBlock::new_from_symbol(fail_label); + } + + // TODO: Catch all if needed + + // Exiting + let exit_instruction = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::Jump(finally_exit_label.clone()), + source_location: source_location.clone(), + }); + self.current_block.instructions.push_back(exit_instruction); + + // Attaching exit block + let mut finally_exit_block = + FunctionBlock::new_from_symbol(finally_exit_label.clone()); + mem::swap(&mut finally_exit_block, &mut self.current_block); + self.current_body.blocks.push(finally_exit_block); + + self.stack + .push(StackObject::Instruction(Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::PhiNode(phi_results), + source_location: source_location.clone(), + }))); + // unimplemented!(); + } + */ + NodeFullExpression::ConstructorCall { + identifier_name, + contract_type_arguments, + argument_list, + } => { + self.push_source_position(&identifier_name.start, &identifier_name.end); + + let _ = identifier_name.visit(self)?; + + // Expecting function name symbol + let mut name = self.pop_ir_identifier()?; + assert!(name.kind == IrIndentifierKind::Unknown); + name.kind = IrIndentifierKind::FunctionName; + + let arguments: Vec = [].to_vec(); + + if let Some(_test) = contract_type_arguments { + unimplemented!() + } + if argument_list.len() > 0 { + unimplemented!() + } + + let operation = Operation::CallStaticFunction { + name, + owner: None, // We cannot deduce the type from the AST + arguments, + }; + + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + self.pop_source_position(); + self.stack.push(StackObject::Instruction(instr)); + } + NodeFullExpression::TemplateFunction { + identifier_name: _, + expression: _, + } => { + unimplemented!(); + } + NodeFullExpression::TApp { + identifier_name: _, + type_arguments: _, + } => { + unimplemented!(); + } + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_message_entry( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeMessageEntry, + ) -> Result { + unimplemented!(); + } + fn emit_pattern_match_expression_clause( + &mut self, + _mode: TreeTraversalMode, + _node: &NodePatternMatchExpressionClause, + ) -> Result { + unimplemented!(); + } + fn emit_atomic_expression( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeAtomicExpression, + ) -> Result { + // TODO: + Ok(TraversalResult::Continue) + // unimplemented!(); + } + fn emit_contract_type_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeContractTypeArguments, + ) -> Result { + unimplemented!(); + } + fn emit_value_literal( + &mut self, + _mode: TreeTraversalMode, + node: &NodeValueLiteral, + ) -> Result { + match node { + NodeValueLiteral::LiteralInt(typename, value) => { + let _ = typename.visit(self)?; + let mut typename = self.pop_ir_identifier()?; + assert!(typename.kind == IrIndentifierKind::Unknown); + typename.kind = IrIndentifierKind::TypeName; + let operation = Operation::Literal { + data: value.to_string(), + typename, + }; + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + self.stack.push(StackObject::Instruction(instr)); + } + NodeValueLiteral::LiteralHex(value) => { + let typename = self.ir.symbol_table.name_generator.hex_type(); + let operation = Operation::Literal { + data: value.to_string(), + typename, + }; + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + self.stack.push(StackObject::Instruction(instr)); + } + NodeValueLiteral::LiteralString(value) => { + let typename = self.ir.symbol_table.name_generator.string_type(); + let operation = Operation::Literal { + data: value.to_string(), + typename, + }; + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + self.stack.push(StackObject::Instruction(instr)); + } + NodeValueLiteral::LiteralEmptyMap(_key, _value) => { + unimplemented!(); + } + } + Ok(TraversalResult::SkipChildren) + } + fn emit_map_access( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeMapAccess, + ) -> Result { + unimplemented!(); + } + fn emit_pattern( + &mut self, + _mode: TreeTraversalMode, + node: &NodePattern, + ) -> Result { + match &node { + NodePattern::Wildcard => { + info!("Visiting wildcard!"); + // Wild card does not change anything + } + NodePattern::Binder(_name) => { + unimplemented!() + } + NodePattern::Constructor(name, args) => { + if args.len() > 0 { + unimplemented!(); + } + + let _ = name.visit(self); + } + } + + Ok(TraversalResult::SkipChildren) + } + fn emit_argument_pattern( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeArgumentPattern, + ) -> Result { + unimplemented!(); + } + fn emit_pattern_match_clause( + &mut self, + _mode: TreeTraversalMode, + _node: &NodePatternMatchClause, + ) -> Result { + unimplemented!(); + } + fn emit_blockchain_fetch_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeBlockchainFetchArguments, + ) -> Result { + unimplemented!(); + } + + fn emit_statement( + &mut self, + _mode: TreeTraversalMode, + node: &NodeStatement, + ) -> Result { + let instr = match node { + NodeStatement::Load { + left_hand_side, + right_hand_side, + } => { + let symbol = IrIdentifier { + unresolved: left_hand_side.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::VirtualRegister, + is_definition: true, + source_location: self.current_location(), + }; + + let right_hand_side = match &right_hand_side.node { + NodeVariableIdentifier::VariableName(name) => name, + _ => panic!("Load of state {:#?}", right_hand_side.node), + }; + + let ret = Box::new(Instruction { + ssa_name: Some(symbol), + result_type: None, + operation: Operation::StateLoad { + address: FieldAddress { + name: IrIdentifier { + unresolved: right_hand_side.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::State, + is_definition: false, + source_location: self.current_location(), + }, + value: None, + }, + }, + source_location: self.current_location(), + }); + + Some(ret) + } + NodeStatement::RemoteFetch(_remote_stmt) => { + unimplemented!() + } + NodeStatement::Store { + left_hand_side, + right_hand_side, + } => { + // Generating instruction and setting its name + let _ = right_hand_side.visit(self)?; + + let mut right_hand_side = self.pop_instruction()?; + let symbol = IrIdentifier { + unresolved: left_hand_side.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::VirtualRegister, + is_definition: false, + source_location: self.current_location(), + }; + (*right_hand_side).ssa_name = Some(symbol.clone()); + self.current_block.instructions.push_back(right_hand_side); + + let ret = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::StateStore { + address: FieldAddress { + name: IrIdentifier { + unresolved: left_hand_side.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::State, + is_definition: false, + source_location: self.current_location(), + }, + value: None, + }, + value: symbol, + }, + source_location: self.current_location(), + }); + + Some(ret) + } + NodeStatement::Bind { + left_hand_side, + right_hand_side, + } => { + // Generating instruction and setting its name + let _ = right_hand_side.visit(self)?; + + let mut right_hand_side = self.pop_instruction()?; + let symbol = IrIdentifier { + unresolved: left_hand_side.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::VirtualRegister, + is_definition: false, + source_location: self.current_location(), + }; + (*right_hand_side).ssa_name = Some(symbol); + + Some(right_hand_side) + } + NodeStatement::ReadFromBC { + left_hand_side: _, + type_name: _, + arguments: _, + } => { + unimplemented!() + } + NodeStatement::MapGet { + left_hand_side: _, + keys: _, + right_hand_side: _, + } => { + unimplemented!() + } + NodeStatement::MapGetExists { + left_hand_side: _, + keys: _, + right_hand_side: _, + } => { + unimplemented!() + } + NodeStatement::MapUpdate { + left_hand_side: _, + keys: _, + right_hand_side: _, + } => { + unimplemented!() + } + NodeStatement::MapUpdateDelete { + left_hand_side: _, + keys: _, + } => { + unimplemented!() + } + NodeStatement::Accept => { + let arguments: Vec = [].to_vec(); + let name = IrIdentifier { + unresolved: "__intrinsic_accept_transfer".to_string(), // TODO: Register somewhere globally + resolved: None, + type_reference: None, + kind: IrIndentifierKind::ProcedureName, + is_definition: false, + source_location: self.current_location(), + }; + + let operation = Operation::CallFunction { name, arguments }; + // TODO: Location from component_id + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + + Some(instr) + } + NodeStatement::Send { identifier_name: _ } => { + unimplemented!() + } + NodeStatement::CreateEvnt { identifier_name: _ } => { + unimplemented!() + } + NodeStatement::Throw { error_variable: _ } => { + unimplemented!() + } + NodeStatement::MatchStmt { variable, clauses } => { + let _ = variable.visit(self)?; + let expression = self.pop_instruction()?; + let source_location = expression.source_location.clone(); + let main_expression_symbol = self.convert_instruction_to_symbol(expression); + + let match_exit = self + .ir + .symbol_table + .name_generator + .new_block_label("match_exit"); + + // Termingating current block with placeholder label + let jump = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::Jump(match_exit.clone()), + source_location: source_location.clone(), + }); + self.current_block.instructions.push_back(jump); + + for (i, clause) in clauses.iter().enumerate() { + // Terminating previous block + let label_condition = self + .ir + .symbol_table + .name_generator + .new_block_label(&format!("clause_{}_condition", i)); + let label_block = self + .ir + .symbol_table + .name_generator + .new_block_label(&format!("clause_{}_block", i)); + + let next_jump_label = match &clause.node.pattern_expression.node { + NodePattern::Wildcard => label_block.clone(), + NodePattern::Binder(_) => { + unimplemented!() + } + NodePattern::Constructor(_, _) => label_condition.clone(), + }; + + let last_instruction = &mut self.current_block.instructions.back_mut().unwrap(); + + match &mut last_instruction.operation { + Operation::Jump(ref mut value) => { + *value = label_condition.clone(); + } + Operation::ConditionalJump { + expression: _, + on_success: _, + ref mut on_failure, + } => { + *on_failure = next_jump_label; + } + _ => { + panic!("Expected previous block to be a terminating jump."); + } + } + + match &clause.node.pattern_expression.node { + NodePattern::Wildcard => { + // In the event of a wildcard, we jump right to the clause block. + // TODO: Check that the wildcard is last block in the match statement. + } + NodePattern::Binder(_) => { + unimplemented!() + } + NodePattern::Constructor(_, _) => { + // Instating condition checking block as self.current_block + let mut clause_condition_block = + FunctionBlock::new_from_symbol(label_condition); + mem::swap(&mut clause_condition_block, &mut self.current_block); + self.current_body.blocks.push(clause_condition_block); + + clause.node.pattern_expression.visit(self)?; + let expected_value = self.pop_ir_identifier()?; + assert!(expected_value.kind == IrIndentifierKind::Unknown); + let source_location = expected_value.source_location.clone(); + + let jump_condition = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::IsEqual { + left: main_expression_symbol.clone(), + right: expected_value, + }, + source_location: source_location.clone(), + }); + + let jump_if = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::ConditionalJump { + expression: self.convert_instruction_to_symbol(jump_condition), + on_success: label_block.clone(), + on_failure: match_exit.clone(), // Exit or Placeholder - will be overwritten in next cycle + }, + source_location: source_location.clone(), + }); + self.current_block.instructions.push_back(jump_if); + } + }; + + let mut clause_block = match &clause.node.statement_block { + Some(statement_block) => { + // Condition block + statement_block.visit(self)?; + self.pop_function_block()? + } + None => FunctionBlock::new("empty_block".to_string()), + }; + // TODO: Get source location properly + let source_location = source_location.clone(); + clause_block.name = label_block.clone(); + + let terminator_instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::Jump(match_exit.clone()), + source_location, + }); + clause_block.instructions.push_back(terminator_instr); + self.current_body.blocks.push(clause_block); + } + + let mut match_exit_block = FunctionBlock::new_from_symbol(match_exit); + mem::swap(&mut match_exit_block, &mut self.current_block); + + self.current_body.blocks.push(match_exit_block); + // self.current_body.blocks.extend(case_blocks); + None + } + NodeStatement::CallProc { + component_id, + arguments: call_args, + } => { + self.push_source_position(&component_id.start, &component_id.end); + + let mut arguments: Vec = [].to_vec(); + for arg in call_args.iter() { + // TODO: xs should be rename .... not clear what this is, but it means function arguments + let _ = arg.visit(self)?; + let instruction = self.pop_instruction()?; + + let symbol = self.convert_instruction_to_symbol(instruction); + arguments.push(symbol); + } + + let name = match &component_id.node { + NodeComponentId::WithTypeLikeName(_) => unimplemented!(), + NodeComponentId::WithRegularId(n) => n, + }; + + let name = IrIdentifier { + unresolved: name.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::ProcedureName, + is_definition: false, + source_location: self.current_location(), + }; + + let operation = Operation::CallFunction { name, arguments }; + // TODO: Location from component_id + let instr = Box::new(Instruction { + ssa_name: None, + result_type: None, + operation, + source_location: self.current_location(), + }); + + self.pop_source_position(); + // self.stack.push(StackObject::Instruction(instr)); + Some(instr) + } + NodeStatement::Iterate { + identifier_name: _, + component_id: _, + } => { + unimplemented!() + } + }; + + match instr { + Some(instr) => self.current_block.instructions.push_back(instr), + None => (), + } + Ok(TraversalResult::SkipChildren) + } + + fn emit_remote_fetch_statement( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeRemoteFetchStatement, + ) -> Result { + unimplemented!(); + } + fn emit_component_id( + &mut self, + _mode: TreeTraversalMode, + node: &NodeComponentId, + ) -> Result { + match node { + NodeComponentId::WithRegularId(name) => { + self.stack.push(StackObject::IrIdentifier(IrIdentifier { + unresolved: name.to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::ComponentName, + is_definition: false, + source_location: self.current_location(), + })); + } + NodeComponentId::WithTypeLikeName(name) => { + self.stack.push(StackObject::IrIdentifier(IrIdentifier { + unresolved: name.to_string(), // TODO: Travese the tree first and then construct the name + resolved: None, + type_reference: None, + kind: IrIndentifierKind::ComponentName, + is_definition: false, + source_location: self.current_location(), + })); + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn emit_component_parameters( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeComponentParameters, + ) -> Result { + Ok(TraversalResult::Continue) + // TODO: unimplemented!(); + } + + fn emit_parameter_pair( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeParameterPair, + ) -> Result { + // Delibarate pass through + Ok(TraversalResult::Continue) + } + + fn emit_component_body( + &mut self, + _mode: TreeTraversalMode, + node: &NodeComponentBody, + ) -> Result { + // Creating a new function body + let mut new_body = FunctionBody::new(); + mem::swap(&mut new_body, &mut self.current_body); + self.stack.push(StackObject::FunctionBody(new_body)); + + // Visiting blocks + if let Some(block) = &node.statement_block { + let _ = block.visit(self)?; + } + + let last_block = self.pop_function_block()?; + // Restoring the old body as current + let mut body = self.pop_function_body()?; + mem::swap(&mut body, &mut self.current_body); + + // Pushing the current body onto the stack + (*body).blocks.push(last_block); + self.stack.push(StackObject::FunctionBody(body)); + Ok(TraversalResult::SkipChildren) + } + + fn emit_statement_block( + &mut self, + mode: TreeTraversalMode, + _node: &NodeStatementBlock, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + // self.stack.push( FunctionBlock::new_stack_object("entry".to_string()) ); + let mut new_entry = FunctionBlock::new("entry".to_string()); + mem::swap(&mut new_entry, &mut self.current_block); + self.stack.push(StackObject::FunctionBlock(new_entry)); + } + _ => { + // Restoring the current block and pushing the WiP onto the stack + let mut body = self.pop_function_block()?; + mem::swap(&mut body, &mut self.current_block); + self.stack.push(StackObject::FunctionBlock(body)); + } + } + + Ok(TraversalResult::Continue) + } + fn emit_typed_identifier( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTypedIdentifier, + ) -> Result { + let name = node.identifier_name.clone(); + let _ = node.annotation.visit(self)?; + + let mut typename = self.pop_ir_identifier()?; + assert!(typename.kind == IrIndentifierKind::Unknown); + typename.kind = IrIndentifierKind::TypeName; + + let s = + StackObject::VariableDeclaration(VariableDeclaration::new(name.node, false, typename)); + self.stack.push(s); + + Ok(TraversalResult::SkipChildren) + } + fn emit_type_annotation( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeAnnotation, + ) -> Result { + // Pass through + Ok(TraversalResult::Continue) + // unimplemented!(); + } + + fn emit_program( + &mut self, + mode: TreeTraversalMode, + _node: &NodeProgram, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + /* + TODO: Move to LLVM emitter + // Parse the version string to u64 + let version = match node.version.parse::() { + Ok(v) => v, + Err(_) => { + eprintln!("Failed to parse version"); + return Err("Scilla version must be an integer".to_string()); + } + }; + let node_version_value = self.context.i64_type().const_int(version, false); + // Add a global constant named `scilla_version` to the module + let addr_space = inkwell::AddressSpace::from(2u16); + let scilla_version = self.module.add_global( + self.context.i64_type(), + Some(addr_space), + "scilla_version", + ); + scilla_version.set_initializer(&node_version_value); + scilla_version.set_constant(true); + */ + } + TreeTraversalMode::Exit => { + // Not sure on what's to be done during exit + } + } + Ok(TraversalResult::Continue) + } + + fn emit_library_definition( + &mut self, + _mode: TreeTraversalMode, + node: &NodeLibraryDefinition, + ) -> Result { + let _ = node.name.visit(self)?; + let mut ns = self.pop_ir_identifier()?; + assert!(ns.kind == IrIndentifierKind::Unknown); + ns.kind = IrIndentifierKind::Namespace; + + self.push_namespace(ns); + for def in node.definitions.iter() { + let _ = def.visit(self)?; + } + + self.pop_namespace(); + Ok(TraversalResult::SkipChildren) + } + + fn emit_library_single_definition( + &mut self, + _mode: TreeTraversalMode, + node: &NodeLibrarySingleDefinition, + ) -> Result { + match node { + NodeLibrarySingleDefinition::LetDefinition { + variable_name: _, + type_annotation: _, + expression, + } => { + /* + let declaration_start = match self.current_function { + Some(_) => true, + None => false + }; + + if declaration_start { + // TODO: self.current_function + } + */ + + expression.visit(self)?; + unimplemented!(); + } + NodeLibrarySingleDefinition::TypeDefinition(name, clauses) => { + let _ = name.visit(self)?; + let mut name = self.pop_ir_identifier()?; + assert!(name.kind == IrIndentifierKind::Unknown); + name.kind = IrIndentifierKind::TypeName; + // The name itself is being defined here + name.is_definition = true; + let mut user_type = Variant::new(); + + if let Some(clauses) = clauses { + for clause in clauses.iter() { + let _ = clause.visit(self)?; + let mut field = self.pop_enum_value()?; + + // And the field names are being defined as well + field.name.is_definition = true; + user_type.add_field(field); + } + } + + self.ir.type_definitions.push(ConcreteType::Variant { + name, + namespace: self.current_namespace.clone(), + data_layout: Box::new(user_type), + }); + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn emit_contract_definition( + &mut self, + _mode: TreeTraversalMode, + node: &NodeContractDefinition, + ) -> Result { + // TODO: Decide whether the namespace should be distinct + let _ = node.contract_name.visit(self)?; + let mut ns = self.pop_ir_identifier()?; + assert!(ns.kind == IrIndentifierKind::Unknown); + ns.kind = IrIndentifierKind::Namespace; + + self.push_namespace(ns); + + let _ = node.parameters.visit(self)?; + + if let Some(constraint) = &node.constraint { + let _ = constraint.visit(self)?; + } + + for field in node.fields.iter() { + let _ = field.visit(self)?; + } + + for component in node.components.iter() { + let _ = component.visit(self)?; + } + + self.pop_namespace(); + Ok(TraversalResult::SkipChildren) + } + + fn emit_contract_field( + &mut self, + _mode: TreeTraversalMode, + node: &NodeContractField, + ) -> Result { + let _ = node.typed_identifier.visit(self)?; + + let mut variable = self.pop_variable_declaration()?; + let _ = node.right_hand_side.visit(self)?; + let initializer = self.pop_instruction()?; + variable.name.kind = IrIndentifierKind::State; + + let field = ContractField { + namespace: self.current_namespace.clone(), + variable, + initializer, + }; + + self.ir.fields_definitions.push(field); + + Ok(TraversalResult::SkipChildren) + } + fn emit_with_constraint( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeWithConstraint, + ) -> Result { + unimplemented!(); + } + fn emit_component_definition( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeComponentDefinition, + ) -> Result { + Ok(TraversalResult::Continue) + } + fn emit_procedure_definition( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeProcedureDefinition, + ) -> Result { + unimplemented!(); + } + + fn emit_transition_definition( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTransitionDefinition, + ) -> Result { + // Enter + let _ = node.name.visit(self)?; + + let mut arguments: Vec = [].to_vec(); + for arg in node.parameters.node.parameters.iter() { + let _ = arg.visit(self)?; + let ir_arg = self.pop_variable_declaration()?; + arguments.push(ir_arg); + } + + // Function body + let _ = node.body.visit(self)?; + + // Exit + let mut body = self.pop_function_body()?; + + if let Some(ref mut last_block) = &mut body.blocks.last_mut() { + if !last_block.terminated { + // let last_block = last_block.clone(); + // Terminates the block with a void return in the event it is not terminated. + last_block.instructions.push_back(Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: Operation::Return(None), + source_location: self.current_location(), + })); + last_block.terminated = true; + } + } + + let mut function_name = self.pop_ir_identifier()?; + assert!(function_name.kind == IrIndentifierKind::ComponentName); + function_name.kind = IrIndentifierKind::TransitionName; + function_name.is_definition = true; + + // TODO: Decude return type from body + + let function = ConcreteFunction { + name: function_name, + namespace: self.current_namespace.clone(), + function_kind: FunctionKind::Transition, + return_type: None, // TODO: Pop of the stack + arguments, + body, + }; + + self.ir.function_definitions.push(function); + + Ok(TraversalResult::SkipChildren) + } + + fn emit_type_alternative_clause( + &mut self, + _mode: TreeTraversalMode, + node: &NodeTypeAlternativeClause, + ) -> Result { + match node { + NodeTypeAlternativeClause::ClauseType(identifier) => { + let _ = identifier.visit(self)?; + let mut enum_name = self.pop_ir_identifier()?; + assert!(enum_name.kind == IrIndentifierKind::Unknown); + enum_name.kind = IrIndentifierKind::StaticFunctionName; + self.stack + .push(StackObject::EnumValue(EnumValue::new(enum_name, None))); + } + NodeTypeAlternativeClause::ClauseTypeWithArgs(identifier, children) => { + let _ = identifier.visit(self)?; + let mut member_name = self.pop_ir_identifier()?; + assert!(member_name.kind == IrIndentifierKind::Unknown); + member_name.kind = IrIndentifierKind::StaticFunctionName; + + let mut tuple = Tuple::new(); + for child in children.iter() { + let _ = child.visit(self)?; + + let mut item = self.pop_ir_identifier()?; + assert!(item.kind == IrIndentifierKind::Unknown); + item.kind = IrIndentifierKind::TypeName; + + tuple.add_field(item) + } + + let refid = self + .ir + .symbol_table + .name_generator + .generate_anonymous_type_id("Tuple".to_string()); + + self.ir.type_definitions.push(ConcreteType::Tuple { + name: refid.clone(), + namespace: self.current_namespace.clone(), + data_layout: Box::new(tuple), + }); + + self.stack.push(StackObject::EnumValue(EnumValue::new( + member_name, + Some(refid), + ))); + } + } + Ok(TraversalResult::SkipChildren) + } + fn emit_type_map_value_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapValueArguments, + ) -> Result { + unimplemented!(); + } + fn emit_type_map_value_allowing_type_arguments( + &mut self, + _mode: TreeTraversalMode, + _node: &NodeTypeMapValueAllowingTypeArguments, + ) -> Result { + unimplemented!(); + } +} diff --git a/products/bluebell/core/src/intermediate_representation/mod.rs b/products/bluebell/core/src/intermediate_representation/mod.rs new file mode 100644 index 000000000..baad823bc --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/mod.rs @@ -0,0 +1,7 @@ +pub mod emitter; +pub mod name_generator; +pub mod pass; +pub mod pass_executor; +pub mod pass_manager; +pub mod primitives; +pub mod symbol_table; diff --git a/products/bluebell/core/src/intermediate_representation/name_generator.rs b/products/bluebell/core/src/intermediate_representation/name_generator.rs new file mode 100644 index 000000000..fb8268cf4 --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/name_generator.rs @@ -0,0 +1,91 @@ +use scilla_parser::parser::lexer::SourcePosition; + +use crate::intermediate_representation::primitives::{ + FunctionBlock, IrIdentifier, IrIndentifierKind, +}; + +#[derive(Debug, Clone)] +pub struct NameGenerator { + anonymous_type_number: u64, + intermediate_counter: u64, + block_counter: u64, +} + +impl NameGenerator { + // TODO: Rename to NameManager or the like + pub fn new() -> Self { + Self { + anonymous_type_number: 0, + intermediate_counter: 0, + block_counter: 0, + } + } + + pub fn string_type(&self) -> IrIdentifier { + IrIdentifier { + unresolved: "String".to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::TypeName, + is_definition: false, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + } + } + + pub fn hex_type(&self) -> IrIdentifier { + IrIdentifier { + unresolved: "String".to_string(), // TODO: Correct structure would be Dynamic Byte String, see https://scilla-cookbook.org/recipes/scilla-recipes/addresses + resolved: None, + type_reference: None, + kind: IrIndentifierKind::TypeName, + is_definition: false, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + } + } + + pub fn generate_anonymous_type_id(&mut self, prefix: String) -> IrIdentifier { + let n = self.anonymous_type_number; + self.anonymous_type_number += 1; + + IrIdentifier { + unresolved: format!("{}{}", prefix, n).to_string(), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::TypeName, + is_definition: true, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + } + } + + pub fn new_block_label(&mut self, prefix: &str) -> IrIdentifier { + let n = self.block_counter; + self.block_counter += 1; + let label = format!("{}_{}", prefix, n); + FunctionBlock::new_label(label) + } + + pub fn new_intermediate(&mut self) -> IrIdentifier { + let n = self.intermediate_counter; + self.intermediate_counter += 1; + IrIdentifier { + unresolved: format!("__imm_{}", n), + resolved: None, + type_reference: None, + kind: IrIndentifierKind::VirtualRegisterIntermediate, + is_definition: true, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + } + } +} diff --git a/products/bluebell/core/src/intermediate_representation/pass.rs b/products/bluebell/core/src/intermediate_representation/pass.rs new file mode 100644 index 000000000..096bc79d5 --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/pass.rs @@ -0,0 +1,142 @@ +use scilla_parser::ast::{TraversalResult, TreeTraversalMode}; + +use crate::intermediate_representation::{primitives::*, symbol_table::SymbolTable}; + +/// `IrPass` is an abstract pass that is used by the `PassManager` to manipulate the Intermediate Representation (IR). +/// It provides methods to visit and potentially alter different parts of the IR during the traversal. +pub trait IrPass { + /// Visit and potentially alter a symbol kind in the IR. + fn visit_symbol_kind( + &mut self, + mode: TreeTraversalMode, + symbol_kind: &mut IrIndentifierKind, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a symbol name in the IR. + fn visit_symbol_name( + &mut self, + mode: TreeTraversalMode, + symbol_name: &mut IrIdentifier, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter an enum value in the IR. + fn visit_enum_value( + &mut self, + mode: TreeTraversalMode, + enum_value: &mut EnumValue, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a tuple in the IR. + fn visit_tuple( + &mut self, + mode: TreeTraversalMode, + tuple: &mut Tuple, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a variant in the IR. + fn visit_variant( + &mut self, + mode: TreeTraversalMode, + variant: &mut Variant, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a variable declaration in the IR. + fn visit_variable_declaration( + &mut self, + mode: TreeTraversalMode, + var_dec: &mut VariableDeclaration, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter an operation in the IR. + fn visit_operation( + &mut self, + mode: TreeTraversalMode, + operation: &mut Operation, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter an instruction in the IR. + fn visit_instruction( + &mut self, + mode: TreeTraversalMode, + instruction: &mut Instruction, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a function block in the IR. + fn visit_function_block( + &mut self, + mode: TreeTraversalMode, + function_block: &mut FunctionBlock, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a function body in the IR. + fn visit_function_body( + &mut self, + mode: TreeTraversalMode, + function_body: &mut FunctionBody, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a concrete type in the IR. + fn visit_concrete_type( + &mut self, + mode: TreeTraversalMode, + con_type: &mut ConcreteType, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a contract field in the IR. + fn visit_contract_field( + &mut self, + mode: TreeTraversalMode, + function_kind: &mut ContractField, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a function kind in the IR. + fn visit_function_kind( + &mut self, + mode: TreeTraversalMode, + function_kind: &mut FunctionKind, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a concrete function in the IR. + fn visit_concrete_function( + &mut self, + mode: TreeTraversalMode, + con_function: &mut ConcreteFunction, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter a case clause in the IR. + fn visit_case_clause( + &mut self, + mode: TreeTraversalMode, + con_function: &mut CaseClause, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Visit and potentially alter primitives in the IR. + fn visit_primitives( + // TODO Remove + &mut self, + mode: TreeTraversalMode, + primitives: &mut IntermediateRepresentation, + symbol_table: &mut SymbolTable, + ) -> Result; + + /// Initiate the pass. + fn initiate(&mut self); + + /// Finalize the pass. + fn finalize(&mut self); +} diff --git a/products/bluebell/core/src/intermediate_representation/pass_executor.rs b/products/bluebell/core/src/intermediate_representation/pass_executor.rs new file mode 100644 index 000000000..037cb5d4a --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/pass_executor.rs @@ -0,0 +1,510 @@ +use scilla_parser::ast::{TraversalResult, TreeTraversalMode}; + +use crate::intermediate_representation::{pass::IrPass, primitives::*, symbol_table::SymbolTable}; + +/// `PassExecutor` is a trait that provides a method for visiting and altering +/// the Intermediate Representation (IR) primitives. It is used by the `PassManager` +/// to traverse the IR and apply transformations. +/// +/// The `visit` method takes a mutable reference to the `IrPass` and the `SymbolTable`. +/// It returns a `Result` with the `TraversalResult` and a `String` in case of an error. +/// The traversult result determines how the algorithm proceeds in visiting subsequent nodes +/// in the IR. +pub trait PassExecutor { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result; +} + +/// The `IntermediateRepresentation` struct represents the Scilla Intermediate Representation (IR). +/// It contains definitions for types, contract fields, and functions. +/// +/// The `run_pass` method is used to run a pass on the IR. It takes a mutable reference to the `IrPass` +/// and initiates the pass, visits each type definition, contract field, and function definition in the IR, +/// and finalizes the pass. It returns a `Result` with the `TraversalResult` and a `String` in case of an error. +impl IntermediateRepresentation { + pub fn run_pass(&mut self, pass: &mut dyn IrPass) -> Result { + pass.initiate(); + + for type_def in &mut self.type_definitions { + type_def.visit(pass, &mut self.symbol_table)?; + } + + for contract_field in &mut self.fields_definitions { + contract_field.visit(pass, &mut self.symbol_table)?; + } + + for function_def in &mut self.function_definitions { + function_def.visit(pass, &mut self.symbol_table)?; + } + + pass.finalize(); + Ok(TraversalResult::Continue) + } +} + +impl PassExecutor for IrIndentifierKind { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_symbol_kind(TreeTraversalMode::Enter, self, symbol_table)?; + + match ret { + TraversalResult::Continue => { + pass.visit_symbol_kind(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for IrIdentifier { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_symbol_name(TreeTraversalMode::Enter, self, symbol_table); + + // TODO: visit children, if 'ret' is TraversalResult::Continuen + let children_ret = if let Ok(TraversalResult::Continue) = ret { + self.kind.visit(pass, symbol_table)?; + Ok(TraversalResult::Continue) + } else { + ret + }?; + + match children_ret { + TraversalResult::Continue => { + pass.visit_symbol_name(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for EnumValue { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_enum_value(TreeTraversalMode::Enter, self, symbol_table); + let children_ret = if let Ok(TraversalResult::Continue) = ret { + let _ = self.name.visit(pass, symbol_table)?; + if let Some(data) = &mut self.data { + data.visit(pass, symbol_table) + } else { + ret + } + } else { + ret + }?; + match children_ret { + TraversalResult::Continue => { + pass.visit_enum_value(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for Tuple { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_tuple(TreeTraversalMode::Enter, self, symbol_table); + // visit children, if 'ret' is TraversalResult::Continue + let children_ret = if ret == Ok(TraversalResult::Continue) { + for field in self.fields.iter_mut() { + field.visit(pass, symbol_table)?; + } + + Ok(TraversalResult::Continue) + } else { + ret + }?; + match children_ret { + TraversalResult::Continue => { + pass.visit_tuple(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for Variant { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_variant(TreeTraversalMode::Enter, self, symbol_table); + let children_ret = if ret == Ok(TraversalResult::Continue) { + for field in &mut self.fields { + let result = field.visit(pass, symbol_table); + if result != Ok(TraversalResult::Continue) { + return result; + } + } + Ok(TraversalResult::Continue) + } else { + ret + }; + if let Ok(TraversalResult::Continue) = children_ret { + pass.visit_variant(TreeTraversalMode::Exit, self, symbol_table) + } else { + Ok(TraversalResult::SkipChildren) + } + } +} + +impl PassExecutor for VariableDeclaration { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_variable_declaration(TreeTraversalMode::Enter, self, symbol_table); + let children_ret = if let Ok(TraversalResult::Continue) = ret { + self.name.visit(pass, symbol_table)?; + self.typename.visit(pass, symbol_table) + } else { + ret + }?; + match children_ret { + TraversalResult::Continue => { + pass.visit_variable_declaration(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for Operation { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_operation(TreeTraversalMode::Enter, self, symbol_table); + + let children_ret = if let Ok(TraversalResult::Continue) = ret { + match self { + Operation::TerminatingRef(identifier) => identifier.visit(pass, symbol_table), + Operation::Jump(identifier) => identifier.visit(pass, symbol_table), + Operation::StateStore { address, value } => { + let ret = value.visit(pass, symbol_table); + address.name.visit(pass, symbol_table)?; + + ret + } + Operation::StateLoad { address } => { + //let ret = value.visit(pass, symbol_table); + address.name.visit(pass, symbol_table) + } + Operation::MemLoad | Operation::MemStore | Operation::PhiNode(_) => { + Ok(TraversalResult::Continue) + } + Operation::ConditionalJump { + expression, + on_success, + on_failure, + } => { + expression.visit(pass, symbol_table)?; + on_success.visit(pass, symbol_table)?; + on_failure.visit(pass, symbol_table) + } + Operation::IsEqual { left, right } => { + left.visit(pass, symbol_table)?; + right.visit(pass, symbol_table)?; + Ok(TraversalResult::Continue) + } + Operation::CallExternalFunction { name, arguments } + | Operation::CallFunction { name, arguments } => { + name.visit(pass, symbol_table)?; + for arg in arguments { + arg.visit(pass, symbol_table)?; + } + Ok(TraversalResult::Continue) + } + Operation::CallStaticFunction { + name, + owner, + arguments, + } + | Operation::CallMemberFunction { + name, + owner, + arguments, + } => { + if let Some(owner) = owner { + owner.visit(pass, symbol_table)?; + } + name.visit(pass, symbol_table)?; + for arg in arguments { + arg.visit(pass, symbol_table)?; + } + Ok(TraversalResult::Continue) + } + Operation::ResolveSymbol { symbol } => { + symbol.visit(pass, symbol_table)?; + Ok(TraversalResult::Continue) + } + Operation::ResolveContextResource { symbol } => { + symbol.visit(pass, symbol_table)?; + Ok(TraversalResult::Continue) + } + Operation::Literal { data: _, typename } => { + typename.visit(pass, symbol_table)?; + Ok(TraversalResult::Continue) + } + Operation::Noop => Ok(TraversalResult::Continue), + Operation::Return(arg) | Operation::Revert(arg) => { + match arg { + Some(a) => { + a.visit(pass, symbol_table)?; + } + _ => (), + } + Ok(TraversalResult::Continue) + } + } + } else { + ret + }?; + match children_ret { + TraversalResult::Continue => { + pass.visit_operation(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for Instruction { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_instruction(TreeTraversalMode::Enter, self, symbol_table); + let children_ret = if ret == Ok(TraversalResult::Continue) { + if let Some(ssa) = &mut self.ssa_name { + ssa.visit(pass, symbol_table)?; + } + if let Some(ret) = &mut self.result_type { + ret.visit(pass, symbol_table)?; + } + + self.operation.visit(pass, symbol_table)?; + Ok(TraversalResult::Continue) + } else { + ret + }?; + + match children_ret { + TraversalResult::Continue => { + pass.visit_instruction(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for FunctionBlock { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_function_block(TreeTraversalMode::Enter, self, symbol_table); + let children_ret = if ret == Ok(TraversalResult::Continue) { + self.name.visit(pass, symbol_table)?; + for instr in self.instructions.iter_mut() { + instr.visit(pass, symbol_table)?; + } + Ok(TraversalResult::Continue) + } else { + ret + }?; + match children_ret { + TraversalResult::Continue => { + pass.visit_function_block(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} +impl PassExecutor for FunctionBody { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_function_body(TreeTraversalMode::Enter, self, symbol_table); + let children_ret = if ret == Ok(TraversalResult::Continue) { + for block in self.blocks.iter_mut() { + block.visit(pass, symbol_table)?; + } + Ok(TraversalResult::Continue) + } else { + ret + }; + match children_ret { + Ok(TraversalResult::Continue) => { + pass.visit_function_body(TreeTraversalMode::Exit, self, symbol_table) + } + _ => children_ret, + } + } +} + +impl PassExecutor for ConcreteType { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_concrete_type(TreeTraversalMode::Enter, self, symbol_table)?; + let ret = if let TraversalResult::Continue = ret { + // visit children + match self { + ConcreteType::Tuple { + name, + namespace, + data_layout, + } => { + name.visit(pass, symbol_table)?; + namespace.visit(pass, symbol_table)?; + data_layout.visit(pass, symbol_table)?; + } + ConcreteType::Variant { + name, + namespace, + data_layout, + } => { + name.visit(pass, symbol_table)?; + namespace.visit(pass, symbol_table)?; + + data_layout.visit(pass, symbol_table)?; + } + } + TraversalResult::Continue + } else { + ret + }; + match ret { + TraversalResult::Continue => { + pass.visit_concrete_type(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for ContractField { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_contract_field(TreeTraversalMode::Enter, self, symbol_table)?; + + let children_ret = if ret == TraversalResult::Continue { + let _ = self.variable.visit(pass, symbol_table)?; + let _ = self.initializer.visit(pass, symbol_table)?; + + TraversalResult::Continue + } else { + ret + }; + match children_ret { + TraversalResult::Continue => { + pass.visit_contract_field(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for FunctionKind { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_function_kind(TreeTraversalMode::Enter, self, symbol_table)?; + + // No children + + match ret { + TraversalResult::Continue => { + pass.visit_function_kind(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for ConcreteFunction { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_concrete_function(TreeTraversalMode::Enter, self, symbol_table)?; + let children_ret = if ret == TraversalResult::Continue { + let _ = self.name.visit(pass, symbol_table)?; + let _ = self.namespace.visit(pass, symbol_table)?; + let _ = self.function_kind.visit(pass, symbol_table)?; + if let Some(_rt) = &mut self.return_type { + // TODO: Change when rt is an IrIdentifier let _ = rt.visit(pass, symbol_table)?; + } + for (_i, arg) in self.arguments.iter_mut().enumerate() { + let _ = arg.visit(pass, symbol_table)?; + } + + let _ = self.body.visit(pass, symbol_table)?; + + TraversalResult::Continue + } else { + ret + }; + match children_ret { + TraversalResult::Continue => { + pass.visit_concrete_function(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} + +impl PassExecutor for CaseClause { + fn visit( + &mut self, + pass: &mut dyn IrPass, + symbol_table: &mut SymbolTable, + ) -> Result { + let ret = pass.visit_case_clause(TreeTraversalMode::Enter, self, symbol_table)?; + let children_ret = if ret == TraversalResult::Continue { + let _ = self.expression.visit(pass, symbol_table)?; + let _ = self.label.visit(pass, symbol_table)?; + TraversalResult::Continue + } else { + ret + }; + match children_ret { + TraversalResult::Continue => { + pass.visit_case_clause(TreeTraversalMode::Exit, self, symbol_table) + } + _ => Ok(TraversalResult::Continue), + } + } +} diff --git a/products/bluebell/core/src/intermediate_representation/pass_manager.rs b/products/bluebell/core/src/intermediate_representation/pass_manager.rs new file mode 100644 index 000000000..e72056082 --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/pass_manager.rs @@ -0,0 +1,50 @@ +use crate::{ + intermediate_representation::{pass::IrPass, primitives::IntermediateRepresentation}, + passes::{ + annotate_base_types::AnnotateBaseTypes, balance_block_args::BalanceBlockArguments, + block_dependencies::DeduceBlockDependencies, + collect_type_definitions::CollectTypeDefinitionsPass, debug_printer::DebugPrinter, + state_allocator::StateCollector, + }, +}; + +pub struct PassManager { + passes: Vec>, +} + +impl PassManager { + pub fn new() -> Self { + Self { passes: Vec::new() } + } + + pub fn default_pipeline() -> Self { + let mut ret = Self::new(); + + ret.passes.push(Box::new(CollectTypeDefinitionsPass::new())); + ret.passes.push(Box::new(StateCollector::new())); + ret.passes.push(Box::new(AnnotateBaseTypes::new())); + ret.passes.push(Box::new(DeduceBlockDependencies::new())); + ret.passes.push(Box::new(BalanceBlockArguments::new())); + ret.passes.push(Box::new(DeduceBlockDependencies::new())); + + ret + } + + pub fn enable_debug_printer(&mut self) -> &mut Self { + self.passes.push(Box::new(DebugPrinter::new())); + + self + } + + pub fn add_pass(&mut self, pass: Box) { + self.passes.push(pass); + } + + pub fn run(&mut self, ir: &mut IntermediateRepresentation) -> Result { + // TODO: Make self immutable and copy pass before running it on IR + for pass in &mut self.passes { + ir.run_pass(pass.as_mut())?; + } + Ok(0) + } +} diff --git a/products/bluebell/core/src/intermediate_representation/primitives.rs b/products/bluebell/core/src/intermediate_representation/primitives.rs new file mode 100644 index 000000000..b79dc632b --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/primitives.rs @@ -0,0 +1,399 @@ +use std::collections::{BTreeSet, HashMap, VecDeque}; + +use scilla_parser::parser::lexer::SourcePosition; + +use crate::intermediate_representation::symbol_table::SymbolTable; + +/// Enum representing the different kinds of identifiers in the intermediate representation. +#[derive(Debug, Clone, PartialEq)] +pub enum IrIndentifierKind { + FunctionName, + StaticFunctionName, + TransitionName, + ProcedureName, + TemplateFunctionName, + ExternalFunctionName, + + TypeName, + ComponentName, + Event, + Namespace, + BlockLabel, + + ContextResource, + + // Storage and reference + VirtualRegister, + VirtualRegisterIntermediate, + Memory, + State, + + // More info needed to derive kind + Unknown, +} + +/// Struct representing an identifier in the intermediate representation. +#[derive(Debug, Clone, PartialEq)] +pub struct IrIdentifier { + pub unresolved: String, + pub resolved: Option, + pub type_reference: Option, + pub kind: IrIndentifierKind, + pub is_definition: bool, + pub source_location: (SourcePosition, SourcePosition), +} + +impl IrIdentifier { + /// Constructor for the IrIdentifier struct. + pub fn new( + unresolved: String, + kind: IrIndentifierKind, + source_location: (SourcePosition, SourcePosition), + ) -> Self { + Self { + unresolved, + resolved: None, + type_reference: None, + kind, + is_definition: false, + source_location, + } + } + + /// Method to get the qualified name of the identifier. + pub fn qualified_name(&self) -> Result { + // TODO: Change to resolved or throw + if let Some(resolved) = &self.resolved { + Ok(resolved.clone()) + } else { + Ok(format!("[{}]", self.unresolved).to_string()) + } + } +} + +/// Struct representing an enum value in the intermediate representation. +#[derive(Debug, Clone)] +pub struct EnumValue { + pub name: IrIdentifier, + pub id: u64, + pub data: Option, + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +impl EnumValue { + /// Constructor for the EnumValue struct. + pub fn new(name: IrIdentifier, data: Option) -> Self { + Self { name, id: 0, data } + } + /// Method to set the id of the enum value. + pub fn set_id(&mut self, v: u64) { + self.id = v + } +} + +/// Struct representing a tuple in the intermediate representation. +#[derive(Debug, Clone)] +pub struct Tuple { + pub fields: Vec, + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +impl Tuple { + /// Constructor for the Tuple struct. + pub fn new() -> Self { + Self { fields: Vec::new() } + } + + /// Method to add a field to the tuple. + pub fn add_field(&mut self, value: IrIdentifier) { + self.fields.push(value); + } +} + +/// Struct representing a variant in the intermediate representation. +#[derive(Debug, Clone)] +pub struct Variant { + pub fields: Vec, // (name, id, data) + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +impl Variant { + /// Constructor for the Variant struct. + pub fn new() -> Self { + Self { fields: Vec::new() } + } + + /// Method to add a field to the variant. + pub fn add_field(&mut self, field: EnumValue) { + let id: u64 = match self.fields.last() { + // if we have at least one field, use the id of the last field + 1 + Some(enum_value) => enum_value.id + 1, + // else this is the first field, so use 0 + None => 0, + }; + let mut field = field.clone(); + field.set_id(id); + self.fields.push(field); + } +} + +/// Struct representing a variable declaration in the intermediate representation. +#[derive(Debug, Clone)] +pub struct VariableDeclaration { + pub name: IrIdentifier, + pub typename: IrIdentifier, + pub mutable: bool, + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +impl VariableDeclaration { + /// Constructor for the VariableDeclaration struct. + pub fn new(name: String, mutable: bool, typename: IrIdentifier) -> Self { + Self { + name: IrIdentifier { + unresolved: name, + resolved: None, + type_reference: None, + kind: if mutable { + IrIndentifierKind::Memory + } else { + IrIndentifierKind::VirtualRegister + }, + is_definition: true, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + }, + typename, + mutable, + } + } +} + +/// Struct representing a field address in the intermediate representation. +#[derive(Debug, Clone)] +pub struct FieldAddress { + pub name: IrIdentifier, + pub value: Option>, // TODO: Consider dropping this one + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +/// Struct representing a case clause in the intermediate representation. +#[derive(Debug, Clone)] +pub struct CaseClause { + pub expression: IrIdentifier, + pub label: IrIdentifier, + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +/// Enum representing the different kinds of operations in the intermediate representation. +#[derive(Debug, Clone)] +pub enum Operation { + Noop, + TerminatingRef(IrIdentifier), // Noop operation introduced to balance block arguments for conditional blocks. It can be assumed that the referenced variable is not used after this instruction + Jump(IrIdentifier), + ConditionalJump { + expression: IrIdentifier, + on_success: IrIdentifier, + on_failure: IrIdentifier, + }, + MemLoad, + MemStore, + StateLoad { + address: FieldAddress, + }, + StateStore { + address: FieldAddress, + value: IrIdentifier, + }, + IsEqual { + left: IrIdentifier, + right: IrIdentifier, + }, + CallExternalFunction { + name: IrIdentifier, + arguments: Vec, + }, + CallFunction { + name: IrIdentifier, + arguments: Vec, + }, + CallStaticFunction { + name: IrIdentifier, + owner: Option, + arguments: Vec, + }, + CallMemberFunction { + name: IrIdentifier, + owner: Option, + arguments: Vec, + }, + ResolveSymbol { + symbol: IrIdentifier, + }, + ResolveContextResource { + symbol: IrIdentifier, + }, + Literal { + data: String, + typename: IrIdentifier, + }, + PhiNode(Vec), + + Return(Option), + Revert(Option), +} + +/// Struct representing an instruction in the intermediate representation. +#[derive(Debug, Clone)] +pub struct Instruction { + pub ssa_name: Option, + pub result_type: Option, + pub operation: Operation, + pub source_location: (SourcePosition, SourcePosition), +} + +/// Struct representing a function block in the intermediate representation. +#[derive(Debug, Clone)] +pub struct FunctionBlock { + pub name: IrIdentifier, + pub block_arguments: BTreeSet, + pub enters_from: BTreeSet, + pub exits_to: BTreeSet, + pub defined_ssas: BTreeSet, + pub jump_required_arguments: HashMap>, + pub instructions: VecDeque>, + pub terminated: bool, + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +impl FunctionBlock { + /// Constructor for the FunctionBlock struct. + pub fn new(name: String) -> Box { + Self::new_from_symbol(Self::new_label(name)) + } + + /// Method to create a new FunctionBlock from a symbol. + pub fn new_from_symbol(name: IrIdentifier) -> Box { + Box::new(Self { + name, + block_arguments: BTreeSet::new(), + enters_from: BTreeSet::new(), + exits_to: BTreeSet::new(), + defined_ssas: BTreeSet::new(), + jump_required_arguments: HashMap::new(), + instructions: VecDeque::new(), + terminated: false, + }) + } + + /// Method to create a new label for a FunctionBlock. + pub fn new_label(label: String) -> IrIdentifier { + IrIdentifier { + unresolved: label.clone(), + resolved: Some(label), // Label is immediately resolved as it is unrelated to globals and garantueed to be non-conflicting + type_reference: None, + kind: IrIndentifierKind::BlockLabel, + is_definition: true, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + } + } +} + +/// Struct representing a function body in the intermediate representation. +#[derive(Debug, Clone)] +pub struct FunctionBody { + pub blocks: Vec>, + // TODO: pub source_location: (SourcePosition,SourcePosition) +} + +impl FunctionBody { + /// Constructor for the FunctionBody struct. + pub fn new() -> Box { + Box::new(Self { blocks: Vec::new() }) + } +} + +/// Enum representing the different kinds of concrete types in the intermediate representation. +#[derive(Debug, Clone)] +pub enum ConcreteType { + Tuple { + name: IrIdentifier, + namespace: IrIdentifier, + data_layout: Box, + }, + Variant { + name: IrIdentifier, + namespace: IrIdentifier, + data_layout: Box, + }, +} + +/// Enum representing the different kinds of functions in the intermediate representation. +#[derive(Debug, Clone)] +pub enum FunctionKind { + Procedure, + Transition, + Function, +} + +/// Struct representing a concrete function in the intermediate representation. +#[derive(Debug, Clone)] +pub struct ConcreteFunction { + pub name: IrIdentifier, + pub namespace: IrIdentifier, + pub function_kind: FunctionKind, + pub return_type: Option, // TODO: Should be Identifier + pub arguments: Vec, + pub body: Box, +} + +/// Struct representing a lambda function with a single argument in the intermediate representation. +#[derive(Debug, Clone)] +pub struct LambdaFunctionSingleArgument { + pub name: IrIdentifier, + pub capture: Box, + pub argument: VariableDeclaration, + pub return_type: Option, + pub block: FunctionBlock, +} + +/// Struct representing a contract field in the intermediate representation. +#[derive(Debug)] +pub struct ContractField { + pub namespace: IrIdentifier, + pub variable: VariableDeclaration, + pub initializer: Box, +} + +/// Struct representing the intermediate representation of a program. +#[derive(Debug)] +pub struct IntermediateRepresentation { + // Program IR + pub version: String, + pub type_definitions: Vec, + pub function_definitions: Vec, + pub fields_definitions: Vec, + pub lambda_functions: Vec, + + // Symbols, storage and memory layout + pub symbol_table: SymbolTable, +} + +impl IntermediateRepresentation { + /// Constructor for the IntermediateRepresentation struct. + pub fn new(symbol_table: SymbolTable) -> Self { + IntermediateRepresentation { + version: "".to_string(), + type_definitions: Vec::new(), + function_definitions: Vec::new(), + fields_definitions: Vec::new(), + lambda_functions: Vec::new(), + symbol_table, + } + } +} diff --git a/products/bluebell/core/src/intermediate_representation/symbol_table.rs b/products/bluebell/core/src/intermediate_representation/symbol_table.rs new file mode 100644 index 000000000..2a8110c3f --- /dev/null +++ b/products/bluebell/core/src/intermediate_representation/symbol_table.rs @@ -0,0 +1,242 @@ +use std::collections::HashMap; + +use primitive_types::U256; + +use crate::{ + constants::NAMESPACE_SEPARATOR, intermediate_representation::name_generator::NameGenerator, +}; + +/// Struct representing the type information of a symbol. +#[derive(Debug, Clone)] +pub struct TypeInfo { + pub symbol_name: String, + pub typename: String, + pub return_type: Option, + pub arguments: Vec, + pub constructor: bool, +} + +/// Implementation of TypeInfo struct. +impl TypeInfo { + /// Checks if the TypeInfo is a function. + pub fn is_function(&self) -> bool { + match self.return_type { + Some(_) => true, + None => false, + } + } + /// Checks if the TypeInfo is a constructor. + pub fn is_constructor(&self) -> bool { + self.constructor + } +} + +/// Struct representing the state layout entry. +#[derive(Debug, Clone)] +pub struct StateLayoutEntry { + pub address_offset: U256, + pub size: u64, + pub initializer: U256, +} + +/// Struct representing the symbol table. +#[derive(Debug, Clone)] +pub struct SymbolTable { + pub aliases: HashMap, + pub type_of_table: HashMap>, + pub name_generator: NameGenerator, + pub state_layout: HashMap, +} + +/// Trait for constructing a new symbol table. +pub trait SymbolTableConstructor { + fn new_symbol_table(&self) -> SymbolTable; +} + +/// Implementation of SymbolTable struct. +impl SymbolTable { + /// Checks if the given name is a state. + pub fn is_state(&self, name: &String) -> bool { + self.state_layout.get(name).is_some() + } + + /// Resolves the qualified name of a symbol. + pub fn resolve_qualified_name( + &mut self, + basename: &String, + current_namespace: &Option, + ) -> Option { + match ¤t_namespace { + None => (), + Some(namespace) => { + let mut namespaces = namespace.split(NAMESPACE_SEPARATOR).collect::>(); + + while !namespaces.is_empty() { + let full_name = format!( + "{}{}{}", + namespaces.join(NAMESPACE_SEPARATOR), + NAMESPACE_SEPARATOR, + basename + ); + + let full_name = if let Some(aliased_name) = self.aliases.get(&full_name) { + aliased_name + } else { + &full_name + }; + + if let Some(_) = self.typename_of(full_name) { + return Some(full_name.to_string()); + } + + // Remove the last level of the namespace + namespaces.pop(); + } + } + } + + let lookup = if let Some(aliased_name) = self.aliases.get(basename) { + aliased_name + } else { + basename + }; + + if let Some(_) = self.typename_of(lookup) { + return Some(lookup.to_string()); + } + + None + } + + /// Returns a mutable reference to the name generator. + pub fn get_name_generator(&mut self) -> &mut NameGenerator { + &mut self.name_generator + } + + /// Creates a plain typename. + pub fn create_plain_typename(&self, typename: &str) -> Box { + Box::new(TypeInfo { + symbol_name: "".to_string(), + typename: typename.to_string(), + return_type: None, + arguments: Vec::new(), + constructor: false, + }) + } + + /// Returns the type of a symbol. + pub fn type_of(&self, name: &str, namespace: &Option) -> Option> { + if let Some(namespace) = &namespace { + // Split the namespace into parts + let parts: Vec<&str> = namespace.split("::").collect(); + + // Iterate over the parts from most specific to least specific + for i in (0..=parts.len()).rev() { + let qualified_name = format!("{}::{}", parts[0..i].join("::"), name); + if let Some(value) = self.type_of_table.get(&qualified_name) { + return Some(value.clone()); + } + } + } + + self.type_of_table.get(name).cloned() + } + + /// Returns the typename of a symbol. + pub fn typename_of(&self, name: &str) -> Option { + if let Some(ti) = self.type_of_table.get(name) { + Some(ti.typename.clone()) + } else { + None + } + } + + /// Checks if a symbol is a function. + pub fn is_function(&self, name: &str) -> bool { + if let Some(ti) = self.type_of_table.get(name) { + ti.is_function() + } else { + false + } + } + + /// Declares a function or constructor type. + pub fn declare_function_or_constructor_type( + &mut self, + symbol: &str, + arguments: &Vec, + return_type: &str, + constructor: bool, + ) -> Result { + let mut signature: String = "(".to_string(); + for arg in arguments.iter() { + signature.push_str(&arg); + } + signature.push_str(") -> "); + signature.push_str(return_type); + + let typeinfo = Box::new(TypeInfo { + symbol_name: symbol.to_string(), + typename: signature.clone(), + return_type: Some(return_type.to_string()), + arguments: Vec::new(), + constructor, + }); + + // TODO: Consider whether it would be cleaner with an alias + self.type_of_table + .insert(symbol.to_string(), typeinfo.clone()); + + self.type_of_table.insert(signature, typeinfo); + Ok(symbol.to_string()) + } + + /// Declares a function type. + pub fn declare_function_type( + &mut self, + symbol: &str, + arguments: &Vec, + return_type: &str, + ) -> Result { + self.declare_function_or_constructor_type(symbol, arguments, return_type, false) + } + + /// Declares a constructor. + pub fn declare_constructor( + &mut self, + symbol: &str, + arguments: &Vec, + return_type: &str, + ) -> Result { + self.declare_function_or_constructor_type(symbol, arguments, return_type, true) + } + + /// Declares the type of a symbol. + pub fn declare_type_of(&mut self, symbol: &str, typename: &str) -> Result { + let typeinfo = self.create_plain_typename(typename); + + self.type_of_table.insert(symbol.to_string(), typeinfo); + + Ok(symbol.to_string()) + } + + /// Declares a special variable. + pub fn declare_special_variable( + &mut self, + name: &str, + typename: &str, + ) -> Result { + self.declare_type_of(name, typename) + } + + /// Declares a type. + pub fn declare_type(&mut self, symbol: &str) -> Result { + self.declare_type_of(symbol, symbol) + } + + /// Declares an alias for a symbol. + pub fn declare_alias(&mut self, alias: &str, symbol: &str) -> Result { + self.aliases.insert(alias.to_string(), symbol.to_string()); + Ok(symbol.to_string()) + } +} diff --git a/products/bluebell/core/src/lib.rs b/products/bluebell/core/src/lib.rs new file mode 100644 index 000000000..2b5bbf7bf --- /dev/null +++ b/products/bluebell/core/src/lib.rs @@ -0,0 +1,12 @@ +#[macro_use] + +pub mod constants; +pub mod contract_executor; +pub mod errors; +pub mod formatter; +pub mod intermediate_representation; +pub mod passes; + +pub mod evm_bytecode_generator; +pub mod support; +pub mod testing; diff --git a/products/bluebell/core/src/passes/annotate_base_types.rs b/products/bluebell/core/src/passes/annotate_base_types.rs new file mode 100644 index 000000000..e88e9077f --- /dev/null +++ b/products/bluebell/core/src/passes/annotate_base_types.rs @@ -0,0 +1,702 @@ +use std::mem; + +use scilla_parser::{ + ast::{TraversalResult, TreeTraversalMode}, + parser::lexer::SourcePosition, +}; + +use crate::{ + constants::NAMESPACE_SEPARATOR, + intermediate_representation::{ + pass::IrPass, + pass_executor::PassExecutor, + primitives::{ + CaseClause, ConcreteFunction, ConcreteType, ContractField, EnumValue, FunctionBlock, + FunctionBody, FunctionKind, Instruction, IntermediateRepresentation, IrIdentifier, + IrIndentifierKind, Operation, Tuple, VariableDeclaration, Variant, + }, + symbol_table::{SymbolTable, TypeInfo}, + }, +}; + +pub struct AnnotateBaseTypes { + previous_namespaces: Vec, + namespace: Option, + current_block: Option, +} + +impl AnnotateBaseTypes { + pub fn new() -> Self { + AnnotateBaseTypes { + previous_namespaces: Vec::new(), + namespace: None, + current_block: None, + } + } + + // TODO: Make Symbol table member + pub fn typename_of( + &self, + symbol: &IrIdentifier, + symbol_table: &mut SymbolTable, + ) -> Option { + if let Some(name) = &symbol.resolved { + symbol_table.typename_of(name) + } else { + None + } + } + + // TODO: Make Symbol table member + pub fn type_of( + &self, + symbol: &IrIdentifier, + symbol_table: &mut SymbolTable, + ) -> Option> { + if let Some(name) = &symbol.resolved { + symbol_table.type_of(name, &self.namespace) + } else { + None + } + } + + pub fn push_namespace(&mut self, namespace: String) { + let namespace = if let Some(ns) = &self.namespace { + self.previous_namespaces.push(ns.clone()); + format!("{}{}{}", ns, NAMESPACE_SEPARATOR, namespace) + } else { + namespace + }; + self.namespace = Some(namespace); + } + + pub fn pop_namespace(&mut self) { + self.namespace = self.previous_namespaces.pop(); + } +} + +// TODO: Rename to AnnotateTypesDeclarations + +impl IrPass for AnnotateBaseTypes { + fn initiate(&mut self) {} + fn finalize(&mut self) {} + fn visit_concrete_type( + &mut self, + _mode: TreeTraversalMode, + _con_type: &mut ConcreteType, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::SkipChildren) + } + + fn visit_enum_value( + &mut self, + _mode: TreeTraversalMode, + _enum_value: &mut EnumValue, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_tuple( + &mut self, + _mode: TreeTraversalMode, + _tuple: &mut Tuple, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_variant( + &mut self, + _mode: TreeTraversalMode, + _variant: &mut Variant, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + // Pass through deliberate + Ok(TraversalResult::Continue) + } + + fn visit_variable_declaration( + &mut self, + _mode: TreeTraversalMode, + var_dec: &mut VariableDeclaration, + symbol_table: &mut SymbolTable, + ) -> Result { + if let Some(typename) = &var_dec.typename.resolved { + let _ = var_dec.name.visit(self, symbol_table)?; + var_dec.name.type_reference = Some(typename.clone()); + + if let Some(symbol) = &var_dec.name.resolved { + // TODO: Check that symbol is unique + + symbol_table.declare_type_of(&symbol, typename)?; + + Ok(TraversalResult::SkipChildren) + } else { + println!("Error in {:#?}", var_dec); + Err(format!( + "Could not resolve symbol for {}", + var_dec.name.unresolved, + )) + } + } else { + Err(format!( + "Could not resolve type for {}, type {} is not declared", + var_dec.name.unresolved, var_dec.typename.unresolved + )) + } + } + + fn visit_contract_field( + &mut self, + _mode: TreeTraversalMode, + field: &mut ContractField, + symbol_table: &mut SymbolTable, + ) -> Result { + let namespace = match &field.namespace.resolved { + Some(ns) => ns.clone(), + None => { + return Err(format!( + "Could not determine the namespace of {}", + field.namespace.unresolved + )) + } + }; + + self.push_namespace(namespace); + + field.variable.visit(self, symbol_table)?; + field.initializer.visit(self, symbol_table)?; + + self.pop_namespace(); + + Ok(TraversalResult::SkipChildren) + } + + fn visit_concrete_function( + &mut self, + _mode: TreeTraversalMode, + fnc: &mut ConcreteFunction, + symbol_table: &mut SymbolTable, + ) -> Result { + let namespace = match &fnc.namespace.resolved { + Some(ns) => ns.clone(), + None => { + return Err(format!( + "Could not determine the namespace of {}", + fnc.name.unresolved + )) + } + }; + + self.push_namespace(namespace); + + fnc.name.visit(self, symbol_table)?; + + self.push_namespace(fnc.name.unresolved.clone()); + + for arg in fnc.arguments.iter_mut() { + arg.visit(self, symbol_table)?; + } + + fnc.body.visit(self, symbol_table)?; + + self.pop_namespace(); + self.pop_namespace(); + + // TODO: collect type of function + Ok(TraversalResult::SkipChildren) + } + + fn visit_symbol_kind( + &mut self, + _mode: TreeTraversalMode, + _kind: &mut IrIndentifierKind, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_symbol_name( + &mut self, + _mode: TreeTraversalMode, + symbol: &mut IrIdentifier, + symbol_table: &mut SymbolTable, + ) -> Result { + match symbol.kind { + IrIndentifierKind::Unknown => { + if let Some(typeinfo) = self.type_of(symbol, symbol_table) { + symbol.type_reference = Some(typeinfo.typename.clone()); + + // We only move constructors out of line + if !typeinfo.is_constructor() { + return Ok(TraversalResult::Continue); + } + + if typeinfo.arguments.len() > 0 { + return Err(format!( + "Cannot invoke constructor of {:?} with arguments", + symbol + )); + } + + let return_type = if let Some(r) = typeinfo.return_type { + r + } else { + return Err(format!( + "Internal error: Return type not defined for contructor type {:?}", + typeinfo + )); + }; + + let mut intermediate_symbol = symbol_table.name_generator.new_intermediate(); + + symbol.kind = IrIndentifierKind::StaticFunctionName; + let mut constructor_call = Box::new(Instruction { + ssa_name: Some(intermediate_symbol.clone()), + result_type: Some(IrIdentifier { + unresolved: return_type.clone(), + resolved: Some(return_type.clone()), + type_reference: Some(return_type), + kind: IrIndentifierKind::TypeName, + is_definition: false, + source_location: ( + // TODO: + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + }), + operation: Operation::CallStaticFunction { + name: symbol.clone(), + owner: None, // TODO: + arguments: Vec::new(), + }, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + }); + + constructor_call.visit(self, symbol_table)?; + + if let Some(current_block) = &mut self.current_block { + current_block.instructions.push_back(constructor_call); + } else { + return Err( + "Internal error: No block available to push instruction ".to_string() + ); + } + + mem::swap(&mut intermediate_symbol, symbol); + } else { + return Err(format!("Unable to resolve type of {:?}", symbol)); + } + } + _ => (), + } + + // Changing + + if symbol.kind == IrIndentifierKind::VirtualRegister { + if let Some(resolved_name) = + symbol_table.resolve_qualified_name(&symbol.unresolved, &self.namespace) + { + if symbol_table.is_state(&resolved_name) { + symbol.kind = IrIndentifierKind::State; + } + } else { + // TODO: panic!("Could not resolve qualified name"); + } + } + + // Updating type + match symbol.kind { + IrIndentifierKind::BlockLabel => (), + IrIndentifierKind::FunctionName + | IrIndentifierKind::State + | IrIndentifierKind::TransitionName + | IrIndentifierKind::ProcedureName => { + if !symbol.is_definition { + if let Some(resolved_name) = + symbol_table.resolve_qualified_name(&symbol.unresolved, &self.namespace) + { + symbol.resolved = Some(resolved_name); + } + } + } + IrIndentifierKind::VirtualRegister + | IrIndentifierKind::VirtualRegisterIntermediate + | IrIndentifierKind::Memory => { + if let Some(ns) = &self.namespace { + symbol.resolved = Some( + format!("{}{}{}", ns, NAMESPACE_SEPARATOR, symbol.unresolved).to_string(), + ); + } + } + _ => (), + } + symbol.type_reference = self.typename_of(symbol, symbol_table); + Ok(TraversalResult::Continue) + } + + fn visit_primitives( + &mut self, + _mode: TreeTraversalMode, + _primitives: &mut IntermediateRepresentation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_body( + &mut self, + _mode: TreeTraversalMode, + _function_body: &mut FunctionBody, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_kind( + &mut self, + _mode: TreeTraversalMode, + _function_kind: &mut FunctionKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_operation( + &mut self, + _mode: TreeTraversalMode, + _operation: &mut Operation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_instruction( + &mut self, + _mode: TreeTraversalMode, + instr: &mut Instruction, + symbol_table: &mut SymbolTable, + ) -> Result { + // TODO: These types should be stored somewhere (in the symbol table maybe?) + let typename = match &mut instr.operation { + Operation::TerminatingRef(_identifier) => { + "Void".to_string() // TODO: Fetch from somewhere + } + Operation::Noop => "Void".to_string(), // TODO: Fetch from somewhere + Operation::Jump(_) => "Void".to_string(), // TODO: Fetch from somewhere + Operation::ConditionalJump { + expression, + on_success, + on_failure, + } => { + expression.visit(self, symbol_table)?; + on_success.visit(self, symbol_table)?; + on_failure.visit(self, symbol_table)?; + "Void".to_string() // TODO: Fetch from somewhere + } + Operation::StateLoad { address } => { + address.name.visit(self, symbol_table)?; + let value = match &mut instr.ssa_name { + Some(v) => v, + None => panic!("Load does not assign value"), + }; + value.visit(self, symbol_table)?; + let symbol_name = match &value.resolved { + Some(r) => r.clone(), + None => { + return Err(format!( + "Unable resolve symbol name for for load statement {}", + value.unresolved + )) + } + }; + + value.type_reference = address.name.type_reference.clone(); + + match &value.type_reference { + Some(typename) => { + symbol_table.declare_type_of(&symbol_name, &typename)?; + typename.clone() + } + None => { + return Err(format!( + "Unable to deduce type for load statement {}", + symbol_name + )) + } + } + } + Operation::StateStore { address, value } => { + address.name.visit(self, symbol_table)?; + value.visit(self, symbol_table)?; + + let symbol_name = match &address.name.resolved { + Some(r) => r.clone(), + None => { + return Err(format!( + "Unable resolve symbol name for for store statement {}", + value.unresolved + )) + } + }; + + value.type_reference = address.name.type_reference.clone(); + + match &value.type_reference { + Some(typename) => { + symbol_table.declare_type_of(&symbol_name, &typename)?; + typename.clone() + } + None => { + return Err(format!( + "Unable to deduce type for store statement {}", + symbol_name + )) + } + } + } + Operation::MemLoad => "TODO".to_string(), + Operation::MemStore => "TODO".to_string(), + Operation::IsEqual { left, right } => { + left.visit(self, symbol_table)?; + right.visit(self, symbol_table)?; + // panic!("Failed"); + // TODO: Should return the same type as left and right + "Uint256".to_string() + } + Operation::CallFunction { + ref mut name, + arguments, + } // We do not distinguish between CallFunction and CallExternalFunction + | Operation::CallExternalFunction { + ref mut name, + arguments, + } => { + name.visit(self, symbol_table)?; + let mut argument_type_args: String = "".to_string(); + for (i, arg) in arguments.iter_mut().enumerate() { + arg.visit(self, symbol_table)?; + let type_name = match &arg.type_reference { + Some(t) => t, + None => { + // TODO: Fix error propagation + panic!( + "Unable to resolve type for {:?} in {:?}", + arg.unresolved, name + ); + } + }; + if i > 0 { + argument_type_args.push_str(","); + } + argument_type_args.push_str(type_name); + } + + // In the event of a template function, we use the unresolved name + // as the function may not yet exist + let name_value = match &name.resolved { + Some(v) => v, + None => &name.unresolved + }; + + let function_type = format!("{}::<{}>", name_value, argument_type_args).to_string(); + + let function_type = if let Some(typeinfo)= symbol_table.type_of(&function_type, &self.namespace) { + typeinfo.symbol_name + } else { + panic!("Unable to find symbol {}", function_type); + }; + + name.resolved = Some(function_type.clone()); + + + // The value of the SSA is the return type of the function + // TODO: To this end we need to resolve the type refernce from the resolved name + name.type_reference = Some(function_type.clone()); // TODO: Should contain return type as this is a function pointer + + let type_info = match symbol_table.type_of(&function_type, &self.namespace) { + Some(v) => { + match v.return_type { + Some(r) => r, + None => "Void".to_string() // TODO: Get value from somewhere + } + } + None => { + println!("{:#?}", symbol_table); + panic!("Undeclared function {}", function_type) + } + }; + + type_info + } + Operation::CallStaticFunction { + name, + owner: _, + arguments, + } => { + name.visit(self, symbol_table)?; + for arg in arguments.iter_mut() { + arg.visit(self, symbol_table)?; + } + + let return_type = if let Some(function_type) = &name.type_reference { + let function_typeinfo = symbol_table.type_of(function_type, &self.namespace); + + if let Some(function_typeinfo) = function_typeinfo { + function_typeinfo.return_type.expect("").clone() + } else { + return Err(format!("Unable to determine type of {:?}", name.unresolved) + .to_string()); + } + } else { + return Err(format!( + "Unable to determine return type of {:?}", + name.unresolved + ) + .to_string()); + }; + + return_type + } + Operation::CallMemberFunction { + name, + owner: _, + arguments, + } => { + name.visit(self, symbol_table)?; + for arg in arguments.iter_mut() { + arg.visit(self, symbol_table)?; + } + + unimplemented!() + } + Operation::ResolveSymbol { symbol } => { + symbol.visit(self, symbol_table)?; + match &symbol.type_reference { + Some(t) => t.clone(), + None => { + return Err(format!( + "Unable to determine type for {}", + symbol.unresolved + )); + } + } + } + Operation::ResolveContextResource { symbol } => { + symbol.visit(self, symbol_table)?; + match &symbol.type_reference { + Some(t) => t.clone(), + None => { + return Err(format!( + "Unable to determine type for {}", + symbol.unresolved + )); + } + } + } + Operation::Literal { data, typename } => { + typename.visit(self, symbol_table)?; + + match &typename.type_reference { + Some(t) => t.clone(), + None => { + return Err(format!( + "Unable to determine type for literal {} {}", + typename.unresolved, data + )); + } + } + } + Operation::PhiNode(inputs) => { + let mut type_name = None; + for input in inputs.iter_mut() { + input.visit(self, symbol_table)?; + if input.type_reference != type_name { + if type_name == None { + type_name = input.type_reference.clone(); + } else { + return Err("Different paths given different return types.".to_string()); + } + } + } + + if let Some(type_name) = type_name { + type_name + } else { + "Void".to_string() // TODO: specify somewhere // TODO: Fetch from somewhere + } + } + Operation::Revert(n) | Operation::Return(n) => { + match n { + Some(_) => todo!(), + None => "Void".to_string(), // TODO: specify somewhere // TODO: Fetch from somewhere + } + } + }; + + //instr.operation.type_reference = Some(typename); + + if let Some(ssa) = &mut instr.ssa_name { + ssa.visit(self, symbol_table)?; + if let Some(symbol_name) = &ssa.resolved { + // TODO: Check whether symbol exists + + symbol_table.declare_type_of(symbol_name, &typename)?; + + ssa.type_reference = Some(typename); + } else { + return Err(format!( + "Unable to resolved symbol name for {}", + ssa.unresolved + )); + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn visit_case_clause( + &mut self, + _mode: TreeTraversalMode, + _con_function: &mut CaseClause, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_block( + &mut self, + _mode: TreeTraversalMode, + block: &mut FunctionBlock, + symbol_table: &mut SymbolTable, + ) -> Result { + self.current_block = Some(*FunctionBlock::new_from_symbol(block.name.clone())); + + if let Some(ref mut new_block) = &mut self.current_block { + new_block.terminated = block.terminated; + } + + for instr in block.instructions.iter_mut() { + instr.visit(self, symbol_table)?; + if let Some(ref mut new_block) = &mut self.current_block { + new_block.instructions.push_back(instr.clone()); + } + } + + if let Some(ref mut new_block) = &mut self.current_block { + mem::swap(block, new_block); + self.current_block = None; + } else { + return Err( + "Internal error: Block was undefined when returning from instruction passing" + .to_string(), + ); + } + Ok(TraversalResult::SkipChildren) + } +} diff --git a/products/bluebell/core/src/passes/balance_block_args.rs b/products/bluebell/core/src/passes/balance_block_args.rs new file mode 100644 index 000000000..d15042baf --- /dev/null +++ b/products/bluebell/core/src/passes/balance_block_args.rs @@ -0,0 +1,269 @@ +use std::{ + collections::{BTreeSet, HashMap, VecDeque}, + mem, +}; + +use scilla_parser::{ + ast::{TraversalResult, TreeTraversalMode}, + parser::lexer::SourcePosition, +}; + +use crate::intermediate_representation::{ + pass::IrPass, + primitives::{ + CaseClause, ConcreteFunction, ConcreteType, ContractField, EnumValue, FunctionBlock, + FunctionBody, FunctionKind, Instruction, IntermediateRepresentation, IrIdentifier, + IrIndentifierKind, Operation, Tuple, VariableDeclaration, Variant, + }, + symbol_table::SymbolTable, +}; + +pub struct BalanceBlockArguments { + blocks: HashMap, +} + +impl BalanceBlockArguments { + pub fn new() -> Self { + BalanceBlockArguments { + blocks: HashMap::new(), + } + } +} + +// TODO: Rename to AnnotateTypesDeclarations + +impl IrPass for BalanceBlockArguments { + fn initiate(&mut self) {} + fn finalize(&mut self) {} + + fn visit_concrete_type( + &mut self, + _mode: TreeTraversalMode, + _con_type: &mut ConcreteType, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_enum_value( + &mut self, + _mode: TreeTraversalMode, + _enum_value: &mut EnumValue, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_tuple( + &mut self, + _mode: TreeTraversalMode, + _tuple: &mut Tuple, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_variant( + &mut self, + _mode: TreeTraversalMode, + _variant: &mut Variant, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + // Pass through deliberate + Ok(TraversalResult::Continue) + } + + fn visit_variable_declaration( + &mut self, + _mode: TreeTraversalMode, + _var_dec: &mut VariableDeclaration, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_contract_field( + &mut self, + _mode: TreeTraversalMode, + _field: &mut ContractField, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_concrete_function( + &mut self, + _mode: TreeTraversalMode, + fnc: &mut ConcreteFunction, + _symbol_table: &mut SymbolTable, + ) -> Result { + let mut name_stack: VecDeque = VecDeque::new(); + // Creating a copy of all blocks + for block in fnc.body.blocks.iter() { + let name = match &block.name.resolved { + Some(n) => n, + None => panic!("Failed to resolve name of block"), + }; + + if block.enters_from.is_empty() { + name_stack.push_back(name.clone()); + } + self.blocks.insert(name.to_string(), *block.clone()); + } + + while !name_stack.is_empty() { + let next_name = name_stack.pop_front().unwrap(); + + let block = match self.blocks.get(&next_name) { + Some(b) => b.clone(), + None => panic!("Unable to find block with name {}", next_name), + }; + + for name in &block.exits_to { + name_stack.push_back(name.to_string()); + } + + // Combuting the common (combined) args + let mut args_required: BTreeSet = BTreeSet::new(); + for (_, set) in &block.jump_required_arguments { + for arg in set.iter() { + args_required.insert(arg.to_string()); + } + } + + let empty_set = BTreeSet::new(); + for name in &block.exits_to { + let set = block + .jump_required_arguments + .get(name) + .unwrap_or(&empty_set); + if !set.eq(&args_required) { + if let Some(block) = self.blocks.get_mut(name) { + for arg in &args_required { + if !set.contains(arg) { + let ir_identifier = IrIdentifier { + unresolved: arg.clone(), + resolved: Some(arg.clone()), + type_reference: None, + kind: IrIndentifierKind::VirtualRegister, + is_definition: false, + source_location: ( + // TODO: + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + }; + + let op = Operation::TerminatingRef(ir_identifier); + block.instructions.push_front(Box::new(Instruction { + ssa_name: None, + result_type: None, + operation: op, + source_location: ( + SourcePosition::invalid_position(), + SourcePosition::invalid_position(), + ), + })); + } + } + } + } + } + } + + // Updating blocks + for block in fnc.body.blocks.iter_mut() { + let name = match &block.name.resolved { + Some(n) => n, + None => panic!("Failed to resolve name of block"), + }; + + if let Some(ref mut new_block) = self.blocks.get_mut(name) { + //let mut new_block = Box::new(new_block); + mem::swap(&mut block.instructions, &mut new_block.instructions); + } + } + Ok(TraversalResult::SkipChildren) + } + + fn visit_symbol_kind( + &mut self, + _mode: TreeTraversalMode, + _kind: &mut IrIndentifierKind, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_symbol_name( + &mut self, + _mode: TreeTraversalMode, + _symbol: &mut IrIdentifier, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_primitives( + &mut self, + _mode: TreeTraversalMode, + _primitives: &mut IntermediateRepresentation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_body( + &mut self, + _mode: TreeTraversalMode, + _function_body: &mut FunctionBody, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_kind( + &mut self, + _mode: TreeTraversalMode, + _function_kind: &mut FunctionKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_operation( + &mut self, + _mode: TreeTraversalMode, + _operation: &mut Operation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_instruction( + &mut self, + _mode: TreeTraversalMode, + _instr: &mut Instruction, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_case_clause( + &mut self, + _mode: TreeTraversalMode, + _con_function: &mut CaseClause, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_block( + &mut self, + _mode: TreeTraversalMode, + _block: &mut FunctionBlock, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } +} diff --git a/products/bluebell/core/src/passes/block_dependencies.rs b/products/bluebell/core/src/passes/block_dependencies.rs new file mode 100644 index 000000000..17ee09d07 --- /dev/null +++ b/products/bluebell/core/src/passes/block_dependencies.rs @@ -0,0 +1,376 @@ +use std::{ + collections::{BTreeSet, HashMap, VecDeque}, + mem, +}; + +use scilla_parser::ast::{TraversalResult, TreeTraversalMode}; + +use crate::intermediate_representation::{ + pass::IrPass, + pass_executor::PassExecutor, + primitives::{ + CaseClause, ConcreteFunction, ConcreteType, ContractField, EnumValue, FunctionBlock, + FunctionBody, FunctionKind, Instruction, IntermediateRepresentation, IrIdentifier, + IrIndentifierKind, Operation, Tuple, VariableDeclaration, Variant, + }, + symbol_table::SymbolTable, +}; + +pub struct DeduceBlockDependencies { + blocks: HashMap, + + defined_names: BTreeSet, + used_names: BTreeSet, + listed_jump_to: BTreeSet, +} + +impl DeduceBlockDependencies { + pub fn new() -> Self { + DeduceBlockDependencies { + blocks: HashMap::new(), + defined_names: BTreeSet::new(), + used_names: BTreeSet::new(), + listed_jump_to: BTreeSet::new(), + } + } +} + +// TODO: Rename to AnnotateTypesDeclarations + +impl IrPass for DeduceBlockDependencies { + fn initiate(&mut self) {} + fn finalize(&mut self) {} + + fn visit_concrete_type( + &mut self, + _mode: TreeTraversalMode, + _con_type: &mut ConcreteType, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_enum_value( + &mut self, + _mode: TreeTraversalMode, + _enum_value: &mut EnumValue, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_tuple( + &mut self, + _mode: TreeTraversalMode, + _tuple: &mut Tuple, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_variant( + &mut self, + _mode: TreeTraversalMode, + _variant: &mut Variant, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + // Pass through deliberate + Ok(TraversalResult::Continue) + } + + fn visit_variable_declaration( + &mut self, + _mode: TreeTraversalMode, + _var_dec: &mut VariableDeclaration, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_contract_field( + &mut self, + _mode: TreeTraversalMode, + _field: &mut ContractField, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_concrete_function( + &mut self, + mode: TreeTraversalMode, + fnc: &mut ConcreteFunction, + _symbol_table: &mut SymbolTable, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + self.blocks = HashMap::new(); + } + TreeTraversalMode::Exit => { + let mut block_names: Vec = Vec::new(); + + // Updating enters_from + for block in fnc.body.blocks.iter_mut() { + let name = match &block.name.resolved { + Some(n) => n, + None => panic!("Failed to resolve name of block"), + }; + block_names.push(name.clone()); + for link_to in &block.exits_to { + if let Some(target) = self.blocks.get_mut(link_to) { + target.enters_from.insert(name.to_string()); + } else { + panic!("Jump to non-existing block {} in {}", link_to, name); + } + } + } + + // Tracking variables + for name in &block_names { + let block = match self.blocks.get_mut(name) { + Some(b) => b.clone(), + _ => { + panic!("Unregistered block {}", name); + } + }; + + // Tracing arguments back to their origin + for variable in &block.block_arguments { + let mut used: BTreeSet = BTreeSet::new(); + let mut edge_queue: VecDeque<(String, String)> = VecDeque::new(); + for from in &block.enters_from { + edge_queue.push_back((from.to_string(), name.to_string())); + } + + while !edge_queue.is_empty() { + let (from, to) = edge_queue.pop_front().unwrap(); + if used.contains(&from) { + continue; + } + + used.insert(from.clone()); + + let required_block_args: BTreeSet = match self.blocks.get(&to) { + Some(to) => to.block_arguments.clone().into_iter().collect(), + None => panic!("Unregistered block {}", to), + }; + + match self.blocks.get_mut(&from) { + Some(from_block) => { + from_block + .jump_required_arguments + .insert(to, required_block_args); + if !from_block.defined_ssas.contains(variable) { + // If the variable is not contained in the arguments already, + // we add it and continue to traverse backwards + if !from_block.block_arguments.contains(variable) { + from_block.block_arguments.insert(variable.to_string()); + + for name in &block.enters_from { + edge_queue.push_back(( + name.to_string(), + from.to_string(), + )); + } + } + } + } + _ => { + panic!("Unregistered block {}", from); + } + }; + } + } + } + + // Updating the function blocks + for block in fnc.body.blocks.iter_mut() { + let name = match &block.name.resolved { + Some(n) => n, + None => panic!("Failed to resolve name of block"), + }; + if let Some(updated) = self.blocks.get_mut(name) { + mem::swap(&mut block.block_arguments, &mut updated.block_arguments); + mem::swap(&mut block.enters_from, &mut updated.enters_from); + mem::swap(&mut block.exits_to, &mut updated.exits_to); + mem::swap(&mut block.defined_ssas, &mut updated.defined_ssas); + mem::swap( + &mut block.jump_required_arguments, + &mut updated.jump_required_arguments, + ); + } else { + panic!("Unregistered block {}", name); + } + } + } + } + Ok(TraversalResult::Continue) + } + + fn visit_symbol_kind( + &mut self, + _mode: TreeTraversalMode, + _kind: &mut IrIndentifierKind, + _symbol_tablee: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_symbol_name( + &mut self, + _mode: TreeTraversalMode, + symbol: &mut IrIdentifier, + _symbol_table: &mut SymbolTable, + ) -> Result { + match symbol.kind { + IrIndentifierKind::VirtualRegister | IrIndentifierKind::VirtualRegisterIntermediate => { + match &symbol.resolved { + Some(n) => self.used_names.insert(n.clone()), + None => panic!("Unresolved symbol name encountered"), + }; + } + _ => (), + } + Ok(TraversalResult::Continue) + } + + fn visit_primitives( + &mut self, + _mode: TreeTraversalMode, + _primitives: &mut IntermediateRepresentation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_body( + &mut self, + mode: TreeTraversalMode, + _function_body: &mut FunctionBody, + _symbol_table: &mut SymbolTable, + ) -> Result { + match mode { + TreeTraversalMode::Enter => (), + _ => (), + }; + Ok(TraversalResult::Continue) + } + + fn visit_function_kind( + &mut self, + _mode: TreeTraversalMode, + _function_kind: &mut FunctionKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_operation( + &mut self, + mode: TreeTraversalMode, + operation: &mut Operation, + _symbol_table: &mut SymbolTable, + ) -> Result { + match mode { + TreeTraversalMode::Enter => match &operation { + Operation::Jump(label) => { + match &label.resolved { + Some(l) => self.listed_jump_to.insert(l.clone()), + None => panic!("Unresolved block label encountered"), + }; + return Ok(TraversalResult::SkipChildren); + } + Operation::ConditionalJump { + expression: _, + on_success, + on_failure, + } => { + match &on_success.resolved { + Some(l) => self.listed_jump_to.insert(l.clone()), + None => panic!("Unresolved block label encountered"), + }; + + match &on_failure.resolved { + Some(l) => self.listed_jump_to.insert(l.clone()), + None => panic!("Unresolved block label encountered"), + }; + return Ok(TraversalResult::SkipChildren); + } + _ => (), + }, + _ => (), + } + Ok(TraversalResult::Continue) + } + + fn visit_instruction( + &mut self, + _mode: TreeTraversalMode, + _instr: &mut Instruction, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_case_clause( + &mut self, + _mode: TreeTraversalMode, + _con_function: &mut CaseClause, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_block( + &mut self, + _mode: TreeTraversalMode, + block: &mut FunctionBlock, + symbol_table: &mut SymbolTable, + ) -> Result { + self.listed_jump_to = BTreeSet::new(); + self.defined_names = BTreeSet::new(); + self.used_names = BTreeSet::new(); + + let name = match &block.name.resolved { + Some(n) => n.clone(), + None => { + return Err("Function block does not have a resolved name".to_string()); + } + }; + + for instr in block.instructions.iter_mut() { + match &instr.ssa_name { + Some(id) => { + if id.kind == IrIndentifierKind::VirtualRegister + || id.kind == IrIndentifierKind::VirtualRegisterIntermediate + { + match &id.resolved { + Some(name) => { + // We only define a variable if it was not used before. If it was used before + // it should be registered as a block argument. + if !self.used_names.contains(name) { + self.defined_names.insert(name.clone()); + } + } + None => panic!("Encountered unresolved SSA name"), + }; + } + } + None => (), + }; + instr.visit(self, symbol_table)?; + } + + block.block_arguments = self + .used_names + .difference(&self.defined_names) + .cloned() + .collect(); + mem::swap(&mut block.defined_ssas, &mut self.defined_names); + mem::swap(&mut block.exits_to, &mut self.listed_jump_to); + + self.blocks.insert(name, block.clone()); + + Ok(TraversalResult::SkipChildren) + } +} diff --git a/products/bluebell/core/src/passes/collect_type_definitions.rs b/products/bluebell/core/src/passes/collect_type_definitions.rs new file mode 100644 index 000000000..bbdea3be3 --- /dev/null +++ b/products/bluebell/core/src/passes/collect_type_definitions.rs @@ -0,0 +1,344 @@ +use scilla_parser::ast::{TraversalResult, TreeTraversalMode}; + +use crate::{ + constants::NAMESPACE_SEPARATOR, + intermediate_representation::{ + pass::IrPass, + pass_executor::PassExecutor, + primitives::{ + CaseClause, ConcreteFunction, ConcreteType, ContractField, EnumValue, FunctionBlock, + FunctionBody, FunctionKind, Instruction, IntermediateRepresentation, IrIdentifier, + IrIndentifierKind, Operation, Tuple, VariableDeclaration, Variant, + }, + symbol_table::SymbolTable, + }, +}; + +pub struct CollectTypeDefinitionsPass { + namespace_stack: Vec, + current_namespace: Option, + current_type: Option, +} + +impl CollectTypeDefinitionsPass { + pub fn new() -> Self { + CollectTypeDefinitionsPass { + namespace_stack: Vec::new(), + current_namespace: None, + current_type: None, + } + } + + fn push_namespace(&mut self, namespace: String) { + self.namespace_stack.push(namespace.clone()); + self.current_namespace = Some(namespace); + } + + fn pop_namespace(&mut self) { + let _ = self.namespace_stack.pop(); + if let Some(namespace) = &self.namespace_stack.last() { + self.current_namespace = Some(namespace.to_string()); + } else { + self.current_namespace = None; + } + } +} + +impl IrPass for CollectTypeDefinitionsPass { + fn initiate(&mut self) {} + fn finalize(&mut self) {} + + fn visit_concrete_type( + &mut self, + _mode: TreeTraversalMode, + con_type: &mut ConcreteType, + symbol_table: &mut SymbolTable, + ) -> Result { + match con_type { + ConcreteType::Tuple { + name, + namespace, + data_layout, + } => { + let _ = namespace.visit(self, symbol_table)?; + self.push_namespace(namespace.qualified_name()?); + + let _ = name.visit(self, symbol_table)?; + let qualified_name = name.qualified_name()?; + + symbol_table.declare_type(&qualified_name)?; + + // Backgwards compatibility support + // TODO: Enable and disable this with flag + + self.current_type = Some(qualified_name); + let _ = data_layout.visit(self, symbol_table)?; + + self.current_type = None; + + self.pop_namespace(); + } + ConcreteType::Variant { + name, + namespace, + data_layout, + } => { + let _ = namespace.visit(self, symbol_table)?; + self.push_namespace(namespace.qualified_name()?); + + let _ = name.visit(self, symbol_table)?; + let qualified_name = name.qualified_name()?; + + symbol_table.declare_type(&qualified_name)?; + + // Backgwards compatibility support + // TODO: Enable and disable this with flag + // TODO: Check error + let _ = symbol_table.declare_alias(&name.unresolved, &qualified_name); + + self.current_type = Some(qualified_name); + let _ = data_layout.visit(self, symbol_table)?; + + self.current_type = None; + self.pop_namespace(); + } + } + Ok(TraversalResult::SkipChildren) + } + + fn visit_contract_field( + &mut self, + _mode: TreeTraversalMode, + field: &mut ContractField, + symbol_table: &mut SymbolTable, + ) -> Result { + let _ = field.namespace.visit(self, symbol_table)?; + self.push_namespace(field.namespace.qualified_name()?); + + field.variable.visit(self, symbol_table)?; + field.initializer.visit(self, symbol_table)?; + + self.pop_namespace(); + Ok(TraversalResult::SkipChildren) + } + + fn visit_enum_value( + &mut self, + _mode: TreeTraversalMode, + enum_value: &mut EnumValue, + symbol_table: &mut SymbolTable, + ) -> Result { + if let Some(return_type) = self.current_type.clone() { + self.push_namespace(return_type.clone().to_string()); + let _ = enum_value.name.visit(self, symbol_table)?; + + let resolved_name = if let Some(resolved_name) = &enum_value.name.resolved { + resolved_name.to_string() + } else { + return Err(format!( + "Could not resolve symbol for {}", + enum_value.name.unresolved + )); + }; + + // Creating alias for legacy reasons + symbol_table + .aliases + .insert(enum_value.name.unresolved.clone(), resolved_name.clone()); + + self.pop_namespace(); + + // TODO: Work out whehter we should attempt to resolve the type right away? + let mut arguments: Vec = Vec::new(); + if let Some(data) = &mut enum_value.data { + let _ = data.visit(self, symbol_table)?; + if let Some(resolved_type) = &data.resolved { + arguments.push(resolved_type.to_string()); + } + } + + symbol_table.declare_constructor(&resolved_name, &arguments, &return_type)?; + + // TODO: Set the constructor function signature and alias + + Ok(TraversalResult::SkipChildren) + } else { + Err( + "Internal error: Unable to determine the type which is currently being defined." + .to_string(), + ) + } + } + + fn visit_tuple( + &mut self, + _mode: TreeTraversalMode, + _tuple: &mut Tuple, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_variant( + &mut self, + _mode: TreeTraversalMode, + _variant: &mut Variant, + _symbol_table: &mut SymbolTable, + ) -> Result { + // Pass through deliberate + Ok(TraversalResult::Continue) + } + + fn visit_variable_declaration( + &mut self, + _mode: TreeTraversalMode, + _var_dec: &mut VariableDeclaration, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_concrete_function( + &mut self, + _mode: TreeTraversalMode, + fnc: &mut ConcreteFunction, + symbol_table: &mut SymbolTable, + ) -> Result { + let _ = fnc.namespace.visit(self, symbol_table)?; + self.push_namespace(fnc.namespace.qualified_name()?); + + let _ = fnc.name.visit(self, symbol_table)?; + let qualified_name = fnc.name.qualified_name()?; + + let mut args_types: Vec = Vec::new(); + for arg in fnc.arguments.iter_mut() { + arg.visit(self, symbol_table)?; + args_types.push(arg.typename.qualified_name()?); + } + + // TODO: Get return type from body if not set in the definition + fnc.body.visit(self, symbol_table)?; + + // Declaring + let qualified_name = format!("{}::<{}>", qualified_name, args_types.join(",")); + let return_type = "TODO"; + symbol_table.declare_function_type(&qualified_name, &args_types, return_type)?; + + self.current_type = None; + self.pop_namespace(); + + Ok(TraversalResult::SkipChildren) + } + + fn visit_symbol_kind( + &mut self, + _mode: TreeTraversalMode, + _kind: &mut IrIndentifierKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_symbol_name( + &mut self, + _mode: TreeTraversalMode, + symbol: &mut IrIdentifier, + symbol_table: &mut SymbolTable, + ) -> Result { + match symbol.kind { + IrIndentifierKind::BlockLabel | IrIndentifierKind::Namespace => { + symbol.resolved = Some(symbol.unresolved.clone()); + } + _ => { + if symbol.is_definition { + if let Some(namespace) = &self.current_namespace { + let typename = + format!("{}{}{}", namespace, NAMESPACE_SEPARATOR, symbol.unresolved) + .to_string(); + symbol.resolved = Some(typename.clone()); + } else { + symbol.resolved = Some(symbol.unresolved.clone()); + } + } else if let Some(resolved_name) = + symbol_table.resolve_qualified_name(&symbol.unresolved, &self.current_namespace) + { + // TODO: Consider whether this is needed. + // It appears that currently this is only triggered + // by builtin type defintions which really ought to have + // is_definition = true + symbol.resolved = Some(resolved_name); + } + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn visit_primitives( + &mut self, + mode: TreeTraversalMode, + _primitives: &mut IntermediateRepresentation, + _symbol_table: &mut SymbolTable, + ) -> Result { + match mode { + TreeTraversalMode::Enter => (), + TreeTraversalMode::Exit => { + panic!("Not handled."); + } + } + Ok(TraversalResult::Continue) + } + + fn visit_function_body( + &mut self, + _mode: TreeTraversalMode, + _function_body: &mut FunctionBody, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_kind( + &mut self, + _mode: TreeTraversalMode, + _function_kind: &mut FunctionKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_operation( + &mut self, + _mode: TreeTraversalMode, + _operation: &mut Operation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_instruction( + &mut self, + _mode: TreeTraversalMode, + _instr: &mut Instruction, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_block( + &mut self, + _mode: TreeTraversalMode, + _block: &mut FunctionBlock, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + fn visit_case_clause( + &mut self, + _mode: TreeTraversalMode, + _con_function: &mut CaseClause, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } +} diff --git a/products/bluebell/core/src/passes/debug_printer.rs b/products/bluebell/core/src/passes/debug_printer.rs new file mode 100644 index 000000000..823989938 --- /dev/null +++ b/products/bluebell/core/src/passes/debug_printer.rs @@ -0,0 +1,495 @@ +use scilla_parser::ast::{TraversalResult, TreeTraversalMode}; + +use crate::intermediate_representation::{ + pass::IrPass, + pass_executor::PassExecutor, + primitives::{ + CaseClause, ConcreteFunction, ConcreteType, ContractField, EnumValue, FunctionBlock, + FunctionBody, FunctionKind, Instruction, IntermediateRepresentation, IrIdentifier, + IrIndentifierKind, Operation, Tuple, VariableDeclaration, Variant, + }, + symbol_table::SymbolTable, +}; + +pub struct DebugPrinter { + script: String, +} + +impl IrPass for DebugPrinter { + fn initiate(&mut self) { + self.script = "".to_string(); + } + + fn finalize(&mut self) {} + + fn visit_symbol_kind( + &mut self, + _mode: TreeTraversalMode, + kind: &mut IrIndentifierKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + match kind { + IrIndentifierKind::TemplateFunctionName => self.script.push_str("!!"), + IrIndentifierKind::StaticFunctionName => self.script.push_str("@!"), + IrIndentifierKind::FunctionName => self.script.push_str("@"), + IrIndentifierKind::TransitionName => self.script.push_str("@"), + IrIndentifierKind::ProcedureName => self.script.push_str("@"), + IrIndentifierKind::ExternalFunctionName => self.script.push_str("@"), + IrIndentifierKind::TypeName => self.script.push_str("%"), + IrIndentifierKind::ComponentName => self.script.push_str("@"), + IrIndentifierKind::Event => self.script.push_str("@"), + IrIndentifierKind::Namespace => self.script.push_str("@"), + IrIndentifierKind::BlockLabel => self.script.push_str(":"), + IrIndentifierKind::ContextResource => self.script.push_str("~"), + IrIndentifierKind::VirtualRegister => self.script.push_str("%"), + IrIndentifierKind::VirtualRegisterIntermediate => self.script.push_str("%"), + IrIndentifierKind::Memory => self.script.push_str("%"), + IrIndentifierKind::State => self.script.push_str("#"), + + IrIndentifierKind::Unknown => self.script.push_str("?"), + } + Ok(TraversalResult::SkipChildren) + } + fn visit_symbol_name( + &mut self, + mode: TreeTraversalMode, + symbol: &mut IrIdentifier, + _symbol_table: &mut SymbolTable, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + match symbol.kind { + IrIndentifierKind::FunctionName + | IrIndentifierKind::TemplateFunctionName + | IrIndentifierKind::StaticFunctionName + | IrIndentifierKind::TransitionName + | IrIndentifierKind::ProcedureName + | IrIndentifierKind::ExternalFunctionName + | IrIndentifierKind::TypeName + | IrIndentifierKind::BlockLabel + | IrIndentifierKind::Namespace => { + return Ok(TraversalResult::Continue); + } + _ => (), + } + + if let Some(name) = &symbol.type_reference { + self.script.push_str(&name); + } else { + self.script.push_str("(untyped)"); + } + self.script.push_str(" "); + } + TreeTraversalMode::Exit => { + self.script.push_str(&symbol.qualified_name()?); + } + } + Ok(TraversalResult::Continue) + } + + fn visit_enum_value( + &mut self, + _mode: TreeTraversalMode, + enum_value: &mut EnumValue, + symbol_table: &mut SymbolTable, + ) -> Result { + self.script.push_str(" "); + let _ = enum_value.name.visit(self, symbol_table)?; + + if let Some(data) = &mut enum_value.data { + self.script.push_str(" : "); + let _ = data.visit(self, symbol_table)?; + } + + self.script.push_str(",\n"); + Ok(TraversalResult::SkipChildren) + } + + fn visit_tuple( + &mut self, + _mode: TreeTraversalMode, + tuple: &mut Tuple, + symbol_table: &mut SymbolTable, + ) -> Result { + for field in tuple.fields.iter_mut() { + self.script.push_str(" "); + let _ = field.visit(self, symbol_table)?; + self.script.push_str(",\n"); + } + Ok(TraversalResult::SkipChildren) + } + + fn visit_variant( + &mut self, + _mode: TreeTraversalMode, + _variant: &mut Variant, + _symbol_table: &mut SymbolTable, + ) -> Result { + // Pass through deliberate + Ok(TraversalResult::Continue) + } + + fn visit_variable_declaration( + &mut self, + _mode: TreeTraversalMode, + var_dec: &mut VariableDeclaration, + symbol_table: &mut SymbolTable, + ) -> Result { + var_dec.name.visit(self, symbol_table)?; + self.script.push_str(" : "); + var_dec.typename.visit(self, symbol_table)?; + Ok(TraversalResult::SkipChildren) + } + + fn visit_operation( + &mut self, + _mode: TreeTraversalMode, + operation: &mut Operation, + symbol_table: &mut SymbolTable, + ) -> Result { + match operation { + Operation::TerminatingRef(identifier) => { + self.script.push_str("; unused variable "); + identifier.visit(self, symbol_table)?; + } + Operation::Noop => { + self.script.push_str("noop"); + } + Operation::Jump(identifier) => { + self.script.push_str("jmp "); + identifier.visit(self, symbol_table)?; + } + Operation::ConditionalJump { + expression, + on_success, + on_failure, + } => { + self.script.push_str("jmp_if "); + expression.visit(self, symbol_table)?; + self.script.push_str(" "); + on_success.visit(self, symbol_table)?; + self.script.push_str(" "); + on_failure.visit(self, symbol_table)?; + } + Operation::MemLoad => self.script.push_str("mload [TODO]"), + Operation::MemStore => self.script.push_str("mstore [TODO]"), + Operation::StateLoad { address } => { + self.script.push_str("sload "); + match &address.name.resolved { + Some(n) => self.script.push_str(&n), + None => self.script.push_str("UNRESOLVED"), + } + } + Operation::StateStore { + address: _, + value: _, + } => self.script.push_str("sstore [TODO]"), + + Operation::IsEqual { left, right } => { + self.script.push_str("eq "); + left.visit(self, symbol_table)?; + self.script.push_str(" "); + right.visit(self, symbol_table)?; + } + Operation::CallFunction { name, arguments } + | Operation::CallExternalFunction { name, arguments } => { + self.script.push_str("call "); + name.visit(self, symbol_table)?; + self.script.push_str("( "); + for (i, arg) in arguments.iter_mut().enumerate() { + if i > 0 { + self.script.push_str(", "); + } + arg.visit(self, symbol_table)?; + } + self.script.push_str(" )"); + } + + Operation::CallStaticFunction { + name, + owner: _, + arguments, + } => { + // TODO: Support for owner + + self.script.push_str("call "); + name.visit(self, symbol_table)?; + self.script.push_str("( "); + + for (i, arg) in arguments.iter_mut().enumerate() { + if i > 0 { + self.script.push_str(", "); + } + arg.visit(self, symbol_table)?; + } + self.script.push_str(" )"); + } + Operation::CallMemberFunction { + name: _, + owner: _, + arguments: _, + } => unimplemented!(), + Operation::ResolveSymbol { symbol } => { + symbol.visit(self, symbol_table)?; + } + Operation::ResolveContextResource { symbol } => { + symbol.visit(self, symbol_table)?; + } + + Operation::Literal { data, typename } => { + typename.visit(self, symbol_table)?; + self.script.push_str(" "); + self.script.push_str(&data); + } + Operation::PhiNode(arguments) => { + self.script.push_str("phi ["); + for (i, arg) in arguments.iter_mut().enumerate() { + if i > 0 { + self.script.push_str(", "); + } + arg.visit(self, symbol_table)?; + } + self.script.push_str("]"); + } + Operation::Return(arg) => { + self.script.push_str("return"); + match arg { + Some(r) => { + self.script.push_str(" "); + r.visit(self, symbol_table)?; + } + &mut None => { + self.script.push_str(" void"); + } + }; + } + Operation::Revert(arg) => { + self.script.push_str("revert"); + match arg { + Some(r) => { + self.script.push_str(" "); + r.visit(self, symbol_table)?; + } + &mut None => todo!(), + }; + } + } + Ok(TraversalResult::SkipChildren) + } + + fn visit_instruction( + &mut self, + _mode: TreeTraversalMode, + instr: &mut Instruction, + symbol_table: &mut SymbolTable, + ) -> Result { + self.script.push_str(" "); + if let Some(name) = &mut instr.ssa_name { + name.visit(self, symbol_table)?; + self.script.push_str(" = "); + } + + if let Some(rettype) = &mut instr.result_type { + rettype.visit(self, symbol_table)?; + self.script.push_str(" "); + } + + let _ = instr.operation.visit(self, symbol_table)?; + + self.script.push_str("\n"); + + Ok(TraversalResult::SkipChildren) + } + + fn visit_function_block( + &mut self, + _mode: TreeTraversalMode, + block: &mut FunctionBlock, + symbol_table: &mut SymbolTable, + ) -> Result { + block.name.visit(self, symbol_table)?; + self.script.push_str(":"); + self.script.push_str("\n ;; arguments:"); + for arg in &block.block_arguments { + self.script.push_str(" "); + self.script.push_str(&arg); + self.script.push_str(","); + } + self.script.push_str("\n ;; enters_from:"); + for arg in &block.enters_from { + self.script.push_str(" "); + self.script.push_str(&arg); + self.script.push_str(","); + } + self.script.push_str("\n ;; exits_to:"); + for arg in &block.exits_to { + self.script.push_str(" "); + self.script.push_str(&arg); + self.script.push_str(","); + } + + self.script.push_str("\n ;; jump args:"); + for (name, args) in &block.jump_required_arguments { + self.script.push_str("\n ;; * "); + self.script.push_str(&name); + for arg in args { + self.script.push_str("\n ;; - "); + self.script.push_str(&arg); + } + } + + self.script.push_str("\n"); + for instr in block.instructions.iter_mut() { + instr.visit(self, symbol_table)?; + } + self.script.push_str("\n"); + Ok(TraversalResult::SkipChildren) + } + + fn visit_function_body( + &mut self, + _mode: TreeTraversalMode, + function_body: &mut FunctionBody, + symbol_table: &mut SymbolTable, + ) -> Result { + for block in &mut function_body.blocks { + block.visit(self, symbol_table)?; + } + Ok(TraversalResult::SkipChildren) + } + + fn visit_concrete_type( + &mut self, + _mode: TreeTraversalMode, + con_type: &mut ConcreteType, + symbol_table: &mut SymbolTable, + ) -> Result { + match con_type { + ConcreteType::Tuple { + name, + data_layout, + namespace: _, + } => { + self.script.push_str("tuple "); + let _ = name.visit(self, symbol_table)?; + self.script.push_str(" = (\n"); + let _ = data_layout.visit(self, symbol_table)?; + self.script.push_str(")\n"); + } + ConcreteType::Variant { + name, + data_layout, + namespace: _, + } => { + self.script.push_str("tagged_union "); + let _ = name.visit(self, symbol_table)?; + self.script.push_str(" = {\n"); + let _ = data_layout.visit(self, symbol_table)?; + self.script.push_str("}\n"); + } + } + Ok(TraversalResult::SkipChildren) + } + + fn visit_contract_field( + &mut self, + _mode: TreeTraversalMode, + _function_kind: &mut ContractField, + _symbol_table: &mut SymbolTable, + ) -> Result { + self.script + .push_str(";; TODO: field emitter not implemented!\n"); + Ok(TraversalResult::Continue) + } + + fn visit_function_kind( + &mut self, + _mode: TreeTraversalMode, + function_kind: &mut FunctionKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + match function_kind { + FunctionKind::Procedure => { + self.script.push_str("procedure"); + } + FunctionKind::Transition => { + self.script.push_str("transition"); + } + FunctionKind::Function => { + self.script.push_str("function"); + } + } + + Ok(TraversalResult::SkipChildren) + } + + fn visit_concrete_function( + &mut self, + _mode: TreeTraversalMode, + fnc: &mut ConcreteFunction, + symbol_table: &mut SymbolTable, + ) -> Result { + let _ = fnc.function_kind.visit(self, symbol_table)?; + + self.script.push_str(" "); + let _ = fnc.name.visit(self, symbol_table)?; + self.script.push_str("("); + for (i, arg) in fnc.arguments.iter_mut().enumerate() { + if i > 0 { + self.script.push_str(", "); + } + let _ = arg.visit(self, symbol_table)?; + } + self.script.push_str(") : "); + if let Some(rt) = &mut fnc.return_type { + self.script.push_str("(TODO)"); + self.script.push_str(&rt); + // rt.visit(self, symbol_table) + } else { + self.script.push_str("(untyped)"); + } + self.script.push_str(" {\n"); + + fnc.body.visit(self, symbol_table)?; + self.script.push_str("}\n"); + Ok(TraversalResult::SkipChildren) + } + + fn visit_primitives( + &mut self, + mode: TreeTraversalMode, + _primitives: &mut IntermediateRepresentation, + _symbol_table: &mut SymbolTable, + ) -> Result { + match mode { + TreeTraversalMode::Enter => { + // TODO: Emit scilla version etc + unimplemented!() + } + TreeTraversalMode::Exit => {} + } + + Ok(TraversalResult::Continue) + } + + fn visit_case_clause( + &mut self, + _mode: TreeTraversalMode, + _con_function: &mut CaseClause, + _symbol_table: &mut SymbolTable, + ) -> Result { + unimplemented!() + } +} + +impl DebugPrinter { + pub fn new() -> Self { + DebugPrinter { + script: "".to_string(), + } + } + + pub fn value(&self) -> String { + self.script.clone() + } +} diff --git a/products/bluebell/core/src/passes/mod.rs b/products/bluebell/core/src/passes/mod.rs new file mode 100644 index 000000000..d502b4440 --- /dev/null +++ b/products/bluebell/core/src/passes/mod.rs @@ -0,0 +1,6 @@ +pub mod annotate_base_types; +pub mod balance_block_args; +pub mod block_dependencies; +pub mod collect_type_definitions; +pub mod debug_printer; +pub mod state_allocator; diff --git a/products/bluebell/core/src/passes/state_allocator.rs b/products/bluebell/core/src/passes/state_allocator.rs new file mode 100644 index 000000000..5790b8360 --- /dev/null +++ b/products/bluebell/core/src/passes/state_allocator.rs @@ -0,0 +1,221 @@ +use primitive_types::U256; +use scilla_parser::ast::{TraversalResult, TreeTraversalMode}; + +use crate::intermediate_representation::{ + pass::IrPass, + pass_executor::PassExecutor, + primitives::{ + CaseClause, ConcreteFunction, ConcreteType, ContractField, EnumValue, FunctionBlock, + FunctionBody, FunctionKind, Instruction, IntermediateRepresentation, IrIdentifier, + IrIndentifierKind, Operation, Tuple, VariableDeclaration, Variant, + }, + symbol_table::{StateLayoutEntry, SymbolTable}, +}; + +pub struct StateCollector { + namespace_stack: Vec, + current_namespace: Option, + // current_type: Option, + address_offset: u64, +} + +impl StateCollector { + pub fn new() -> Self { + StateCollector { + namespace_stack: Vec::new(), + current_namespace: None, + // current_type: None, + address_offset: 4919, // TODO: + } + } + + fn push_namespace(&mut self, namespace: String) { + self.namespace_stack.push(namespace.clone()); + self.current_namespace = Some(namespace); + } + + fn pop_namespace(&mut self) { + let _ = self.namespace_stack.pop(); + if let Some(namespace) = &self.namespace_stack.last() { + self.current_namespace = Some(namespace.to_string()); + } else { + self.current_namespace = None; + } + } +} + +impl IrPass for StateCollector { + fn initiate(&mut self) {} + fn finalize(&mut self) {} + + fn visit_concrete_type( + &mut self, + _mode: TreeTraversalMode, + _con_type: &mut ConcreteType, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_contract_field( + &mut self, + _mode: TreeTraversalMode, + field: &mut ContractField, + symbol_table: &mut SymbolTable, + ) -> Result { + let _ = field.namespace.visit(self, symbol_table)?; + self.push_namespace(field.namespace.qualified_name()?); + + field.variable.visit(self, symbol_table)?; + field.initializer.visit(self, symbol_table)?; + + let name = match &field.variable.name.resolved { + Some(n) => n, + None => { + return Err("Failed to resolve name for contract field.".to_string()); + } + }; + + let address = U256::from(self.address_offset); + let initializer = U256::from(0); + self.address_offset += 1; + + let state = StateLayoutEntry { + address_offset: address, + size: 1, // TODO: + initializer, + }; + + symbol_table.state_layout.insert(name.to_string(), state); + // TODO: Register type of. + + self.pop_namespace(); + Ok(TraversalResult::Continue) + } + + fn visit_enum_value( + &mut self, + _mode: TreeTraversalMode, + _enum_value: &mut EnumValue, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_tuple( + &mut self, + _mode: TreeTraversalMode, + _tuple: &mut Tuple, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_variant( + &mut self, + _mode: TreeTraversalMode, + _variant: &mut Variant, + _symbol_table: &mut SymbolTable, + ) -> Result { + // Pass through deliberate + Ok(TraversalResult::Continue) + } + + fn visit_variable_declaration( + &mut self, + _mode: TreeTraversalMode, + _var_dec: &mut VariableDeclaration, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_concrete_function( + &mut self, + _mode: TreeTraversalMode, + _fnc: &mut ConcreteFunction, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_symbol_kind( + &mut self, + _mode: TreeTraversalMode, + _kind: &mut IrIndentifierKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_symbol_name( + &mut self, + _mode: TreeTraversalMode, + _symbol: &mut IrIdentifier, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_primitives( + &mut self, + _mode: TreeTraversalMode, + _primitives: &mut IntermediateRepresentation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_body( + &mut self, + _mode: TreeTraversalMode, + _function_body: &mut FunctionBody, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_kind( + &mut self, + _mode: TreeTraversalMode, + _function_kind: &mut FunctionKind, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_operation( + &mut self, + _mode: TreeTraversalMode, + _operation: &mut Operation, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_instruction( + &mut self, + _mode: TreeTraversalMode, + _instr: &mut Instruction, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + + fn visit_function_block( + &mut self, + _mode: TreeTraversalMode, + _block: &mut FunctionBlock, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } + fn visit_case_clause( + &mut self, + _mode: TreeTraversalMode, + _con_function: &mut CaseClause, + _symbol_table: &mut SymbolTable, + ) -> Result { + Ok(TraversalResult::Continue) + } +} diff --git a/products/bluebell/core/src/support/evm.rs b/products/bluebell/core/src/support/evm.rs new file mode 100644 index 000000000..66de08df5 --- /dev/null +++ b/products/bluebell/core/src/support/evm.rs @@ -0,0 +1,84 @@ +use evm_assembly::{ + compiler_context::EvmCompilerContext, executable::EvmExecutable, executor::EvmExecutor, +}; +use scilla_parser::{ + ast::nodes::NodeProgram, + parser::{lexer, lexer::Lexer, parser}, +}; + +use crate::{ + evm_bytecode_generator::EvmBytecodeGenerator, + intermediate_representation::{ + emitter::IrEmitter, pass_manager::PassManager, symbol_table::SymbolTableConstructor, + }, + support::modules::BluebellModule, +}; + +pub struct EvmCompiler { + pub context: EvmCompilerContext, + pass_manager: PassManager, + abi_support: bool, +} + +impl EvmCompiler { + pub fn new() -> Self { + EvmCompiler { + context: EvmCompilerContext::new(), + pass_manager: PassManager::default_pipeline(), + abi_support: true, + } + } + + pub fn new_no_abi_support() -> Self { + EvmCompiler { + context: EvmCompilerContext::new(), + pass_manager: PassManager::default_pipeline(), + abi_support: false, + } + } + + pub fn pass_manager_mut(&mut self) -> &mut PassManager { + &mut self.pass_manager + } + + pub fn attach(&mut self, module: &dyn BluebellModule) { + module.attach(&mut self.context); + } + + pub fn compile(&mut self, script: String) -> Result { + let mut errors: Vec = [].to_vec(); + let lexer = Lexer::new(&script); + let parser = parser::ProgramParser::new(); + let ast = match parser.parse(&mut errors, lexer) { + Ok(ast) => ast, + Err(error) => { + let message = format!("Syntax error {:?}", error); + return Err(message.to_string()); + } + }; + + self.compile_ast(&ast) + } + + // TODO: Remove &mut self - needs to be removed from a number of places first + pub fn compile_ast(&mut self, ast: &NodeProgram) -> Result { + let symbol_table = self.context.new_symbol_table(); + let mut ir_emitter = IrEmitter::new(symbol_table); + let mut ir = ir_emitter.emit(ast)?; + self.pass_manager.run(&mut ir)?; + + let mut generator = EvmBytecodeGenerator::new(&mut self.context, ir, self.abi_support); + + generator.build_executable() + } + + pub fn executable_from_ast(&mut self, ast: &NodeProgram) -> Result { + let executable = self.compile_ast(ast)?; + Ok(EvmExecutor::new(&self.context, executable)) + } + + pub fn executable_from_script(&mut self, script: String) -> Result { + let executable = self.compile(script)?; + Ok(EvmExecutor::new(&self.context, executable)) + } +} diff --git a/products/bluebell/core/src/support/mod.rs b/products/bluebell/core/src/support/mod.rs new file mode 100644 index 000000000..0b3e0264a --- /dev/null +++ b/products/bluebell/core/src/support/mod.rs @@ -0,0 +1,5 @@ +// pub mod evm; + +pub mod evm; +// pub mod llvm; +pub mod modules; diff --git a/products/bluebell/core/src/support/modules.rs b/products/bluebell/core/src/support/modules.rs new file mode 100644 index 000000000..928ff4437 --- /dev/null +++ b/products/bluebell/core/src/support/modules.rs @@ -0,0 +1,620 @@ +use std::{ + collections::{BTreeSet, HashMap}, + mem, + str::FromStr, +}; + +use evm::{ + backend::Backend, + executor::stack::{PrecompileFailure, PrecompileOutput, PrecompileOutputType}, + Context as EvmContext, ExitError, ExitSucceed, +}; +use evm_assembly::{block::EvmBlock, compiler_context::EvmCompilerContext, types::EvmType}; +use log::info; + +use crate::intermediate_representation::{ + name_generator::NameGenerator, + symbol_table::{SymbolTable, SymbolTableConstructor}, +}; + +// TODO: Generalize to support both EVM and LLVM + +pub trait BluebellModule { + fn attach(&self, context: &mut EvmCompilerContext); +} + +impl SymbolTableConstructor for EvmCompilerContext { + fn new_symbol_table(&self) -> SymbolTable { + let type_of_table = HashMap::new(); + + let mut ret = SymbolTable { + aliases: HashMap::new(), + type_of_table, + name_generator: NameGenerator::new(), + state_layout: HashMap::new(), + }; + + // TODO: Get types from self + let _ = ret.declare_type("Int8"); + let _ = ret.declare_type("Int16"); + let _ = ret.declare_type("Int32"); + let _ = ret.declare_type("Int64"); + let _ = ret.declare_type("Uint8"); + let _ = ret.declare_type("Uint16"); + let _ = ret.declare_type("Uint32"); + let _ = ret.declare_type("Uint64"); + let _ = ret.declare_type("String"); + let _ = ret.declare_type("ByStr20"); + + let _ = ret.declare_special_variable("_sender", "ByStr20"); + + ret.aliases + .insert("True".to_string(), "Bool::True".to_string()); + ret.aliases + .insert("False".to_string(), "Bool::False".to_string()); + let _ = ret.declare_constructor("Bool::True", &[].to_vec(), "Bool"); + let _ = ret.declare_constructor("Bool::False", &[].to_vec(), "Bool"); + + // Adding function types + for (name, (args, return_type)) in self.raw_function_declarations.iter() { + // info!("Declaring {:#?}",f); + let _ = ret.declare_function_type(&name, args, &return_type); + } + + ret + } +} + +pub struct ScillaDefaultTypes; +impl BluebellModule for ScillaDefaultTypes { + // TODO: Generalise to support both LLVM and EVM + fn attach(&self, context: &mut EvmCompilerContext) { + context.declare_integer("Bool", 1); + context.declare_integer("Int8", 8); + context.declare_integer("Int16", 16); + context.declare_integer("Int32", 32); + context.declare_integer("Int64", 64); + context.declare_integer("Int128", 128); + context.declare_integer("Int256", 256); + context.declare_unsigned_integer("Uint8", 8); + context.declare_unsigned_integer("Uint16", 16); + context.declare_unsigned_integer("Uint32", 32); + context.declare_unsigned_integer("Uint64", 64); + context.declare_unsigned_integer("Uint128", 128); + context.declare_unsigned_integer("Uint256", 256); + + for i in 0..=32 { + context.declare_unsigned_integer(&format!("ByStr{}", i), i * 8); + } + + context.declare_dynamic_string("String"); + + context.declare_default_constructor("Bool::False", |block| { + block.push([0].to_vec()); + }); + context.declare_default_constructor("Bool::True", |block| { + block.push([1].to_vec()); + }); + + // TODO: Functions to be moved out to another + } +} + +pub struct ScillaDebugBuiltins; +impl BluebellModule for ScillaDebugBuiltins { + fn attach(&self, specification: &mut EvmCompilerContext) { + let _ = specification + .declare_function("builtin__print::<>", Vec::new(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + info!("\n"); + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + 0, + )) + } + + custom_runtime + }); + + let _ = specification + .declare_function("print::", ["Uint64"].to_vec(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + if input.len() >= 8 { + let last_8 = &input[input.len() - 8..]; + let v = u64::from_be_bytes([ + last_8[0], last_8[1], last_8[2], last_8[3], last_8[4], last_8[5], + last_8[6], last_8[7], + ]); + info!("{}", format!("{}", v)); + } + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + 0, + )) + } + + custom_runtime + }); + + // TODO: Make runtime module that does this for the real chain + let _ = specification + .declare_function("__intrinsic_accept_transfer::<>", Vec::new(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + info!("--- ACCEPTING FUNDS [DEBUG FUNCTION] ---"); + println!("--- ACCEPTING FUNDS [DEBUG FUNCTION] ---"); + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + 0, + )) + } + + custom_runtime + }); + + let _ = specification + .declare_function("print::", ["ByStr20"].to_vec(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + info!("{}", hex::encode(input)); + + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + 0, + )) + } + + custom_runtime + }); + + let _ = specification + .declare_function("print::", ["String"].to_vec(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + assert!(input.len() > 32); + let (head, tail) = input.split_at(32); + let location_bytes = head[28..].try_into().expect(""); + let location = u32::from_be_bytes(location_bytes) as usize; + assert_eq!(location, 0x20); + + let length_bytes = tail[0..4] + .try_into() + .expect("Failed to extract string length"); + let length = u32::from_be_bytes(length_bytes) as usize; + + assert!(length <= (tail.len() - 4).try_into().unwrap()); + let s = &tail[4..]; + + assert_eq!(length, s.len()); + match std::str::from_utf8(&s) { + Ok(v) => info!("{}", v), + Err(_) => panic!( + "While panicking: Failed to decode '{}'", + format!("{}\n", hex::encode(input)) + ), + }; + + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + 0, + )) + } + + custom_runtime + }); + let _ = specification + .declare_function("panic::", ["String"].to_vec(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + assert!(input.len() > 32); + let (head, tail) = input.split_at(32); + let location_bytes = head[28..].try_into().expect(""); + let location = u32::from_be_bytes(location_bytes) as usize; + assert_eq!(location, 0x20); + + let length_bytes = tail[0..4] + .try_into() + .expect("Failed to extract string length"); + let length = u32::from_be_bytes(length_bytes) as usize; + + assert!(length <= (tail.len() - 4).try_into().unwrap()); + let s = &tail[4..]; + + assert_eq!(length, s.len()); + match std::str::from_utf8(&s) { + Ok(v) => panic!("{}", v), + Err(_) => panic!( + "While panicking: Failed to decode '{}'", + format!("{}\n", hex::encode(input)) + ), + }; + } + + custom_runtime + }); + + let _ = specification + .declare_function("print::", ["Bool"].to_vec(), "Uint256") + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + _gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + info!("Was here??"); + + if input.iter().all(|&byte| byte == 0) { + info!("false"); + } else { + info!("true"); + } + + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + 0, + )) + } + + custom_runtime + }); + + let _ = specification.declare_inline_generics("builtin__print", |ctx, block, arg_types| { + let mut ret: Vec = Vec::new(); + for arg in arg_types { + let signature = match ctx.get_function(&format!("builtin__print__impl::<{}>", arg)) + { + Some(s) => s, + None => panic!("Internal error: Unable to retrieve function"), + }; + let subcall_arg_types: Vec = [arg.clone()].to_vec(); + // TODO: There is some issue with this function + /* + MVP error: + scilla_version 0 + + library HelloWorld + type Bool = + | True + | False + + contract HelloWorld() + + transition setHello (msg : Uint64) + is_owner = True; + match is_owner with + | True => + x = builtin print msg + end + end + */ + // TODO: In the event of string, this is not one to one + if arg == "String" { + // Putting string onto stack so it is accessible to our precompile function + block.dup1(); // Duplicate to preserve base address for loop + + block.mload(); + block.push_u32(256 - 32); + block.shr(); // Stack now contains size of string + + block.push([0x04].to_vec()); // Offset / counter + + block.jump_to("loop_start"); + + let mut loop_start = EvmBlock::new(None, BTreeSet::new(), "loop_start"); + let mut loop_body = EvmBlock::new(None, BTreeSet::new(), "loop_body"); + let mut loop_end = EvmBlock::new(None, BTreeSet::new(), "loop_end"); + + loop_start.dup2(); + loop_start.dup2(); + loop_start.gt(); + loop_start.jump_if_to("loop_end"); + loop_start.jump_to("loop_body"); + + loop_body.dup3(); // Duplicating base address + loop_body.dup2(); // Counter / offset + loop_body.add(); + loop_body.mload(); + loop_body.call( + signature, + subcall_arg_types + .iter() + .map(|s| EvmType::from_str(s).unwrap()) + .collect(), + ); + loop_body.pop(); // Removing result + + loop_body.push([0x20].to_vec()); // Incrementing counter + loop_body.add(); + loop_body.jump_to("loop_start"); + + loop_end.pop(); // Remove counter + loop_end.pop(); // Removing size + loop_end.pop(); // Removing base address + + // End block becomes the new main block + mem::swap(block, &mut loop_end); + + ret.push(loop_end); + ret.push(loop_start); + ret.push(loop_body); + } else { + block.call( + signature, + subcall_arg_types + .iter() + .map(|s| EvmType::from_str(s).unwrap()) + .collect(), + ); + // block.swap1(); // Moving the result so it does not get popped + block.pop(); // Removing result + } + + block.pop(); // Removing the argument that was to be printed + } + + Ok(ret) + }); + } +} + +pub struct ScillaDefaultBuiltins; +impl BluebellModule for ScillaDefaultBuiltins { + // TODO: Generalise to support both LLVM and EVM + + fn attach(&self, specification: &mut EvmCompilerContext) { + let _ = specification + .declare_function( + "builtin__fibonacci::", + ["Uint256", "Uint256"].to_vec(), + "Uint256", + ) + .attach_runtime(|| { + fn custom_runtime( + input: &[u8], + gas_limit: Option, + _context: &EvmContext, + _backend: &dyn Backend, + _is_static: bool, + ) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + let gas_needed = 20; + + if let Some(gas_limit) = gas_limit { + if gas_limit < gas_needed { + return Err(PrecompileFailure::Error { + exit_status: ExitError::OutOfGas, + }); + } + } + + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + gas_needed, + )) + } + + custom_runtime + }); + + let _ = specification + .declare_function( + "builtin__eq::", + ["Uint64", "Uint64"].to_vec(), + "Bool", + ) + .attach_assembly(|block| { + block.eq(); + }); + + let _ = specification + .declare_function( + "builtin__eq::", + ["Uint64", "Uint64"].to_vec(), + "Bool", + ) + .attach_assembly(|block| { + block.eq(); + }); + + // Memory management + /* + let _ = specification.declare_inline_generics("alloca", |_ctx, block, arg_types| { + // size + block.push + block.add(); + Ok(()) + }); + */ + + let _ = specification.declare_special_variable("_sender", "ByStr20", |_ctx, block| { + block.external_caller(); + Ok([].to_vec()) + }); + + // Assuming you have a 'specification' object available... + // Implementing `add`: + let _ = specification.declare_inline_generics("builtin__add", |_ctx, block, _arg_types| { + // TODO: Check that the number of arguments is two and otherwise return an error + block.add(); + Ok([].to_vec()) + }); + + // Implementing `sub`: + let _ = specification.declare_inline_generics("builtin__sub", |_ctx, block, _arg_types| { + block.sub(); + Ok([].to_vec()) + }); + + // Implementing `mul`: + let _ = specification.declare_inline_generics("builtin__mul", |_ctx, block, _arg_types| { + block.mul(); + Ok([].to_vec()) + }); + + // Implementing `div`: + let _ = specification.declare_inline_generics("builtin__div", |_ctx, block, _arg_types| { + block.div(); + Ok([].to_vec()) + }); + + // Implementing `rem`: + let _ = specification.declare_inline_generics("builtin__rem", |_ctx, block, _arg_types| { + block.smod(); // smod might be the appropriate EVM instruction for remainder, but verify with EVM docs. + Ok([].to_vec()) + }); + + // Implementing comparison builtins: + let _ = specification.declare_inline_generics("builtin__lt", |_ctx, block, _arg_types| { + block.lt(); + Ok([].to_vec()) + }); + + let _ = specification.declare_inline_generics("builtin__lte", |_ctx, block, _arg_types| { + block.dup2(); + block.dup2(); + block.lt(); + block.eq(); + block.or(); + + Ok([].to_vec()) + }); + + let _ = specification.declare_inline_generics("builtin__gt", |_ctx, block, _arg_types| { + block.gt(); + Ok([].to_vec()) + }); + + let _ = specification.declare_inline_generics("builtin__gte", |_ctx, block, _arg_types| { + block.dup2(); + block.dup2(); + block.gt(); + block.eq(); + block.or(); + + Ok([].to_vec()) + }); + + // Implementing boolean builtins: + let _ = specification.declare_inline_generics("builtin__and", |_ctx, block, _arg_types| { + block.and(); + Ok([].to_vec()) + }); + + let _ = specification.declare_inline_generics("builtin__orb", |_ctx, block, _arg_types| { + block.or(); + Ok([].to_vec()) + }); + + let _ = + specification.declare_inline_generics("builtin__notb", |_ctx, block, _arg_types| { + block.not(); + Ok([].to_vec()) + }); + + // Implementing cryptographic builtins: + let _ = specification.declare_inline_generics( + "builtin__sha256hash", + |_ctx, _block, _arg_types| { + // block.external_sha256(); + // Ok(()) + unimplemented!() + }, + ); + + let _ = specification.declare_inline_generics( + "builtin__keccak256hash", + |_ctx, block, _arg_types| { + block.external_sha3(); + Ok([].to_vec()) + }, + ); + + let _ = specification.declare_inline_generics( + "builtin__ripemd160hash", + |_ctx, _block, _arg_types| { + // block.external_ripemd160(); + // Ok(()) + unimplemented!() + }, + ); + + let _ = specification.declare_inline_generics( + "builtin__schnorr_sign", + |_ctx, _block, _arg_types| { + // EVM doesn't natively support Schnorr; you'd need to call a precompiled contract or use an external lib. + // For now, just placing a placeholder. + // block.schnorr_sign(); + unimplemented!() + }, + ); + + let _ = specification.declare_inline_generics( + "builtin__schnorr_verify", + |_ctx, _block, _arg_types| { + // Same as schnorr_sign, EVM doesn't natively support Schnorr. + // block.schnorr_verify(); + unimplemented!() + }, + ); + } +} diff --git a/products/bluebell/core/src/testing.rs b/products/bluebell/core/src/testing.rs new file mode 100644 index 000000000..68ac57418 --- /dev/null +++ b/products/bluebell/core/src/testing.rs @@ -0,0 +1,176 @@ +use std::{rc::Rc, str::FromStr}; + +use evm_assembly::{ + executable::EvmExecutable, observable_machine::ObservableMachine, types::EvmTypeValue, +}; +use primitive_types::H256; +use serde_json; + +use crate::support::{ + evm::EvmCompiler, + modules::{ScillaDebugBuiltins, ScillaDefaultBuiltins, ScillaDefaultTypes}, +}; + +pub fn create_vm_and_run_code( + function_name: &str, + args: &str, + source: String, + initial_storage: &str, +) -> (ObservableMachine, EvmExecutable) { + let mut compiler = EvmCompiler::new(); + compiler.pass_manager_mut().enable_debug_printer(); + + let default_types = ScillaDefaultTypes {}; + let default_builtins = ScillaDefaultBuiltins {}; + let debug = ScillaDebugBuiltins {}; + + compiler.attach(&default_types); + compiler.attach(&default_builtins); + compiler.attach(&debug); + + let executor = compiler + .executable_from_script(source) + .expect("Failed to compile source"); + + let code = executor.executable.bytecode.clone(); + let arguments: Vec = if args == "" { + [].to_vec() + } else { + serde_json::from_str(&args).expect("Failed to deserialize arguments") + }; + + let data: Rc> = { + executor + .context + .get_function(&function_name) + .expect(&format!("Function name {} not found", function_name).to_string()) + .generate_transaction_data(arguments) + .into() + }; + + let source_map = executor.executable.get_source_map(); + let mut vm = ObservableMachine::new(Rc::new(code), data, 1024, 10000, None); + vm.set_source_map(&source_map); + + let initial_storage: Vec<&str> = initial_storage.lines().collect(); + for record in initial_storage { + let record = record.trim_start(); + if record.len() == 0 { + continue; + } + let parts: Vec<&str> = record.split(":").map(|s| s.trim()).collect(); + if parts.len() != 2 { + panic!( + "Invalid storage record format. Expected 'key: value', got '{}'", + record + ); + } + + let key = H256::from_str(&format_hex_string(parts[0]).expect("Invalid key")) + .expect(&format!("Failed to parse key from '{}'", parts[0])); + let value = H256::from_str(&format_hex_string(parts[1]).expect("Invalid value")) + .expect(&format!("Failed to parse value from '{}'", parts[1])); + + vm.storage.insert(key, value); + } + + vm.run(); + + (vm, executor.executable) +} + +fn format_hex_string(input: &str) -> Result { + if !input.starts_with("0x") { + return Err("String does not start with 0x prefix"); + } + + if input.contains("...") { + // 66 = 2 for "0x" + 64 for H256 + let required_zeros: i64 = 66 - input.len() as i64 + 3; // +3 for the length of "..." + + if required_zeros < 0 { + return Err("Input string is too long to be a valid H256 value."); + } + + let zeros = "0".repeat(required_zeros as usize); + Ok(input.replace("...", &zeros)) + } else { + Ok(input.to_string()) + } +} + +pub fn test_execution_path( + entry: &str, + args: &str, + source: &str, + initial_storage: &str, + storage_checks: &str, +) { + // 1. Extract lines with *:> and their line numbers + let lines: Vec<&str> = source.lines().collect(); + let mut expected_visited_lines = Vec::new(); + let mut expected_not_visited_lines = Vec::new(); + let mut cleaned_code = String::new(); + + for (index, line) in lines.iter().enumerate() { + if line.starts_with("--|") { + expected_not_visited_lines.push(index); + cleaned_code.push_str(&line.replace("--|", "")); + } else if line.starts_with("-->") { + expected_visited_lines.push(index); + cleaned_code.push_str(&line.replace("-->", "")); + } else { + cleaned_code.push_str(line); + } + cleaned_code.push('\n'); + } + + // 2. Compile and run the cleaned code + let (vm, _executable) = create_vm_and_run_code(entry, args, cleaned_code, initial_storage); + + // 3. Check if the expected lines were visited + for line in &expected_visited_lines { + if vm.did_not_visit_line((*line).try_into().unwrap()) { + println!("{:#?} vs {:#?}", vm.lines_visited, expected_visited_lines); + panic!("Expected line {} to be visited but it wasn't.", line); + } + } + + for line in &expected_not_visited_lines { + if vm.did_visit_line((*line).try_into().unwrap()) { + println!( + "{:#?} vs {:#?}", + vm.lines_visited, expected_not_visited_lines + ); + panic!("Expected line {} to be not visited but it was.", line); + } + } + + // 4. Check if the VM's storage contains the expected key-value pairs + let storage_checks: Vec<&str> = storage_checks.lines().collect(); + for check in storage_checks { + let check = check.trim_start(); + if check.len() == 0 { + continue; + } + let parts: Vec<&str> = check.split(":").map(|s| s.trim()).collect(); + if parts.len() != 2 { + panic!( + "Invalid storage check format. Expected 'key: value', got '{}'", + check + ); + } + + let key = H256::from_str(&format_hex_string(parts[0]).expect("Invalid key")) + .expect(&format!("Failed to parse key from '{}'", parts[0])); + let value = H256::from_str(&format_hex_string(parts[1]).expect("Invalid value")) + .expect(&format!("Failed to parse value from '{}'", parts[1])); + + if !vm.has_record(&key, &value) { + panic!( + "Storage check failed. Key '{}' does not have expected value '{}'.", + key, value + ); + } + } +} diff --git a/products/bluebell/core/tests/balance_transfer_tests.rs b/products/bluebell/core/tests/balance_transfer_tests.rs new file mode 100644 index 000000000..217a4a66d --- /dev/null +++ b/products/bluebell/core/tests/balance_transfer_tests.rs @@ -0,0 +1,26 @@ +#[cfg(test)] +mod tests { + + /* + TODO: + #[test] + fn test_visiting() { + test_execution_path( + "HelloWorld::setHello", + "[42]", + r#" + --| scilla_version 0 + --| library BalanceChecker + --| contract BalanceQuery() + --> transition CheckBalance() + --> current_balance <- _balance; + --> e = { _eventname : "ContractBalance"; current_balance : current_balance }; + --> event e + --| end + "#, + "", + "", + ); + } + */ +} diff --git a/products/bluebell/core/tests/data/formatter/formatted/001_constraint.scilla b/products/bluebell/core/tests/data/formatter/formatted/001_constraint.scilla new file mode 100644 index 000000000..ec7c10b92 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/001_constraint.scilla @@ -0,0 +1,5 @@ +scilla_version 0 + +library Constraint + +contract Constraint(param : Bool) with param => diff --git a/products/bluebell/core/tests/data/formatter/formatted/002_dead_code_test8.scilla b/products/bluebell/core/tests/data/formatter/formatted/002_dead_code_test8.scilla new file mode 100644 index 000000000..896ea8f3b --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/002_dead_code_test8.scilla @@ -0,0 +1,10 @@ +scilla_version 0 + +library Dead8 + +contract Dead8() + +transition Foo() + alive = True; + dead = alive +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/003_dead_code_test9.scilla b/products/bluebell/core/tests/data/formatter/formatted/003_dead_code_test9.scilla new file mode 100644 index 000000000..c3f6d5fc2 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/003_dead_code_test9.scilla @@ -0,0 +1,12 @@ +scilla_version 0 + +library Dead +type A = + | A +type B = + | B of A + +contract Dead() + +transition Foo(x : B) +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/004_type-definition-with-lists-in-constructors.scilla b/products/bluebell/core/tests/data/formatter/formatted/004_type-definition-with-lists-in-constructors.scilla new file mode 100644 index 000000000..360ada0be --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/004_type-definition-with-lists-in-constructors.scilla @@ -0,0 +1,7 @@ +scilla_version 0 + +library Test +type MultiSigWallet_MultiSigTransition = + | Msw_MultiSigTransition_Allow of (List ByStr20) + +contract Test() diff --git a/products/bluebell/core/tests/data/formatter/formatted/005_empty.scilla b/products/bluebell/core/tests/data/formatter/formatted/005_empty.scilla new file mode 100644 index 000000000..8cc64c547 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/005_empty.scilla @@ -0,0 +1,12 @@ +scilla_version 0 + +import BoolUtils +import IntUtils +import ListUtils +import NatUtils +import PairUtils + +contract Empty() + +transition dummy() +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/006_creationtest.scilla b/products/bluebell/core/tests/data/formatter/formatted/006_creationtest.scilla new file mode 100644 index 000000000..08d0cdc99 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/006_creationtest.scilla @@ -0,0 +1,8 @@ +scilla_version 0 + +contract Test() +field is_owner : ByStr20 = 0xabababababababababababababababababababab +field a : BNum = BNum 200 + +transition e() +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/007_address_list_as_cparam.scilla b/products/bluebell/core/tests/data/formatter/formatted/007_address_list_as_cparam.scilla new file mode 100644 index 000000000..8a526b8c5 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/007_address_list_as_cparam.scilla @@ -0,0 +1,4 @@ +scilla_version 0 + +contract T(x : List (ByStr20 with contract field f : Uint128 end)) +field f : List (ByStr20 with contract field f : Uint128 end) = x diff --git a/products/bluebell/core/tests/data/formatter/formatted/008_dead_code_test11.scilla b/products/bluebell/core/tests/data/formatter/formatted/008_dead_code_test11.scilla new file mode 100644 index 000000000..1eb51f5ae --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/008_dead_code_test11.scilla @@ -0,0 +1,18 @@ +scilla_version 0 + +library Dead +type A = + | A1 + | A2 +let a1 = A1 + +contract Dead() + +transition Foo() +end + +transition Bar(x : A) +end + +transition Baz() +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/009_addfunds.scilla b/products/bluebell/core/tests/data/formatter/formatted/009_addfunds.scilla new file mode 100644 index 000000000..e3bd73de1 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/009_addfunds.scilla @@ -0,0 +1,14 @@ +scilla_version 0 + +library SimpleImpl + +contract SimpleImpl() + +transition AddFunds(initiator : ByStr20) + accept; + e = { + _eventname : "Funds deposit "; + funder : initiator + }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/010_map_key_test.scilla b/products/bluebell/core/tests/data/formatter/formatted/010_map_key_test.scilla new file mode 100644 index 000000000..77964849a --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/010_map_key_test.scilla @@ -0,0 +1,16 @@ +scilla_version 0 + +library TestLib +type TestType = + | T of Uint128 + +contract Test() + +(* Legal *) +transition testMapKey5() + map = Emp String TestType; + k = "Hello"; + zero = Uint128 0; + v = T zero; + map2 = builtin put map k v +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/011_dead_code_test14.scilla b/products/bluebell/core/tests/data/formatter/formatted/011_dead_code_test14.scilla new file mode 100644 index 000000000..09f28c4bc --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/011_dead_code_test14.scilla @@ -0,0 +1,10 @@ +scilla_version 0 + +library UnusedLibraryEntryBug +let zero_address : ByStr20 = 0x0000000000000000000000000000000000000000 + +contract UnusedLibraryEntryBug() + +transition Foo() + maybe_contract_address <-& zero_address as ByStr20 with contract end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/012_dead_code_test10.scilla b/products/bluebell/core/tests/data/formatter/formatted/012_dead_code_test10.scilla new file mode 100644 index 000000000..5586f2bec --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/012_dead_code_test10.scilla @@ -0,0 +1,18 @@ +scilla_version 0 + +library Dead +(* There is nothing to report, because all the types are used in C which + is used in the `Foo` transition. *) +type A = + | A1 + | A2 +type B = + | B1 of A +type C = + | C + | C1 of B + +contract Dead() + +transition Foo(x : C) +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/013_map_as_cparam.scilla b/products/bluebell/core/tests/data/formatter/formatted/013_map_as_cparam.scilla new file mode 100644 index 000000000..f6c380769 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/013_map_as_cparam.scilla @@ -0,0 +1,4 @@ +scilla_version 0 + +contract T(x : Map (ByStr20 with contract field f : Uint128 end) (ByStr20 with contract field g : Bool end)) +field f : Map (ByStr20 with contract field f : Uint128 end) (ByStr20 with contract field g : Bool end) = x diff --git a/products/bluebell/core/tests/data/formatter/formatted/014_UintParam.scilla b/products/bluebell/core/tests/data/formatter/formatted/014_UintParam.scilla new file mode 100644 index 000000000..37ce9bb71 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/014_UintParam.scilla @@ -0,0 +1,13 @@ +scilla_version 0 + +library UintParam + +contract UintParam() + +transition Uint128Test(x : Uint128) + (* Do nothing. The test is whether negative parameters are rejected *) +end + +transition Uint256Test(x : Uint256) + (* Do nothing. The test is whether negative parameters are rejected *) +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/015_chainid.scilla b/products/bluebell/core/tests/data/formatter/formatted/015_chainid.scilla new file mode 100644 index 000000000..17305830d --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/015_chainid.scilla @@ -0,0 +1,16 @@ +scilla_version 0 + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld() + +transition EventChainID() + cid <-& CHAINID; + e = { + _eventname : "ChainID"; + chain_id : cid + }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/016_dead_code_test3.scilla b/products/bluebell/core/tests/data/formatter/formatted/016_dead_code_test3.scilla new file mode 100644 index 000000000..55e96abcc --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/016_dead_code_test3.scilla @@ -0,0 +1,22 @@ +scilla_version 0 + +library SimpleImplDead + +contract SimpleImplDead() + +procedure dead_procedure(o : Option Int32) + match o with + | Some dead_binder => + dead_binder = Int32 100; + v1 = dead_binder; + e = { + _eventname : "dead_procedure"; + dead_binder : v1 + }; + event e + | None => + end +end + +transition dummy() +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/017_listiter.scilla b/products/bluebell/core/tests/data/formatter/formatted/017_listiter.scilla new file mode 100644 index 000000000..cc40746d6 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/017_listiter.scilla @@ -0,0 +1,19 @@ +scilla_version 0 + +library Listiter +type LIAdt = + | LIC of ByStr20 Int32 + +contract ListIter() +field limap : Map ByStr20 Int32 = Emp ByStr20 Int32 + +procedure updateEntry(entry : LIAdt) + match entry with + | LIC addr val => + limap[addr] := val + end +end + +transition updateEntries(entries : List LIAdt) + forall entries updateEntry +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/018_timestamp.scilla b/products/bluebell/core/tests/data/formatter/formatted/018_timestamp.scilla new file mode 100644 index 000000000..91524d65c --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/018_timestamp.scilla @@ -0,0 +1,17 @@ +scilla_version 0 + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld() + +transition EventTimestamp() + bnum = BNum 100; + ts <-& TIMESTAMP( bnum ); + e = { + _eventname : "TS"; + timestamp : ts + }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/019_dead_code_test7.scilla b/products/bluebell/core/tests/data/formatter/formatted/019_dead_code_test7.scilla new file mode 100644 index 000000000..eb3d27688 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/019_dead_code_test7.scilla @@ -0,0 +1,23 @@ +scilla_version 0 + +library Dead7 +type Ty = + | Ty + +contract Dead7() + +transition Dead7() + address = 0x0000000000000000000000000000000000000000; + maybe_contract_address <-& address as ByStr20 with contract end; + match maybe_contract_address with + | None => + | Some _ => + ty = Ty; + code = Int32 -1; + e = { + _exception : "Error"; + code : code + }; + throw e + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/020_exception-example.scilla b/products/bluebell/core/tests/data/formatter/formatted/020_exception-example.scilla new file mode 100644 index 000000000..ff879a42b --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/020_exception-example.scilla @@ -0,0 +1,21 @@ +scilla_version 0 + +(* HelloWorld contract *) + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld() + +transition setHello(msg : String) + e = { + _exception : "SetHelloError"; + msg : msg + }; + throw e +end + +transition emptyThrow(msg : String) + throw +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/021_chain-call-balance-3.scilla b/products/bluebell/core/tests/data/formatter/formatted/021_chain-call-balance-3.scilla new file mode 100644 index 000000000..d98001202 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/021_chain-call-balance-3.scilla @@ -0,0 +1,23 @@ +scilla_version 0 + +library Test +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in Cons {Message} msg nil_msg + +contract Test() + +(* Just call contrB, passing contrC to it. Also pass on _amount. *) +transition c_noaccept() + m = { + _tag : ""; + _amount : Uint128 0; + _recipient : _this_address + }; + ml = one_msg m; + send ml +end + +transition simply_accept() + accept +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/022_dead_code_test12.scilla b/products/bluebell/core/tests/data/formatter/formatted/022_dead_code_test12.scilla new file mode 100644 index 000000000..553f8eb4b --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/022_dead_code_test12.scilla @@ -0,0 +1,26 @@ +scilla_version 0 + +library Dead12 +type A = + | A1 + (* A1 should be reported. A is used in the constructors of B, but all + occurrences of B is defined locally, so we see that A1 is unused. *) + | A2 +type B = + | B1 of A +let a2 = A2 + +contract Dead12() + +procedure foo(b : B) + match b with + | B1 (A1) => + (* Unreachable pattern *) + | B1 (A2) => + end +end + +transition bar() + b = B1 a2; + foo b +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/023_chain-call-balance-2.scilla b/products/bluebell/core/tests/data/formatter/formatted/023_chain-call-balance-2.scilla new file mode 100644 index 000000000..e91a451b6 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/023_chain-call-balance-2.scilla @@ -0,0 +1,24 @@ +scilla_version 0 + +library Test +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in Cons {Message} msg nil_msg + +contract Test() + +(* Just call contrB, passing contrC to it. Also pass on _amount. *) +transition b_accept_callC(addrC : ByStr20) + accept; + m = { + _tag : "c_noaccept"; + _amount : _amount; + _recipient : addrC + }; + ml = one_msg m; + send ml +end + +transition simply_accept() + accept +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/024_dead_code_test2.scilla b/products/bluebell/core/tests/data/formatter/formatted/024_dead_code_test2.scilla new file mode 100644 index 000000000..8df57a0ad --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/024_dead_code_test2.scilla @@ -0,0 +1,25 @@ +scilla_version 0 + +library SimpleImplDead + +contract SimpleImplDead() +field test_pattern : Option ByStr20 = None {ByStr20} + +transition AddFunds(initiator : ByStr20) + accept; + test_var <- test_pattern; + match test_var with + | Some dead_pattern => + e = { + _eventname : "Funds deposit "; + funder : initiator + }; + event e + | None => + e = { + _eventname : "Funds deposit "; + funder : initiator + }; + event e + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/025_procedure-return-1.scilla b/products/bluebell/core/tests/data/formatter/formatted/025_procedure-return-1.scilla new file mode 100644 index 000000000..c8f40f703 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/025_procedure-return-1.scilla @@ -0,0 +1,31 @@ +scilla_version 0 + +library Return1 + +let one = Uint32 1 + +contract Return1() + +field f : Uint32 = Uint32 0 + +procedure return_one() : Uint32 + a = one; + _return := a +end + +procedure id(x: Uint32) : Uint32 + _return := x +end + +procedure add(lhs: Uint32, rhs: Uint32) : Uint32 + s = builtin add lhs rhs; + _return := s +end + +transition f_add_one() + one = return_one; + f_cur <- f; + sum = add f_cur one; + sum_id = id sum; + f := sum +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/026_dead_code_test13.scilla b/products/bluebell/core/tests/data/formatter/formatted/026_dead_code_test13.scilla new file mode 100644 index 000000000..278962257 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/026_dead_code_test13.scilla @@ -0,0 +1,31 @@ +scilla_version 0 + +library Dead13 +type A = + | A1 + | A2 +(* unused *) +(* unused constructor but used ADT *) +type B = + | B1 +(* unused constructor but used ADT *) +type C = + | C +let a1 = A1 +let opt = + tfun 'A => + fun (default : 'A) => + fun (input : Option 'A) => + match input with + | Some v => v + | None => default + end +let opt_a1 = + let f = @opt A in f a1 +let opt_b = @opt B +let opt_c = @opt C + +contract Dead13() + +transition foo() +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/027_chain-call-balance-1.scilla b/products/bluebell/core/tests/data/formatter/formatted/027_chain-call-balance-1.scilla new file mode 100644 index 000000000..09787d8ef --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/027_chain-call-balance-1.scilla @@ -0,0 +1,25 @@ +scilla_version 0 + +library Test +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in Cons {Message} msg nil_msg + +contract Test() + +(* Just call contrB, passing contrC to it. Also pass on _amount. *) +transition a_accept_callBcallC(addrB : ByStr20, addrC : ByStr20) + accept; + m = { + _tag : "b_accept_callC"; + _amount : _amount; + _recipient : addrB; + addrC : addrC + }; + ml = one_msg m; + send ml +end + +transition simply_accept() + accept +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/028_shadow_import.scilla b/products/bluebell/core/tests/data/formatter/formatted/028_shadow_import.scilla new file mode 100644 index 000000000..bd7d9475d --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/028_shadow_import.scilla @@ -0,0 +1,23 @@ +scilla_version 0 + +import ListUtils + +library ResolverLib +let imported_list_length = list_length +let list_length = + fun (x : List Uint128) => x + +contract Resolver() +field len : Uint32 = Uint32 0 +field other_len : List Uint128 = Nil {Uint128} + +transition T() + n = Nil {Uint128}; + zero = Uint128 0; + l = Cons {Uint128} zero n; + imported_lengther = @imported_list_length Uint128; + len_tmp = imported_lengther l; + len := len_tmp; + other_len_tmp = list_length l; + other_len := other_len_tmp +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/029_callgraph2.scilla b/products/bluebell/core/tests/data/formatter/formatted/029_callgraph2.scilla new file mode 100644 index 000000000..aa5735ded --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/029_callgraph2.scilla @@ -0,0 +1,25 @@ +scilla_version 0 + +library Callgraph2 +let one32 = Uint32 1 +let one64 = Uint64 1 +let none32 = None {Uint32} +let none64 = None {Uint64} +let option_value = + tfun 'A => + fun (default : 'A) => + fun (v : Option 'A) => + match v with + | Some v => v + | None => default + end +let option_uint32 = @option_value Uint32 +let option_uint64 = @option_value Uint64 +let option_uint64_alias = option_uint64 + +contract Callgraph2() + +transition tr1(a : Uint32) + r1 = option_uint32 one32 none32; + r2 = option_uint64_alias one64 none64 +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/030_dead_code_test4.scilla b/products/bluebell/core/tests/data/formatter/formatted/030_dead_code_test4.scilla new file mode 100644 index 000000000..4c49d2eca --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/030_dead_code_test4.scilla @@ -0,0 +1,37 @@ +scilla_version 0 + +library Dead4 + +contract Dead4() +field z1 : Uint32 = Uint32 1 +field z2 : Uint32 = Uint32 2 + +transition dummy1(b : Bool) + x = Uint32 0; + match b with + (* The following x definition would be deemed dead *) + | True => + x = Uint32 1 + | False => + end; + e = { + _eventname : "Foo"; + x : x + }; + event e +end + +transition dummy2() + (* The first x Load statement should be dead *) + x <- z1; + x <- z2; + (* The first let expression to x is dead *) + y = + let x_ = Uint32 1 in + let x_ = x in x_; + e = { + _eventname : "Foo"; + x : y + }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/031_addfunds_proxy.scilla b/products/bluebell/core/tests/data/formatter/formatted/031_addfunds_proxy.scilla new file mode 100644 index 000000000..13500e5bd --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/031_addfunds_proxy.scilla @@ -0,0 +1,33 @@ +scilla_version 0 + +library SimpleProxy + +let one_msg = + fun (m: Message) => + let e = Nil {Message} in Cons {Message} m e + +contract SimpleProxy(init_implementation : ByStr20) +field implementation: ByStr20 = init_implementation + +transition AddFunds() + current_impl <- implementation; + accept; + msg = { + _tag: "AddFunds"; + _recipient: current_impl; + _amount: _amount; + initiator: _sender + }; + msgs = one_msg msg; + send msgs +end + +transition SelfAddFunds() + accept; + e = { + _eventname : "Self Add Funds deposit " + funder : _sender; + amount: _amount + }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/032_dead_code_test6.scilla b/products/bluebell/core/tests/data/formatter/formatted/032_dead_code_test6.scilla new file mode 100644 index 000000000..45e110dfc --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/032_dead_code_test6.scilla @@ -0,0 +1,31 @@ +scilla_version 0 + +library Dead6 +(* OtherError is dead. *) +type Error = + | InternalError + | OtherError +let mk_error_event = + fun (err : Error) => + let err_code = + match err with + | InternalError => Uint32 1 + | OtherError => Uint32 2 + end in { + _eventname : "Error"; + err_code : err_code + } + +contract Dead6() + +(* Procedure receives an `Error` type, but this is a constant defined in +the transition. So, OtherError is dead. *) +procedure Event(err : Error) + err_e = mk_error_event err; + event err_e +end + +transition dummy() + error = InternalError; + Event error +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/033_dead_code_test5.scilla b/products/bluebell/core/tests/data/formatter/formatted/033_dead_code_test5.scilla new file mode 100644 index 000000000..c7e654fed --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/033_dead_code_test5.scilla @@ -0,0 +1,38 @@ +scilla_version 0 + +library Dead5 + +(* OtherError is dead. *) +type Error = + | InternalError + | OtherError +let internal_error = InternalError + +let mk_error_event = + fun (err: Error) => + let err_code = + match err with + | InternalError => Uint32 1 + | OtherError => Uint32 2 + end in + { _eventname: "Error" + ; err_code: err_code } + +(* TestType and T are used. *) +type TestType = + | T of Uint128 + +contract Dead5() + +transition dummy1 () + err_e = mk_error_event internal_error; + event err_e +end + +transition dummy2 () + map = Emp String TestType; + k = "Hello"; + zero = Uint128 0; + v = T zero; + map2 = builtin put map k v +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/034_codehash.scilla b/products/bluebell/core/tests/data/formatter/formatted/034_codehash.scilla new file mode 100644 index 000000000..314d64594 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/034_codehash.scilla @@ -0,0 +1,34 @@ +scilla_version 0 + +contract Codehash() + +transition foo(addr : ByStr20 with _codehash end) + bar <- &addr._codehash; + e = { _eventname : "Success"; bar : bar }; + event e +end + +transition foo2(addr : ByStr20) + addr_ <- &addr as ByStr20 with _codehash end; + match addr_ with + | Some addr__ => + bar <- &addr__._codehash; + e = { _eventname : "Success"; bar : bar }; + event e + | None => + e = { _eventname : "Failure" }; + event e + end +end + +transition foo3(addr : ByStr20 with library end) + bar <- &addr._codehash; + e = { _eventname : "Success"; bar : bar }; + event e +end + +transition foo4(addr : ByStr20 with contract end) + bar <- &addr._codehash; + e = { _eventname : "Success"; bar : bar }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/035_polymorphic_address.scilla b/products/bluebell/core/tests/data/formatter/formatted/035_polymorphic_address.scilla new file mode 100644 index 000000000..385d3ef5a --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/035_polymorphic_address.scilla @@ -0,0 +1,28 @@ +scilla_version 0 + +import ListUtils + +library AddressListTraversalLib + +let f : forall 'A. (ByStr20 with contract field x : Uint128, field f : 'A end) -> (ByStr20 with contract field f : 'A, field x : Uint128 end) = + tfun 'A => + fun (x : ByStr20 with contract field x : Uint128, field f : 'A end) => x + +contract AddressListTraversal() + +field res_1 : Uint32 = Uint32 0 +field res_2 : Uint128 = Uint128 0 + +transition Test1 (param1 : ByStr20 with contract field f : Uint32, field x : Uint128 end) + f_spec = @f Uint32; + p1 = f_spec param1; + res <-& p1.f; + res_1 := res +end + +transition Test2 (param1 : ByStr20 with contract field f : Uint128, field x : Uint128 end) + f_spec = @f Uint128; + p1 = f_spec param1; + res <-& p1.f; + res_2 := res +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/036_multiple-msgs.scilla b/products/bluebell/core/tests/data/formatter/formatted/036_multiple-msgs.scilla new file mode 100644 index 000000000..fbe6bf0cd --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/036_multiple-msgs.scilla @@ -0,0 +1,35 @@ +scilla_version 0 + +(* HelloWorld contract *) + +import ListUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library HelloWorld +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in Cons {Message} msg nil_msg + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld() + +transition multipleMsgs() + msg1 = { + _tag : ""; + _recipient : _sender; + _amount : Uint128 0 + }; + msg2 = { + _tag : ""; + _recipient : _sender; + _amount : Uint128 0 + }; + msgs1 = one_msg msg1; + msgs2 = Cons {Message} msg2 msgs1; + send msgs2 +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/037_one-msg.scilla b/products/bluebell/core/tests/data/formatter/formatted/037_one-msg.scilla new file mode 100644 index 000000000..a64ebdb56 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/037_one-msg.scilla @@ -0,0 +1,36 @@ +scilla_version 0 + +(* HelloWorld contract *) + +import ListUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library HelloWorld + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld +() + + +transition onemsg() + msg1 = {_tag : ""; _recipient : _sender; _amount : Uint128 0}; + msg2 = {_tag : ""; _recipient : _sender; _amount : Uint128 0}; + msgs1 = one_msg msg1; + msgs2 = Cons {Message} msg2 msgs1; + match msgs2 with + | Cons _ m1 => + send m1 + | _ => + send msgs1 + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/038_replicate.scilla b/products/bluebell/core/tests/data/formatter/formatted/038_replicate.scilla new file mode 100644 index 000000000..b832b53df --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/038_replicate.scilla @@ -0,0 +1,31 @@ +scilla_version 0 + +contract Foo () + +transition rep (bar : ByStr20 with contract end) + foo = { _replicate_contract : "" }; + foo_addr <-& REPLICATE_CONTRACT (bar, foo); + e = { _eventname : "Replicated"; new_addr : foo_addr }; + event e +end + +transition cfdeploy (cfaddr : ByStr20 with contract end) + owner = _sender; + max_block = BNum 100; + goal = Uint128 1000; + m = { _replicate_contract : ""; owner : owner; max_block : max_block; goal : goal }; + newcf_addr <-& REPLICATE_CONTRACT (cfaddr, m); + e = { _eventname : "Replicated"; new_addr : newcf_addr }; + event e +end + +transition cfdeploy_incorrect (cfaddr : ByStr20 with contract end) + owner = _sender; + (* This is incorrect, max_block must be BNum. *) + max_block = Uint32 100; + goal = Uint128 1000; + m = { _replicate_contract : ""; owner : owner; max_block : max_block; goal : goal }; + newcf_addr <-& REPLICATE_CONTRACT (cfaddr, m); + e = { _eventname : "Replicated"; new_addr : newcf_addr }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/039_ecdsa.scilla b/products/bluebell/core/tests/data/formatter/formatted/039_ecdsa.scilla new file mode 100644 index 000000000..5e0b9828a --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/039_ecdsa.scilla @@ -0,0 +1,41 @@ +scilla_version 0 + +import PairUtils + +library Ecdsa + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let fst_f = @fst (ByStr32) (ByStr33) +let snd_f = @snd (ByStr32) (ByStr33) + +contract Ecdsa +() + +field pub_key : Option (ByStr33) = None {ByStr33} + +transition verify(msg : ByStr, sig : ByStr64) + pubk_o <- pub_key; + match pubk_o with + | Some pubk => + sig = builtin ecdsa_verify pubk msg sig; + match sig with + | True => + m = { _tag : ""; _recipient : _sender; _amount : Uint128 0; status : "verification successful" }; + mone = one_msg m; + send mone + | False => + m = { _tag : ""; _recipient : _sender; _amount : Uint128 0; status : "verification failed" }; + mone = one_msg m; + send mone + end + | None => + (* We don't have a key-pair. *) + m = { _tag : ""; _recipient : _sender; _amount : Uint128 0; status : "no key error" }; + mone = one_msg m; + send mone + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/040_schnorr.scilla b/products/bluebell/core/tests/data/formatter/formatted/040_schnorr.scilla new file mode 100644 index 000000000..b98226c7f --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/040_schnorr.scilla @@ -0,0 +1,41 @@ +scilla_version 0 + +import PairUtils + +library Schnorr + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let fst_f = @fst (ByStr32) (ByStr33) +let snd_f = @snd (ByStr32) (ByStr33) + +contract Schnorr +() + +field pub_key : Option (ByStr33) = None {ByStr33} + +transition verify(msg : ByStr, sig : ByStr64) + pubk_o <- pub_key; + match pubk_o with + | Some pubk => + sig = builtin schnorr_verify pubk msg sig; + match sig with + | True => + m = { _tag : ""; _recipient : _sender; _amount : Uint128 0; status : "verification successful" }; + mone = one_msg m; + send mone + | False => + m = { _tag : ""; _recipient : _sender; _amount : Uint128 0; status : "verification failed" }; + mone = one_msg m; + send mone + end + | None => + (* We don't have a key-pair. *) + m = { _tag : ""; _recipient : _sender; _amount : Uint128 0; status : "no key error" }; + mone = one_msg m; + send mone + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/041_one-msg1.scilla b/products/bluebell/core/tests/data/formatter/formatted/041_one-msg1.scilla new file mode 100644 index 000000000..b8a4d4076 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/041_one-msg1.scilla @@ -0,0 +1,36 @@ +scilla_version 0 + +(* HelloWorld contract *) + +import ListUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library HelloWorld + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld +() + +(* While this transition indeed sends only one message, the "one_msg" *) +(* static analysis does not track message lists wrapped in ADTs *) +transition onemsg() + msg1 = {_tag : ""; _recipient : _sender; _amount : Uint128 0}; + msg2 = {_tag : ""; _recipient : _sender; _amount : Uint128 0}; + msgs1 = one_msg msg1; + msgs2 = one_msg msg2; + msgs2 = Pair {(List Message) (List Message)} msgs1 msgs2; + match msgs2 with + | Pair m1 m2 => + send m1 + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/042_callgraph1.scilla b/products/bluebell/core/tests/data/formatter/formatted/042_callgraph1.scilla new file mode 100644 index 000000000..4fe351802 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/042_callgraph1.scilla @@ -0,0 +1,73 @@ +scilla_version 0 + +library Callgraph1 + +let lib_var = Uint32 42 + +let id = fun (a: Uint32) => a +let id_alias = id +let id_alias2 = id_alias + +(* Unused binds must not be present on a CG. *) +let id_alias_unused1 = id +let id_alias_unused2 = id_alias + +(* Redefinition must not create extra nodes. *) +let id_alias_unused_redef = id +let id_alias_unused_redef = id_alias + +(* A function with undirect calls. *) +let lib_fn = + fun (a: Uint32) => + let res1 = id_alias a in + let res2 = id_alias2 a in + res2 + +contract Callgraph1() + +procedure pr1() + accept +end + +procedure pr2(a: Uint32) + res = lib_fn a; + pr1 +end + +procedure pr3(a_opt: Option Uint32) + match a_opt with + | Some a => pr2 a + | None => pr1 + end +end + +procedure pr4(l: List Uint32) + forall l pr2 +end + +transition tr1(a: Uint32) + res = id_alias a; + pr2 res +end + +transition tr2(a: Option Uint32) + match a with + | Some _ => + | None => pr3 a + end +end + +transition tr3(l: List Uint32) + forall l pr2; + pr4 l +end + +transition tr4(a: Uint32) + res1 = id_alias a; + pr2 res1; + res2 = id_alias a; + pr2 res2; + pr2 res2; + res3 = id_alias a; + pr2 res3 +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/043_ping.scilla b/products/bluebell/core/tests/data/formatter/formatted/043_ping.scilla new file mode 100644 index 000000000..693179202 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/043_ping.scilla @@ -0,0 +1,51 @@ +scilla_version 0 + +library PingPong + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract Ping + +(* No immutable parameters *) +() + +(* Mutable fields *) +field count : Int32 = Int32 2 +field pong_addr : Option ByStr20 = None {ByStr20} + +transition Ping () + one = Int32 1; + paOpt <- pong_addr; + match paOpt with + | Some pongAddr => + cnt <- count; + is_game_over = builtin lt cnt one; + match is_game_over with + | True => + msg = {_eventname : "GameOver"}; + event msg + | False => + deccount = builtin sub cnt one; + count := deccount; + msg = {_tag : "Pong"; _recipient : pongAddr; _amount : Uint128 0}; + msgs = one_msg msg; + send msgs; + e = {_eventname : "CallingPong"}; + event e + end + | None => + msg = {_eventname : "AddressNotSet"}; + event msg + end +end + +transition SetPongAddr (pongAddr : ByStr20) + paOpt = Some {ByStr20} pongAddr; + pong_addr := paOpt +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/044_pong.scilla b/products/bluebell/core/tests/data/formatter/formatted/044_pong.scilla new file mode 100644 index 000000000..aacf3dc9a --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/044_pong.scilla @@ -0,0 +1,51 @@ +scilla_version 0 + +library PingPong + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract Pong + +(* No immutable parameters *) +() + +(* Mutable fields *) +field count : Int32 = Int32 2 +field ping_addr : Option ByStr20 = None {ByStr20} + +transition Pong () + one = Int32 1; + paOpt <- ping_addr; + match paOpt with + | Some pingAddr => + cnt <- count; + is_game_over = builtin lt cnt one; + match is_game_over with + | True => + msg = {_eventname : "GameOver"}; + event msg + | False => + deccount = builtin sub cnt one; + count := deccount; + msg = {_tag : "Ping"; _recipient : pingAddr; _amount : Uint128 0}; + msgs = one_msg msg; + send msgs; + e = {_eventname : "CallingPing"}; + event e + end + | None => + msg = {_eventname : "AddressNotSet"}; + event msg + end +end + +transition SetPingAddr (pingAddr : ByStr20) + paOpt = Some {ByStr20} pingAddr; + ping_addr := paOpt +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/045_import-test-lib3.scilla b/products/bluebell/core/tests/data/formatter/formatted/045_import-test-lib3.scilla new file mode 100644 index 000000000..c0bd31917 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/045_import-test-lib3.scilla @@ -0,0 +1,40 @@ +scilla_version 0 + +(* Import shape: + * + * 0x555256789012345678901234567890123456abef (TestLib7) _ + * | \ + * | \ + * 0x666256789012345678901234567890123456abef (TestLib8) | + * | | + * | | + * | 0x777256789012345678901234567890123456abef (TestLib9) + * | / + * | __________________________/ + * contract +*) + +import TestLib8 TestLib9 + +library ContractLib + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +contract ImportTestLib3() + +transition TestNestedImport () + recipient = 0x123456789abcdef123456789abcdef123456789a; + (* TestLib8 exposes a BaseType value 0. *) + (* TestLib9 exposes a BaseType lifter function. *) + v = lift_base_type base_value; + (* Check that we can send both base_value and v *) + (* Also check that v = 0 *) + msg = { _tag : "" ; _recipient : recipient ; _amount : Uint128 0 ; + int_param : v ; + base_param : base_value }; + msgs = one_msg msg; + send msgs +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/046_ud-proxy.scilla b/products/bluebell/core/tests/data/formatter/formatted/046_ud-proxy.scilla new file mode 100644 index 000000000..21c85cdf0 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/046_ud-proxy.scilla @@ -0,0 +1,69 @@ +scilla_version 0 + +import BoolUtils ListUtils + +library HoldingLib + +let true = True +let nilMessage = Nil {Message} + +let oneMsg = + fun(msg: Message) => + Cons {Message} msg nilMessage + +let eAdminSet = + fun(address: ByStr20) => + fun(isApproved: Bool) => + {_eventname: "AdminSet"; address: address; isApproved: isApproved} + +let eError = {_eventname: "Error"} + +contract Admin + +(initialAdmin: ByStr20, registry: ByStr20) + +field admins: Map ByStr20 Bool = + let empty = Emp ByStr20 Bool in + builtin put empty initialAdmin true + +transition setAdmin(address: ByStr20, isApproved: Bool) + maybeAdmin <- admins[_sender]; + + isSenderAdmin = + match maybeAdmin with + | Some approval => approval + | None => False + end; + + match isSenderAdmin with + | True => + admins[address] := isApproved; + + e = eAdminSet address isApproved; + event e + | False => + event eError + end +end + +transition bestow(label: String, owner: ByStr20, resolver: ByStr20) + maybeAdmin <- admins[_sender]; + + isSenderAdmin = + match maybeAdmin with + | Some isAdmin => isAdmin + | None => False + end; + + match isSenderAdmin with + | True => + msgs = + let m = {_tag: "bestow"; _recipient: registry; _amount: Uint128 0; + label: label; owner: owner; resolver: resolver} in + oneMsg m; + send msgs + | False => + event eError + end +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/047_helloWorld.scilla b/products/bluebell/core/tests/data/formatter/formatted/047_helloWorld.scilla new file mode 100644 index 000000000..531d70250 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/047_helloWorld.scilla @@ -0,0 +1,60 @@ +scilla_version 0 + +(* HelloWorld contract *) + +import ListUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library HelloWorld + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let not_owner_code = Int32 1 +let set_hello_code = Int32 2 + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract HelloWorld +(owner: ByStr20) + +field welcome_msg : String = "" + +transition setHello (msg : String) + is_owner = builtin eq owner _sender; + match is_owner with + | False => + e = {_eventname : "setHello()"; code : not_owner_code}; + event e + | True => + welcome_msg := msg; + e = {_eventname : "setHello()"; code : set_hello_code}; + event e + end +end + + +transition getHello () + r <- welcome_msg; + e = {_eventname: "getHello()"; msg: r}; + event e +end + +transition multipleMsgs() + msg1 = {_tag : ""; _recipient : _sender; _amount : Uint128 0}; + msg2 = {_tag : ""; _recipient : _sender; _amount : Uint128 0}; + msgs1 = one_msg msg1; + msgs2 = Cons {Message} msg2 msgs1; + send msgs2 +end + +transition contrAddr() + msg1 = {_eventname : "ContractAddress"; addr : _this_address }; + event msg1 +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/048_address_list_traversal.scilla b/products/bluebell/core/tests/data/formatter/formatted/048_address_list_traversal.scilla new file mode 100644 index 000000000..f0b35352d --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/048_address_list_traversal.scilla @@ -0,0 +1,44 @@ +scilla_version 0 + +import ListUtils + +library AddressListTraversalLib + +let f : (ByStr20 with contract end) + -> (ByStr20 with contract end) + -> (ByStr20 with contract end) + -> List (ByStr20 with contract end) = + fun (x : ByStr20 with contract end) => + fun (y : ByStr20 with contract end) => + fun (z : ByStr20 with contract end) => + let n = Nil {ByStr20 with contract end} in + let c1 = Cons {ByStr20 with contract end} x n in + let c2 = Cons {ByStr20 with contract end} y c1 in + Cons {ByStr20 with contract end} z c2 + +contract AddressListTraversal(cparam : ByStr20 with end) + +field res_list : List (ByStr20 with end) = Nil {ByStr20 with end} +field res_mem : Bool = False + +transition Test1 (param1 : ByStr20 with contract field f : Uint32 end, + param2 : ByStr20 with contract field g : Uint128 end, + param3 : ByStr20 with contract end) + l = f param1 param2 param3; + fold = @list_foldl (ByStr20 with end) (List (ByStr20 with end)); + iter_f = fun (acc : List (ByStr20 with end)) => fun (x : ByStr20 with end) => Cons {ByStr20 with end} x acc ; + init = Nil {ByStr20 with end}; + res = fold iter_f init l; + res_list := res +end + +transition Test2 (param1 : ByStr20 with contract field f : Uint32 end, + param2 : ByStr20 with contract field g : Uint128 end, + param3 : ByStr20 with contract end) + l = f param1 param2 param3; + mem = @list_mem (ByStr20 with end); + eq_x = fun (x : ByStr20 with end) => fun (y : ByStr20 with end) => builtin eq x y; + res = mem eq_x _sender l; + res_mem := res +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/049_cfinvoke.scilla b/products/bluebell/core/tests/data/formatter/formatted/049_cfinvoke.scilla new file mode 100644 index 000000000..fc24c9cd4 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/049_cfinvoke.scilla @@ -0,0 +1,61 @@ +scilla_version 0 + +library CrowdFundingInvoke + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract CrowdFundingInvoke + +(* Parameters *) +(cfaddr : ByStr20, (* address of the crowdfunding contract *) + owner : ByStr20) (* address of the owner of this contract *) + +transition Main () + accept; + msg = {_tag : ""; _recipient : owner; _amount : _amount}; + msgs = one_msg msg; + send msgs +end + +transition Invoke (trans : String) + bal <- _balance; + s = _sender; + donate_s = "Donate"; + is_donate = builtin eq trans donate_s; + match is_donate with + | True => + accept; + msg = {_tag : "Donate"; _recipient : cfaddr; _amount : _amount}; + msgs = one_msg msg; + send msgs + | False => + claimback_s = "ClaimBack"; + is_claimback = builtin eq trans claimback_s; + match is_claimback with + | True => + msg = {_tag : "ClaimBack"; _recipient : cfaddr; _amount : Uint128 0}; + msgs = one_msg msg; + send msgs + | False => + getfunds_s = "GetFunds"; + is_getfunds = builtin eq trans getfunds_s; + match is_getfunds with + | True => + msg = {_tag : "GetFunds"; _recipient : cfaddr; _amount : Uint128 0}; + msgs = one_msg msg; + send msgs + | False => + msg = {_tag : ""; _recipient : _sender ; _amount : Uint128 0}; + msgs = one_msg msg; + send msgs + end + end + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/050_import-test-lib2.scilla b/products/bluebell/core/tests/data/formatter/formatted/050_import-test-lib2.scilla new file mode 100644 index 000000000..b1ce89760 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/050_import-test-lib2.scilla @@ -0,0 +1,48 @@ +scilla_version 0 + +(* Import shape: + * + * 0x222256789012345678901234567890123456abef (TestLib4) _ + * | \ + * | \ + * 0x333256789012345678901234567890123456abef (TestLib5) | + * | | + * | | + * 0x444256789012345678901234567890123456abef (TestLib6) | + * | / + * | __________________________/ + * contract +*) + +import TestLib4 TestLib6 + +library ContractLib + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +contract ImportTestLib2() + +transition TestNestedImport () + recipient = 0x123456789abcdef123456789abcdef123456789a; + (* TestLib6 exposes a Level1WrapperConstructor containing the value 42. *) + (* Construct a Level2WrapperConstructor *) + wrap_level_2 = Level2WrapperConstructor wrap_level_1_base_constructor_42; + (* Lift to BaseType using lifter function from TestLib6 *) + base_val = lift_level_2_wrapper_type wrap_level_2; + (* base_val is of type BaseType, which is in scope because we import TestLib4 *) + match base_val with + | BaseConstructor x => + (* Check that we can send both wrap_level_1_base_constructor_42, wrap_level_2 and base_val *) + (* Also check that x = 42 *) + msg = { _tag : "" ; _recipient : recipient ; _amount : Uint128 0 ; + int_param : x ; + base_param : base_val ; + level_1_param : wrap_level_1_base_constructor_42 ; + level_2_param : wrap_level_2 }; + msgs = one_msg msg; + send msgs + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/051_inplace-map.scilla b/products/bluebell/core/tests/data/formatter/formatted/051_inplace-map.scilla new file mode 100644 index 000000000..d1e4e4281 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/051_inplace-map.scilla @@ -0,0 +1,118 @@ +scilla_version 0 + +import ListUtils PairUtils NatUtils + +library Test + +contract Test +(owner: ByStr20) + +field gmap : Map String Int32 = Emp String Int32 +field gmap3 : Map String (Map Int32 (Map (Int64) (String))) = Emp String (Map Int32 (Map (Int64) (String))) + +transition test1 () + is_owner = builtin eq owner _sender; + match is_owner with + | True => + one = Int32 1; + k = "Hello"; + gmap[k] := one + | False => + k = "Hello"; + t <- gmap[k]; + j = "World"; + match t with + | Some tt => + gmap[j] := tt + | None => + zero = Int32 0; + gmap[j] := zero + end + end +end + +transition test2() + a = "H"; + b = Int32 1; + c = Int64 2; + gmap3[a][b][c] := a +end + +transition test3() + a = "H"; + b = Int32 1; + c = Int64 2; + d <- gmap3[a][b][c]; + match d with + | Some dd => + gmap[dd] := b + | None => + not_found = "NotFound"; + gmap[not_found] := b + end +end + +transition test4() + a = "Hi"; + b = Int32 1; + c = Int64 2; + d <- gmap3[a][b][c]; + match d with + | Some dd => + gmap[dd] := b + | None => + not_found = "NotFound"; + gmap[not_found] := b + end +end + +transition test5() + a = "H"; + b = Int32 1; + c = Int64 2; + delete gmap3[a][b][c] +end + +transition test6() + a = "Hi"; + b = Int32 1; + c = Int64 2; + delete gmap3[a][b][c] +end + +transition test7() + a = "H"; + b = Int32 1; + c = Int64 2; + delete gmap3[a] +end + +transition test8() + a = "H"; + b = Int32 1; + c = Int64 2; + d <- exists gmap3[a][b][c]; + match d with + | True => + ex = "Exists"; + gmap[ex] := b + | False => + ex = "Doesn't Exist"; + gmap[ex] := b + end +end + +transition test9() + a = "H"; + b = Int32 1; + c = Int64 2; + d <- exists gmap3[a]; + match d with + | True => + ex = "Exists"; + gmap[ex] := b + | False => + ex = "Doesn't Exist"; + gmap[ex] := b + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/052_remote_state_reads_2.scilla b/products/bluebell/core/tests/data/formatter/formatted/052_remote_state_reads_2.scilla new file mode 100644 index 000000000..de1549c8f --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/052_remote_state_reads_2.scilla @@ -0,0 +1,55 @@ +scilla_version 0 + +contract RRContract (cparam : ByStr20 with contract field admin : ByStr20 end) + +field remote_read_remote_read_res_1 : Uint128 = Uint128 0 +field remote_read_remote_read_res_2 : Option Uint128 = None {Uint128} +field remote_read_remote_read_res_3 : ByStr20 = _this_address + +field address_type_erasure_test_res_1 : Map Uint128 (ByStr20 with end) = Emp Uint128 (ByStr20 with end) + +transition RemoteReadsOfRemoteRead( + remote: ByStr20 with contract + field admin : ByStr20 with contract + field f : ByStr20 with contract + field g : Uint128 + end + end + end) + ad <-& remote.admin; + this_f <-& ad.f; + this_g <-& this_f.g; + remote_read_remote_read_res_1 := this_g +end + +transition RemoteReadsOfRemoteMap( + remote: ByStr20 with contract + field admin : ByStr20 with contract + field f : ByStr20 with contract + field g : Map Uint128 Uint128 + end + end + end) + ad <-& remote.admin; + this_f <-& ad.f; + remote_key = Uint128 0; + this_g <-& this_f.g[remote_key]; + remote_read_remote_read_res_2 := this_g +end + +transition RemoteReadsContractParam() + ad <-& cparam.admin; + remote_read_remote_read_res_3 := ad +end + +transition AddressTypeErasureTest1() + zero = Uint128 0; + address_type_erasure_test_res_1[zero] := cparam +end + +transition AddressTypeErasureTest2() + zero = Uint128 0; + emp_map <- address_type_erasure_test_res_1; + new_map = builtin put emp_map zero cparam; + address_type_erasure_test_res_1 := new_map +end \ No newline at end of file diff --git a/products/bluebell/core/tests/data/formatter/formatted/053_salarybot.scilla b/products/bluebell/core/tests/data/formatter/formatted/053_salarybot.scilla new file mode 100644 index 000000000..f56eea728 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/053_salarybot.scilla @@ -0,0 +1,90 @@ +scilla_version 0 + +import ListUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library SalaryBotLib + +let mk_employee_already_exists_event = + fun (emp_addr : ByStr20) => + { _eventname : "Employee already exists"; employee_address : emp_addr } + +let mk_employee_added_event = + fun (emp_addr : ByStr20) => + { _eventname : "Employee added"; employee_address : emp_addr } + +let mk_employee_non_existent_event = + fun (emp_addr : ByStr20) => + { _eventname : "Employee does not exist"; employee_address : emp_addr } + +let mk_employee_removed_event = + fun (emp_addr : ByStr20) => + { _eventname : "Employee removed"; employee_address : emp_addr } + + +contract SalaryBot +( + owner : ByStr20 +) + +field employees : Map ByStr20 Uint128 = Emp ByStr20 Uint128 + +procedure validate_owner () + is_owner = builtin eq owner _sender; + match is_owner with + | True => + | False => + e = { _exception : "Not owner exeption" }; + throw e + end +end + +transition add_funds() + validate_owner; + accept +end + +transition add_employee(emp_addr: ByStr20, salary : Uint128) + validate_owner ; + emp_exists <- exists employees[emp_addr]; + match emp_exists with + | True => + e = mk_employee_already_exists_event emp_addr; + event e + | False => + employees[emp_addr] := salary; + e = mk_employee_added_event emp_addr; + event e + end +end + +transition remove_employee(emp_addr : ByStr20) + validate_owner ; + emp_exists <- exists employees[emp_addr]; + match emp_exists with + | True => + delete employees[emp_addr]; + e = mk_employee_removed_event emp_addr; + event e + | False => + e = mk_employee_non_existent_event emp_addr; + event e + end +end + +transition pay_all_salaries() + validate_owner; + employees_local <- employees; + emp_sal_pairs = builtin to_list employees_local; + mapper = @list_map (Pair ByStr20 Uint128) Message; + mapf = + fun (empsal : Pair ByStr20 Uint128) => + match empsal with + | Pair emp_addr sal => + { _tag : ""; _recipient : emp_addr; _amount : sal } + end; + messages = mapper mapf emp_sal_pairs; + send messages +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/054_import-test-lib.scilla b/products/bluebell/core/tests/data/formatter/formatted/054_import-test-lib.scilla new file mode 100644 index 000000000..d220d63a3 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/054_import-test-lib.scilla @@ -0,0 +1,74 @@ +scilla_version 0 + +(* Import shape: + * + * 0x986556789012345678901234567890123456abcd (TestLib1) + * | + * | + * 0x111256789012345678901234567890123456abef (TestLib3) + * | + * | + * contract +*) + +import TestLib3 IntUtils + +library ContractLib + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +contract Hello() + +transition Hi () + one = Uint32 1; + two = Uint32 2; + nil = Nil {Uint32}; + single = Cons {Uint32} one nil; + double = Cons {Uint32} two single; + + unsorted = double; + e = { _eventname : "unsorted"; unsorted : double }; + event e; + + sorted = foo_uint32 uint32_lt double; + e = { _eventname : "sorted"; sorted : sorted }; + event e +end + +transition TestNestedImport1 () + recipient = 0x123456789abcdef123456789abcdef123456789a; + (* wrapped_c1 is a constructor from TestLib3 wrapping a constructor from TestLib1 containing the value 42. *) + (* TestLib3 members may be pattern-matched. *) + match wrapped_c1 with + | WrapperConstructor wrapped_val => + (* It should be possible to send a value of a type from TestLib1 despite that type being unavailble here *) + msg = { _tag : "" ; _recipient : recipient ; _amount : Uint128 0 ; param : wrapped_val }; + msgs = one_msg msg; + send msgs; + (* expose_lift_TestType1 exposes a function from TestLib1 to anyone importing TestLib3 *) + res = expose_lift_TestType1 wrapped_val; + (* res is expected to have value 42 *) + e = { _eventname : "Nested_import_value" ; res : res }; + event e + end +end + +transition TestNestedImport2 () + recipient = 0x123456789abcdef123456789abcdef123456789a; + (* wrapped_c1 is a constructor from TestLib3 wrapping a constructor from TestLib1 containing the value True. *) + match wrapped_c2 with + | WrapperConstructor wrapped_val => + (* It should be possible to send a value of a type from TestLib1 despite that type being unavailble here *) + msg = { _tag : "" ; _recipient : recipient ; _amount : Uint128 0 ; param : wrapped_val }; + msgs = one_msg msg; + send msgs; + (* expose_lift_TestType1 exposes a function from TestLib1 to anyone importing TestLib3 *) + res = expose_lift_TestType1 wrapped_val; + (* res is expected to have value 1 *) + e = { _eventname : "Nested_import_value" ; res : res }; + event e + end +end \ No newline at end of file diff --git a/products/bluebell/core/tests/data/formatter/formatted/055_loopy-tree-call.scilla b/products/bluebell/core/tests/data/formatter/formatted/055_loopy-tree-call.scilla new file mode 100644 index 000000000..5f5d0782f --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/055_loopy-tree-call.scilla @@ -0,0 +1,76 @@ +scilla_version 0 + +import ListUtils BoolUtils + +(* This contract has just transition, which does the following: *) +(* 1. Create an event signalling execution. *) +(* 2. Call the same transition in each of the address provided as its argument. *) +(* All addresses it got as the argument, except the one being called *) +(* and with _this_address is passed as a parameter. *) +(* A counter is maintained to terminate the chain / loop. *) + +library LoopTreeCall + +let one = Uint32 1 + +let mk_executed_event = + fun (this : ByStr20) => + { _eventname : "loopy-tree-call executed"; this_address : this } + +let list_append_element = + fun (ls : List ByStr20) => + fun (elm : ByStr20) => + let appender = @list_append ByStr20 in + let nil = Nil {ByStr20} in + let elm_ls = Cons {ByStr20} elm nil in + appender ls elm_ls + +(* Remove recipient from other_instances, append this_address and create a message with new_length. *) +let create_msg = + fun (new_length : Uint32) => + fun (recipient : ByStr20) => + fun (other_instances : List ByStr20) => + fun (this_address : ByStr20) => + let filter = @list_filter ByStr20 in + let filter_recipient = + fun (addr : ByStr20) => + let eq = builtin eq recipient addr in + negb eq + in + let filter_this_addr = + fun (addr : ByStr20) => + let eq = builtin eq this_address addr in + negb eq + in + let recipient_filtered = filter filter_recipient other_instances in + let this_recipient_filtered = filter filter_this_addr recipient_filtered in + (* We now have a list without either of recipient or this_address. append this_address. *) + let new_other_instances = list_append_element this_recipient_filtered this_address in + { _tag : "Exec"; _amount : Uint128 0; _recipient : recipient; chain_length : new_length; other_instances : new_other_instances } + +(* Create a list of outgoing messages, sending to each of other_instances. *) +let create_msgs = + fun (new_length : Uint32) => + fun (other_instances : List ByStr20) => + fun (this_address : ByStr20) => + let map_bystr20 = @list_map ByStr20 Message in + let mapper = + fun (a : ByStr20) => + create_msg new_length a other_instances this_address + in + map_bystr20 mapper other_instances + +contract LoopTreeCall(max_chain_length : Uint32) + +transition Exec (chain_length : Uint32, other_instances : List ByStr20) + proceed = builtin lt chain_length max_chain_length; + match proceed with + | False => + | True => + new_length = builtin add chain_length one; + messages = create_msgs new_length other_instances _this_address; + e = mk_executed_event _this_address; + event e; + send messages + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/056_mappair.scilla b/products/bluebell/core/tests/data/formatter/formatted/056_mappair.scilla new file mode 100644 index 000000000..9e8652d55 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/056_mappair.scilla @@ -0,0 +1,123 @@ +scilla_version 0 + +import ListUtils PairUtils NatUtils + +library Test + +let no_msg = Nil {Message} + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let flip_obool = + fun (ob : Option (Bool)) => + let t = True in + let f = False in + match ob with + | None => Some {Bool} t + | Some b => + match b with + | True => Some {Bool} f + | False => Some {Bool} t + end + end + +let fst_f = @fst (List(Int64)) (Option (Bool)) +let snd_f = @snd (List(Int64)) (Option (Bool)) + +contract Test +(owner: ByStr20) + +field gmap : Map ByStr20 (Pair (Int32) (Int32)) = Emp ByStr20 (Pair (Int32) (Int32)) +field gpair : Pair (List(Int64)) (Option (Bool)) = + let el = Nil {Int64} in + let n = None {Bool} in + Pair {(List(Int64)) (Option(Bool))} el n + +field llist : List (List(Int64)) = Nil {(List(Int64))} +field plist : List(Option(Int32)) = Nil {(Option(Int32))} + +field gnat : Nat = Zero + +transition testMapPair () + is_owner = builtin eq owner _sender; + match is_owner with + | False => + one = Int32 1; + two = Int32 2; + p = Pair {(Int32) (Int32)} one two; + gmap[_sender] := p; + send no_msg + | True => + three = Int32 3; + four = Int32 4; + p = Pair {(Int32) (Int32)} three four; + gmap[_sender] := p; + send no_msg + end +end + +transition addNumToList(num: Int64) + p <- gpair; + (* get first of pair = List (Int64) *) + l1 = fst_f p; + (* get second of pair = Option (Bool) *) + b = snd_f p; + (* have fun: flip the boolean *) + bflip = flip_obool b; + (* append num to the list *) + l2 = Cons{Int64} num l1; + (* Form updated pair *) + new_p = Pair {(List(Int64)) (Option(Bool))} l2 bflip; + gpair := new_p; + len = let my_list_length = @list_length Int64 in my_list_length l2; + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; listLength : len}; + msgs = one_msg msg; + send msgs +end + +transition incNat () + n <- gnat; + m = Succ n; + gnat := m; + i = nat_to_int m; + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; nat : i}; + msgs = one_msg msg; + send msgs +end + +transition lflatten () + n <- llist; + lfl = @list_flatten (Int64); + m = lfl n; + len = let my_list_length = @list_length Int64 in my_list_length m; + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; listLength : len}; + msgs = one_msg msg; + send msgs +end + +transition optlist () + n <- plist; + len = let my_list_length = @list_length (Option(Int32)) in my_list_length n; + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; listLength : len}; + msgs = one_msg msg; + send msgs + +end + +transition redef_warn(b : Bool) + x = Uint32 0; + match b with + | True => x = Uint32 1 + | False => + end; + e = {_eventname : "Foo"; x : x}; + event e +end + +transition print_sender_origin() + e = { _eventname : "Source"; _sender : _sender; _origin : _origin }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/057_earmarked-coin.scilla b/products/bluebell/core/tests/data/formatter/formatted/057_earmarked-coin.scilla new file mode 100644 index 000000000..d4cd31e43 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/057_earmarked-coin.scilla @@ -0,0 +1,115 @@ +scilla_version 0 + +(* + * An implementation of EarmarkedLibraCoin module in Scilla + * https://developers.libra.org/docs/move-overview.html + *) + +(* Consider this situation: Bob is going to create an account at address A at +some point in the future. Alice wants to "earmark" some funds for Bob so that he +can pull them into his account once it is created. But she also wants to be able +to reclaim the funds for herself if Bob never creates the account. *) + +import BoolUtils + +library EarmarkedCoin + +(* funds and their future owner *) +type EarmarkedCoin = +| EarmarkedCoin of Uint128 ByStr20 + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let success_code = Int32 1 +let already_earmarked_code = Int32 2 +let not_authorized_code = Int32 3 +let did_not_earmark_code = Int32 4 + +contract EarmarkedCoin +() + +field earmarked_coins : Map ByStr20 EarmarkedCoin = Emp ByStr20 EarmarkedCoin + +(* ----- utility procedures ----- *) + +procedure TransferFunds (amount : Uint128, recipient : ByStr20) + msg = {_tag : ""; _recipient : recipient; _amount : amount}; + msgs = one_msg msg; + send msgs +end + +procedure SuccessfulTransferOfFunds (from : ByStr20, to : ByStr20) + e = {_eventname : "SuccessfulTransferOfFunds"; + from: from; to : to; code : success_code}; + event e +end + +procedure FailedToTransferFunds (from : ByStr20, to : ByStr20, error_code : Int32) + e = {_eventname : "FailedToTransferFunds"; + from: from; to : to; code : error_code}; + event e +end + +(* ----- transitions ----- *) + +(* + * Earmark `_amount` for the future recipient `recip`. + * This can be done at most one time for each `_sender`. + * To change the earmarked amount or the future recipient, + * invoke `ClaimForCreator` transition and then `Earmark` again. + *) +transition Earmark (recip : ByStr20) + c <- exists earmarked_coins[_sender]; + match c with + | False => + accept; + e_coin = EarmarkedCoin _amount recip; + earmarked_coins[_sender] := e_coin; + SuccessfulTransferOfFunds _sender _this_address + | True => + FailedToTransferFunds _sender _this_address already_earmarked_code + end +end + +(* Claim funds earmarked by a sender with `earmarked_coin_address` *) +transition ClaimForRecipient (earmarked_coin_address : ByStr20) + e_coin_opt <- earmarked_coins[earmarked_coin_address]; + match e_coin_opt with + | Some (EarmarkedCoin amount recipient) => + (* transfer only if the funds have been earmarked for the caller *) + authorized_to_claim = builtin eq recipient _sender; + match authorized_to_claim with + | True => + TransferFunds amount recipient; + delete earmarked_coins[earmarked_coin_address]; + SuccessfulTransferOfFunds _this_address _sender + | False => + FailedToTransferFunds _this_address _sender not_authorized_code + end + | None => + (* nobody with account at `earmarked_coin_address` earmarked any funds *) + FailedToTransferFunds _this_address _sender did_not_earmark_code + end +end + +(* + * The sender (creator) should be able to claim back the earmarked funds + * at any time. This prevents the funds from being frozen if the recipient + * never claims them. + *) +transition ClaimForCreator () + e_coin_opt <- earmarked_coins[_sender]; + match e_coin_opt with + | Some (EarmarkedCoin amount _) => + (* get back earmarked money *) + TransferFunds amount _sender; + delete earmarked_coins[_sender]; + SuccessfulTransferOfFunds _this_address _sender + | None => + (* Sender has not earmarked *) + FailedToTransferFunds _this_address _sender did_not_earmark_code + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/058_address_eq_test.scilla b/products/bluebell/core/tests/data/formatter/formatted/058_address_eq_test.scilla new file mode 100644 index 000000000..0f98c5d98 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/058_address_eq_test.scilla @@ -0,0 +1,105 @@ +scilla_version 0 + +contract AddressEqTest() + +field eq_test_res : Bool = False +field to_bystr_res : ByStr = let x = 0x12 in builtin to_bystr x +field to_uint_res : Uint256 = Uint256 0 +field concat_res : ByStr40 = 0xabfeccdc9012345678901234567890f777564322abfeccdc9012345678901234567890f777564322 + +field test_map : Map (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end) = Emp (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end) +field map_res_1 : Bool = True +field map_res_2 : Map (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end) = Emp (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end) +field map_res_3 : Option (ByStr20 with contract end) = None {ByStr20 with contract end} +field map_res_4 : Map (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end) = Emp (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end) +field map_res_5 : List (Pair (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end)) = Nil {(Pair (ByStr20 with contract field f : Uint32 end) (ByStr20 with contract end))} +field map_res_6 : Uint32 = Uint32 0 + +field test_map2 : Map (ByStr20 with contract field f : Uint32 end) Uint128 = Emp (ByStr20 with contract field f : Uint32 end) Uint128 +field test_map3 : Map Uint128 (ByStr20 with contract end) = Emp Uint128 (ByStr20 with contract end) + +field test_to_string : String = "" +field test_to_ascii : String = "" +field test_strrev : String = "" + +transition Test1 (param1 : ByStr20 with contract field f : Uint128, field g : Int32 end, + param2 : ByStr20 with contract field f : Uint128, field h : Bool end) + x = builtin eq param1 param2; + eq_test_res := x +end + +transition Test2 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end, + param2 : ByStr20 with contract field f : Uint128, field h : Bool end) + x = builtin eq param1 param2; + eq_test_res := x +end + +transition Test3 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end, + param2 : ByStr20) + x = builtin eq param1 param2; + eq_test_res := x +end + +transition Test4 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end, + param2 : ByStr20 with end) + x = builtin eq param1 param2; + eq_test_res := x +end + +transition Test5 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end, + param2 : ByStr20 with contract end) + x = builtin eq param1 param2; + eq_test_res := x +end + +transition Test6 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end) + x = builtin to_bystr param1; + to_bystr_res := x +end + +transition Test7 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end) + x = builtin to_uint256 param1; + to_uint_res := x +end + +transition Test8 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end, + param2 : ByStr20 with contract end) + x = builtin concat param1 param2; + concat_res := x +end + +transition Test9 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end, + param2 : ByStr20 with contract end) + mp <- test_map; + mp1 = builtin contains mp param1; + map_res_1 := mp1; + mp2 = builtin put mp param1 param2; + map_res_2 := mp2; + mp3 = builtin get mp2 param1; + map_res_3 := mp3; + mp4 = builtin remove mp2 param1; + map_res_4 := mp4; + mp5 = builtin to_list mp2; + map_res_5 := mp5; + mp6 = builtin size mp2; + map_res_6 := mp6 +end + +transition Test10 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end) + mp <- test_map2; + zero = Uint128 0; + mp2 = builtin put mp param1 zero; + test_map2 := mp2; + mp3 <- test_map3; + mp4 = builtin put mp3 zero param1; + test_map3 := mp4 +end + +transition Test11 (param1 : ByStr20 with contract field f : Uint32, field g : Int32 end) + x = builtin to_string param1; + test_to_string := x; + y = builtin to_ascii param1; + test_to_ascii := y; + z = builtin strrev param1; + test_strrev := z +end \ No newline at end of file diff --git a/products/bluebell/core/tests/data/formatter/formatted/059_crowdfunding.scilla b/products/bluebell/core/tests/data/formatter/formatted/059_crowdfunding.scilla new file mode 100644 index 000000000..ce75db59c --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/059_crowdfunding.scilla @@ -0,0 +1,151 @@ +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) + +import BoolUtils + +library Crowdfunding + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let check_update = + fun (bs : Map ByStr20 Uint128) => + fun (sender : ByStr20) => + fun (amount : Uint128) => + let c = builtin contains bs sender in + match c with + | False => + let bs1 = builtin put bs sender amount in + Some {Map ByStr20 Uint128} bs1 + | True => None {Map ByStr20 Uint128} + end + +let blk_leq = + fun (blk1 : BNum) => + fun (blk2 : BNum) => + let bc1 = builtin blt blk1 blk2 in + let bc2 = builtin eq blk1 blk2 in + orb bc1 bc2 + +let accepted_code = Int32 1 +let missed_deadline_code = Int32 2 +let already_backed_code = Int32 3 +let not_owner_code = Int32 4 +let too_early_code = Int32 5 +let got_funds_code = Int32 6 +let cannot_get_funds = Int32 7 +let cannot_reclaim_code = Int32 8 +let reclaimed_code = Int32 9 + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract Crowdfunding + +(* Parameters *) +(owner : ByStr20, + max_block : BNum, + goal : Uint128) + +(* Mutable fields *) +field backers : Map ByStr20 Uint128 = Emp ByStr20 Uint128 +field funded : Bool = False + +transition Donate () + blk <- & BLOCKNUMBER; + in_time = blk_leq blk max_block; + match in_time with + | True => + bs <- backers; + res = check_update bs _sender _amount; + match res with + | None => + e = {_eventname : "DonationFailure"; donor : _sender; amount : _amount; code : already_backed_code}; + event e + | Some bs1 => + backers := bs1; + accept; + e = {_eventname : "DonationSuccess"; donor : _sender; amount : _amount; code : accepted_code}; + event e + end + | False => + e = {_eventname : "DonationFailure"; donor : _sender; amount : _amount; code : missed_deadline_code}; + event e + end +end + +transition GetFunds () + is_owner = builtin eq owner _sender; + match is_owner with + | False => + e = {_eventname : "GetFundsFailure"; caller : _sender; amount : Uint128 0; code : not_owner_code}; + event e + | True => + blk <- & BLOCKNUMBER; + in_time = blk_leq blk max_block; + c1 = negb in_time; + bal <- _balance; + c2 = builtin lt bal goal; + c3 = negb c2; + c4 = andb c1 c3; + match c4 with + | False => + e = {_eventname : "GetFundsFailure"; caller : _sender; amount : Uint128 0; code : cannot_get_funds}; + event e + | True => + tt = True; + funded := tt; + msg = {_tag : ""; _recipient : owner; _amount : bal}; + msgs = one_msg msg; + e = {_eventname : "GetFundsSuccess"; caller : owner; amount : bal; code : got_funds_code}; + event e; + send msgs + end + end +end + +(* transition ClaimBack *) +transition ClaimBack () + blk <- & BLOCKNUMBER; + after_deadline = builtin blt max_block blk; + match after_deadline with + | False => + e = { _eventname : "ClaimBackFailure"; caller : _sender; amount : Uint128 0; code : too_early_code}; + event e + | True => + bs <- backers; + bal <- _balance; + (* Goal has not been reached *) + f <- funded; + c1 = builtin lt bal goal; + c2 = builtin contains bs _sender; + c3 = negb f; + c4 = andb c1 c2; + c5 = andb c3 c4; + match c5 with + | False => + e = { _eventname : "ClaimBackFailure"; caller : _sender; amount : Uint128 0; code : cannot_reclaim_code}; + event e + | True => + res = builtin get bs _sender; + match res with + | None => + e = { _eventname : "ClaimBackFailure"; caller : _sender; amount : Uint128 0; code : cannot_reclaim_code}; + event e + | Some v => + bs1 = builtin remove bs _sender; + backers := bs1; + msg = {_tag : ""; _recipient : _sender; _amount : v}; + msgs = one_msg msg; + e = { _eventname : "ClaimBackSuccess"; caller : _sender; amount : v; code : reclaimed_code}; + event e; + send msgs + end + end + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/060_crowdfunding_proc.scilla b/products/bluebell/core/tests/data/formatter/formatted/060_crowdfunding_proc.scilla new file mode 100644 index 000000000..86d21b517 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/060_crowdfunding_proc.scilla @@ -0,0 +1,185 @@ +(***************************************************) +(* Scilla version *) +(***************************************************) + +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) +import BoolUtils + +library Crowdfunding + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let blk_leq = + fun (blk1 : BNum) => + fun (blk2 : BNum) => + let bc1 = builtin blt blk1 blk2 in + let bc2 = builtin eq blk1 blk2 in + orb bc1 bc2 + +let get_funds_allowed = + fun (cur_block : BNum) => + fun (max_block : BNum) => + fun (balance : Uint128) => + fun (goal : Uint128) => + let in_time = blk_leq cur_block max_block in + let deadline_passed = negb in_time in + let target_not_reached = builtin lt balance goal in + let target_reached = negb target_not_reached in + andb deadline_passed target_reached + +let claimback_allowed = + fun (balance : Uint128) => + fun (goal : Uint128) => + fun (already_funded : Bool) => + let target_not_reached = builtin lt balance goal in + let not_already_funded = negb already_funded in + andb target_not_reached not_already_funded + +let accepted_code = Int32 1 +let missed_deadline_code = Int32 2 +let already_backed_code = Int32 3 +let not_owner_code = Int32 4 +let too_early_code = Int32 5 +let got_funds_code = Int32 6 +let cannot_get_funds = Int32 7 +let cannot_reclaim_code = Int32 8 +let reclaimed_code = Int32 9 + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract Crowdfunding + +(* Parameters *) +(owner : ByStr20, +max_block : BNum, +goal : Uint128) + +(* Contract constraint *) +with + let zero = Uint128 0 in + builtin lt zero goal +=> + +(* Mutable fields *) +field backers : Map ByStr20 Uint128 = Emp ByStr20 Uint128 +field funded : Bool = False + +procedure DonationEvent (failure : Bool, error_code : Int32) + match failure with + | False => + e = {_eventname : "DonationSuccess"; donor : _sender; + amount : _amount; code : accepted_code}; + event e + | True => + e = {_eventname : "DonationFailure"; donor : _sender; + amount : _amount; code : error_code}; + event e + end +end + +procedure PerformDonate () + c <- exists backers[_sender]; + match c with + | False => + accept; + backers[_sender] := _amount; + DonationEvent c accepted_code + | True => + DonationEvent c already_backed_code + end +end + +transition Donate () + blk <- & BLOCKNUMBER; + in_time = blk_leq blk max_block; + match in_time with + | True => + PerformDonate + | False => + t = True; + DonationEvent t missed_deadline_code + end +end + +procedure GetFundsFailure (error_code : Int32) + e = {_eventname : "GetFundsFailure"; caller : _sender; + amount : _amount; code : error_code}; + event e +end + +procedure PerformGetFunds () + bal <- _balance; + tt = True; + funded := tt; + msg = {_tag : ""; _recipient : owner; _amount : bal; code : got_funds_code}; + msgs = one_msg msg; + send msgs +end + +transition GetFunds () + is_owner = builtin eq owner _sender; + match is_owner with + | False => + GetFundsFailure not_owner_code + | True => + blk <- & BLOCKNUMBER; + bal <- _balance; + allowed = get_funds_allowed blk max_block bal goal; + match allowed with + | False => + GetFundsFailure cannot_get_funds + | True => + PerformGetFunds + end + end +end + +procedure ClaimBackFailure (error_code : Int32) + e = {_eventname : "ClaimBackFailure"; caller : _sender; + amount : _amount; code : error_code}; + event e +end + +procedure PerformClaimBack (amount : Uint128) + delete backers[_sender]; + msg = {_tag : ""; _recipient : _sender; _amount : amount; code : reclaimed_code}; + msgs = one_msg msg; + e = { _eventname : "ClaimBackSuccess"; caller : _sender; amount : amount; code : reclaimed_code}; + event e; + send msgs +end + +(* transition ClaimBack *) +transition ClaimBack () + blk <- & BLOCKNUMBER; + after_deadline = builtin blt max_block blk; + match after_deadline with + | False => + ClaimBackFailure too_early_code + | True => + bal <- _balance; + f <- funded; + allowed = claimback_allowed bal goal f; + match allowed with + | False => + ClaimBackFailure cannot_reclaim_code + | True => + res <- backers[_sender]; + match res with + | None => + (* Sender has not donated *) + ClaimBackFailure cannot_reclaim_code + | Some v => + PerformClaimBack v + end + end + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/061_auction.scilla b/products/bluebell/core/tests/data/formatter/formatted/061_auction.scilla new file mode 100644 index 000000000..97ab6ce88 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/061_auction.scilla @@ -0,0 +1,169 @@ +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) + +import BoolUtils + +library OpenAuction + +let blk_leq = + fun (blk1 : BNum) => + fun (blk2 : BNum) => + let bc1 = builtin blt blk1 blk2 in + let bc2 = builtin eq blk1 blk2 in + orb bc1 bc2 + + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + + +let late_to_bid_code = Int32 1 +let too_early_to_bid_code = Int32 2 +let bid_too_low_code = Int32 3 +let first_bid_accepted_code = Int32 4 +let bid_accepted_code = Int32 5 +let money_sent_code = Int32 6 +let nothing_to_withdraw_code = Int32 7 +let auction_is_still_on_code = Int32 8 +let auction_end_code = Int32 9 + + + +(***************************************************) +(* The contract definition *) +(***************************************************) + + +contract OpenAuction +(* Parameters *) +(auctionStart : BNum, + biddingTime : Uint128, + beneficiary : ByStr20 +) + +(* Mutable fields *) + +field ended : Bool = False +field highestBidder : Option ByStr20 = None {ByStr20} +field highestBid : Uint128 = Uint128 0 +field pendingReturns : Map ByStr20 Uint128 = Emp ByStr20 Uint128 + + +(* Transition 1: bidding *) +transition Bid () + blk <- & BLOCKNUMBER; + endtime = builtin badd auctionStart biddingTime; + after_end = let one = Uint128 1 + in builtin badd endtime one; + e <- ended; + in_time = blk_leq after_end blk; + flag1 = orb in_time e; + early = blk_leq blk auctionStart; + match early with + | True => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; code : too_early_to_bid_code}; + msgs = one_msg msg; + send msgs + | False => + match flag1 with + | True => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; code : late_to_bid_code}; + msgs = one_msg msg; + send msgs + | False => + hb <- highestBid; + + (* Checks if the bid is too low *) + sufficientBid = builtin lt hb _amount; + match sufficientBid with + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; code : bid_too_low_code}; + msgs = one_msg msg; + send msgs + | True => + accept; + hbPrev <- highestBidder; + + match hbPrev with + | Some prevHighestBidder => + (* There is already a highest bidder *) + option_pendingReturnsForPrevHB <- pendingReturns[prevHighestBidder]; + + getPRForPrevHighestBidder = match option_pendingReturnsForPrevHB with + | Some pendingReturnsForPrevHB => + (* User already has some balance in the pending returns that is not claimed *) + builtin add hb pendingReturnsForPrevHB + | None => hb + (* Prev highest bidder has no pending returns. *) + end; + pendingReturns[prevHighestBidder] := getPRForPrevHighestBidder; + + (* Update the highest bidder *) + bidder = Some {ByStr20} _sender; + highestBidder := bidder; + highestBid := _amount; + ev = {_eventname: "Bid"; code: bid_accepted_code; addr: _sender; amount: _amount}; + event ev + | None => + (* Process first bid *) + first_bidder = Some {ByStr20} _sender; + highestBidder := first_bidder; + highestBid := _amount; + ev1 = {_eventname: "Bid"; code: first_bid_accepted_code; addr: _sender; amount: _amount}; + event ev1 + end + end + end +end +end + + +(* Transition 2: claiming money back *) +transition Withdraw () + prs <- pendingReturns; + pr = builtin get prs _sender; + match pr with + | None => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; code : nothing_to_withdraw_code}; + msgs = one_msg msg; + send msgs + | Some v => + delete pendingReturns[_sender]; + e = {_eventname: "Withdraw Successful"; addr: _sender}; + event e; + msg = {_tag : ""; _recipient : _sender; _amount : v; code : money_sent_code}; + msgs = one_msg msg; + send msgs + end +end + + +(* Transition 3: auction ends *) +transition AuctionEnd () + blk <- & BLOCKNUMBER; + e <- ended; + t1 = builtin badd auctionStart biddingTime; + t2 = blk_leq t1 blk; + t3 = negb e; + t4 = andb t2 t3; + match t4 with + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; code : auction_is_still_on_code}; + msgs = one_msg msg; + send msgs + | True => + val = True; + ended := val; + hb <- highestBid; + ev = {_eventname: "Auction ended"; highest_bid: hb}; + event ev; + msg = {_tag : ""; _recipient : beneficiary; _amount : hb; code : auction_end_code; highest_bid : hb}; + msgs = one_msg msg; + send msgs + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/062_type_casts.scilla b/products/bluebell/core/tests/data/formatter/formatted/062_type_casts.scilla new file mode 100644 index 000000000..b2b2a78fb --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/062_type_casts.scilla @@ -0,0 +1,185 @@ +scilla_version 0 + +library CastLib + +let zero_address : ByStr20 = 0x0000000000000000000000000000000000000000 + +(* Tests various aspects of address type casts *) + +contract CastContract () + +field test_1_res : Option (ByStr20 with end) = None {ByStr20 with end} +field test_2_res : Option (ByStr20 with contract end) = None {ByStr20 with contract end} +field test_3_res : Option (ByStr20 with contract end) = None {ByStr20 with contract end} +field test_4_res : Option Uint128 = None {Uint128} +field test_5_1_res : Option Uint128 = None {Uint128} +field test_5_2_res : Option Uint128 = None {Uint128} +field test_6_1_bal_res : Option Uint128 = None {Uint128} +field test_6_1_f_res : Option Uint128 = None {Uint128} +field test_6_1_g_res : Option Bool = None {Bool} +field test_6_2_bal_res : Option Uint128 = None {Uint128} +field test_6_2_f_res : Option Uint128 = None {Uint128} +field test_6_2_g_res : Option Bool = None {Bool} +field test_6_3_bal_res : Option Uint128 = None {Uint128} +field test_6_3_f_res : Option Uint128 = None {Uint128} +field test_6_3_g_res : Option Bool = None {Bool} +field test_6_4_bal_res : Option Uint128 = None {Uint128} +field test_6_4_f_res : Option Uint128 = None {Uint128} +field test_6_4_g_res : Option Bool = None {Bool} +field test_6_4_failed_cast : Bool = False +field test_7_g_res : Option Bool = None {Bool} +field test_7_h_res : Option Int256 = None {Int256} + +transition CastTest1(x : ByStr20 with contract end) + (* Cast to less restrictive type *) + res <-& x as ByStr20 with end; + test_1_res := res +end + +transition CastTest2(x : ByStr20 with contract end) + (* Cast to same type *) + res <-& x as ByStr20 with contract end; + test_2_res := res +end + +transition CastTest3(x : ByStr20 with contract end) + (* Cast to same type *) + res <-& x as ByStr20 with contract end; + test_3_res := res +end + +transition CastTest4(x : ByStr20) + (* Cast to address in use - remote read _balance *) + x_cast <-& x as ByStr20 with end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + res = Some {Uint128} bal; + test_4_res := res + | None => + end +end + +transition CastTest5_1(x : ByStr20) + (* Cast to contract address - remote read _balance *) + x_cast <-& x as ByStr20 with contract end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + res = Some {Uint128} bal; + test_5_1_res := res + | None => + end +end + +transition CastTest5_2(x : ByStr20 with end) + (* Cast to contract address - remote read _balance *) + x_cast <-& x as ByStr20 with contract end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + res = Some {Uint128} bal; + test_5_2_res := res + | None => + end +end + +transition CastTest6_1(x : ByStr20) + (* Cast to complex contract address - remote read _balance and fields *) + x_cast <-& x as ByStr20 with contract field f : Uint128, field g : Bool end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + bal_res = Some {Uint128} bal; + test_6_1_bal_res := bal_res; + f <-& x_as_address.f; + f_res = Some {Uint128} f; + test_6_1_f_res := f_res; + g <-& x_as_address.g; + g_res = Some {Bool} g; + test_6_1_g_res := g_res + | None => + end +end + +transition CastTest6_2(x : ByStr20 with end) + (* Cast to complex contract address - remote read _balance and fields *) + x_cast <-& x as ByStr20 with contract field f : Uint128, field g : Bool end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + bal_res = Some {Uint128} bal; + test_6_2_bal_res := bal_res; + f <-& x_as_address.f; + f_res = Some {Uint128} f; + test_6_2_f_res := f_res; + g <-& x_as_address.g; + g_res = Some {Bool} g; + test_6_2_g_res := g_res + | None => + end +end + +transition CastTest6_3(x : ByStr20 with contract field g : Bool end) + (* Cast to complex contract address - remote read _balance and fields *) + x_cast <-& x as ByStr20 with contract field f : Uint128, field g : Bool end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + bal_res = Some {Uint128} bal; + test_6_3_bal_res := bal_res; + f <-& x_as_address.f; + f_res = Some {Uint128} f; + test_6_3_f_res := f_res; + g <-& x_as_address.g; + g_res = Some {Bool} g; + test_6_3_g_res := g_res + | None => + end +end + +transition CastTest6_4(x : ByStr20 with contract field f : Uint256, field g : Bool end) + (* The cast will fail here because of a type mismatch on the field f *) + x_cast <-& x as ByStr20 with contract field f : Uint128, field g : Bool end; + match x_cast with + | Some x_as_address => + bal <-& x_as_address._balance; + bal_res = Some {Uint128} bal; + test_6_4_bal_res := bal_res; + f <-& x_as_address.f; + f_res = Some {Uint128} f; + test_6_4_f_res := f_res; + g <-& x_as_address.g; + g_res = Some {Bool} g; + test_6_4_g_res := g_res + | None => + res = True; + test_6_4_failed_cast := res + end +end + +transition CastTest7(x : ByStr20) + (* Cast to complex contract address - remote read a field, then cast that field and remote read from it. *) + x_cast <-& x as ByStr20 with contract field f : ByStr20 end; + match x_cast with + | Some x_as_address => + f <-& x_as_address.f; + f_cast <-& f as ByStr20 with contract field g : Bool, field h : Int256 end; + match f_cast with + | Some f_as_address => + g <-& f_as_address.g; + g_res = Some {Bool} g; + test_7_g_res := g_res; + h <-& f_as_address.h; + h_res = Some {Int256} h; + test_7_h_res := h_res + | None => + end + | None => + end +end + +transition CastTest8() + (* cast an address defined in the contract library *) + maybe_contract_address <-& zero_address as ByStr20 with contract end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/063_fungible-token.scilla b/products/bluebell/core/tests/data/formatter/formatted/063_fungible-token.scilla new file mode 100644 index 000000000..20548b7a9 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/063_fungible-token.scilla @@ -0,0 +1,197 @@ +scilla_version 0 + +(* This contract implements a fungible token interface a la ERC20.*) + +(***************************************************) +(* Associated library *) +(***************************************************) +library FungibleToken + +let one = Uint128 1 +let zero = Uint128 0 + +let min_int = + fun (a : Uint128) => fun (b : Uint128) => + let alt = builtin lt a b in + match alt with + | True => + a + | False => + b + end + +let le_int = + fun (a : Uint128) => fun (b : Uint128) => + let x = builtin lt a b in + match x with + | True => True + | False => + let y = builtin eq a b in + match y with + | True => True + | False => False + end + end + +(* returns singleton List Message *) +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract FungibleToken +(owner : ByStr20, + total_tokens : Uint128, + decimals : Uint32, + name : String, + symbol : String) + +(* Initial balance is not stated explicitly: it's initialized when creating the contract. *) + +field balances : Map ByStr20 Uint128 = + let m = Emp ByStr20 Uint128 in + builtin put m owner total_tokens +field allowed : Map ByStr20 (Map ByStr20 Uint128) = Emp ByStr20 (Map ByStr20 Uint128) + +transition BalanceOf (tokenOwner : ByStr20) + bal <- balances[tokenOwner]; + match bal with + | Some v => + msg = { _tag : "BalanceOfResponse"; _recipient : _sender; _amount : zero; + address : tokenOwner; balance : v}; + msgs = one_msg msg; + send msgs + | None => + msg = { _tag : "BalanceOfResponse"; _recipient : _sender; _amount : zero; + address : tokenOwner; balance : zero}; + msgs = one_msg msg; + send msgs + end +end + +transition TotalSupply () + msg = { _tag : "TotalSupplyResponse"; _recipient : _sender; _amount : zero; + caller : _sender; totalSupply : total_tokens}; + msgs = one_msg msg; + send msgs +end + +transition Transfer (to : ByStr20, tokens : Uint128) + bal <- balances[_sender]; + match bal with + | Some b => + can_do = le_int tokens b; + match can_do with + | True => + (* subtract tokens from _sender and add it to "to" *) + new_sender_bal = builtin sub b tokens; + balances[_sender] := new_sender_bal; + + (* Adds tokens to "to" address *) + to_bal <- balances[to]; + new_to_bal = match to_bal with + | Some x => builtin add x tokens + | None => tokens + end; + + balances[to] := new_to_bal; + msg = { _tag : "TransferSuccess"; _recipient : _sender; _amount : zero; + sender : _sender; recipient : to; amount : tokens}; + msgs = one_msg msg; + send msgs + | False => + (* balance not sufficient. *) + msg = { _tag : "TransferFailure"; _recipient : _sender; _amount : zero; + sender : _sender; recipient : to; amount : zero}; + msgs = one_msg msg; + send msgs + end + | None => + (* no balance record, can't transfer *) + msg = { _tag : "TransferFailure"; _recipient : _sender; _amount : zero; + sender : _sender; recipient : to; amount : zero}; + msgs = one_msg msg; + send msgs + end +end + +transition TransferFrom (from : ByStr20, to : ByStr20, tokens : Uint128) + bal <- balances[from]; + (* Check if _sender has been authorized by "from" *) + sender_allowed_from <- allowed[from][_sender]; + match bal with + | Some a => + match sender_allowed_from with + | Some b => + (* We can only transfer the minimum of available or authorized tokens *) + t = min_int a b; + can_do = le_int tokens t; + match can_do with + | True => + (* tokens is what we should subtract from "from" and add to "to" *) + new_from_bal = builtin sub a tokens; + balances[from] := new_from_bal; + to_bal <- balances[to]; + match to_bal with + | Some tb => + new_to_bal = builtin add tb tokens; + balances[to] := new_to_bal + | None => + (* "to" has no balance. So just set it to tokens *) + balances[to] := tokens + end; + (* reduce "allowed" by "tokens" *) + new_allowed = builtin sub b tokens; + allowed[from][_sender] := new_allowed; + msg = { _tag : "TransferFromSuccess"; _recipient : _sender; _amount : zero; + sender : from; recipient : to; amount : tokens }; + msgs = one_msg msg; + send msgs + | False => + msg = { _tag : "TransferFromFailure"; _recipient : _sender; _amount : zero; + sender : from; recipient : to; amount : zero }; + msgs = one_msg msg; + send msgs + end + | None => + msg = { _tag : "TransferFromFailure"; _recipient : _sender; _amount : zero; + sender : from; recipient : to; amount : zero }; + msgs = one_msg msg; + send msgs + end + | None => + msg = { _tag : "TransferFromFailure"; _recipient : _sender; _amount : zero; + sender : from; recipient : to; amount : zero }; + msgs = one_msg msg; + send msgs + end +end + +transition Approve (spender : ByStr20, tokens : Uint128) + allowed[_sender][spender] := tokens; + msg = { _tag : "ApproveSuccess"; _recipient : _sender; _amount : zero; + approver : _sender; spender : spender; amount : tokens }; + msgs = one_msg msg; + send msgs +end + +transition Allowance (tokenOwner : ByStr20, spender : ByStr20) + spender_allowance <- allowed[tokenOwner][spender]; + match spender_allowance with + | Some n => + msg = { _tag : "AllowanceResponse"; _recipient : _sender; _amount : zero; + owner : tokenOwner; spender : spender; amount : n }; + msgs = one_msg msg; + send msgs + | None => + msg = { _tag : "AllowanceResponse"; _recipient : _sender; _amount : zero; + owner : tokenOwner; spender : spender; amount : zero }; + msgs = one_msg msg; + send msgs + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/064_zil-game.scilla b/products/bluebell/core/tests/data/formatter/formatted/064_zil-game.scilla new file mode 100644 index 000000000..fff3816d9 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/064_zil-game.scilla @@ -0,0 +1,254 @@ +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) + +import BoolUtils + +library ZilGame + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +let no_msg = Nil {Message} + +let hash_dist = + fun (h0 : ByStr32) => + fun (h1 : ByStr32) => + let h00 = builtin to_uint256 h0 in + let h11 = builtin to_uint256 h1 in + let lt = builtin lt h00 h11 in + match lt with + | False => + builtin sub h00 h11 + | True => + builtin sub h11 h00 + end + +let update_hash = + fun (oh : Option ByStr32) => + fun (h : ByStr32) => + match oh with + | Some x => Some {ByStr32} x + | None => Some {ByStr32} h + end + +let update_timer = + fun (tm : Option BNum) => + fun (b : BNum) => + match tm with + | Some x => Some {BNum} x + | None => + let window = Uint32 11 in + let b1 = builtin badd b window in + Some {BNum} b1 + end + +(* b is within the time window *) +let can_play = + fun (tm : Option BNum) => + fun (b : BNum) => + match tm with + | None => True + | Some b1 => builtin blt b b1 + end + +let time_to_claim = + fun (tm : Option BNum) => + fun (b : BNum) => + match tm with + | None => False + | Some b1 => + let c1 = builtin blt b b1 in + negb c1 + end + +let check_validity = + fun (a : ByStr20) => + fun (solution : Int128) => + fun (pa : ByStr20) => + fun (pb : ByStr20) => + fun (guess_a : Option ByStr32) => + fun (guess_b : Option ByStr32) => + let ca = builtin eq pa a in + let cb = builtin eq pb a in + let xa = Pair {Bool (Option ByStr32)} ca guess_a in + let xb = Pair {Bool (Option ByStr32)} cb guess_b in + match xa with + | Pair True (Some g) => + let h = builtin sha256hash solution in + builtin eq h g + | _ => + match xb with + | Pair True (Some g) => + let h = builtin sha256hash solution in + builtin eq h g + | _ => False + end + end + +(* Owner can withdraw balance if deadline has passed *) +let can_withdraw = + fun (tm : BNum) => + fun (b : BNum) => + let window = Uint32 30 in + let deadline = builtin badd tm window in + builtin blt deadline b + +(* In the case of equal results, or no results the prise goes to the owner *) +let determine_winner = + fun (puzzle : ByStr32) => + fun (guess_a : Option ByStr32) => + fun (guess_b : Option ByStr32) => + fun (pa : ByStr20) => + fun (pb : ByStr20) => + fun (oa : ByStr20) => + let gab = Pair { (Option ByStr32) (Option ByStr32) } guess_a guess_b in + match gab with + | Pair (Some ga) (Some gb) => + let d1 = hash_dist puzzle ga in + let d2 = hash_dist puzzle gb in + let c1 = builtin lt d1 d2 in + match c1 with + | True => pa + | False => + let c2 = builtin eq d1 d2 in + match c2 with + | False => pb + | True => oa + end + end + | Pair (Some _) None => pa + | Pair None (Some _) => pb + | Pair None None => oa + end + +let solution_submitted = Int32 1 +let time_window_missed = Int32 2 +let not_a_player = Int32 3 +let too_early_to_claim = Int32 4 +let wrong__sender_or_solution = Int32 5 +let here_is_the_reward = Int32 6 +let cannot_withdraw = Int32 7 + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract ZilGame +( +owner : ByStr20, +player_a : ByStr20, +player_b : ByStr20, +puzzle : ByStr32 +) + +(* Initial balance is not stated explicitly: it's initialized when creating the contract. *) + +field player_a_hash : Option ByStr32 = None {ByStr32} +field player_b_hash : Option ByStr32 = None {ByStr32} +field timer : Option BNum = None {BNum} + +transition Play (guess: ByStr32) + tm_opt <- timer; + b <- & BLOCKNUMBER; + (* Check the timer *) + c = can_play tm_opt b; + match c with + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; + code : time_window_missed}; + msgs = one_msg msg; + send msgs + | True => + isa = builtin eq _sender player_a; + isb = builtin eq _sender player_b; + tt = True; + match isa with + | True => + ah <- player_a_hash; + hopt = update_hash ah guess; + player_a_hash := hopt; + tm1 = update_timer tm_opt b; + timer := tm1; + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; + code : solution_submitted}; + msgs = one_msg msg; + send msgs + | False => + match isb with + | True => + bh <- player_b_hash; + hopt = update_hash bh guess; + player_b_hash := hopt; + tm1 = update_timer tm_opt b; + timer := tm1; + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; + code : solution_submitted}; + msgs = one_msg msg; + send msgs + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; + code : not_a_player}; + msgs = one_msg msg; + send msgs + end + end + end +end + +transition ClaimReward(solution: Int128) + tm_opt <- timer; + b <- & BLOCKNUMBER; + (* Check the timer *) + ttc = time_to_claim tm_opt b; + match ttc with + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; + code : too_early_to_claim}; + msgs = one_msg msg; + send msgs + | True => + pa <- player_a_hash; + pb <- player_b_hash; + is_valid = check_validity _sender solution player_a player_b pa pb; + match is_valid with + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; + code : wrong__sender_or_solution}; + msgs = one_msg msg; + send msgs + | True => + winner = determine_winner puzzle pa pb player_a player_b owner; + bal <- _balance; + msg = {_tag : ""; _recipient : winner; _amount : bal; + code : here_is_the_reward}; + ff = False; + msgs = one_msg msg; + send msgs + end + end +end + +transition Withdraw () + tm =_creation_block; + b <- &BLOCKNUMBER; + cw = can_withdraw tm b; + is_owner = builtin eq owner _sender; + bal <- _balance; + good_to_go = andb cw is_owner; + match good_to_go with + | True => + msg = {_tag : ""; _recipient : owner; _amount : bal; code : here_is_the_reward}; + msgs = one_msg msg; + e = { _eventname : "GameOver" }; + event e; + send msgs + | False => + msg = {_tag : ""; _recipient : _sender; _amount : Uint128 0; code : cannot_withdraw}; + msgs = one_msg msg; + send msgs + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/065_remote_state_reads.scilla b/products/bluebell/core/tests/data/formatter/formatted/065_remote_state_reads.scilla new file mode 100644 index 000000000..8698f663d --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/065_remote_state_reads.scilla @@ -0,0 +1,176 @@ +scilla_version 0 + +library RRLib + +(* Tests various aspects of address types and remote state reads *) + +type AddressADT = +| Address1 of ByStr20 with end +| Address2 of ByStr20 with contract field admin : ByStr20 with end end + +contract RRContract ( + (* Any address in use *) + cparam1: ByStr20 with end, + (* Any contract address *) + cparam2: ByStr20 with contract end, + (* Address with various fields *) + cparam3: ByStr20 with contract + field transactionCount : Uint32, + field admin : ByStr20 with end, + field owners : Map (ByStr20 with end) Bool, + field signatures : Map Uint32 (Map (ByStr20 with end) Bool), + field other_map : Map Uint128 (ByStr20 with end) + end) + +field assign_test_1 : ByStr20 with end = cparam3 +field assign_test_2 : ByStr20 with contract field transactionCount : Uint32 end = cparam3 +field assign_test_3 : ByStr20 with contract field admin : ByStr20 with end end = cparam3 +field assign_test_4 : ByStr20 with contract field admin : ByStr20 end = cparam3 +field assign_test_5 : ByStr20 with contract field owners : Map ByStr20 Bool end = cparam3 +field assign_test_6 : ByStr20 with contract field signatures : Map Uint32 (Map ByStr20 Bool) end = cparam3 +field assign_test_7 : ByStr20 with contract field other_map : Map Uint128 ByStr20 end = cparam3 +field assign_test_8 : AddressADT = Address1 cparam1 +field assign_test_9 : List AddressADT = Nil {AddressADT} +field assign_test_10 : Map Uint128 (Map Uint128 AddressADT) = Emp Uint128 (Map Uint128 AddressADT) + +field remote_reads_test_res_1_1 : Uint128 = Uint128 0 (* _balance of remote1 *) +field remote_reads_test_res_2_1 : Uint128 = Uint128 0 (* _balance of remote2 *) +field remote_reads_test_res_3_1 : Uint128 = Uint128 0 (* _balance of remote3 *) +field remote_reads_test_res_3_3 : Uint32 = Uint32 0 (* transactionCount of remote3 *) +field remote_reads_test_res_3_4 : ByStr20 with end = cparam3 (* admin of remote3 *) +field remote_reads_test_res_3_5 : Uint128 = Uint128 0 (* _balance of admin of remote3 *) +field remote_reads_test_res_3_6 : Map (ByStr20 with end) Bool = Emp (ByStr20 with end) Bool (* owners of remote3 *) +field remote_reads_test_res_3_7 : Bool = True (* exists of owners[key] in remote3 *) +field remote_reads_test_res_3_8 : Option Bool = let x = True in Some {Bool} x (* owners[key] in remote3 *) +field remote_reads_test_res_3_9 : Map Uint32 (Map (ByStr20 with end) Bool) = Emp Uint32 (Map (ByStr20 with end) Bool) (* signatures of remote3 *) +field remote_reads_test_res_3_10 : Bool = False (* exists of signatures[key] of remote3 *) +field remote_reads_test_res_3_11 : Option (Map (ByStr20 with end) Bool) = None {Map (ByStr20 with end) Bool} (* signatures[key] of remote3 *) +field remote_reads_test_res_3_12 : Bool = False (* exists signatures[key1][key2] of remote3 *) +field remote_reads_test_res_3_13 : Option Bool = None {Bool} (* signatures[key1][key2] of remote3 *) + +field sender_balance_pre : Uint128 = Uint128 0 +field sender_balance_mid : Uint128 = Uint128 0 +field sender_balance_post : Uint128 = Uint128 0 + +transition RemoteReadsTest( + (* Any address in use *) + remote1: ByStr20 with end, + (* Any contract address *) + remote2: ByStr20 with contract end, + (* Address with various fields *) + remote3: ByStr20 with contract + field transactionCount : Uint32, + field admin : ByStr20 with end, + field owners : Map (ByStr20 with end) Bool, + field signatures : Map Uint32 (Map ByStr20 with end Bool) + end) + tmp_1_1 <-& remote1._balance; + remote_reads_test_res_1_1 := tmp_1_1; + + tmp_2_1 <-& remote2._balance; + remote_reads_test_res_2_1 := tmp_2_1; + + tmp_3_1 <-& remote3._balance; + remote_reads_test_res_3_1 := tmp_3_1; + + tmp_3_3 <-& remote3.transactionCount; + remote_reads_test_res_3_3 := tmp_3_3; + + tmp_3_4 <-& remote3.admin; + remote_reads_test_res_3_4 := tmp_3_4; + + tmp_3_5 <-& tmp_3_4._balance; + remote_reads_test_res_3_5 := tmp_3_5; + + tmp_3_6 <-& remote3.owners; + remote_reads_test_res_3_6 := tmp_3_6; + + tmp_3_7 <-& exists remote3.owners[_sender]; + remote_reads_test_res_3_7 := tmp_3_7; + + tmp_3_8 <-& remote3.owners[_sender]; + remote_reads_test_res_3_8 := tmp_3_8; + + tmp_3_9 <-& remote3.signatures; + remote_reads_test_res_3_9 := tmp_3_9; + + x = Uint32 0; + tmp_3_10 <-& exists remote3.signatures[x]; + remote_reads_test_res_3_10 := tmp_3_10; + + tmp_3_11 <-& remote3.signatures[x]; + remote_reads_test_res_3_11 := tmp_3_11; + + tmp_3_12 <-& exists remote3.signatures[x][_origin]; + remote_reads_test_res_3_12 := tmp_3_12; + + tmp_3_13 <-& remote3.signatures[x][_origin]; + remote_reads_test_res_3_13 := tmp_3_13 + +end + +(* Test the dynamic typecheck of ADT values *) +transition RemoteReadsADTTest( + list1 : List (ByStr20 with end), + list2 : List (ByStr20 with contract field f : Uint128 end), + list3 : List (ByStr20 with contract field g : AddressADT end), + pair1 : Pair (ByStr20 with end) AddressADT, + adt1 : AddressADT, + remote1: ByStr20 with contract field h : Map Uint128 AddressADT end) +end + +(* Test that outgoing messages and events use ByStr20 for type info, and not the full address type + Also test that this is the case for EventInfo *) +transition OutgoingMsgTest() + msg = {_tag: ""; + _recipient : _sender; + _amount : Uint128 0; + param : cparam3 }; + msgs = let n = Nil {Message} in + Cons {Message} msg n; + send msgs; + e1 = { _eventname : "TestEvent"; + info : cparam2 }; + event e1; + e2 = { _eventname : "TestEvent"; + info : cparam3 }; + event e2 +end + +(* Test that exceptions use ByStr20 for type info, and not the full address type *) +transition ExceptionTest() + e = {_exception : "TestException"; + value : cparam3 }; + throw e +end + +transition AssignTest() + x = Address2 cparam3; + assign_test_8 := x; + y = let n = Nil {AddressADT} in + Cons {AddressADT} x n; + assign_test_9 := y; + z = let n = Emp Uint128 (Map Uint128 AddressADT) in + let sub_n = Emp Uint128 AddressADT in + let sub_k = Uint128 0 in + let sub_res = builtin put sub_n sub_k x in + builtin put n sub_k sub_res; + assign_test_10 := z; + k1 = Uint128 1; + k2 = Uint128 42; + assign_test_10[k1][k2] := x +end + +(* Check that sender balance is deducted on acceptance *) +transition SenderBalanceTest() + pre <-& _sender._balance; + sender_balance_pre := pre; + (* First accept should cause sender balance to decrease *) + accept; + mid <-& _sender._balance; + sender_balance_mid := mid; + (* Second accept should make no difference *) + accept; + post <-& _sender._balance; + sender_balance_post := post +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/066_simple-dex.scilla b/products/bluebell/core/tests/data/formatter/formatted/066_simple-dex.scilla new file mode 100644 index 000000000..ed7c18cbc --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/066_simple-dex.scilla @@ -0,0 +1,250 @@ +scilla_version 0 + +import PairUtils + +(* Simple DEX : P2P Token Trades *) +(* Disclaimer: This contract is experimental and meant for testing purposes only *) +(* DO NOT USE THIS CONTRACT IN PRODUCTION *) + +library SimpleDex + +(* Pair helpers *) +let getAddressFromPair = @fst (ByStr20) (Uint128) +let getValueFromPair = @snd (ByStr20) (Uint128) + +(* Event for errors *) +let make_error_event = + fun (location: String) => + fun (msg: String) => + { _eventname : "Error" ; raisedAt: location; message: msg} + +(* Order = { tokenA, valueA, tokenB, valueB } *) +type Order = +| Order of ByStr20 Uint128 ByStr20 Uint128 + +(* Create an orderID based on the hash of the parameters *) +let createOrderId = + fun (order: Order) => + builtin sha256hash order + +(* Create one transaction message *) +let transaction_msg = + fun (recipient : ByStr20) => + fun (tag : String) => + fun (transferFromAddr: ByStr20) => + fun (transferToAddr: ByStr20) => + fun (transferAmt: Uint128) => + {_tag : tag; _recipient : recipient; _amount : Uint128 0; + from: transferFromAddr; to: transferToAddr; tokens: transferAmt } + +(* Wrap one transaction message as singleton list *) +let transaction_msg_as_list = + fun (recipient : ByStr20) => + fun (tag : String) => + fun (transferFromAddr: ByStr20) => + fun (transferToAddr: ByStr20) => + fun (transferAmt: Uint128) => + let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg in + let msg = transaction_msg recipient tag transferFromAddr transferToAddr transferAmt in + one_msg msg + +(* Compute the new pending return val *) +(* If no existing records are found, return `incomingTokensAmt` *) +(* else, return `incomingTokenAmt` + existing value *) +let computePendingReturnsVal = + fun ( prevVal : Option Uint128 ) => + fun ( incomingTokensAmt : Uint128 ) => + match prevVal with + | Some v => + builtin add v incomingTokensAmt + | None => + incomingTokensAmt + end + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract SimpleDex +(contractOwner: ByStr20) + +(* Orderbook: mapping (orderIds => ( (tokenA, valueA) (tokenB, valueB) )) *) +(* @param: tokenA: Contract address of token A *) +(* @param: valueA: total units of token A offered by maker *) +(* @param: tokenB: Contract address of token B *) +(* @param: valueB: total units of token B requsted by maker *) +field orderbook : Map ByStr32 Order + = Emp ByStr32 Order +(* Order info stores the mapping ( orderId => (tokenOwnerAddress, expirationBlock)) *) +field orderInfo : Map ByStr32 (Pair (ByStr20)(BNum)) = Emp ByStr32 (Pair (ByStr20) (BNum)) + +(* Ledger of how much the _sender can claim from the contract *) +(* mapping ( walletAddress => mapping (tokenContracts => amount) ) *) +field pendingReturns : Map ByStr20 (Map ByStr20 Uint128) = Emp ByStr20 (Map ByStr20 Uint128) + +(* Maker creates an order to exchange valueA of tokenA for valueB of tokenB *) +transition makeOrder(tokenA: ByStr20, valueA: Uint128, tokenB: ByStr20, valueB: Uint128, expirationBlock: BNum) + currentBlock <- & BLOCKNUMBER; + validExpirationBlock = let minBlocksFromCreation = Uint128 50 in + let minExpiration = builtin badd currentBlock minBlocksFromCreation in + builtin blt minExpiration expirationBlock; + match validExpirationBlock with + | True => + (* Creates a new order *) + newOrder = Order tokenA valueA tokenB valueB; + orderId = createOrderId newOrder; + orderbook[orderId] := newOrder; + + (* Updates orderInfo with maker's address and expiration blocknumber *) + p = Pair {(ByStr20) (BNum)} _sender expirationBlock; + orderInfo[orderId] := p; + + e = {_eventname: "Order Created"; hash: orderId }; + event e; + + (* Transfer tokens from _sender to the contract address *) + msgs = let tag = "TransferFrom" in + let zero = Uint128 0 in + transaction_msg_as_list tokenA tag _sender _this_address valueA; + send msgs + | False => + e = let func = "makeOrder" in + let error_msg = "Expiration block must be at least 50 blocks more than current block" in + make_error_event func error_msg; + event e + end +end + + +(* Taker fills an order *) +transition fillOrder(orderId: ByStr32) + getOrder <- orderbook[orderId]; + match getOrder with + | Some (Order tokenA valueA tokenB valueB)=> + (* Check the expiration block *) + optionOrderInfo <- orderInfo[orderId]; + match optionOrderInfo with + | Some info => + currentBlock <- & BLOCKNUMBER; + blockBeforeExpiration = let getBNum = @snd (ByStr20) (BNum) in + let expirationBlock = getBNum info in + builtin blt currentBlock expirationBlock; + match blockBeforeExpiration with + | True => + makerAddr = let getMakerAddr = @fst (ByStr20)(BNum) in + getMakerAddr info; + (* Updates taker with the tokens that he is entitled to claim *) + prevVal <- pendingReturns[_sender][tokenA]; + takerAmt = computePendingReturnsVal prevVal valueA; + pendingReturns[_sender][tokenA] := takerAmt; + + prevVal_1 <- pendingReturns[makerAddr][tokenB]; + makerAmt = computePendingReturnsVal prevVal_1 valueB; + pendingReturns[makerAddr][tokenB] := makerAmt; + + (* Delete orders from the orderbook and orderinfo *) + delete orderInfo[orderId]; + delete orderbook[orderId]; + + e = {_eventname: "Order Filled"; hash: orderId }; + event e; + (* Transfer tokens from _sender to the contract address *) + msgs = let tag = "TransferFrom" in + transaction_msg_as_list tokenB tag _sender _this_address valueB; + send msgs + | False => + e = let func = "fillOrder" in + let error_msg = "Current block number exceeds the expiration block set" in + make_error_event func error_msg; + event e + end + | None => + e = let func = "fillOrder" in + let error_msg = "OrderId not found" in + make_error_event func error_msg; + event e + end + | None => + e = let func = "fillOrder" in + let error_msg = "OrderId not found" in + make_error_event func error_msg; + event e + end +end + + +(* Allows users to claim back their tokens from the smart contract *) +transition ClaimBack(token: ByStr20) + getAmtOutstanding <- pendingReturns[_sender][token]; + match getAmtOutstanding with + | Some amtOutstanding => + delete pendingReturns[_sender][token]; + e = {_eventname: "Claimback Successful"; caller: _sender; tokenAddr: token; amt: amtOutstanding }; + event e; + (* Transfer tokens from _sender to the contract address *) + msgs = let tag = "TransferFrom" in + transaction_msg_as_list token tag _this_address _sender amtOutstanding; + send msgs + | None => + e = let func = "claimBack" in + let error_msg = "No Pending Returns for Sender and Contract Address found" in + make_error_event func error_msg; + event e + end +end + + +(* Maker can cancel his order *) +transition cancelOrder(orderId: ByStr32) + getOrderInfo <- orderInfo[orderId]; + match getOrderInfo with + | Some orderInfoForId => + makerAddr = let getMakerAddr = @fst (ByStr20)(BNum) in + getMakerAddr orderInfoForId; + checkSender = builtin eq makerAddr _sender; + match checkSender with + | True => + (* Sender is the maker, proceed with cancellation *) + fetchOrder <- orderbook[orderId]; + match fetchOrder with + | Some (Order tokenA valueA _ _)=> + + (* Updates taker with the tokens that he is entitled to claim *) + prevVal <- pendingReturns[_sender][tokenA]; + takerAmt = computePendingReturnsVal prevVal valueA; + pendingReturns[_sender][tokenA] := takerAmt; + + (* Delete orders from the orderbook and orderinfo *) + delete orderInfo[orderId]; + delete orderbook[orderId]; + + e = {_eventname: "Cancel order successful"; hash: orderId }; + event e + (* @note: For consistency, we use claimback instead of sending the tokens *) + (* back to the maker *) + | None => + e = let func = "cancelOrder" in + let error_msg = "OrderID not found" in + make_error_event func error_msg; + event e + end + + | False => + (* Unauthorized transaction *) + e = let func = "cancelOrder" in + let error_msg = "Sender is not maker of the order" in + make_error_event func error_msg; + event e + end + | None => + (* Order ID not found *) + e = let func = "cancelOrder" in + let error_msg = "OrderID not found" in + make_error_event func error_msg; + event e + end +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/067_dead_code_test1.scilla b/products/bluebell/core/tests/data/formatter/formatted/067_dead_code_test1.scilla new file mode 100644 index 000000000..b79fbcad0 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/067_dead_code_test1.scilla @@ -0,0 +1,296 @@ +scilla_version 0 + +(* Modified `bookstore.scilla` to use for testing the Dead Code Detector *) + + +(***************************************************) +(* Associated library *) +(***************************************************) +import BoolUtils +library BookstoreDead1 + +let one_msg = + fun (msg: Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(* error codes library *) +let code_success = Uint32 0 +let code_book_not_found = Uint32 1 +let code_not_authorized = Uint32 2 +let code_invalid_params = Uint32 3 +let code_bookid_exist = Uint32 4 +let code_store_not_open = Uint32 5 +let dead_code_var = Uint32 6 + +(* + * Book is an ADT with two fields: + * Book = { book_title, author } + *) +type Book = +| Book of String String + +(* + * Member is an ADT with two fields: + * Member = { name , membership_type } + *) +type Member = +| Member of String Uint32 + +(* To be caught *) +type DeadType = +| Dead of String String + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract BookstoreDead1 +(owner: ByStr20, +store_name: String) + +(* storeName can be immutable if it won't ever be changed *) + + +(* Membership data consists of three attributes *) +(* Equivalent member data in C++ struct *) +(* struct Member { *) +(* ByStr20 address; *) +(* String name; *) +(* Uint32 membershipType; // 0: Regular, 1: Premium, 2: Corporate *) +(* } *) +(* Where address is the "key" *) + +field members: Map ByStr20 Member + = Emp ByStr20 Member + +(* bookstore is opened by default during initialisation *) +field is_store_open: Bool = True + +(* Bookinventory will store a Map of Books *) +field bookInventory: Map Uint32 Book + = Emp Uint32 Book + +(* Book data consists of three attributes: BookID, Title and Author*) +(* Equivalent member data in C++ struct *) +(* struct Book { *) +(* Uint32 BookID; *) +(* String Book_title; *) +(* String Author; *) +(* } *) + +field deadField1: Bool = True +field deadField2: Map Uint32 Book + = Emp Uint32 Book + + +procedure EmitMemberEvent (status: Bool, status_code: Uint32, msg: String) + match status with + | True => + e = {_eventname: "AddMemberSuccess"; code: status_code; message: msg}; + event e + | False => + e = {_eventname: "AddMemberFailure"; code: status_code; message: msg}; + event e + end +end + +procedure DeadProc1 (dead_pparam: Bool) +end + +procedure DeadProc2 () +end + + +procedure EmitBookEvent ( + status: Bool, + status_code: Uint32, + event_action: String, + book_id: Uint32 +) + match status with + | True => + e = { + _eventname: "BookEventSuccess"; + code: status_code; + action: event_action; + id: book_id}; + event e + | False => + e = { + _eventname: "BookEventFailure"; + code: status_code; + action: event_action; + id: book_id}; + event e + end +end + + +(***************************************************) +(* Transitions *) +(***************************************************) + +(* + * OpenStore: Set the store as open or close + * @param: is_open { Boolean } + *) + +transition OpenStore(is_open: Bool, dead_param: Bool) + + (* Access control: Checking if sender is the owner of the Contract *) + is_authorized = builtin eq _sender owner; + match is_authorized with + | True => + is_store_open := is_open; + e = {_eventname: "OpenStore"; status: is_open}; + event e + | False => + (* Unauthorized transaction *) + status = False; + msg = "Unauthorised Transaction"; + EmitMemberEvent status code_not_authorized msg + end +end + + + +(* @notice: add member is an example. It is not used in other functions. *) +(* @dev: in real contracts, a developer can use a members mapping to manage *) +(* access controls to grant a user permission to perform certain actions *) +(* (e.g. add/remove books) *) + +transition AddMember(name: String, member_address: ByStr20, member_type: Uint32) + + (* Access control: Checking if sender is the owner of the Contract *) + is_authorized = builtin eq _sender owner; + match is_authorized with + | True => + (* Only the owner can add member *) + (* Check if membership type is valid. *) + valid_type = let three = Uint32 3 in + builtin lt member_type three; + match valid_type with + | True => + new_member = Member name member_type; + members[member_address] := new_member; + status = True; + EmitMemberEvent status code_success name + | False => + (* Code for the membership type is invalid *) + status = False; + msg = "Invalid membership type"; + EmitMemberEvent status code_invalid_params msg + end + | False => + (* Unauthorized transaction *) + status = False; + msg = "Unauthorised Transaction"; + EmitMemberEvent status code_not_authorized msg + end +end + +(* @notice: Allows a `_sender` to add a book to the bookstore *) +(* @dev : Access controls are omitted for brevity. In production contracts, *) +(* you will want to implement proper access controls to allow only *) +(* an owner or member to add a book. *) + +transition AddBook(book_title: String, author: String, book_id: Uint32) + + (* @dev: Preconditions can be set to allow only members to add a book *) + (* @dev: Access controls logic omitted for brevity *) + + is_open <- is_store_open; + match is_open with + | True => + does_book_exist <- exists bookInventory[book_id]; + match does_book_exist with + | True => + action = "Add"; + status = False; + EmitBookEvent status code_bookid_exist action book_id + + | False => + (* Creating a new Book Model *) + (* A new book model is a Pair of book_title and author *) + new_book = Book book_title author; + + (* Add the new book to the book_inventory Map, with BookID as the key*) + bookInventory[book_id] := new_book; + + action = "Add"; + status = True; + EmitBookEvent status code_success action book_id + end + | False => + (* Store is not open *) + action = "Add"; + status = False; + EmitBookEvent status code_store_not_open action book_id + end +end + +(* @notice: Allows a `_sender` to remove a book from the bookstore *) +(* @dev : Access controls are omitted for brevity. In production contracts, *) +(* you will want to implement proper access controls to allow only *) +(* an owner or member to remove a book. *) + +transition RemoveBook(book_id: Uint32) + (* @dev: Preconditions can be set to allow only members to remove a book *) + (* @dev: Access controls logic omitted for brevity *) + + is_open <- is_store_open; + match is_open with + | True => + get_book <- bookInventory[book_id]; + match get_book with + | Some (Book book_title _) => + action = "Remove"; + status = True; + EmitBookEvent status code_success action book_id; + delete bookInventory[book_id] + | None => + book_title = "Error: Not Found"; + action = "Remove"; + status = False; + EmitBookEvent status code_book_not_found action book_id + end + | False => + (* Store is not open *) + action = "Add"; + status = False; + EmitBookEvent status code_store_not_open action book_id + end +end + +(* @notice: Allows a `_sender` to update a book from the bookstore *) +(* @dev : Access controls are omitted for brevity. In production contracts, *) +(* you will want to implement proper access controls to allow only *) +(* an owner or member to remove a book. *) + +transition UpdateBook(book_id: Uint32, book_title: String, author: String) + (* @dev: Preconditions can be set to allow only members to update a book *) + (* @dev: Access controls omitted for brevity *) + + (* preconditions *) + does_book_exist <- exists bookInventory[book_id]; + match does_book_exist with + | False => + (* Book ID is not found in the records. *) + action = "Update"; + status = False; + EmitBookEvent status code_book_not_found action book_id + | True => + (* constructs book model *) + (* Creating a new Book Model *) + (* A new book model is a Pair of book_title and author *) + new_book = Book book_title author; + (* Add the new book to the book_inventory Map, with BookID as the key*) + bookInventory[book_id] := new_book; + + action = "Update"; + status = True; + EmitBookEvent status code_success action book_id + end + +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/068_bookstore.scilla b/products/bluebell/core/tests/data/formatter/formatted/068_bookstore.scilla new file mode 100644 index 000000000..9e3e49cb5 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/068_bookstore.scilla @@ -0,0 +1,294 @@ +scilla_version 0 + + +(* + * Bookstore Contract + * + * This contract demonstrates how a developer can build a CRUD-like smart contract easily. + * Concepts covered: + * - Procedures + * - Custom ADTs + * - Simple Access Controls + * + * Access control logic is delibrately left out for brevity. You can reference AddMember + * for how you can implement access control to prevent unauthorised access to transitions. + *) + + +(***************************************************) +(* Associated library *) +(***************************************************) +library BookStore + +let one_msg = + fun (msg: Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(* error codes library *) +let code_success = Uint32 0 +let code_book_not_found = Uint32 1 +let code_not_authorized = Uint32 2 +let code_invalid_params = Uint32 3 +let code_bookid_exist = Uint32 4 +let code_store_not_open = Uint32 5 + +(* + * Book is an ADT with two fields: + * Book = { book_title, author } + *) +type Book = +| Book of String String + + +(* + * Member is an ADT with two fields: + * Member = { name , membership_type } + *) +type Member = +| Member of String Uint32 + +(***************************************************) +(* The contract definition *) +(***************************************************) +contract BookStore +(owner: ByStr20, +store_name: String) + +(* storeName can be immutable if it won't ever be changed *) + + +(* Membership data consists of three attributes *) +(* Equivalent member data in C++ struct *) +(* struct Member { *) +(* ByStr20 address; *) +(* String name; *) +(* Uint32 membershipType; // 0: Regular, 1: Premium, 2: Corporate *) +(* } *) +(* Where address is the "key" *) + +field members: Map ByStr20 Member + = Emp ByStr20 Member + +(* bookstore is opened by default during initialisation *) +field is_store_open: Bool = True + +(* Bookinventory will store a Map of Books *) +field bookInventory: Map Uint32 Book + = Emp Uint32 Book + +(* Book data consists of three attributes: BookID, Title and Author*) +(* Equivalent member data in C++ struct *) +(* struct Book { *) +(* Uint32 BookID; *) +(* String Book_title; *) +(* String Author; *) +(* } *) + + +procedure EmitMemberEvent (status: Bool, status_code: Uint32, msg: String) + match status with + | True => + e = {_eventname: "AddMemberSuccess"; code: status_code; message: msg}; + event e + | False => + e = {_eventname: "AddMemberFailure"; code: status_code; message: msg}; + event e + end +end + + +procedure EmitBookEvent ( + status: Bool, + status_code: Uint32, + event_action: String, + book_id: Uint32 +) + match status with + | True => + e = { + _eventname: "BookEventSuccess"; + code: status_code; + action: event_action; + id: book_id}; + event e + | False => + e = { + _eventname: "BookEventFailure"; + code: status_code; + action: event_action; + id: book_id}; + event e + end +end + + +(***************************************************) +(* Transitions *) +(***************************************************) + +(* + * OpenStore: Set the store as open or close + * @param: is_open { Boolean } + *) + +transition OpenStore(is_open: Bool) + + (* Access control: Checking if sender is the owner of the Contract *) + is_authorized = builtin eq _sender owner; + match is_authorized with + | True => + is_store_open := is_open; + e = {_eventname: "OpenStore"; status: is_open}; + event e + | False => + (* Unauthorized transaction *) + status = False; + msg = "Unauthorised Transaction"; + EmitMemberEvent status code_not_authorized msg + end +end + + + +(* @notice: add member is an example. It is not used in other functions. *) +(* @dev: in real contracts, a developer can use a members mapping to manage *) +(* access controls to grant a user permission to perform certain actions *) +(* (e.g. add/remove books) *) + +transition AddMember(name: String, member_address: ByStr20, member_type: Uint32) + + (* Access control: Checking if sender is the owner of the Contract *) + is_authorized = builtin eq _sender owner; + match is_authorized with + | True => + (* Only the owner can add member *) + (* Check if membership type is valid. *) + valid_type = let three = Uint32 3 in + builtin lt member_type three; + match valid_type with + | True => + + new_member = Member name member_type; + members[member_address] := new_member; + status = True; + EmitMemberEvent status code_success name + | False => + (* Code for the membership type is invalid *) + status = False; + msg = "Invalid membership type"; + EmitMemberEvent status code_invalid_params msg + end + | False => + (* Unauthorized transaction *) + status = False; + msg = "Unauthorised Transaction"; + EmitMemberEvent status code_not_authorized msg + end +end + +(* @notice: Allows a `_sender` to add a book to the bookstore *) +(* @dev : Access controls are omitted for brevity. In production contracts, *) +(* you will want to implement proper access controls to allow only *) +(* an owner or member to add a book. *) + +transition AddBook(book_title: String, author: String, book_id: Uint32) + + (* @dev: Preconditions can be set to allow only members to add a book *) + (* @dev: Access controls logic omitted for brevity *) + + is_open <- is_store_open; + match is_open with + | True => + does_book_exist <- exists bookInventory[book_id]; + match does_book_exist with + | True => + action = "Add"; + status = False; + EmitBookEvent status code_bookid_exist action book_id + + | False => + (* Creating a new Book Model *) + (* A new book model is a Pair of book_title and author *) + new_book = Book book_title author; + + (* Add the new book to the book_inventory Map, with BookID as the key*) + bookInventory[book_id] := new_book; + + action = "Add"; + status = True; + EmitBookEvent status code_success action book_id + end + | False => + (* Store is not open *) + action = "Add"; + status = False; + EmitBookEvent status code_store_not_open action book_id + end +end + +(* @notice: Allows a `_sender` to remove a book from the bookstore *) +(* @dev : Access controls are omitted for brevity. In production contracts, *) +(* you will want to implement proper access controls to allow only *) +(* an owner or member to remove a book. *) + +transition RemoveBook(book_id: Uint32) + (* @dev: Preconditions can be set to allow only members to remove a book *) + (* @dev: Access controls logic omitted for brevity *) + + is_open <- is_store_open; + match is_open with + | True => + get_book <- bookInventory[book_id]; + match get_book with + | Some (Book book_title _) => + action = "Remove"; + status = True; + EmitBookEvent status code_success action book_id; + delete bookInventory[book_id] + | None => + book_title = "Error: Not Found"; + action = "Remove"; + status = False; + EmitBookEvent status code_book_not_found action book_id + end + | False => + (* Store is not open *) + action = "Add"; + status = False; + EmitBookEvent status code_store_not_open action book_id + end +end + +(* @notice: Allows a `_sender` to update a book from the bookstore *) +(* @dev : Access controls are omitted for brevity. In production contracts, *) +(* you will want to implement proper access controls to allow only *) +(* an owner or member to remove a book. *) + +transition UpdateBook(book_id: Uint32, book_title: String, author: String) + (* @dev: Preconditions can be set to allow only members to update a book *) + (* @dev: Access controls omitted for brevity *) + + (* preconditions *) + does_book_exist <- exists bookInventory[book_id]; + match does_book_exist with + | False => + (* Book ID is not found in the records. *) + action = "Update"; + status = False; + EmitBookEvent status code_book_not_found action book_id + | True => + (* constructs book model *) + (* Creating a new Book Model *) + (* A new book model is a Pair of book_title and author *) + new_book = Book book_title author; + (* Add the new book to the book_inventory Map, with BookID as the key*) + bookInventory[book_id] := new_book; + + action = "Update"; + status = True; + EmitBookEvent status code_success action book_id + end + +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/069_simple-dex-remote-reads.scilla b/products/bluebell/core/tests/data/formatter/formatted/069_simple-dex-remote-reads.scilla new file mode 100644 index 000000000..46c12e463 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/069_simple-dex-remote-reads.scilla @@ -0,0 +1,321 @@ +(* This contract is only used in the documentation at scilla.readthedocs.io. + No tests are run as part of our test suite *) + +scilla_version 0 + +import IntUtils + +library SimpleExchangeLib + +(* Order placer, sell token, sell amount, buy token, buy amount *) +type Order = +| Order of ByStr20 + (ByStr20 with contract field allowances : Map ByStr20 (Map ByStr20 Uint128) end) + Uint128 + (ByStr20 with contract field allowances : Map ByStr20 (Map ByStr20 Uint128) end) + Uint128 + +(* Helper values and functions *) +let true = True +let false = False + +let zero = Uint128 0 +let one = Uint128 1 + +let one_msg : Message -> List Message = + fun (msg : Message) => + let mty = Nil { Message } in + Cons { Message } msg mty + +let two_msgs : Message -> Message -> List Message = + fun (msg1 : Message) => + fun (msg2 : Message) => + let first = one_msg msg1 in + Cons { Message } msg2 first + +let mk_transfer_msg : Bool -> ByStr20 -> ByStr20 -> ByStr20 -> Uint128 -> Message = + fun (transfer_from : Bool) => + fun (token_address : ByStr20) => + fun (from : ByStr20) => + fun (to : ByStr20) => + fun (amount : Uint128) => + let tag = match transfer_from with + | True => "TransferFrom" + | False => "Transfer" + end + in + { _recipient : token_address; + _tag : tag; + _amount : Uint128 0; (* No Zil are transferred, only custom tokens *) + from : from; + to : to; + amount : amount } + +let mk_place_order_msg : ByStr20 -> ByStr20 -> ByStr20 -> Uint128 -> List Message = + fun (token_address : ByStr20) => + fun (from : ByStr20) => + fun (to : ByStr20) => + fun (amount : Uint128) => + (* Construct a TransferFrom messsage to transfer from seller's allowance to exhange *) + let msg = mk_transfer_msg true token_address from to amount in + (* Create a singleton list *) + one_msg msg + +let mk_make_order_msgs : ByStr20 -> Uint128 -> ByStr20 -> Uint128 -> + ByStr20 -> ByStr20 -> ByStr20 -> List Message = + fun (token_sell_address : ByStr20) => + fun (sell_amount : Uint128) => + fun (token_buy_address : ByStr20) => + fun (buy_amount : Uint128) => + fun (this_address : ByStr20) => + fun (order_placer : ByStr20) => + fun (order_maker : ByStr20) => + (* Construct a Transfer messsage to transfer from exchange to maker *) + let sell_msg = mk_transfer_msg false token_sell_address this_address order_maker sell_amount in + (* Construct a TransferFrom messsage to transfer from maker to placer *) + let buy_msg = mk_transfer_msg true token_buy_address order_maker order_placer buy_amount in + (* Create a singleton list *) + two_msgs sell_msg buy_msg + + +contract SimpleExchange +( + (* Ensure that the initial admin is an address that is in use *) + initial_admin : ByStr20 with end +) + +(* Active admin. *) +(* NOTE: We don't need to read any fields from the admin *) +(* address, so we could have chosen ByStr20 as the field type. This could *) +(* have been done without changing the type of initial_admin or the *) +(* new_admin transition parameter, because ByStr20 with end is a subtype *) +(* of ByStr20, which means that a value of type ByStr20 with end can be *) +(* used when a ByStr20 is expected. initial_admin is checked to be in use *) +(* when the contract is deployed, and new_admin transition parameter is *) +(* checked to be in use when the SetAdmin transition is invoked, so we *) +(* can still be sure that we don't accidentally set an admin field to an *) +(* address that is not in use. *) +(* *) +(* The advantage of choosing ByStr20 with end as the field type is that *) +(* we don't accidentally set the admin address to an unchecked ByStr20 in *) +(* some other part of the code by mistake. *) +field admin : ByStr20 with end = initial_admin + +(* Tokens listed on the exchange. *) +(* We identify the token by its exchange code, and map it to the address *) +(* of the contract implementing the token. The contract at that address must *) +(* contain an allowances field that we can remote read. *) +field listed_tokens : + Map String (ByStr20 with contract + field allowances : Map ByStr20 (Map ByStr20 Uint128) + end) + = Emp String (ByStr20 with contract + field allowances : Map ByStr20 (Map ByStr20 Uint128) + end) + +(* Active orders, identified by the order number *) +field active_orders : Map Uint128 Order = Emp Uint128 Order + +(* The order number to use when the next order is placed *) +field next_order_no : Uint128 = zero + +procedure ThrowListingStatusException( + token_code : String, + expected_status : Bool, + actual_status : Bool) + e = { _exception : "UnexpectedListingStatus"; + token_code: token_code; + expected : expected_status; + actual : actual_status }; + throw e +end + +procedure ThrowInsufficientAllowanceException( + token : ByStr20, + expected : Uint128, + actual : Uint128) + e = { _exception : "InsufficientAllowance"; + token: token; + expected : expected; + actual : actual }; + throw e +end + +(* Check that _sender is the active admin. *) +(* If not, throw an error and abort the transaction *) +procedure CheckSenderIsAdmin() + current_admin <- admin; + is_admin = builtin eq _sender current_admin; + match is_admin with + | True => (* Nothing to do *) + | False => + (* Construct an exception object and throw it *) + e = { _exception : "SenderIsNotAdmin" }; + throw e + end +end + +(* Change the active admin *) +(* NOTE: Only the former admin is allowed to appoint a new admin *) +transition SetAdmin( + new_admin : ByStr20 with end + ) + (* Only the former admin may appoint a new admin *) + CheckSenderIsAdmin; + admin := new_admin +end + +(* Check that a given token code is not already listed. If it is, throw an error. *) +procedure CheckIsTokenUnlisted( + token_code : String + ) + (* Is the token code listed? *) + token_code_is_listed <- exists listed_tokens[token_code]; + match token_code_is_listed with + | True => + (* Incorrect listing status *) + ThrowListingStatusException token_code false token_code_is_listed + | False => (* Nothing to do *) + end +end + +(* List a new token on the exchange. Only the admin may list new tokens. *) +(* If a token code is already in use, raise an error *) +(* NOTE: The token address must have an allowances field. If the supplied *) +(* address does not contain such a field, the transition fails, and the *) +(* transaction aborts. *) +transition ListToken( + token_code : String, + new_token : ByStr20 with contract field allowances : Map ByStr20 (Map ByStr20 Uint128) end + ) + (* Only the admin may list new tokens. *) + CheckSenderIsAdmin; + (* Only new token codes are allowed. *) + CheckIsTokenUnlisted token_code; + (* Everything is ok. The token can be listed *) + listed_tokens[token_code] := new_token +end + +(* Check that the sender has allowed access to sufficient funds *) +procedure CheckAllowance( + token : ByStr20 with contract field allowances : Map ByStr20 (Map ByStr20 Uint128) end, + expected : Uint128 + ) + actual_opt <-& token.allowances[_sender][_this_address]; + (* Find actual allowance. Use 0 if None is given *) + actual = match actual_opt with + | Some x => x + | None => zero + end; + is_sufficient = uint128_le expected actual; + match is_sufficient with + | True => (* Nothing to do *) + | False => + ThrowInsufficientAllowanceException token expected actual + end +end + +procedure AddOrder( + order : Order + ) + (* Get the next order number *) + order_no <- next_order_no; + (* Add the order *) + active_orders[order_no] := order; + (* Update the next_order_no field *) + new_order_no = builtin add order_no one; + next_order_no := new_order_no +end + +(* Place an order on the exchange *) +transition PlaceOrder( + token_code_sell : String, + sell_amount : Uint128, + token_code_buy: String, + buy_amount : Uint128 + ) + (* Check that the tokens are listed *) + token_sell_opt <- listed_tokens[token_code_sell]; + token_buy_opt <- listed_tokens[token_code_buy]; + match token_sell_opt with + | Some token_sell => + match token_buy_opt with + | Some token_buy => + (* Check that the placer has allowed sufficient funds to be accessed *) + CheckAllowance token_sell sell_amount; + (* Transfer the sell tokens to the exchange for holding. Construct a TransferFrom message to the token contract. *) + msg = mk_place_order_msg token_sell _sender _this_address sell_amount; + (* Send message when the transition completes. *) + send msg; + (* Create order and add to list of active orders *) + order = Order _sender token_sell sell_amount token_buy buy_amount; + AddOrder order + | None => + (* Unlisted token *) + ThrowListingStatusException token_code_buy true false + end + | None => + (* Unlisted token *) + ThrowListingStatusException token_code_sell true false + end +end + +transition MatchOrder( + order_id : Uint128) + order <- active_orders[order_id]; + match order with + | Some (Order order_placer sell_token sell_amount buy_token buy_amount) => + (* Check that the placer has allowed sufficient funds to be accessed *) + CheckAllowance buy_token buy_amount; + (* Create the two transfer messages and send them *) + msgs = mk_make_order_msgs sell_token sell_amount buy_token buy_amount _this_address order_placer _sender; + send msgs; + (* Order has now been matched, so remove it *) + delete active_orders[order_id] + | None => + e = { _exception : "UnknownOrder"; + order_id : order_id }; + throw e + end +end + +procedure CheckInitiator( + initiator : ByStr20) + initiator_is_this = builtin eq initiator _this_address; + match initiator_is_this with + | True => (* Do nothing *) + | False => + e = { _exception : "UnexpecedTransfer"; + token_address : _sender; + initiator : initiator }; + throw e + end +end + +transition RecipientAcceptTransferFrom ( + initiator : ByStr20, + sender : ByStr20, + recipient : ByStr20, + amount : Uint128) + (* The exchange only accepts transfers that it itself has initiated. *) + CheckInitiator initiator +end + +transition TransferFromSuccessCallBack ( + initiator : ByStr20, + sender : ByStr20, + recipient : ByStr20, + amount : Uint128) + (* The exchange only accepts transfers that it itself has initiated. *) + CheckInitiator initiator +end + +transition TransferSuccessCallBack ( + initiator : ByStr20, + sender : ByStr20, + recipient : ByStr20, + amount : Uint128) + (* The exchange only accepts transfers that it itself has initiated. *) + CheckInitiator initiator +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/070_Polynetwork.scilla b/products/bluebell/core/tests/data/formatter/formatted/070_Polynetwork.scilla new file mode 100644 index 000000000..92640e7b7 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/070_Polynetwork.scilla @@ -0,0 +1,303 @@ +scilla_version 0 + +import Polynetwork BoolUtils + +library Polynetwork_local + +let nullAddress = 0x0000000000000000000000000000000000000000 + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +contract Polynetwork(thisChainID : Uint64) + +(* + * Scilla cross chain tx hash indexed by the automatically increased index. + * This map exists for the reason that Poly chain can verify the existence + * of cross chain request tx coming from Scilla + *) +field f_zilToPolyTxHashMap : Map Uint256 ByStr32 = Emp Uint256 ByStr32 +field f_zilToPolyTxHashIndex : Uint256 = Uint256 0 + +field f_curKeepers : List ByStr20 = Nil {ByStr20} +field f_curStartHeight : Uint32 = Uint32 0 +field f_fromChainTxExist : Map Uint64 (Map ByStr32 Unit) = Emp Uint64 (Map ByStr32 Unit) + +procedure verifyPubkeysAndUpdate(pubkeys : List Pubkey, h_nextBookkeeper : ByStr20, h_height : Uint32) + nextbookkeeper_keepers = verifyPubkey pubkeys; + match nextbookkeeper_keepers with + | Pair nextBookKeeper keepers => + (* Ensure that Header's nextBookKeeper is same as the one from verifyPubkey *) + nbk_eq = builtin eq nextBookKeeper h_nextBookkeeper; + match nbk_eq with + | True => + f_curStartHeight := h_height; + f_curKeepers := keepers + | False => + e = { _exception : "NextBookers Illegal" }; + throw e + end + end + +end + +transition initGenesisBlock (rawHeader : ByStr, pubkeys : List Pubkey) + curKeepers <- f_curKeepers; + match curKeepers with + | Nil => + header_o = deserialize_Header rawHeader zero_uint32; + match header_o with + | Some + (Pair + (Header h_version h_chainid h_prevBlockHash h_txnroot h_crossStatesRoot + h_blockRoot h_timestamp h_height h_consensusData h_consensusPayload + h_nextBookkeeper) + nextpos) + => + verifyPubkeysAndUpdate pubkeys h_nextBookkeeper h_height; + e = { _eventname : "GenesisBlock"; height : h_height; header : rawHeader }; + event e + | None => + e = { _exception : "Error deserializing header" }; + throw e + end + | Cons _ _ => + e = { _exception : "Already Initialized" }; + throw e + end +end + +procedure checkAndMarkFromChainTxn(chainID : Uint64, txHash : ByStr) + txHash32_o = builtin to_bystr32 txHash; + match txHash32_o with + | Some txHash32 => + already_exists <- exists f_fromChainTxExist[chainID][txHash32]; + match already_exists with + | True => + e = { _exception : "Txn already executed" }; + throw e + | False => + f_fromChainTxExist[chainID][txHash32] := unit + end + | None => + e = { _exception : "Txn hash invalid" }; + throw e + end +end + +procedure executeCrossChainTxn (txparam : TxParam, fromChainId : Uint64, crossChainTxHash : ByStr) + match txparam with + | TxParam txHash crossChainID fromContract toChainID toContract method args => + toChainIDOk = builtin eq toChainID thisChainID; + match toChainIDOk with + | True => + toContractAddr_o = builtin to_bystr20 toContract; + match toContractAddr_o with + | Some toContractAddr => + method_name = builtin to_ascii method; + m = { _tag : method_name; args : args; + fromContractAddr : fromContract; + fromChainId : fromChainId; + _amount : Uint128 0; + _recipient : toContractAddr }; + mo = one_msg m; + send mo; + e = { _eventname : "VerifyHeaderAndExecuteTxEvent"; + fromChainId : fromChainId; + toContractAddr : toContractAddr; + crossChainTxHash : crossChainTxHash; + fromChainTxHash : txHash + }; + event e + | None => + e = { _exception : "Address format mismatch" }; + throw e + end + | False => + e = { _exception : "This txn is not for Zilliqa network" }; + throw e + end + end +end + +(* @notice Verify Poly chain header and proof, execute the cross chain tx from Poly chain to Zilliqa + * @param proof Poly chain tx merkle proof + * @param rawHeader The header containing crossStateRoot to verify the above tx merkle proof + * @param headerProof The header merkle proof used to verify rawHeader + * @param curRawHeader Any header in current epoch consensus of Poly chain + * @param headerSig The coverted signature veriable for solidity derived from Poly chain consensus nodes' signature + * used to verify the validity of curRawHeader + * @return true or false + *) +transition verifyHeaderAndExecuteTx(proof : Proof, rawHeader : ByStr, headerProof : Proof, curRawHeader : ByStr, headerSig : List Signature) + header_o = deserialize_Header rawHeader zero_uint32; + curKeepers <- f_curKeepers; + curStartHeight <- f_curStartHeight; + n = lengther_address curKeepers; + m = compute_m n; + match header_o with + | Some + (Pair + (Header h_version h_chainid h_prevBlockHash h_txnroot h_crossStatesRoot + h_blockRoot h_timestamp h_height h_consensusData h_consensusPayload + h_nextBookkeeper) + nextpos) + => + is_lt = builtin lt h_height curStartHeight; + match is_lt with + | True => + signed = verifySig curRawHeader headerSig curKeepers m; + match signed with + | True => + curHeader_o = deserialize_Header curRawHeader zero_uint32; + match curHeader_o with + | Some (Pair + (Header h_version h_chainid h_prevBlockHash h_txnroot h_crossStatesRoot + h_blockRoot h_timestamp h_height h_consensusData h_consensusPayload + h_nextBookkeeper) + nextpos) + => + proof_o = merkle_prove headerProof h_blockRoot; + match proof_o with + | Some proveValue => + proveValue32_o = builtin to_bystr32 proveValue; + match proveValue32_o with + | Some proveValue32 => + headerHash = get_header_hash rawHeader; + proof_ok = builtin eq headerHash proveValue32; + match proof_ok with + | True => (* Do nothing *) + | False => + e = { _exception : "Merkle proof invalid" }; + throw e + end + | None => + e = { _exception : "merkle_prove result incorrect" }; + throw e + end + | None => + end + | None => + e = { _exception : "Error deserializing header" }; + throw e + end + | False => + e = { _exception : "Signature verification failed" }; + throw e + end + | False => + signed = verifySig rawHeader headerSig curKeepers m; + match signed with + | True => (* Do nothing *) + | False => + e = { _exception : "Signature verification failed" }; + throw e + end + end; + toMerkleValueBs_o = merkle_prove proof h_crossStatesRoot; + match toMerkleValueBs_o with + | Some toMerkleValueBs => + toMerkleValue_o = deserialize_ToMerkleValue toMerkleValueBs zero_uint32; + match toMerkleValue_o with + | Some (Pair (ToMerkleValue txhash fromChainId txparam) _) => + checkAndMarkFromChainTxn fromChainId txhash; + executeCrossChainTxn txparam fromChainId txhash + | None => + e = { _exception : "Merkle value deserialization failed" }; + throw e + end + | None => + e = { _exception : "Merkle proof invalid" }; + throw e + end + | None => + e = { _exception : "Error deserializing header" }; + throw e + end +end + +(* @notice change Poly chain consensus book keeper + * @param rawHeader Poly chain change book keeper block raw header + * @param pubKeyList Poly chain consensus nodes public key list + * @param sigList Poly chain consensus nodes signature list + * @return true or false + *) +transition changeBookKeeper(rawHeader : ByStr, pubkeys : List Pubkey, sigList : List Signature) + header_o = deserialize_Header rawHeader zero_uint32; + curStartHeight <- f_curStartHeight; + match header_o with + | Some + (Pair + (Header h_version h_chainid h_prevBlockHash h_txnroot h_crossStatesRoot + h_blockRoot h_timestamp h_height h_consensusData h_consensusPayload + h_nextBookkeeper) + nextpos) + => + heightOk = builtin lt curStartHeight h_height; + nextBookKeeperOk = let b = builtin eq h_nextBookkeeper nullAddress in negb b; + both_ok = andb heightOk nextBookKeeperOk; + match both_ok with + | True => + curKeepers <- f_curKeepers; + n = lengther_address curKeepers; + m = compute_m n; + signed = verifySig rawHeader sigList curKeepers m; + match signed with + | True => + verifyPubkeysAndUpdate pubkeys h_nextBookkeeper h_height; + e = { _eventname : "ChangeBookKeeper"; height : h_height; header : rawHeader }; + event e + | False => + e = { _exception : "Signature verification failed" }; + throw e + end + | False => + e = { _exception : "Header height lower than cur epoch heigh / Next bookkeeper empty" }; + throw e + end + | None => + e = { _exception : "Error deserializing header" }; + throw e + end +end + +procedure updateZilTxHash(txHashIndex : Uint256, rawParamHash : ByStr32) + f_zilToPolyTxHashMap[txHashIndex] := rawParamHash; + one_uint256 = Uint256 1; + newTxHashIndex = builtin add txHashIndex one_uint256; + f_zilToPolyTxHashIndex := newTxHashIndex +end + +(* @notice ERC20 token cross chain to other blockchain. + * this function push tx event to blockchain + * @param toChainId Target chain id + * @param toContract Target smart contract address in target block chain + * @param txData Transaction data for target chain, include to_address, amount + * @return true or false + *) +transition crossChain(toChainId : Uint64, toContract : ByStr, method : ByStr, txData : ByStr) + txHashIndex <- f_zilToPolyTxHashIndex; + paramTxHash = let b = builtin to_bystr32 txHashIndex in builtin to_bystr b; + crossChainId = + let this_bs = builtin to_bystr _this_address in + let s = builtin concat this_bs paramTxHash in + let h = builtin sha256hash s in + builtin to_bystr h; + fromContract = builtin to_bystr _sender; + txp = TxParam paramTxHash crossChainId fromContract toChainId toContract method txData; + (* Serialize the TxParam object *) + empty_bystr = let b = 0x in builtin to_bystr b; + rawParam = append_TxParam empty_bystr txp; + rawParamHash = builtin keccak256hash rawParam; + updateZilTxHash txHashIndex rawParamHash; + e = { _eventname : "CrossChainEvent"; + origin : _origin; + paramTxHash : paramTxHash; + sender : _sender; + toChainId : toChainId; + toContract : toContract; + rawParam : rawParam }; + event e +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/071_ud-registry.scilla b/products/bluebell/core/tests/data/formatter/formatted/071_ud-registry.scilla new file mode 100644 index 000000000..ff3618936 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/071_ud-registry.scilla @@ -0,0 +1,377 @@ +(* Give some love to the UD Dev Team Bogdan, Ryan, Don and Ali. *) + +scilla_version 0 +import BoolUtils ListUtils +library RegistryLib +let zeroUint64 = Uint64 0 +let zeroByStr20 = 0x0000000000000000000000000000000000000000 +let zeroByStr32 = + 0x0000000000000000000000000000000000000000000000000000000000000000 +let nilByStr20 = Nil {ByStr20} +let nilMessage = Nil {Message} +let oneMsg = + fun(msg: Message) => + Cons {Message} msg nilMessage +let eqByStr20 = + fun(bs1: ByStr20) => + fun(bs2: ByStr20) => + builtin eq bs1 bs2 +let listByStr20Contains = + fun(list: List ByStr20) => + fun(bs: ByStr20) => + let listMemByStr20 = @list_mem ByStr20 in + listMemByStr20 eqByStr20 bs list +let listByStr20Excludes = + fun(list: List ByStr20) => + fun(bs: ByStr20) => + let b = listByStr20Contains list bs in negb b +let listByStr20FilterOut = + fun(list: List ByStr20) => + fun(bs: ByStr20) => + let listByStr20Filter = @list_filter ByStr20 in + let fn = fun(v: ByStr20) => + let b = builtin eq v bs in + negb b in + listByStr20Filter fn list +let xandb = + fun(b1: Bool) => + fun(b2: Bool) => + match b1 with + | True => + match b2 with + | True => True + | False => False + end + | False => + match b2 with + | True => False + | False => True + end + end +let eAdminSet = + fun(address: ByStr20) => + fun(isApproved: Bool) => + {_eventname: "AdminSet"; address: address; isApproved: isApproved} +let eApprovedFor = + fun(user: ByStr20) => + fun(operator: ByStr20) => + fun(isApproved: Bool) => + {_eventname: "ApprovedFor"; user: user; operator: operator; isApproved: isApproved} +let eApproved = + fun(address: ByStr20) => + {_eventname: "Approved"; address: address} +let eNewRegistrar = + fun(address: ByStr20) => + {_eventname: "NewRegistrar"; address: address} +let eNewDomain = + fun(parent: ByStr32) => + fun(label: String) => + {_eventname: "NewDomain"; parent: parent; label: label} +let eConfigured = + fun(node: ByStr32) => + fun(owner: ByStr20) => + fun(resolver: ByStr20) => + {_eventname: "Configured"; node: node; owner: owner; resolver: resolver} +let eError = + fun(msg: String) => + {_eventname: "Error"; msg: msg } +type Record = +| Record of ByStr20 ByStr20 +let recordMemberOwner = + fun(maybeRecord: Option Record) => + match maybeRecord with + | None => zeroByStr20 + | Some record => + match record with + | Record owner resolver => owner + end + end +let parentLabelToNode = + fun(parent: ByStr32) => + fun(label: String) => + let labelHash = builtin sha256hash label in + let nodeInput = builtin concat parent labelHash in + builtin sha256hash nodeInput +let getIsOAO = + fun(sender: ByStr20) => + fun(recordOwner: ByStr20) => + fun(maybeApproved: Option ByStr20) => + fun(maybeOperators: Option (List ByStr20)) => + let isOwner = builtin eq sender recordOwner in + let isApproved = + match maybeApproved with + | None => False + | Some approved => builtin eq sender approved + end in + let isOperator = match maybeOperators with + | None => False + | Some operators => listByStr20Contains operators sender + end in + let b1 = orb isOwner isApproved in orb b1 isOperator +contract Registry +(initialOwner: ByStr20, rootNode: ByStr32) +field records: Map ByStr32 Record = + let empty = Emp ByStr32 Record in + let rootRecord = Record initialOwner zeroByStr20 in + builtin put empty rootNode rootRecord +field registrar: ByStr20 = zeroByStr20 +field approvals: Map ByStr32 ByStr20 = Emp ByStr32 ByStr20 +field operators: Map ByStr20 (List ByStr20) = Emp ByStr20 (List ByStr20) +field admins: List ByStr20 = Cons {ByStr20} initialOwner nilByStr20 +transition setAdmin(address: ByStr20, isApproved: Bool) + currentAdmins <- admins; + isSenderAdmin = listByStr20Contains currentAdmins _sender; + match isSenderAdmin with + | True => + needsToChange = + let b = listByStr20Excludes currentAdmins address in xandb b isApproved; + match needsToChange with + | True => + newAdmins = match isApproved with + | True => Cons {ByStr20} address currentAdmins + | False => listByStr20FilterOut currentAdmins address + end; + admins := newAdmins; + e = eAdminSet address isApproved; + event e + | _ => + end + | False => + e = let m = "Sender not root node owner" in eError m; + event e + end +end +transition approve(node: ByStr32, address: ByStr20) + maybeRecord <- records[node]; + recordOwner = recordMemberOwner maybeRecord; + isSenderNodeOwner = builtin eq _sender recordOwner; + match isSenderNodeOwner with + | True => + maybeApproved <- approvals[node]; + currentlyApproved = match maybeApproved with + | None => zeroByStr20 + | Some approved => approved + end; + needsToChange = let b = builtin eq currentlyApproved address in negb b; + match needsToChange with + | True => + approvals[node] := address; + e = eApproved address; + event e + | _ => + end + | False => + e = let m = "Sender not node owner" in eError m; + event e + end +end +transition approveFor(address: ByStr20, isApproved: Bool) + maybeOperators <- operators[_sender]; + currentOperators = match maybeOperators with + | None => nilByStr20 + | Some ops => ops + end; + needsToChange = let b = listByStr20Excludes currentOperators address in + xandb b isApproved; + match needsToChange with + | True => + newOperators = match isApproved with + | True => Cons {ByStr20} address currentOperators + | False => listByStr20FilterOut currentOperators address + end; + operators[_sender] := newOperators; + e = eApprovedFor _sender address isApproved; + event e + | _ => + end +end +transition configureNode(node: ByStr32, owner: ByStr20, resolver: ByStr20) + maybeRecord <- records[node]; + maybeApproved <- approvals[node]; + recordOwner = recordMemberOwner maybeRecord; + maybeOperators <- operators[recordOwner]; + isSenderOAO = getIsOAO _sender recordOwner maybeApproved maybeOperators; + match isSenderOAO with + | True => + newRecord = Record owner resolver; + records[node] := newRecord; + e = eConfigured node owner resolver; + event e; + msgs = let m = {_tag: "onConfigureSuccess"; node: node; owner: owner; + _amount: Uint128 0; _recipient: _sender} + in oneMsg m; + send msgs + | False => + e = let m = "Sender not node owner, approved or operator" in eError m; + event e; + msgs = let m = {_tag: "onConfigureFailure"; node: node; owner: recordOwner; + _amount: Uint128 0; _recipient: _sender} + in oneMsg m; + send msgs + end +end +transition configureResolver(node: ByStr32, resolver: ByStr20) + maybeRecord <- records[node]; + maybeApproved <- approvals[node]; + recordOwner = recordMemberOwner maybeRecord; + maybeOperators <- operators[recordOwner]; + isSenderOAO = getIsOAO _sender recordOwner maybeApproved maybeOperators; + match isSenderOAO with + | True => + newRecord = Record recordOwner resolver; + records[node] := newRecord; + e = eConfigured node recordOwner resolver; + event e + | False => + e = let m = "Sender not node owner, approved or operator" in eError m; + event e + end +end +transition transfer(node: ByStr32, owner: ByStr20) + maybeRecord <- records[node]; + maybeApproved <- approvals[node]; + recordOwner = recordMemberOwner maybeRecord; + maybeOperators <- operators[recordOwner]; + isSenderOAO = getIsOAO _sender recordOwner maybeApproved maybeOperators; + match isSenderOAO with + | True => + delete approvals[node]; + newRecord = Record owner zeroByStr20; + records[node] := newRecord; + e = eConfigured node owner zeroByStr20; + event e; + msgs = let m = {_tag: "onTransferSuccess"; node: node; owner: owner; + _amount: Uint128 0; _recipient: _sender} + in oneMsg m; + send msgs + | False => + e = let m = "Sender not node owner, approved or operator" in eError m; + event e; + msgs = let m = {_tag: "onTransferFailure"; node: node; owner: owner; + _amount: Uint128 0; _recipient: _sender} + in oneMsg m; + send msgs + end +end +transition assign(parent: ByStr32, label: String, owner: ByStr20) + maybeRecord <- records[parent]; + maybeApproved <- approvals[parent]; + recordOwner = recordMemberOwner maybeRecord; + maybeOperators <- operators[recordOwner]; + isSenderOAO = getIsOAO _sender recordOwner maybeApproved maybeOperators; + match isSenderOAO with + | True => + node = parentLabelToNode parent label; + recordExists <- exists records[node]; + match recordExists with + | False => + e = eNewDomain parent label; + event e + | _ => + end; + delete approvals[node]; + newRecord = Record owner zeroByStr20; + records[node] := newRecord; + e = eConfigured node owner zeroByStr20; + event e; + msgs = let m = {_tag: "onAssignSuccess"; parent: parent; label: label; + owner: owner; _amount: Uint128 0; _recipient: _sender} + in oneMsg m; + send msgs + | False => + e = let m = "Sender not parent owner, approved or operator" in eError m; + event e; + msgs = let m = {_tag: "onAssignFailure"; parent: parent; label: label; + owner: recordOwner; _amount: Uint128 0; _recipient: _sender} + in oneMsg m; + send msgs + end +end +transition bestow(label: String, owner: ByStr20, resolver: ByStr20) + currentAdmins <- admins; + node = parentLabelToNode rootNode label; + recordExists <- exists records[node]; + maybeRecord <- records[node]; + currentRegistrar <- registrar; + isOk = + let isSenderAdmin = listByStr20Contains currentAdmins _sender in + let isSenderRegistrar = builtin eq currentRegistrar _sender in + let isOkSender = orb isSenderRegistrar isSenderAdmin in + let recordOwner = recordMemberOwner maybeRecord in + let recordIsUnowned = builtin eq recordOwner zeroByStr20 in + let recordIsOwnedByRegistrar = builtin eq recordOwner currentRegistrar in + let isRegistrarSenderAndOwned = andb recordIsOwnedByRegistrar isSenderRegistrar in + let isOkRecordOwner = orb recordIsUnowned isRegistrarSenderAndOwned in + andb isOkSender isOkRecordOwner; + match isOk with + | True => + match recordExists with + | False => + e = eNewDomain rootNode label; + event e + | _ => + end; + newRecord = Record owner resolver; + records[node] := newRecord; + e = eConfigured node owner resolver; + event e + | False => + e = let m = "Sender admin" in eError m; + event e + end +end +transition setRegistrar(address: ByStr20) + currentAdmins <- admins; + isOk = listByStr20Contains currentAdmins _sender; + match isOk with + | True => + e = eNewRegistrar address; + event e; + registrar := address + | _ => + end +end +transition register(parent: ByStr32, label: String) + node = parentLabelToNode parent label; + maybeRecord <- records[node]; + maybeApproved <- approvals[node]; + recordOwner = recordMemberOwner maybeRecord; + approved = + match maybeApproved with + | None => zeroByStr20 + | Some approved => approved + end; + currentRegistrar <- registrar; + isOk = + let isRecordUnowned = builtin eq recordOwner zeroByStr20 in + let isUnapproved = builtin eq approved zeroByStr20 in + andb isRecordUnowned isUnapproved; + match isOk with + | True => + accept; + msgs = + let m = {_tag: "register"; _amount: _amount; _recipient: currentRegistrar; + origin: _sender; node: node; parent: parent; label: label} in + oneMsg m; + send msgs + | False => + end +end +transition onResolverConfigured(node: ByStr32) + maybeRecord <- records[node]; + match maybeRecord with + | None => + | Some record => + match record with + | Record owner resolver => + isOk = builtin eq resolver _sender; + match isOk with + | True => + e = eConfigured node owner resolver; + event e + | False => + end + end + end +end + diff --git a/products/bluebell/core/tests/data/formatter/formatted/072_nonfungible-token.scilla b/products/bluebell/core/tests/data/formatter/formatted/072_nonfungible-token.scilla new file mode 100644 index 000000000..771e56188 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/072_nonfungible-token.scilla @@ -0,0 +1,335 @@ +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) +import BoolUtils +library NonfungibleToken + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in +Cons {Message} msg nil_msg + +(* Checks and see if an address is a contract owner *) +let checkContractOwner = + fun (msgSender: ByStr20) => + fun (contractOwner: ByStr20) => + builtin eq msgSender contractOwner + +(* Checks and see if an address is a token owner *) +let isTokenOwner = + fun (msgSender: ByStr20) => + fun (tokenId: Uint256) => + fun (tokenOwnerMap_tmp : Map (Uint256) (ByStr20)) => + let tokenOwner = builtin get tokenOwnerMap_tmp tokenId in + match tokenOwner with + | None => False + | Some val => + builtin eq val msgSender + end + +(* Checks if a given address is approved to make txn the given tokenID *) +(* Not to be confused with isApprovedForAll *) +let isApproved = + fun (msgSender: ByStr20) => + fun (tokenID: Uint256) => + fun (approvalMap_tmp: Map (Uint256) (ByStr20)) => + let val = builtin get approvalMap_tmp tokenID in + match val with + | None => False + | Some val => + builtin eq val msgSender + end + +(* Checks if an message sender is approved by a given owner. (i.e. operator) *) +let isApprovedForAll = + fun (msgSender: ByStr20) => + fun (tokenOwner: ByStr20) => + fun (operatorMap: Map (ByStr20) (Map (ByStr20) (Bool))) => + let m = builtin get operatorMap tokenOwner in + match m with + | None => False + (* owner did not assign anyone to the approval mapping *) + | Some val => + (* val is of type Map (ByStr20) (Bool) *) + let check_list = builtin get val msgSender in + match check_list with + | None => False + | Some is_sender_approved => + (* check if sender has access rights *) + match is_sender_approved with + | True => True + | False => False + end + end + end + +(* Check if a sender is an operator of the owner, approved for the given ID *) +(* or is the owner of the token *) +let isApprovedOrOwner = + fun (isOwner: Bool) => + fun (isApproved: Bool) => + fun (isApprovedForAll: Bool) => + let isOwnerOrApproved = orb isOwner isApproved in + orb isOwnerOrApproved isApprovedForAll + +(* Error events *) +let makeErrorEvent = + fun (location: String) => + fun (errorCode: Uint32) => + {_eventname: "Error"; raisedAt: location; code: errorCode } + +(* Error codes *) +let code_success = Uint32 0 +let code_failure = Uint32 1 +let code_not_authorized = Uint32 2 +let code_not_found = Uint32 4 +let code_bad_request = Uint32 5 +let code_token_exists = Uint32 6 +let code_unexpected_error = Uint32 9 + + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract NonfungibleToken +(contractOwner : ByStr20, + name : String, + symbol: String +) + +(* mutable fields *) + +(* Mapping between tokenId to token owner *) +field tokenOwnerMap: Map Uint256 ByStr20 = Emp Uint256 ByStr20 +(* Mapping from owner to number of owned tokens *) +field ownedTokenCount: Map ByStr20 Uint256 = Emp ByStr20 Uint256 + +(* Mapping between tokenId to approved address *) +(* @dev: There can only be one approved address per token at a given time. *) +field tokenApprovals: Map Uint256 ByStr20 = Emp Uint256 ByStr20 + +(* Mapping from owner to operator approvals *) +field operatorApprovals: Map ByStr20 (Map ByStr20 Bool) + = Emp ByStr20 (Map ByStr20 Bool) + +(* immutable field *) + +(* @notice Count all NFTs assigned to an owner *) +transition balanceOf(address: ByStr20) + optionBal <- ownedTokenCount[address]; + balance = match optionBal with + | Some bal => bal + | None => Uint256 0 + end; + e = {_eventname: "balanceOf"; bal: balance}; + event e +end + + +(* Get the owner of a particular tokenId *) +transition ownerOf(tokenId: Uint256) + someVal <- tokenOwnerMap[tokenId]; + match someVal with + | Some val => + e = {_eventname: "ownerOf"; id: tokenId; owner: val}; + event e + | None => + e = let raisedAt = "ownerOf" in makeErrorEvent raisedAt code_not_found; + event e + end +end + +(* @dev: Mint new tokens. Only `contractOwner` can mint the token*) +(* @param: to - address of the token recipient *) +(* @param: tokenId - token id of the new token *) +(* Returns error message code_token_exist if token exists *) +transition mint(to: ByStr20, tokenId: Uint256) + + (* Sender must be the contract owner *) + isAuthorized = checkContractOwner contractOwner _sender; + match isAuthorized with + | True => + currentTokenOwnerMap <- tokenOwnerMap; + (* Check if token exists *) + tokenExist <- exists tokenOwnerMap[tokenId]; + match tokenExist with + | True => + (* Token exists, return error code *) + e = let raisedAt = "mint" in makeErrorEvent raisedAt code_token_exists; + event e + | False => + (* Mint token *) + tokenOwnerMap[tokenId] := to; + (* add to owner count *) + userCnt <- ownedTokenCount[to]; + match userCnt with + | Some val => + (* Append to existing results *) + newVal= let one = Uint256 1 in builtin add val one; + ownedTokenCount[to] := newVal + | None => + (* User does not have existing tokens *) + newVal = Uint256 1; + ownedTokenCount[to] := newVal + end; + + (* Emit success event *) + e = {_eventname: "Mint successful"; by: _sender; recipient: to; token: tokenId}; + event e + end + | False => + (* Unauthorized transaction - sender is not the contract owner*) + e = let raisedAt = "mint" in makeErrorEvent raisedAt code_not_authorized; + event e + end + + +end + +(* @dev Transfer the ownership of a given token ID to another address *) +(* @param from: Current owner of the token *) +(* @param to: Recipient address of the token *) +(* @param tokenId uint256 id of the token to be transferred *) +transition transferFrom(from: ByStr20, to: ByStr20, tokenId: Uint256) + copy_tokenOwnerMap <- tokenOwnerMap; + copy_tokenApprovals <- tokenApprovals; + copy_operatorApproval <- operatorApprovals; + + (* Get tokenOwner ByStr20 *) + getTokenOwner <- tokenOwnerMap[tokenId]; + match getTokenOwner with + | None => + (* Token not found *) + e = let raisedAt = "transferFrom" in makeErrorEvent raisedAt code_not_found; + event e + + | Some tokenOwner => + + (* Libary functions to check for conditions *) + checkOwner = isTokenOwner _sender tokenId copy_tokenOwnerMap; + checkApproved = isApproved _sender tokenId copy_tokenApprovals; + checkApprovedForAll = isApprovedForAll _sender tokenOwner copy_operatorApproval; + + (* Checks if the `from` is indeed the owner of the token *) + isFromTokenOwner = builtin eq tokenOwner from; + match isFromTokenOwner with + | False => + (* From address is not the same as the tokenOwner *) + e = let raisedAt = "transferFrom" in makeErrorEvent raisedAt code_bad_request; + event e + | True => + (* isApprovedOrOwner checks if any of the three conditions are met *) + isAuthorized = isApprovedOrOwner checkOwner checkApproved checkApprovedForAll; + + match isAuthorized with + | True => + (* Remove from Approval *) + match checkApproved with + | True => + (* Remove entry from approvals at the token level *) + delete tokenApprovals[tokenId] + | False => + end; + + (* Change tokenOwnerMap *) + tokenOwnerMap[tokenId] := to; + + (* Change Count *) + curr_otc <- ownedTokenCount; + + (*subtract one from previous token owner *) + somePrevBal <- ownedTokenCount[from]; + match somePrevBal with + | Some prevBal => + newBal = let one = Uint256 1 in builtin sub prevBal one; + ownedTokenCount[from] := newBal + | None => + e = let raisedAt = "transferFrom" in makeErrorEvent raisedAt code_unexpected_error; + event e + end; + + (* add one to the new token owner *) + userCnt <- ownedTokenCount[to]; + (* Calculate the new token count value for recipient *) + newVal = let one = Uint256 1 in match userCnt with + | Some val => + (* Add to existing value *) + builtin add val one + | None => one + end; + ownedTokenCount[to] := newVal; + e = {_eventname: "transferFrom successful"; from: _sender; recipient: to; token: tokenId}; + event e + | False => + (* Unauthorized transaction *) + e = let raisedAt = "transferFrom" in makeErrorEvent raisedAt code_not_authorized; + event e + end + end + end +end + +(* @dev: Approves another address to transfer the given token ID *) +(* - There can only be one approved address per token at a given time *) +(* - Absence of entry in tokenApproval indicates there is no approved address *) +(* param: to ByStr20 to be approved for the given token id *) +(* param: tokenId uint256 id of the token to be apporved *) + + +transition approve(to: ByStr20, tokenId: Uint256) + + copy_tokenOwnerMap <- tokenOwnerMap; + copy_operatorApproval <- operatorApprovals; + + (* Get tokenOwner ByStr20 *) + getTokenOwner <- tokenOwnerMap[tokenId]; + match getTokenOwner with + | None => + (* Token not found *) + e = let raisedAt = "approve" in makeErrorEvent raisedAt code_not_found; + event e + | Some tokenOwner => + checkApprovedForAll = isApprovedForAll _sender tokenOwner copy_operatorApproval; + checkOwner = isTokenOwner _sender tokenId copy_tokenOwnerMap; + isAuthorized = orb checkApprovedForAll checkOwner; + match isAuthorized with + | True => + (* add to token approval mapping *) + tokenApprovals[tokenId] := to; + (* Emit event *) + e = {_eventname: "Approve successful"; from: _sender; approvedTo: to; token: tokenId}; + event e + | False => + (* Unauthorized transaction *) + e = let raisedAt = "approve" in makeErrorEvent raisedAt code_not_authorized; + event e + end + end +end + +(* @dev: sets or unsets the approval of a given operator *) +(* @param: address to be set or unset as operator *) +(* @param: approved - status of the approval to be set *) + +transition setApprovalForAll(to: ByStr20, approved: Bool) + + copy_operatorApproval <- operatorApprovals; + (* Checks if the _sender is approving himself *) + isValidOperation = let check = builtin eq _sender to in negb check; + (* require _sender is not approving himself *) + match isValidOperation with + | True => + (* Check if sender has an existing record on the operatorApproval *) + operatorApprovals[_sender][to] := approved; + (* Stringify boolean value to be emitted in the event *) + approvedStr = bool_to_string approved; + e = {_eventname: "setApprovalForAll successful"; from: _sender; recipient: to; status: approvedStr}; + event e + | False => + e = let raisedAt = "setApprovalForAll" in makeErrorEvent raisedAt code_not_authorized; + event e + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/073_wallet_2.scilla b/products/bluebell/core/tests/data/formatter/formatted/073_wallet_2.scilla new file mode 100644 index 000000000..6032b9c74 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/073_wallet_2.scilla @@ -0,0 +1,409 @@ +scilla_version 0 + +import ListUtils IntUtils BoolUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library WalletLib + +(* Event emitted when the contract is initialized *) +let mk_contract_initialized_event = + { _eventname : "Contract initialized" } + +(* Event for communicating a new transaction id *) +let mk_transaction_added_event = + fun (tc : Uint32) => + fun (recipient : ByStr20) => + fun (amount : Uint128) => + fun (tag : String) => + { _eventname : "Transaction created" ; transactionId : tc; recipient : recipient; amount : amount; tag : tag } + +(* Event for communicating the execution of a transaction *) +let mk_transaction_executed_event = + fun (tc : Uint32) => + fun (recipient : ByStr20) => + fun (amount : Uint128) => + fun (tag : String) => + { _eventname : "Transaction executed"; transactionId : tc; recipient : recipient; amount : amount; tag : tag } + +(* Event for communicating that a transaction was signed *) +let mk_signed_transaction_event = + fun (tc : Uint32) => + { _eventname : "Transaction signed"; transactionId : tc } + +(* Event for communicating that a signature was revoked *) +let mk_signature_revoked_event = + fun (tc : Uint32) => + { _eventname : "Signature revoked"; transactionId : tc } + +type Error = +| NonOwnerCannotSign +| UnknownTransactionId +| InsufficientFunds +| NoSignatureListFound +| AlreadySigned +| NotAlreadySigned +| InvalidContract +| InvalidAmount +| NotEnoughSignatures +| SenderMayNotExecute +| NonOwnerCannotSubmit +| IncorrectSignatureCount + +(* Error events *) +let mk_error_event = + fun (err : Error) => + let err_code = + match err with + | NonOwnerCannotSign => Int32 -1 + | UnknownTransactionId => Int32 -2 + | InsufficientFunds => Int32 -3 + | NoSignatureListFound => Int32 -4 + | AlreadySigned => Int32 -5 + | NotAlreadySigned => Int32 -6 + | InvalidContract => Int32 -7 + | InvalidAmount => Int32 -8 + | NotEnoughSignatures => Int32 -9 + | SenderMayNotExecute => Int32 -10 + | NonOwnerCannotSubmit => Int32 -11 + | IncorrectSignatureCount => Int32 -12 + end in + { _eventname : "WalletError" ; err_code : err_code } + +let t = True +let f = False +let zero = Uint32 0 +let one = Uint32 1 +let transaction_inc = one + +(* One (potential) transaction, consisting of a recipient address, an amount, *) +(* and a tag (in case the recipient is another contract *) +type Transaction = +| Trans of ByStr20 Uint128 String + +(* Make map of owners *) +let mk_owners_map = + fun (owners : List ByStr20) => + let init = Emp ByStr20 Bool in + let iter = + fun (acc : Map ByStr20 Bool) => + fun (cur_owner : ByStr20) => + (* Add owner unconditionally. We check for duplicates later *) + builtin put acc cur_owner t + in + let folder = @list_foldl ByStr20 (Map ByStr20 Bool) in + folder iter init owners + +(* Create one transaction message *) +let transaction_msg = + fun (recipient : ByStr20) => + fun (amount : Uint128) => + fun (tag : String) => + {_tag : tag; _recipient : recipient; _amount : amount } + +(* Wrap one transaction message as singleton list *) +let transaction_msg_as_list = + fun (recipient : ByStr20) => + fun (amount : Uint128) => + fun (tag : String) => + let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg in + let msg = transaction_msg recipient amount tag in + one_msg msg + +(***************************************************) +(* The contract definition *) +(* *) +(* This contract holds funds that can be paid out *) +(* to arbitrary users, provided that enough people *) +(* in the collection of owners sign off on the *) +(* payout. *) +(* *) +(* The transaction must be added to the contract *) +(* before signatures can be collected. Once enough *) +(* signatures are collected, the recipient can ask *) +(* for the transaction to be executed and the *) +(* money paid out. *) +(* *) +(* If an owner changes his mind about a *) +(* transaction, the signature can be revoked until *) +(* the transaction is executed. *) +(* *) +(* This wallet does not allow adding or removing *) +(* owners, or changing the number of required *) +(* signatures. To do any of those things, perform *) +(* the following steps: *) +(* *) +(* 1. Deploy a new wallet with owners and *) +(* required_signatures set to the new values. *) +(* MAKE SURE THAT THE NEW WALLET HAS BEEN *) +(* SUCCESFULLY DEPLOYED WITH THE CORRECT *) +(* PARAMETERS BEFORE CONTINUING! *) +(* 2. Invoke the SubmitTransaction transition on *) +(* the old wallet with the following *) +(* parameters: *) +(* recipient : The address of the new wallet *) +(* amount : The _balance of the old wallet *) +(* tag : "AddFunds" *) +(* 3. Have (a sufficient number of) the owners of *) +(* the old contract invoke the SignTransaction *) +(* transition on the old wallet. The parameter *) +(* transactionId should be set to the Id of the *) +(* transaction created in step 2. *) +(* 4. Have one of the owners of the old contract *) +(* invoke the ExecuteTransaction transition on *) +(* the old contract. This will cause the entire *) +(* balance of the old contract to be *) +(* transferred to the new wallet. Note that no *) +(* un-executed transactions will be transferred *) +(* to the new wallet along with the funds. *) +(* *) +(* WARNING: If a sufficient number of owners lose *) +(* their private keys, or for any other reason are *) +(* unable or unwilling to sign for new *) +(* transactions, the funds in the wallet will be *) +(* locked forever. It is therefore a good idea to *) +(* set required_signatures to a value strictly *) +(* less than the number of owners, so that the *) +(* remaining owners can retrieve the funds should *) +(* such a scenario occur. *) +(* *) +(* If an owner loses his private key, the *) +(* remaining owners should move the funds to a new *) +(* wallet (using the workflow described above) to *) +(* ensure that funds are not locked if another *) +(* owner loses his private key. The owner who *) +(* originally lost his private key can generate a *) +(* new key, and the corresponding address be added *) +(* to the new wallet, so that the same set of *) +(* persons own the new wallet. *) +(* *) +(***************************************************) +contract Wallet +( +owners_list : List ByStr20, +required_signatures : Uint32 +) +with + let len = @list_length ByStr20 in + let no_of_owners = len owners_list in + let owners_ok = builtin lt zero no_of_owners in + let required_sigs_not_too_low = builtin lt zero required_signatures in + let required_sigs_too_high = builtin lt no_of_owners required_signatures in + let required_sigs_not_too_high = negb required_sigs_too_high in + let required_sigs_ok = andb required_sigs_not_too_high required_sigs_not_too_low in + let all_ok = andb required_sigs_ok owners_ok in + (* Building the owners map is expensive, so avoid checking the owners map until *) + (* everything else has been checked *) + match all_ok with + | True => + let owners_map = mk_owners_map owners_list in + let size_of_owners_map = builtin size owners_map in + builtin eq size_of_owners_map no_of_owners + | False => + False + end +=> + +(* adr -> True indicates an owner *) +(* adr not in map indicates non-owner *) +(* adr -> False is not used *) +field owners : Map ByStr20 Bool = mk_owners_map owners_list + +field transactionCount : Uint32 = Uint32 0 + +(* Collected signatures for transactions *) +field signatures : Map Uint32 (Map ByStr20 Bool) = + Emp Uint32 (Map ByStr20 Bool) + +(* Running count of collected signatures for transactions *) +field signature_counts : Map Uint32 Uint32 = + Emp Uint32 Uint32 + +(* Transactions *) +field transactions : Map Uint32 Transaction = + Emp Uint32 Transaction + +procedure MakeError (err : Error) + e = mk_error_event err; + event e +end + +(* Add signature to signature list *) +procedure AddSignature (transactionId : Uint32, signee : ByStr20) + sig <- exists signatures[transactionId][signee]; + match sig with + | False => + count <- signature_counts[transactionId]; + match count with + | None => + (* 0 signatures *) + signature_counts[transactionId] := one + | Some c => + new_c = builtin add c one; + signature_counts[transactionId] := new_c + end; + signatures[transactionId][signee] := t; + e = mk_signed_transaction_event transactionId; + event e + | True => + (* Already signed *) + err = AlreadySigned; + MakeError err + end +end + +(* Submit a transaction for future signoff *) +transition SubmitTransaction (recipient : ByStr20, amount : Uint128, tag : String) + (* Only allow owners to submit new transactions *) + sender_is_owner <- exists owners[_sender]; + match sender_is_owner with + | False => + err = NonOwnerCannotSubmit; + MakeError err + | True => + tc <- transactionCount; + zero = Uint128 0; + amount_is_zero = builtin eq amount zero; + match amount_is_zero with + | True => + (* Illegal transaction *) + err = InvalidAmount; + MakeError err + | False => + (* Create new transaction *) + transaction = Trans recipient amount tag; + (* Add transaction to outstanding list of transactions *) + transactions[tc] := transaction; + (* Sender implicitly signs *) + AddSignature tc _sender; + (* Increment transaction counter *) + tc_new = builtin add tc transaction_inc; + (* Update transaction count *) + transactionCount := tc_new; + (* Create event with transaction Id *) + e = mk_transaction_added_event tc recipient amount tag; + event e + end + end +end + +(* Sign off on an existing transaction *) +transition SignTransaction (transactionId : Uint32) + (* Only the owner is allowed to sign off transactions *) + sender_is_owner <- exists owners[_sender]; + match sender_is_owner with + | False => + err = NonOwnerCannotSign; + MakeError err + | True => + (* Transaction must have been submitted *) + transaction <- transactions[transactionId]; + match transaction with + | None => + err = UnknownTransactionId; + MakeError err + | Some _ => + (* Remaining error cases handled by AddSignature *) + AddSignature transactionId _sender + end + end +end + +(* Delete transaction and signatures *) +procedure DeleteTransaction (transactionId : Uint32) + delete transactions[transactionId]; + delete signatures[transactionId]; + delete signature_counts[transactionId] +end + +(* Execute signed-off transaction *) +transition ExecuteTransaction (transactionId : Uint32) + transaction_opt <- transactions[transactionId]; + match transaction_opt with + | None => + (* Transaction was not found. *) + err = UnknownTransactionId; + MakeError err + | Some (Trans recipient amount tag) => + (* Only the recipient or an owner can execute the transaction *) + recipient_is_sender = builtin eq recipient _sender; + sender_is_owner <- exists owners[_sender]; + sender_may_execute = orb recipient_is_sender sender_is_owner; + match sender_may_execute with + | False => + err = SenderMayNotExecute; + MakeError err + | True => + (* Check for sufficient funds *) + bal <- _balance; + not_enough_money = builtin lt bal amount; + match not_enough_money with + | True => + err = InsufficientFunds; + MakeError err + | False => + sig_count_opt <- signature_counts[transactionId]; + match sig_count_opt with + | None => + (* Signature count not found, even though the transaction exists.*) + err = NoSignatureListFound; + MakeError err + | Some sig_count => + not_enough_signatures = builtin lt sig_count required_signatures; + match not_enough_signatures with + | True => + err = NotEnoughSignatures; + MakeError err + | False => + (* Transaction approved, and enough money available. *) + (* Remove transaction and signatures, and execute. *) + DeleteTransaction transactionId; + msgs = transaction_msg_as_list recipient amount tag; + send msgs; + e = mk_transaction_executed_event transactionId recipient amount tag; + event e + end + end + end + end + end +end + +(* Revoke signature of existing transaction, if it has not yet been executed. *) +transition RevokeSignature (transactionId : Uint32) + sig <- exists signatures[transactionId][_sender]; + match sig with + | False => + err = NotAlreadySigned; + MakeError err + | True => + count <- signature_counts[transactionId]; + match count with + | None => + err = IncorrectSignatureCount; + MakeError err + | Some c => + c_is_zero = builtin eq c zero; + match c_is_zero with + | True => + err = IncorrectSignatureCount; + MakeError err + | False => + new_c = builtin sub c one; + signature_counts[transactionId] := new_c; + delete signatures[transactionId][_sender]; + e = mk_signature_revoked_event transactionId; + event e + end + end + end +end + +(* Add funds to wallet *) +transition AddFunds () + accept +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/074_ark.scilla b/products/bluebell/core/tests/data/formatter/formatted/074_ark.scilla new file mode 100644 index 000000000..f1cb8267e --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/074_ark.scilla @@ -0,0 +1,501 @@ +scilla_version 0 + +(***************************************************) +(* Associated library *) +(***************************************************) +import IntUtils ListUtils +library ARK + +type Denom = + | Zil + | Token of ByStr20 (* token address / hash *) + +type Coins = + | Coins of Denom Uint128 (* denom, amount *) + +type NFT = + | NFT of + ByStr20 with contract (* token address*) + field token_owners: Map Uint256 ByStr20 + end + Uint256 (* token id *) + +type Side = (* buying or selling the NFT *) + | Buy + | Sell + +(* a partial trade instruction that can be executed later. + price, token & fee is provided separately and must be combined + to produce a valid full cheque (and cheque hash) *) +type Cheque = + | Cheque of Side BNum Uint128 ByStr33 ByStr64 (* trade direction, expiry, nonce, pubkey, signature *) + +type Action = (* executing or voiding a cheque *) + | Execute + | Void + +(* Global variables *) +let zero = Uint128 0 +let none = None {ByStr20} +let true = True +let buy = Buy +let sell = Sell +let zil = Zil +let signed_message_prefix = "Zilliqa Signed Message (" +let signed_message_suffix = "):\n" +let execute_prefix = "Execute ARK Cheque " +let void_prefix = "Void ARK Cheque " +let execute = Execute +let void = Void + +(* Library functions *) +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + +(* Error exception *) +type Error = + | CodeNotOwner + | CodeNotPendingOwner + | CodePendingOwnerNotEmpty + | CodeTokenProxyNotSet + | CodeTokenProxyAlreadySet + | CodeSignatureInvalid + | CodeChequeAlreadyVoided + | CodeChequeExpired + | CodeInvalidPrice + | CodeInvalidFee + | CodeInvalidSide + | CodeInvalidOwner + +let make_error = + fun (result : Error) => + let result_code = + match result with + | CodeNotOwner => Int32 -1 + | CodeNotPendingOwner => Int32 -2 + | CodePendingOwnerNotEmpty => Int32 -3 + | CodeTokenProxyNotSet => Int32 -4 + | CodeTokenProxyAlreadySet => Int32 -5 + | CodeSignatureInvalid => Int32 -6 + | CodeChequeAlreadyVoided => Int32 -7 + | CodeChequeExpired => Int32 -8 + | CodeInvalidPrice => Int32 -9 + | CodeInvalidFee => Int32 -10 + | CodeInvalidSide => Int32 -11 + | CodeInvalidOwner => Int32 -12 + end + in + { _exception : "Error"; code : result_code } + +let get_action_prefix = + fun (action: Action) => + match action with + | Execute => execute_prefix + | Void => void_prefix + end + +let get_account = + fun (cheque: Cheque) => + match cheque with + | Cheque direction expiry nonce pubkey signature => + builtin schnorr_get_address pubkey + end + +let get_amount = + fun (price : Coins) => + match price with + | Coins denom amount => + amount + end + +let get_cheque_hash = + fun (contract_address : ByStr20) => + fun (direction : Side) => + fun (token : NFT) => + fun (price : Coins) => + fun (fee_amount : Uint128) => + fun (expiry : BNum) => + fun (nonce : Uint128) => + let dir_hash = builtin sha256hash direction in + let token_hash = builtin sha256hash token in + let price_hash = builtin sha256hash price in + let fee_hash = builtin sha256hash fee_amount in + let expiry_hash = builtin sha256hash expiry in + let nonce_hash = builtin sha256hash nonce in + let p0 = builtin concat contract_address dir_hash in + let p1 = builtin concat p0 token_hash in + let p2 = builtin concat p1 price_hash in + let p3 = builtin concat p2 fee_hash in + let p4 = builtin concat p3 expiry_hash in + let p5 = builtin concat p4 nonce_hash in + builtin sha256hash p5 + +(***************************************************) +(* The contract definition *) +(***************************************************) + +contract ARK +( + contract_owner: ByStr20, + initial_fee_address: ByStr20, + chain_id: Uint32 +) + +(* Mutable fields *) + +field current_owner : Option ByStr20 = Some {ByStr20} contract_owner +field pending_owner : Option ByStr20 = none + +field token_proxy : Option ByStr20 = none +field fee_address : ByStr20 = initial_fee_address +field voided_cheques : Map ByStr33 Map ByStr32 Bool = Emp ByStr33 Map ByStr32 Bool + +(**************************************) +(* Procedures *) +(**************************************) + +procedure ThrowError(err : Error) + e = make_error err; + throw e +end + +procedure IsOwner(address: ByStr20) + maybe_current_owner <- current_owner; + match maybe_current_owner with + | Some current_contract_owner => + is_owner = builtin eq current_contract_owner address; + match is_owner with + | True => + | False => + err = CodeNotOwner; + ThrowError err + end + | None => + err = CodeNotOwner; + ThrowError err + end +end + +procedure IsPendingOwner(address: ByStr20) + maybe_pending_owner <- pending_owner; + match maybe_pending_owner with + | Some current_pending_owner => + is_pending_owner = builtin eq current_pending_owner address; + match is_pending_owner with + | True => + | False => + err = CodeNotPendingOwner; + ThrowError err + end + | None => + err = CodeNotPendingOwner; + ThrowError err + end +end + +procedure NoPendingOwner() + maybe_pending_owner <- pending_owner; + match maybe_pending_owner with + | None => + | Some p => + err = CodePendingOwnerNotEmpty; + ThrowError err + end +end + +procedure IsNotExpired(expiry : BNum) + current_block <- & BLOCKNUMBER; + is_not_expired = builtin blt current_block expiry; + match is_not_expired with + | True => + | False => + e = { _exception : "TransactionExpired" }; + throw e + end +end + +procedure IsValidPrice(price: Coins) + amount = get_amount price; + (* price should be > 0 *) + is_zero = builtin eq zero amount; + match is_zero with + | False => + | True => + err = CodeInvalidPrice; + ThrowError err + end +end + +procedure IsValidFee(price: Coins, fee: Uint128) + amount = get_amount price; + (* fee should be < price *) + is_valid = builtin lt fee amount; + match is_valid with + | True => + | False => + err = CodeInvalidFee; + ThrowError err + end +end + +procedure IsValidSide(s1: Side, s2: Side) + match s1 with + | Buy => + match s2 with + | Buy => + | Sell => + err = CodeInvalidSide; + ThrowError err + end + | Sell => + match s2 with + | Sell => + | Buy => + err = CodeInvalidSide; + ThrowError err + end + end +end + +procedure IsNotVoided(cheque_hash: ByStr32, pubkey: ByStr33) + cheque_voided <- exists voided_cheques[pubkey][cheque_hash]; + match cheque_voided with + | False => + | True => + err = CodeChequeAlreadyVoided; + ThrowError err + end +end + +procedure IsValidSignature(action: Action, cheque_hash: ByStr32, pubkey: ByStr33, signature: ByStr64) + (* reinteprete the cheque hash bytes as a hex string *) + hex_hash = builtin to_string cheque_hash; + (* prefix it with action text to disambiguate message type *) + action_prefix = get_action_prefix action; + action_string = builtin concat action_prefix hex_hash; + (* construct signed message header *) + chain_id_string = builtin to_string chain_id; + message_header = builtin concat signed_message_prefix chain_id_string; + message_header = builtin concat message_header signed_message_suffix; + (* prefix with generic zilliqa signed message header *) + message_string = builtin concat message_header action_string; + (* hash the message to the signed data *) + signed_hash = builtin sha256hash message_string; + signed_data = builtin to_bystr signed_hash; + + (* validate the signature *) + valid_sig = builtin schnorr_verify pubkey signed_data signature; + match valid_sig with + | True => + | False => + err = CodeSignatureInvalid; + ThrowError err + end +end + +procedure ValidateAndConsumeCheque(token: NFT, price: Coins, fee_amount: Uint128, valid_direction: Side, cheque: Cheque) + match cheque with + | Cheque direction expiry nonce pubkey signature => + IsValidPrice price; + IsValidSide valid_direction direction; + IsNotExpired expiry; + + cheque_hash = get_cheque_hash _this_address direction token price fee_amount expiry nonce; + IsNotVoided cheque_hash pubkey; + IsValidSignature execute cheque_hash pubkey signature; + + (* consume cheque by voiding it *) + voided_cheques[pubkey][cheque_hash] := true + end +end + +procedure TransferCoins(coins: Coins, from: ByStr20, to: ByStr20) + match coins with + | Coins denom amount => + match denom with + | Zil => + msg = { _tag : "AddFunds"; _recipient: to; _amount: amount }; + msgs = one_msg msg; + send msgs + | Token token => + maybe_token_proxy <- token_proxy; + match maybe_token_proxy with + | None => + err = CodeTokenProxyNotSet; + ThrowError err + | Some t => + msg_to_token_proxy = { + _tag : "TransferFrom"; _recipient: t; _amount: zero; + token: token; from: from; to: to; amount: amount + }; + msgs = one_msg msg_to_token_proxy; + send msgs + end + end + end +end + +procedure TransferNFT(token: NFT, from: ByStr20, to: ByStr20) + match token with + | NFT token_address token_id => + (* check the from address so that a cheque can't be reused once the token is transferred *) + maybe_token_owner <- & token_address.token_owners[token_id]; + match maybe_token_owner with + | Some token_owner => + is_valid_owner = builtin eq token_owner from; + match is_valid_owner with + | True => + | False => + err = CodeInvalidOwner; + ThrowError err + end + | None => + err = CodeInvalidOwner; + ThrowError err + end; + msg_to_token = { + _tag : "TransferFrom"; _recipient: token_address; _amount: zero; + to: to; token_id: token_id + }; + msgs = one_msg msg_to_token; + send msgs + end +end + +(***************************************) +(* Transitions *) +(***************************************) + +transition ExecuteTrade(token: NFT, price: Coins, fee_amount: Uint128, sell_cheque: Cheque, buy_cheque: Cheque) + ValidateAndConsumeCheque token price fee_amount sell sell_cheque; + ValidateAndConsumeCheque token price zero buy buy_cheque; + IsValidFee price fee_amount; + + match price with + | Coins denom amount => + fee_receiver <- fee_address; + seller = get_account sell_cheque; + buyer = get_account buy_cheque; + + seller_receive_amount = builtin sub amount fee_amount; + seller_receive_coins = Coins denom seller_receive_amount; + fee_receive_coins = Coins denom fee_amount; + + (* if zil (non-zrc2), do additional validation and accept amount first *) + match denom with + | Zil => + receiving_from_buyer = builtin eq buyer _sender; + match receiving_from_buyer with + | True => + | False => + (* if the executor is not the buyer, we cannot receive zil, it must be wrapped for pre-approval *) + (* this means that bidders that do not immediately match should always offer in wZIL *) + err = CodeInvalidPrice; + ThrowError err + end; + correct_amount = builtin eq _amount amount; + match correct_amount with + | True => + | False => + (* the amount of zils need to match the required amount as specified in the price exactly *) + (* otherwise, funds may be stuck and lost forever *) + err = CodeInvalidPrice; + ThrowError err + end; + accept + | _ => + end; + + TransferCoins seller_receive_coins buyer seller; + TransferCoins fee_receive_coins buyer fee_receiver; + TransferNFT token seller buyer; + + e = { + _eventname : "ExecuteTradeSuccess"; + initiator : _sender; + token : token; + seller : seller; + buyer : buyer; + proceeds : seller_receive_coins; + fees : fee_receive_coins; + sell_cheque: sell_cheque; + buy_cheque: buy_cheque + }; + event e + end +end + +transition VoidCheque(cheque_hash: ByStr32, pubkey: ByStr33, signature: ByStr64) + IsNotVoided cheque_hash pubkey; + IsValidSignature void cheque_hash pubkey signature; + + voided_cheques[pubkey][cheque_hash] := true; + from = builtin schnorr_get_address pubkey; + e = {_eventname : "VoidChequeSuccess"; initiator : _sender; sender : from; cheque_hash : cheque_hash }; + event e +end + +(* @dev: Sets the token proxy which calls TransferFrom on ZRC-2 tokens to faciliate transfers. Can only be set once by the owner, and is then immutable. *) +transition SetTokenProxy(address: ByStr20) + IsOwner _sender; + t <- token_proxy; + match t with + | Some _ => + err = CodeTokenProxyAlreadySet; + ThrowError err + | None => + new_token_proxy = Some {ByStr20} address; + token_proxy := new_token_proxy; + e = {_eventname : "SetTokenProxySuccess"; token_proxy: address}; + event e + end +end + +(** Ownership lifecycle transitions *) + +(* @dev: Transfers contract ownership to a new address. The new address must call the AcceptOwnership transition to finalize the transfer. *) +(* @param new_owner: Address of the new current_owner. *) +transition TransferOwnership(new_owner: ByStr20) + IsOwner _sender; + o = Some {ByStr20} new_owner; + pending_owner := o; + e = {_eventname : "OwnershipTransferInitiated"; current_owner : _sender; pending_owner : new_owner}; + event e +end + +(* @dev: Finalizes transfer of contract ownership. Must be called by the new current_owner. *) +transition AcceptOwnership() + IsPendingOwner _sender; + previous_current_owner <- current_owner; + o = Some {ByStr20} _sender; + current_owner := o; + pending_owner := none; + e = {_eventname : "OwnershipTransferAccepted"; previous_current_owner : previous_current_owner; current_owner : _sender}; + event e +end + +(* @dev: Removes the current_owner, meaning that new minters can no longer be added. Must not have a pending owner. *) +transition RevokeOwnership() + IsOwner _sender; + NoPendingOwner; + current_owner := none; + e = {_eventname : "OwnershipRevoked"; current_owner : _sender}; + event e +end + +(*************************************) +(* Callbacks *) +(*************************************) + +(* @dev: Handle callback after sending ZRC-1 tokens via TransferFrom *) +transition TransferFromSuccessCallBack(from: ByStr20, recipient: ByStr20, token_id: Uint256) + (* no-op *) +end + + +(* @dev: Handle callback after sending ZRC-6 tokens via TransferFrom *) +transition ZRC6_TransferFromCallback(from: ByStr20, to: ByStr20, token_id: Uint256) + (* no-op *) +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/075_map_corners_test.scilla b/products/bluebell/core/tests/data/formatter/formatted/075_map_corners_test.scilla new file mode 100644 index 000000000..1725b19c9 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/075_map_corners_test.scilla @@ -0,0 +1,809 @@ +(* A script to run all transitions here against a running IPC server is provided. *) +(* Check out scripts/run_ipc_map_corner_tests.sh. *) + +scilla_version 0 + +import BoolUtils + +library MapCornersTest + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + + +(* The test sequence here is based on the unit tests in Test_ScillaIPCServer.cpp. *) +(* Transitions "t*" are expected to succeed while "f*" are expected to fail. *) +contract MapCornersTest () + +field f_s1 : String = "420" +field f_m1 : Map String String = Emp String String +field f_m2 : Map String (Map String String) = Emp String (Map String String) +field f_m3 : Map String (Map String (Map String String)) = Emp String (Map String (Map String String)) +field f_m : Map String (Map String String) = Emp String (Map String String) + +procedure fail (tname : String) + e = { _exception : "Test Failed"; test_name : tname }; + throw e +end + +procedure fail_msg (tname : String, msg : String) + e = { _exception : "Test Failed"; test_name : tname; message: msg }; + throw e +end + +procedure expected_fail (tname : String) + e = { _exception : "Test failed as expected"; test_name : tname }; + throw e +end + +procedure expected_fail_msg (tname : String, msg : String) + e = { _exception : "Test failed as expected"; test_name : tname; message: msg }; + throw e +end + +(* test_query_simple *) +transition t1 () + (* Check existing value. *) + tname = "t1"; + f <- f_s1; + s = "420"; + t = builtin eq f s; + match t with + | False => + fail tname + | True => + end; + + (* Now store back a different value for next test. *) + s2 = "421"; + f_s1 := s2 +end + +(* test_query_map_1 *) +transition t2 () + (* Check existing value. *) + tname = "t2"; + f <- f_s1; + s = "421"; + t = builtin eq f s; + match t with + | False => + fail tname + | True => + end; + + (* Insert value for next test. *) + key1 = "key1"; + val1 = "420"; + f_m1[key1] := val1 +end + +(* foo_test_query_map_1 *) +transition t3() + tname = "t3"; + s = "420"; + (* Fetch key1 and ensure value is "420" as set in t2. *) + key1 = "key1"; + val1 <- f_m1[key1]; + match val1 with + | Some val => + t = builtin eq val s; + match t with + | False => + m = "Incorrect value for key"; + fail_msg tname m + | True => + end + | None => + fail tname + end; + + (* Fetch "key2" and ensure not found. *) + key2 = "key2"; + val2 <- f_m1[key2]; + match val2 with + | Some _ => + m = "Rogue value found for key"; + fail_msg tname m + | None => + end; + + (* Delete key1 for next test. *) + delete f_m1[key1] +end + +(* foo_test_query_map_1 *) +transition t4() + tname = "t4"; + + (* Ensure key1 not present anymore.*) + key1 = "key1"; + key1_found <- exists f_m1[key1]; + match key1_found with + | True => + fail tname + | False => + end; + + (* Store data for next test. *) + key1a = "key1a"; + key2a = "key2a"; + s = "420"; + f_m2[key1a][key2a] := s +end + +(* test_query_map_2 *) +transition t5() + tname = "t5"; + s = "420"; + + (* Ensure f_m2[key1a][key2a] has value "420". *) + key1a = "key1a"; + key2a = "key2a" ; + val <- f_m2[key1a][key2a]; + match val with + | Some v => + t = builtin eq v s; + match t with + | True => + | False => + m = "Incorrect value fetched"; + fail_msg tname m + end + | None => + fail tname + end; + + (* Store data for next test. *) + l_m2 = + let e = Emp String String in + let key2b = "key2b" in + let s1 = "840" in + let m1 = builtin put e key2b s1 in + let key2c = "key2c" in + let s2 = "841" in + builtin put m1 key2c s2; + key1b = "key1b"; + f_m2[key1b] := l_m2 + +end + +(* test_query_map_2 *) +transition t6 () + tname = "t6"; + + (* We now expect the storage to contain: *) + (* f_m2[key1a][key2a] : 420 *) + (* f_m3[key1b][key2b] : 840 *) + (* f_m2[key1b][key2c] : 841 *) + key1a = "key1a"; key2a = "key2a"; + c1 <- f_m2[key1a][key2a]; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a,key2a"; + fail_msg tname m + end + | None => + m = "key1a,key2a not found"; + fail_msg tname m + end; + + key1b = "key1b"; key2b = "key2b"; + c1 <- f_m2[key1b][key2b]; + match c1 with + | Some c => + v = "840"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1b,key2b"; + fail_msg tname m + end + | None => + m = "key1b,key2b not found"; + fail_msg tname m + end; + + key1b = "key1b"; key2c = "key2c"; + c1 <- f_m2[key1b][key2c]; + match c1 with + | Some c => + v = "841"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1b,key2c"; + fail_msg tname m + end + | None => + m = "key1b,key2c not found"; + fail_msg tname m + end; + + (* Delete key1b for next test. *) + delete f_m2[key1b] + +end + +(* test_query_delete_to_empty *) +transition t7() + tname = "t7"; + + (* We now expect the storage to contain: *) + (* f_m2[key1a][key2a] : 420 *) + key1a = "key1a"; key2a = "key2a"; + c1 <- f_m2[key1a][key2a]; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a,key2a"; + fail_msg tname m + end + | None => + m = "key1a,key2a not found"; + fail_msg tname m + end; + + (* And _not_ contain f_m2[key1b] *) + key1b = "key1b"; + c1 <- f_m2[key1b]; + match c1 with + | Some _ => + m = "Fail: deleted value for key1b found!"; + fail_msg tname m + | None => + end; + + (* and _not_ contain f_m2[key1b][key2b] *) + key1b = "key1b"; key2b = "key2b"; + c1 <- f_m2[key1b][key2b]; + match c1 with + | Some _ => + m = "Fail: deleted value for key1b,key2b found!"; + fail_msg tname m + | None => + end; + + (* and _not_ contain f_m2[key1b][key2d] (which never existed) *) + key1b = "key1b"; key2d = "key2d"; + c1 <- f_m2[key1b][key2d]; + match c1 with + | Some _ => + m = "Fail: deleted value for key1b,key2d found!"; + fail_msg tname m + | None => + end; + + (* Add f_m2[key1b][key2c] back again, with a different value. *) + key1b = "key1b"; key2c = "key2c"; + s = "121"; + f_m2[key1b][key2c] := s + +end + +(* test_query_map_2 *) +transition t8() + tname = "t8"; + + (* We now expect the storage to contain: *) + (* f_m2[key1a][key2a] : 420 *) + (* f_m2[key1b][key2c] : 121 *) + key1a = "key1a"; key2a = "key2a"; + c1 <- f_m2[key1a][key2a]; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a,key2a"; + fail_msg tname m + end + | None => + m = "key1a,key2a not found"; + fail_msg tname m + end; + + key1b = "key1b"; key2c = "key2c"; + c1 <- f_m2[key1b][key2c]; + match c1 with + | Some c => + v = "121"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1b,key2c"; + fail_msg tname m + end + | None => + m = "key1b,key2c not found"; + fail_msg tname m + end; + + (* For the next test, we replace f_m1 with an empty map. *) + em = Emp String String; + f_m1 := em + +end + +(* test_query_empty_map *) +transition t9() + tname = "t9"; + + (* Verify that f_m1 is empty. *) + m1 <- f_m1; + m1_size = builtin size m1; + zero = Uint32 0; + is_empty = builtin eq m1_size zero; + match is_empty with + | True => + | False => + fail tname + end; + + (* Insert one key for next test. *) + key1a = "key1a"; + val = "420"; + m1 = builtin put m1 key1a val; + f_m1 := m1 +end + +(* test_query_delete_to_empty *) +transition t10() + tname = "t10"; + + (* We now expect the storage to contain: *) + (* f_m1[key1a] : 420 *) + key1a = "key1a"; + m1 <- f_m1; + c1 = builtin get m1 key1a; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a"; + fail_msg tname m + end + | None => + m = "key1a not found"; + fail_msg tname m + end; + + (* Delete key in a map to make it empty and then query the map *) + delete f_m1[key1a] + +end + +(* test_query_delete_to_empty *) +transition t11 () + tname = "t11"; + + (* f_m1 should be empty. *) + m1 <- f_m1; + m1_size = builtin size m1; + zero = Uint32 0; + is_empty = builtin eq m1_size zero; + match is_empty with + | True => + | False => + fail tname + end; + + (* Insert an empty map into f_m2 for next test. *) + e2 = Emp String (Map String String); + f_m2 := e2 +end + +(* test_query_empty_map_2 *) +transition t12() + tname = "t12"; + + (* f_m2 should be empty. *) + m2 <- f_m2; + m2_size = builtin size m2; + zero = Uint32 0; + is_empty = builtin eq m2_size zero; + match is_empty with + | True => + | False => + fail tname + end; + + (* Insert f_m2[key1a] = Emp *) + e1 = Emp String String; + key1a = "key1a"; + f_m2[key1a] := e1 +end + +(* test_query_empty_map_2 *) +transition t13() + tname = "t13"; + + (* f_m2[key1a] must be empty *) + key1a = "key1a"; + mo <- f_m2[key1a]; + match mo with + | Some m => + m_size = builtin size m; + zero = Uint32 0; + is_empty = builtin eq m_size zero; + match is_empty with + | True => + | False => + msg = "Submap should have been empty"; + fail_msg tname msg + end + | None => + fail tname + end; + + (* Insert entries for next test *) + m3 = Emp String String; + m2 = + let key2a = "key2a" in + let e = Emp String (Map String String) in + builtin put e key2a m3; + m3 = + let e = Emp String (Map String (Map String String)) in + builtin put e key1a m2; + + f_m3 := m3 + +end + +(* test_query_empty_map_3 *) +transition t14() + tname = "t14"; + + (* f_m3 should be singleton *) + m3 <- f_m3; + m3_size = builtin size m3; + one = Uint32 1; + is_empty = builtin eq m3_size one; + match is_empty with + | True => + | False => + fail tname + end; + + (* Now insert something into f_m, whose name is a proper prefix of f_m3 *) + e = Emp String (Map String String); + f_m := e + +end + +(* test_query_empty_map_3 *) +transition t15() + tname = "t15"; + + (* f_m3 should be [key1a][key2a] = [] *) + m3 <- f_m3; + m3_size = builtin size m3; + one = Uint32 1; + is_one = builtin eq m3_size one; + match is_one with + | True => + | False => + err = "Incorrect size of f_m3"; + fail_msg tname err + end; + + key1a = "key1a"; + key2a = "key2a"; + m2o = builtin get m3 key1a; + match m2o with + | Some m2 => + m2_size = builtin size m2; + is_one_1 = builtin eq m2_size one; + match is_one_1 with + | True => + m1o = builtin get m2 key2a; + match m1o with + | Some m1 => + m1_size = builtin size m1; + zero = Uint32 0; + is_empty = builtin eq m1_size zero; + match is_empty with + | True => + | False => + err = "Incorrect size of f_m3[key1a][key2a]"; + fail_msg tname err + end + | None => + err = "Unexpected empty m1"; + fail_msg tname err + end + | False => + err = "Incorrect size of f_m3[key1]"; + fail_msg tname err + end + | None => + err = "Unexpected empty m2"; + fail_msg tname err + end; + + (* For the next test, insert a non-empty nested map into f_m2 *) + key1b = "key1b"; key2b = "key2b"; + key1c = "key1c"; key2c = "key2c"; + key1d = "key1d"; key2d = "key2d"; + v1 = "420"; v2 = "421"; v3 = "422"; v4 = "423"; + m2 = Emp String (Map String String); + m1 = Emp String String; + m2_full = + let m21 = builtin put m1 key2a v1 in + let m22 = builtin put m1 key2b v2 in + let m23 = builtin put m1 key2c v3 in + let m24 = builtin put m1 key2d v4 in + let m11 = builtin put m2 key1a m21 in + let m12 = builtin put m11 key1b m22 in + let m13 = builtin put m12 key1c m23 in + let m14 = builtin put m13 key1d m24 in + m14; + f_m2 := m2_full +end + +(* test_query_update_fetch_nested *) +transition t16() + tname = "t16"; + + (* Compare the entries *) + (* f_m2[key1a][key1a] = "420" *) + (* f_m2[key1b][key1b] = "421" *) + (* f_m2[key1c][key1c] = "422" *) + (* f_m2[key1d][key1d] = "423" *) + key1a = "key1a"; key2a = "key2a"; + key1b = "key1b"; key2b = "key2b"; + key1c = "key1c"; key2c = "key2c"; + key1d = "key1d"; key2d = "key2d"; + + t1 <- f_m2[key1a][key2a]; + t2 <- f_m2[key1b][key2b]; + t3 <- f_m2[key1c][key2c]; + t4 <- f_m2[key1d][key2d]; + v1 = "420"; v2 = "421"; v3 = "422"; v4 = "423"; + + b1 = match t1 with + | Some t1v => + builtin eq t1v v1 + | None => False + end; + + b2 = match t2 with + | Some t2v => + builtin eq t2v v2 + | None => False + end; + + b3 = match t3 with + | Some t3v => + builtin eq t3v v3 + | None => False + end; + + b4 = match t4 with + | Some t4v => + builtin eq t4v v4 + | None => False + end; + + b = + let a1 = andb b1 b2 in + let a2 = andb b3 b4 in + andb a1 a2; + + match b with + | True => + | False => + fail tname + end; + + (* Insert an empty string key. *) + m1 = + let k = "" in + let v = "420" in + let e = Emp String String in + builtin put e k v; + + f_m1 := m1 + +end + +(* test_query_empty_key *) +transition t17 () + + tname = "t17"; + + (* We now expect the storage to contain: *) + (* f_m1[""] : 420 *) + key = ""; + found <- exists f_m1[key]; + match found with + | True => + | False => + fail tname + end; + + (* delete key "" for next test *) + delete f_m1[key] +end + +(* test_query_empty_key *) +transition t18 () + + tname = "t18"; + + (* We now expect the storage to NOT contain: *) + (* f_m1[""] *) + key = ""; + found <- exists f_m1[key]; + match found with + | True => + fail tname + | False => + end +end + +(* Set field f_s1 and fail. *) +transition f1 () + tname = "f1"; + s = "422"; + f_s1 := s; + expected_fail tname +end + +(* Check no change to f_s1. *) +procedure p1 (tname : String) + s <- f_s1; + f_s1_original = "421"; + not_changed = builtin eq f_s1_original s; + match not_changed with + | False => + msg = "f_s1 changed in a failing transition f1"; + fail_msg tname msg + | True => + end +end + +(* Ensure no change to f_s1 after f1 *) +transition t19 () + tname = "t19"; + p1 tname +end + +(* A call back transition that fails. *) +transition callback_expected_fail (tname : String) + expected_fail tname +end + +(* Set field f_s1 and fail via chaincall to callback_expected_fail. *) +transition f2 () + tname = "f2"; + s = "422"; + f_s1 := s; + m = { _tag : "callback_expected_fail"; _recipient : _this_address; + _amount : Uint128 0; tname : tname }; + ms = one_msg m; + send ms +end + +(* Ensure no change to f_s1 after f2. *) +transition t20 () + tname = "t20"; + p1 tname +end + +(* Set f_m1["foo1"] and fail. *) +transition f3 () + tname = "f3"; + key = "foo1"; + val = "bar1"; + f_m1[key] := val; + expected_fail tname +end + +(* Ensure f_m1["foo1"] doesn't exist. *) +procedure p2 (tname : String) + + key = "foo1"; + found <- exists f_m1[key]; + match found with + | True => + fail tname + | False => + end +end + +(* Ensure f3 was reverted. *) +transition t21 () + tname = "t21"; + p2 tname +end + +(* Set f_m1["foo1"] and fail via chaincall to callback_expected_fail. *) +transition f4 () + tname = "f4"; + key = "foo1"; + val = "bar1"; + f_m1[key] := val; + m = { _tag : "callback_expected_fail"; _recipient : _this_address; + _amount : Uint128 0; tname : tname }; + ms = one_msg m; + send ms +end + +(* Ensure f4 was reverted. *) +transition t22 () + tname = "t22"; + p2 tname +end + +(* f_m2["key1a"]["key2a"] has a key, let's delete it and fail. *) +transition f5 () + tname = "f5"; + key1 = "key1a"; + key2 = "key2a"; + delete f_m2[key1][key2]; + expected_fail tname +end + +(* Ensure f_m2["key1a"]["key2a"] exists. *) +procedure p3 (tname : String) + + key1 = "key1a"; + key2 = "key2a"; + valexp = "420"; + val <- f_m2[key1][key2]; + match val with + | Some val => + eq = builtin eq val valexp; + match eq with + | True => + | False => + fail tname + end + | None => + fail tname + end +end + +(* Ensure f5 was reverted. *) +transition t23 () + tname = "t23"; + p3 tname +end + +(* f_m2["key1a"]["key2a"] has a key, let's delete it and fail via chaincall. *) +transition f6 () + tname = "f6"; + key1 = "key1a"; + key2 = "key2a"; + delete f_m2[key1][key2]; + m = { _tag : "callback_expected_fail"; _recipient : _this_address; + _amount : Uint128 0; tname : tname }; + ms = one_msg m; + send ms +end + +(* Ensure f6 was reverted. *) +transition t24 () + tname = "t24"; + p3 tname +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/076_map_corners_test_combined.scilla b/products/bluebell/core/tests/data/formatter/formatted/076_map_corners_test_combined.scilla new file mode 100644 index 000000000..7a8124508 --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/076_map_corners_test_combined.scilla @@ -0,0 +1,850 @@ +(* A script to run all transitions here against a running IPC server is provided. *) +(* Check out scripts/run_ipc_map_corner_tests.sh. *) + +scilla_version 0 + +import BoolUtils + +library MapCornersTest + +let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg + + +(* The test sequence here is based on the unit tests in Test_ScillaIPCServer.cpp. *) +(* Transitions "t*" are expected to succeed while "f*" are expected to fail. *) +contract MapCornersTest () + +field f_s1 : String = "420" +field f_m1 : Map String String = Emp String String +field f_m2 : Map String (Map String String) = Emp String (Map String String) +field f_m3 : Map String (Map String (Map String String)) = Emp String (Map String (Map String String)) +field f_m : Map String (Map String String) = Emp String (Map String String) + +procedure fail (tname : String) + e = { _exception : "Test Failed"; test_name : tname }; + throw e +end + +procedure fail_msg (tname : String, msg : String) + e = { _exception : "Test Failed"; test_name : tname; message: msg }; + throw e +end + +procedure expected_fail (tname : String) + e = { _exception : "Test failed as expected"; test_name : tname }; + throw e +end + +procedure expected_fail_msg (tname : String, msg : String) + e = { _exception : "Test failed as expected"; test_name : tname; message: msg }; + throw e +end + +(* test_query_simple *) +procedure t1 () + (* Check existing value. *) + tname = "t1"; + f <- f_s1; + s = "420"; + t = builtin eq f s; + match t with + | False => + fail tname + | True => + end; + + (* Now store back a different value for next test. *) + s2 = "421"; + f_s1 := s2 +end + +(* test_query_map_1 *) +procedure t2 () + (* Check existing value. *) + tname = "t2"; + f <- f_s1; + s = "421"; + t = builtin eq f s; + match t with + | False => + fail tname + | True => + end; + + (* Insert value for next test. *) + key1 = "key1"; + val1 = "420"; + f_m1[key1] := val1 +end + +(* foo_test_query_map_1 *) +procedure t3() + tname = "t3"; + s = "420"; + (* Fetch key1 and ensure value is "420" as set in t2. *) + key1 = "key1"; + val1 <- f_m1[key1]; + match val1 with + | Some val => + t = builtin eq val s; + match t with + | False => + m = "Incorrect value for key"; + fail_msg tname m + | True => + end + | None => + fail tname + end; + + (* Fetch "key2" and ensure not found. *) + key2 = "key2"; + val2 <- f_m1[key2]; + match val2 with + | Some _ => + m = "Rogue value found for key"; + fail_msg tname m + | None => + end; + + (* Delete key1 for next test. *) + delete f_m1[key1] +end + +(* foo_test_query_map_1 *) +procedure t4() + tname = "t4"; + + (* Ensure key1 not present anymore.*) + key1 = "key1"; + key1_found <- exists f_m1[key1]; + match key1_found with + | True => + fail tname + | False => + end; + + (* Store data for next test. *) + key1a = "key1a"; + key2a = "key2a"; + s = "420"; + f_m2[key1a][key2a] := s +end + +(* test_query_map_2 *) +procedure t5() + tname = "t5"; + s = "420"; + + (* Ensure f_m2[key1a][key2a] has value "420". *) + key1a = "key1a"; + key2a = "key2a" ; + val <- f_m2[key1a][key2a]; + match val with + | Some v => + t = builtin eq v s; + match t with + | True => + | False => + m = "Incorrect value fetched"; + fail_msg tname m + end + | None => + fail tname + end; + + (* Store data for next test. *) + l_m2 = + let e = Emp String String in + let key2b = "key2b" in + let s1 = "840" in + let m1 = builtin put e key2b s1 in + let key2c = "key2c" in + let s2 = "841" in + builtin put m1 key2c s2; + key1b = "key1b"; + f_m2[key1b] := l_m2 + +end + +(* test_query_map_2 *) +procedure t6 () + tname = "t6"; + + (* We now expect the storage to contain: *) + (* f_m2[key1a][key2a] : 420 *) + (* f_m3[key1b][key2b] : 840 *) + (* f_m2[key1b][key2c] : 841 *) + key1a = "key1a"; key2a = "key2a"; + c1 <- f_m2[key1a][key2a]; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a,key2a"; + fail_msg tname m + end + | None => + m = "key1a,key2a not found"; + fail_msg tname m + end; + + key1b = "key1b"; key2b = "key2b"; + c1 <- f_m2[key1b][key2b]; + match c1 with + | Some c => + v = "840"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1b,key2b"; + fail_msg tname m + end + | None => + m = "key1b,key2b not found"; + fail_msg tname m + end; + + key1b = "key1b"; key2c = "key2c"; + c1 <- f_m2[key1b][key2c]; + match c1 with + | Some c => + v = "841"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1b,key2c"; + fail_msg tname m + end + | None => + m = "key1b,key2c not found"; + fail_msg tname m + end; + + (* Delete key1b for next test. *) + delete f_m2[key1b] + +end + +(* test_query_delete_to_empty *) +procedure t7() + tname = "t7"; + + (* We now expect the storage to contain: *) + (* f_m2[key1a][key2a] : 420 *) + key1a = "key1a"; key2a = "key2a"; + c1 <- f_m2[key1a][key2a]; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a,key2a"; + fail_msg tname m + end + | None => + m = "key1a,key2a not found"; + fail_msg tname m + end; + + (* And _not_ contain f_m2[key1b] *) + key1b = "key1b"; + c1 <- f_m2[key1b]; + match c1 with + | Some _ => + m = "Fail: deleted value for key1b found!"; + fail_msg tname m + | None => + end; + + (* and _not_ contain f_m2[key1b][key2b] *) + key1b = "key1b"; key2b = "key2b"; + c1 <- f_m2[key1b][key2b]; + match c1 with + | Some _ => + m = "Fail: deleted value for key1b,key2b found!"; + fail_msg tname m + | None => + end; + + (* and _not_ contain f_m2[key1b][key2d] (which never existed) *) + key1b = "key1b"; key2d = "key2d"; + c1 <- f_m2[key1b][key2d]; + match c1 with + | Some _ => + m = "Fail: deleted value for key1b,key2d found!"; + fail_msg tname m + | None => + end; + + (* Add f_m2[key1b][key2c] back again, with a different value. *) + key1b = "key1b"; key2c = "key2c"; + s = "121"; + f_m2[key1b][key2c] := s + +end + +(* test_query_map_2 *) +procedure t8() + tname = "t8"; + + (* We now expect the storage to contain: *) + (* f_m2[key1a][key2a] : 420 *) + (* f_m2[key1b][key2c] : 121 *) + key1a = "key1a"; key2a = "key2a"; + c1 <- f_m2[key1a][key2a]; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a,key2a"; + fail_msg tname m + end + | None => + m = "key1a,key2a not found"; + fail_msg tname m + end; + + key1b = "key1b"; key2c = "key2c"; + c1 <- f_m2[key1b][key2c]; + match c1 with + | Some c => + v = "121"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1b,key2c"; + fail_msg tname m + end + | None => + m = "key1b,key2c not found"; + fail_msg tname m + end; + + (* For the next test, we replace f_m1 with an empty map. *) + em = Emp String String; + f_m1 := em + +end + +(* test_query_empty_map *) +procedure t9() + tname = "t9"; + + (* Verify that f_m1 is empty. *) + m1 <- f_m1; + m1_size = builtin size m1; + zero = Uint32 0; + is_empty = builtin eq m1_size zero; + match is_empty with + | True => + | False => + fail tname + end; + + (* Insert one key for next test. *) + key1a = "key1a"; + val = "420"; + m1 = builtin put m1 key1a val; + f_m1 := m1 +end + +(* test_query_delete_to_empty *) +procedure t10() + tname = "t10"; + + (* We now expect the storage to contain: *) + (* f_m1[key1a] : 420 *) + key1a = "key1a"; + m1 <- f_m1; + c1 = builtin get m1 key1a; + match c1 with + | Some c => + v = "420"; + eq = builtin eq c v; + match eq with + | True => + | False => + m = "Incorrect value for key1a"; + fail_msg tname m + end + | None => + m = "key1a not found"; + fail_msg tname m + end; + + (* Delete key in a map to make it empty and then query the map *) + delete f_m1[key1a] + +end + +(* test_query_delete_to_empty *) +procedure t11 () + tname = "t11"; + + (* f_m1 should be empty. *) + m1 <- f_m1; + m1_size = builtin size m1; + zero = Uint32 0; + is_empty = builtin eq m1_size zero; + match is_empty with + | True => + | False => + fail tname + end; + + (* Insert an empty map into f_m2 for next test. *) + e2 = Emp String (Map String String); + f_m2 := e2 +end + +(* test_query_empty_map_2 *) +procedure t12() + tname = "t12"; + + (* f_m2 should be empty. *) + m2 <- f_m2; + m2_size = builtin size m2; + zero = Uint32 0; + is_empty = builtin eq m2_size zero; + match is_empty with + | True => + | False => + fail tname + end; + + (* Insert f_m2[key1a] = Emp *) + e1 = Emp String String; + key1a = "key1a"; + f_m2[key1a] := e1 +end + +(* test_query_empty_map_2 *) +procedure t13() + tname = "t13"; + + (* f_m2[key1a] must be empty *) + key1a = "key1a"; + mo <- f_m2[key1a]; + match mo with + | Some m => + m_size = builtin size m; + zero = Uint32 0; + is_empty = builtin eq m_size zero; + match is_empty with + | True => + | False => + msg = "Submap should have been empty"; + fail_msg tname msg + end + | None => + fail tname + end; + + (* Insert entries for next test *) + m3 = Emp String String; + m2 = + let key2a = "key2a" in + let e = Emp String (Map String String) in + builtin put e key2a m3; + m3 = + let e = Emp String (Map String (Map String String)) in + builtin put e key1a m2; + + f_m3 := m3 + +end + +(* test_query_empty_map_3 *) +procedure t14() + tname = "t14"; + + (* f_m3 should be singleton *) + m3 <- f_m3; + m3_size = builtin size m3; + one = Uint32 1; + is_empty = builtin eq m3_size one; + match is_empty with + | True => + | False => + fail tname + end; + + (* Now insert something into f_m, whose name is a proper prefix of f_m3 *) + e = Emp String (Map String String); + f_m := e + +end + +(* test_query_empty_map_3 *) +procedure t15() + tname = "t15"; + + (* f_m3 should be [key1a][key2a] = [] *) + m3 <- f_m3; + m3_size = builtin size m3; + one = Uint32 1; + is_one = builtin eq m3_size one; + match is_one with + | True => + | False => + err = "Incorrect size of f_m3"; + fail_msg tname err + end; + + key1a = "key1a"; + key2a = "key2a"; + m2o = builtin get m3 key1a; + match m2o with + | Some m2 => + m2_size = builtin size m2; + is_one_1 = builtin eq m2_size one; + match is_one_1 with + | True => + m1o = builtin get m2 key2a; + match m1o with + | Some m1 => + m1_size = builtin size m1; + zero = Uint32 0; + is_empty = builtin eq m1_size zero; + match is_empty with + | True => + | False => + err = "Incorrect size of f_m3[key1a][key2a]"; + fail_msg tname err + end + | None => + err = "Unexpected empty m1"; + fail_msg tname err + end + | False => + err = "Incorrect size of f_m3[key1]"; + fail_msg tname err + end + | None => + err = "Unexpected empty m2"; + fail_msg tname err + end; + + (* For the next test, insert a non-empty nested map into f_m2 *) + key1b = "key1b"; key2b = "key2b"; + key1c = "key1c"; key2c = "key2c"; + key1d = "key1d"; key2d = "key2d"; + v1 = "420"; v2 = "421"; v3 = "422"; v4 = "423"; + m2 = Emp String (Map String String); + m1 = Emp String String; + m2_full = + let m21 = builtin put m1 key2a v1 in + let m22 = builtin put m1 key2b v2 in + let m23 = builtin put m1 key2c v3 in + let m24 = builtin put m1 key2d v4 in + let m11 = builtin put m2 key1a m21 in + let m12 = builtin put m11 key1b m22 in + let m13 = builtin put m12 key1c m23 in + let m14 = builtin put m13 key1d m24 in + m14; + f_m2 := m2_full +end + +(* test_query_update_fetch_nested *) +procedure t16() + tname = "t16"; + + (* Compare the entries *) + (* f_m2[key1a][key1a] = "420" *) + (* f_m2[key1b][key1b] = "421" *) + (* f_m2[key1c][key1c] = "422" *) + (* f_m2[key1d][key1d] = "423" *) + key1a = "key1a"; key2a = "key2a"; + key1b = "key1b"; key2b = "key2b"; + key1c = "key1c"; key2c = "key2c"; + key1d = "key1d"; key2d = "key2d"; + + t1 <- f_m2[key1a][key2a]; + t2 <- f_m2[key1b][key2b]; + t3 <- f_m2[key1c][key2c]; + t4 <- f_m2[key1d][key2d]; + v1 = "420"; v2 = "421"; v3 = "422"; v4 = "423"; + + b1 = match t1 with + | Some t1v => + builtin eq t1v v1 + | None => False + end; + + b2 = match t2 with + | Some t2v => + builtin eq t2v v2 + | None => False + end; + + b3 = match t3 with + | Some t3v => + builtin eq t3v v3 + | None => False + end; + + b4 = match t4 with + | Some t4v => + builtin eq t4v v4 + | None => False + end; + + b = + let a1 = andb b1 b2 in + let a2 = andb b3 b4 in + andb a1 a2; + + match b with + | True => + | False => + fail tname + end; + + (* Insert an empty string key. *) + m1 = + let k = "" in + let v = "420" in + let e = Emp String String in + builtin put e k v; + + f_m1 := m1 + +end + +(* test_query_empty_key *) +procedure t17 () + + tname = "t17"; + + (* We now expect the storage to contain: *) + (* f_m1[""] : 420 *) + key = ""; + found <- exists f_m1[key]; + match found with + | True => + | False => + fail tname + end; + + (* delete key "" for next test *) + delete f_m1[key] +end + +(* test_query_empty_key *) +procedure t18 () + + tname = "t18"; + + (* We now expect the storage to NOT contain: *) + (* f_m1[""] *) + key = ""; + found <- exists f_m1[key]; + match found with + | True => + fail tname + | False => + end +end + +(* Set field f_s1 and fail. *) +procedure f1 () + tname = "f1"; + s = "422"; + f_s1 := s; + expected_fail tname +end + +(* Check no change to f_s1. *) +procedure p1 (tname : String) + s <- f_s1; + f_s1_original = "421"; + not_changed = builtin eq f_s1_original s; + match not_changed with + | False => + msg = "f_s1 changed in a failing procedure f1"; + fail_msg tname msg + | True => + end +end + +(* Ensure no change to f_s1 after f1 *) +procedure t19 () + tname = "t19"; + p1 tname +end + +(* A call back procedure that fails. *) +procedure callback_expected_fail (tname : String) + expected_fail tname +end + +(* Set field f_s1 and fail via chaincall to callback_expected_fail. *) +procedure f2 () + tname = "f2"; + s = "422"; + f_s1 := s; + m = { _tag : "callback_expected_fail"; _recipient : _this_address; + _amount : Uint128 0; tname : tname }; + ms = one_msg m; + send ms +end + +(* Ensure no change to f_s1 after f2. *) +procedure t20 () + tname = "t20"; + p1 tname +end + +(* Set f_m1["foo1"] and fail. *) +procedure f3 () + tname = "f3"; + key = "foo1"; + val = "bar1"; + f_m1[key] := val; + expected_fail tname +end + +(* Ensure f_m1["foo1"] doesn't exist. *) +procedure p2 (tname : String) + + key = "foo1"; + found <- exists f_m1[key]; + match found with + | True => + fail tname + | False => + end +end + +(* Ensure f3 was reverted. *) +procedure t21 () + tname = "t21"; + p2 tname +end + +(* Set f_m1["foo1"] and fail via chaincall to callback_expected_fail. *) +procedure f4 () + tname = "f4"; + key = "foo1"; + val = "bar1"; + f_m1[key] := val; + m = { _tag : "callback_expected_fail"; _recipient : _this_address; + _amount : Uint128 0; tname : tname }; + ms = one_msg m; + send ms +end + +(* Ensure f4 was reverted. *) +procedure t22 () + tname = "t22"; + p2 tname +end + +(* f_m2["key1a"]["key2a"] has a key, let's delete it and fail. *) +procedure f5 () + tname = "f5"; + key1 = "key1a"; + key2 = "key2a"; + delete f_m2[key1][key2]; + expected_fail tname +end + +(* Ensure f_m2["key1a"]["key2a"] exists. *) +procedure p3 (tname : String) + + key1 = "key1a"; + key2 = "key2a"; + valexp = "420"; + val <- f_m2[key1][key2]; + match val with + | Some val => + eq = builtin eq val valexp; + match eq with + | True => + | False => + fail tname + end + | None => + fail tname + end +end + +(* Ensure f5 was reverted. *) +procedure t23 () + tname = "t23"; + p3 tname +end + +(* f_m2["key1a"]["key2a"] has a key, let's delete it and fail via chaincall. *) +procedure f6 () + tname = "f6"; + key1 = "key1a"; + key2 = "key2a"; + delete f_m2[key1][key2]; + m = { _tag : "callback_expected_fail"; _recipient : _this_address; + _amount : Uint128 0; tname : tname }; + ms = one_msg m; + send ms +end + +(* Ensure f6 was reverted. *) +procedure t24 () + tname = "t24"; + p3 tname +end + +procedure reset() + s = "420"; + f_s1 := s; + e1 = Emp String String; + f_m1 := e1; + e2 = Emp String (Map String String); + f_m2 := e2; + e3 = Emp String (Map String (Map String String)); + f_m3 := e3; + e4 = Emp String (Map String String); + f_m := e4 +end + +transition test() + t1; + t2; + t3; + t4; + t5; + t6; + t7; + t8; + t9; + t10; + t11; + t12; + t13; + t14; + t15; + t16; + t17; + t18; + t19; + t20; + t21; + t22; + t23; + t24; + reset +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/077_wallet.scilla b/products/bluebell/core/tests/data/formatter/formatted/077_wallet.scilla new file mode 100644 index 000000000..7fe26356a --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/077_wallet.scilla @@ -0,0 +1,552 @@ +scilla_version 0 + +import ListUtils IntUtils + +(***************************************************) +(* Associated library *) +(***************************************************) +library WalletLib + +(* Event for communicating a new transaction id *) +let mk_transaction_added_event = + fun (tc : Uint32) => + { _eventname : "Transaction created" ; transactionId : tc } + +(* Event for communicating the signing of a transaction *) +let mk_transaction_signed_event = + fun (no_of_sigs : Uint32) => + { _eventname : "Transaction signed" ; signature_count : no_of_sigs } + +(* Event for communicating the addition of a new owner *) +let mk_candidate_owner_added_event = + { _eventname : "Candiate owner added" } + +(* Event for communicating the signing off of a new owner *) +let mk_owner_signed_event = + fun (no_of_sigs : Uint32) => + { _eventname : "Owner signed" ; signature_count : no_of_sigs } + +(* Event for communicating the addition of a new owner *) +let mk_new_owner_approved_event = + { _eventname : "New owner approved" } + +type Error = +| NonOwnerCannotSign +| UnknownTransactionId +| InsufficientFunds +| NoSignatureListFound +| AlreadySigned +| NotAlreadySigned +| InvalidContract +| InvalidAmount +| NotEnoughSignatures +| SenderIsNotRecipient +| CandidateAlreadyAdded +| UnknownCandidate +| CandidateAlreadyOwner + +(* Error events *) +let mk_error_event = + fun (err : Error) => + let err_code = + match err with + | NonOwnerCannotSign => Int32 -1 + | UnknownTransactionId => Int32 -2 + | InsufficientFunds => Int32 -3 + | NoSignatureListFound => Int32 -4 + | AlreadySigned => Int32 -5 + | NotAlreadySigned => Int32 -6 + | InvalidContract => Int32 -7 + | InvalidAmount => Int32 -8 + | NotEnoughSignatures => Int32 -9 + | SenderIsNotRecipient => Int32 -10 + | CandidateAlreadyAdded => Int32 -11 + | UnknownCandidate => Int32 -12 + | CandidateAlreadyOwner => Int32 -13 + end in + { _eventname : "WalletError" ; err_code : err_code } + +let transaction_inc = Uint32 1 +let empty_sigs = Emp ByStr20 Bool + +(* One (potential) transaction, consisting of a recipient address and an amount *) +type Transaction = +| Trans of ByStr20 Uint128 + +(* Make map of owners *) +let mk_owners_map = + fun (initial_owners : List ByStr20) => + let init = Emp ByStr20 Bool in + let iter = + fun (acc : Map ByStr20 Bool) => + fun (cur_owner : ByStr20) => + let mem = builtin get acc cur_owner in + match mem with + | Some True => + (* owner already added *) + acc + | _ => + (* owner not yet added, or removed *) + let t = True in + builtin put acc cur_owner t + end in + let folder = @list_foldl ByStr20 (Map ByStr20 Bool) in + folder iter init initial_owners + +(* Check that the number of distinct owners is greater than 0 *) +let check_contract_validity = + fun (owners : Map ByStr20 Bool) => + let no_of_owners = builtin size owners in + let zero = Uint32 0 in + builtin lt zero no_of_owners + +let transaction_executed = Int32 2 + +(* Create one transaction message *) +let transaction_msg = + fun (recipient : ByStr20) => + fun (amount : Uint128) => + fun (tag : String) => + {_tag : tag; _recipient : recipient; _amount : amount; + code : transaction_executed } + +(* Wrap one transaction message as singleton list *) +let transaction_msg_as_list = + fun (recipient : ByStr20) => + fun (amount : Uint128) => + fun (tag : String) => + let one_msg = + fun (msg : Message) => + let nil_msg = Nil {Message} in + Cons {Message} msg nil_msg in + let msg = transaction_msg recipient amount tag in + one_msg msg + +(* list_mem for owners *) +let address_mem = + fun (sender : ByStr20) => + fun (mem_map : Map ByStr20 Bool) => + let mem = builtin get mem_map sender in + match mem with + | None => False + | Some False => False + | Some True => True + end + + +(***************************************************) +(* The contract definition *) +(* *) +(* This contract holds funds that can be paid out *) +(* to arbitrary users, provided that enough people *) +(* the collection of owners sign off on the payout *) +(* *) +(* The transaction must be added to the contract *) +(* before signatures can be collected. Once enough *) +(* signatures are collected, the recipient can ask *) +(* for the transaction to be executed and the *) +(* money paid out. *) +(* *) +(* A new owner can be added, provided that every *) +(* existing user signs off on the new owner. Once *) +(* all existing owners have signed for the new *) +(* owner, the new owner can claim ownership and be *) +(* added to the owners map. *) +(* *) +(* If an owner changes his mind about a *) +(* transaction or an owner he has already signed *) +(* for, the signature can be revoked until the *) +(* transaction is executed or the owner has been *) +(* approved. *) +(***************************************************) +contract Wallet +( +initial_owners : List ByStr20, +required_signatures : Uint32 +) + +(* Funds are not allowed to be added if the contract is not valid *) +field validity_checked : Bool = False +field contract_valid : Bool = False + +(* adr -> True indicates that an owner *) +(* adr not in map indicates non-owner *) +(* adr -> False is not used *) +(* The initial owners will be added as owners when funds are *) +(* initially added to the contract. *) +field owners : Map ByStr20 Bool = Emp ByStr20 Bool + +field transactionCount : Uint32 = Uint32 0 + +(* Collected signatures for transactions *) +field signatures : Map Uint32 (Map ByStr20 Bool) = + Emp Uint32 (Map ByStr20 Bool) +(* Transactions *) +field transactions : Map Uint32 Transaction = + Emp Uint32 Transaction + +(* Collected signatures for new owners *) +field owner_signatures : Map ByStr20 (Map ByStr20 Bool) = + Emp ByStr20 (Map ByStr20 Bool) + + +(* Submit a transaction for future signoff *) +transition SubmitTransaction (recipient : ByStr20, amount : Uint128) + tc <- transactionCount; + + zero = Uint128 0; + amount_is_zero = builtin eq amount zero; + + match amount_is_zero with + | True => + (* Illegal transaction *) + err = InvalidAmount; + e = mk_error_event err; + event e + | False => + (* Create new transaction *) + transaction = Trans recipient amount; + + (* Add transaction to outstanding list of transactions *) + ts_tmp <- transactions; + ts_new = builtin put ts_tmp tc transaction; + + (* Add empty list of signatures *) + sigs_tmp <- signatures; + sigs_new = builtin put sigs_tmp tc empty_sigs; + + (* Increment transaction counter *) + tc_new = builtin add tc transaction_inc; + + (* Update fields *) + transactionCount := tc_new; + transactions := ts_new; + signatures := sigs_new; + + (* Create event with transaction Id *) + e = mk_transaction_added_event tc; + event e + end +end + +(* Sign off on an existing transaction *) +transition SignTransaction (transactionId : Uint32) + (* Helper function *) + sender_mem = address_mem _sender; + + (* Only the owner is allowed to sign off transactions *) + owners_tmp <- owners; + sender_is_owner = sender_mem owners_tmp; + match sender_is_owner with + | False => + err = NonOwnerCannotSign; + e = mk_error_event err; + event e + | True => + (* Transaction must have been submitted *) + ts_tmp <- transactions; + transaction = builtin get ts_tmp transactionId; + match transaction with + | None => + err = UnknownTransactionId; + e = mk_error_event err; + event e + | Some (Trans recipient amount) => + (* Transaction must occur in signatures map *) + sigs_tmp <- signatures; + sigs_opt = builtin get sigs_tmp transactionId; + match sigs_opt with + | None => + err = NoSignatureListFound; + e = mk_error_event err; + event e + | Some sigs => + (* Sender must not have signed already *) + sender_has_signed = sender_mem sigs; + match sender_has_signed with + | True => + err = AlreadySigned; + e = mk_error_event err; + event e + | False => + (* Signature is valid. Add to collected signatures *) + t = True; + new_sigs = builtin put sigs _sender t; + new_signatures = builtin put sigs_tmp transactionId new_sigs; + signatures := new_signatures + end + end + end + end +end + +(* Execute signed-off transaction *) +transition ExecuteTransaction (transactionId : Uint32, tag : String) + transactions_tmp <- transactions; + transaction_opt = builtin get transactions_tmp transactionId; + match transaction_opt with + | None => + (* Transaction was not found. *) + err = UnknownTransactionId; + e = mk_error_event err; + event e + | Some (Trans recipient amount) => + (* Only the recipient can initiate the transaction *) + recipient_is_sender = builtin eq recipient _sender; + match recipient_is_sender with + | False => + err = SenderIsNotRecipient; + e = mk_error_event err; + event e + | True => + (* Check for sufficient funds *) + bal <- _balance; + not_enough_money = builtin lt bal amount; + match not_enough_money with + | True => + err = InsufficientFunds; + e = mk_error_event err; + event e + | False => + signatures_tmp <- signatures; + sigs_opt = builtin get signatures_tmp transactionId; + match sigs_opt with + | None => + (* Signatures not found, even though the transaction exists.*) + err = UnknownTransactionId; + e = mk_error_event err; + event e + | Some sigs => + (* Check for sufficient number of signatures *) + no_of_sigs = builtin size sigs; + not_enough_signatures = builtin lt no_of_sigs required_signatures; + match not_enough_signatures with + | True => + err = NotEnoughSignatures; + e = mk_error_event err; + event e + | False => + (* Transaction approved, and enough money available. *) + (* Remove transaction and signatures, and execute. *) + new_transactions = builtin remove transactions_tmp transactionId; + transactions := new_transactions; + new_signatures = builtin remove signatures_tmp transactionId; + signatures := new_signatures; + msgs = transaction_msg_as_list recipient amount tag; + send msgs + end + end + end + end + end +end + +(* Revoke signature of existing transaction, if it has not yet been executed. *) +transition RevokeSignature (transactionId : Uint32) + (* Transaction must occur in signatures map *) + sigs_tmp <- signatures; + sigs_opt = builtin get sigs_tmp transactionId; + match sigs_opt with + | None => + err = NoSignatureListFound; + e = mk_error_event err; + event e + | Some sigs => + (* Sender must have signed already *) + sender_has_signed = address_mem _sender sigs; + match sender_has_signed with + | False => + err = NotAlreadySigned; + e = mk_error_event err; + event e + | True => + new_sigs = builtin remove sigs _sender; + new_signatures = builtin put sigs_tmp transactionId new_sigs; + signatures := new_signatures + end + end +end + +(* Revoke signature for new owner *) +transition RevokeOwnerSignature (new_owner : ByStr20) + (* new owner must occur in signatures map *) + sigs_tmp <- owner_signatures; + sigs_opt = builtin get sigs_tmp new_owner; + match sigs_opt with + | None => + err = NoSignatureListFound; + e = mk_error_event err; + event e + | Some sigs => + (* Sender must have signed already *) + sender_has_signed = address_mem _sender sigs; + match sender_has_signed with + | False => + err = NotAlreadySigned; + e = mk_error_event err; + event e + | True => + new_sigs = builtin remove sigs _sender; + new_signatures = builtin put sigs_tmp new_owner new_sigs; + owner_signatures := new_signatures + end + end +end + +(* Add candidate owner *) +transition AddCandidateOwner (candidate : ByStr20) + (* Check validity of contract. *) + (* Owners map must be initialized for new owners to be added. *) + checked <- validity_checked; + match checked with + | False => + owners_map = mk_owners_map initial_owners; + owners := owners_map; + valid_contract = check_contract_validity owners_map; + contract_valid := valid_contract; + checked_now = True; + validity_checked := checked_now + | True => + end; + (* Only accept funds if the contract is valid. *) + valid <- contract_valid; + match valid with + | False => + err = InvalidContract; + e = mk_error_event err; + event e + | True => + owner_signatures_tmp <- owner_signatures; + sigs_option = builtin get owner_signatures_tmp candidate; + match sigs_option with + | Some _ => + (* Candidate already added *) + err = CandidateAlreadyAdded; + e = mk_error_event err; + event e + | None => + owners_tmp <- owners; + owner_option = builtin get owners_tmp candidate; + match owner_option with + | Some _ => + (* Candidate is already an owner *) + err = CandidateAlreadyOwner; + e = mk_error_event err; + event e + | None => + (* New candidate *) + empty_sigs = Emp ByStr20 Bool; + new_owner_signatures = builtin put owner_signatures_tmp candidate empty_sigs; + owner_signatures := new_owner_signatures + end + end + end +end + +(* Sign off on new owner. *) +transition SignOffNewOwner (candidate : ByStr20) + (* Helpers *) + sender_mem = address_mem _sender; + t = True; + + (* Only owners are allowed to sign off new owners *) + owners_tmp <- owners; + sender_is_owner = sender_mem owners_tmp; + match sender_is_owner with + | False => + err = NonOwnerCannotSign; + e = mk_error_event err; + event e + | True => + owner_signatures_tmp <- owner_signatures; + sigs_option = builtin get owner_signatures_tmp candidate; + match sigs_option with + | None => + (* Unknown candidate *) + err = UnknownCandidate; + e = mk_error_event err; + event e + | Some sigs => + (* Sender must not have signed already *) + sender_has_signed = sender_mem sigs; + match sender_has_signed with + | True => + err = AlreadySigned; + e = mk_error_event err; + event e + | False => + new_sigs = builtin put sigs _sender t; + new_owner_signatures = builtin put owner_signatures_tmp candidate new_sigs; + owner_signatures := new_owner_signatures; + (* Create event with owner id *) + no_of_sigs = builtin size new_sigs; + e = mk_owner_signed_event no_of_sigs; + event e + end + end + end +end + +(* Promote _sender to owner, if all existing owners have signed *) +transition ClaimOwnership () + owner_signatures_tmp <- owner_signatures; + sigs_option = builtin get owner_signatures_tmp _sender; + (* Check if all owners have signed *) + match sigs_option with + | None => + (* Unknown candidate *) + err = UnknownCandidate; + e = mk_error_event err; + event e + | Some sigs => + current_owners <- owners; + no_of_owners = builtin size current_owners; + no_of_sigs = builtin size sigs; + all_have_signed = uint32_eq no_of_sigs no_of_owners; + match all_have_signed with + | False => + (* Not enough signatures *) + err = NotEnoughSignatures; + e = mk_error_event err; + event e + | True => + (* Enough signatures collected. *) + (* Remove signatures, and add sender to owner collection *) + new_owner_signatures = builtin remove owner_signatures_tmp _sender; + owner_signatures := new_owner_signatures; + t = True; + new_owners = builtin put current_owners _sender t; + owners := new_owners; + (* Create event with owner id *) + e = mk_new_owner_approved_event; + event e + end + end +end + +(* Add funds to wallet *) +transition AddFunds () + (* Check validity of contract. If the contract is invalid, funds may become locked *) + checked <- validity_checked; + match checked with + | False => + owners_map = mk_owners_map initial_owners; + owners := owners_map; + valid_contract = check_contract_validity owners_map; + contract_valid := valid_contract; + checked_now = True; + validity_checked := checked_now + | True => + end; + + (* Only accept funds if the contract is valid. *) + valid <- contract_valid; + match valid with + | False => + err = InvalidContract; + e = mk_error_event err; + event e + | True => + accept + end +end diff --git a/products/bluebell/core/tests/data/formatter/formatted/078_shogi_proc.scilla b/products/bluebell/core/tests/data/formatter/formatted/078_shogi_proc.scilla new file mode 100644 index 000000000..0300cd81b --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/078_shogi_proc.scilla @@ -0,0 +1,828 @@ +scilla_version 0 + +(* Import library rather than use contract library *) +(* to test that types are available *) +import ShogiLib BoolUtils ListUtils + +library Shogi + +let move_east = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin add column one in + Square row new_column + end + +let move_southeast = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin add column one in + let new_row = builtin sub row one in + Square new_row new_column + end + +let move_south = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_row = builtin sub row one in + Square new_row column + end + +let move_southwest = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin sub column one in + let new_row = builtin sub row one in + Square new_row new_column + end + +let move_west = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin sub column one in + Square row new_column + end + +let move_northwest = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin sub column one in + let new_row = builtin add row one in + Square new_row new_column + end + +let move_north = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_row = builtin add row one in + Square new_row column + end + +let move_northeast = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin add column one in + let new_row = builtin add row one in + Square new_row new_column + end + +let move_one_square = + fun (square : Square) => + fun (direction : Direction) => + match direction with + | East => + move_east square + | SouthEast => + move_southeast square + | South => + move_south square + | SouthWest => + move_southwest square + | West => + move_west square + | NorthWest => + move_northwest square + | North => + move_north square + | NorthEast => + move_northeast square + end + +let generate_path = + fun (origin : Square) => + fun (direction : Direction) => + fun (distance : Uint32) => + (* Convert to nat in order to perform recursion *) + let distance_as_nat = builtin to_nat distance in + let init = Nil {Square} in + let folder = @nat_fold (List Square) in + let f = + fun (acc : (List Square)) => + fun (count : Nat) => + let last_square = + match acc with + | Cons s _ => s + | Nil => origin + end in + (* Check if we have moved off the board *) + let off_the_board = + match last_square with + | Square row column => + let zero = Uint32 0 in + let ten = Uint32 10 in + let too_far_east = builtin eq zero column in + let too_far_west = builtin eq ten column in + let too_far_south = builtin eq zero row in + let too_far_north = builtin eq ten row in + let colum_fail = orb too_far_east too_far_west in + let row_fail = orb too_far_north too_far_south in + orb colum_fail row_fail + end in + (* If we have gone off off the board we don't add to the path *) + match off_the_board with + | True => acc + | False => + let next_square = move_one_square last_square direction in + Cons {Square} next_square acc + end in + folder f init distance_as_nat + +let king_path = + fun (square : Square) => + fun (direction : Direction) => + let one = Uint32 1 in + generate_path square direction one + +let gold_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | SouthWest => + Nil {Square} + | SouthEast => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + | False => + (* Attacking southwards *) + match direction with + | NorthWest => + Nil {Square} + | NorthEast => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + end + +let silver_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | South => + Nil {Square} + | East => + Nil {Square} + | West => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + | False => + (* Attacking southwards *) + match direction with + | North => + Nil {Square} + | East => + Nil {Square} + | West => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + end + +let knight_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + (* Knights jump, so path only contains final square *) + match player_1_in_turn with + | True => + (* Attacking northwards *) + let north = North in + match direction with + | NorthEast => + let nil_path = Nil {Square} in + let first_square = move_one_square square north in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | NorthWest => + let nil_path = Nil {Square} in + let first_square = move_one_square square north in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | _ => + Nil {Square} + end + | False => + (* Attacking southwards *) + let south = South in + match direction with + | SouthEast => + let nil_path = Nil {Square} in + let first_square = move_one_square square south in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | SouthWest => + let nil_path = Nil {Square} in + let first_square = move_one_square square south in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | _ => + Nil {Square} + end + end + +let pawn_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | North => + let one = Uint32 1 in + generate_path square direction one + | _ => + Nil {Square} + end + | False => + (* Attacking southwards *) + match direction with + | South => + let one = Uint32 1 in + generate_path square direction one + | _ => + Nil {Square} + end + end + +let lance_path = + fun (square : Square) => + fun (direction : Direction) => + fun (distance : Uint32) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | North => + generate_path square direction distance + | _ => + Nil {Square} + end + | False => + (* Attacking southwards *) + match direction with + | South => + generate_path square direction distance + | _ => + Nil {Square} + end + end + +(* Bishops and rooks *) +let officer_path = + fun (square : Square) => + fun (direction : Direction) => + fun (distance : Uint32) => + generate_path square direction distance + +(* Generate the path of squares that a piece moves along *) +(* The first element of the resulting list of squares is the target square of the move *) +(* An empty list indicates an illegal move *) +let movement_path = + fun (square : Square) => + fun (piece : Piece) => + fun (promotion_status : PromotionStatus) => + fun (direction : Direction) => + fun (distance : Uint32) => + (* Determines whether attacking northwards or southwards *) + fun (player_1_in_turn : Bool) => + match piece with + | King => + (* Check distance *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + king_path square direction + | False => + Nil {Square} + end + | GoldGeneral => + (* Check distance *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + gold_path square direction player_1_in_turn + | False => + Nil {Square} + end + | SilverGeneral => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + gold_path square direction player_1_in_turn + | NotPromoted => + silver_path square direction player_1_in_turn + end + | False => + Nil {Square} + end + | Knight => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + gold_path square direction player_1_in_turn + | False => + Nil {Square} + end + | NotPromoted => + (* Knights move 2 squares forward and 1 to the side. *) + (* Represented as NorthEast/NorthWest (for player 1) by 2 squares *) + let two = Uint32 2 in + let distance_is_two = builtin eq two distance in + match distance_is_two with + | True => + knight_path square direction player_1_in_turn + | False => + Nil {Square} + end + end + | Pawn => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + gold_path square direction player_1_in_turn + | NotPromoted => + pawn_path square direction player_1_in_turn + end + | False => + Nil {Square} + end + | Lance => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + gold_path square direction player_1_in_turn + | False => + Nil {Square} + end + | NotPromoted => + (* Lances move any number of squares forward. *) + let zero = Uint32 0 in + let distance_is_greater_that_zero = builtin lt zero distance in + match distance_is_greater_that_zero with + | True => + lance_path square direction distance player_1_in_turn + | False => + Nil {Square} + end + end + | Bishop => + match direction with + | SouthEast => + officer_path square direction distance + | SouthWest => + officer_path square direction distance + | NorthEast => + officer_path square direction distance + | NorthWest => + officer_path square direction distance + | _ => + (* Only allowed if bishop is promoted *) + match promotion_status with + | NotPromoted => + Nil {Square} + | Promoted => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + officer_path square direction one + | False => + Nil {Square} + end + end + end + | Rook => + match direction with + | South => + officer_path square direction distance + | West => + officer_path square direction distance + | East => + officer_path square direction distance + | North => + officer_path square direction distance + | _ => + (* Only allowed if rook is promoted *) + match promotion_status with + | NotPromoted => + Nil {Square} + | Promoted => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + officer_path square direction one + | False => + Nil {Square} + end + end + end + end + +let perform_promotion = + fun (promote : Bool) => + fun (promotion_status : PromotionStatus) => + fun (origin_row : Uint32) => + fun (target_row : Uint32) => + fun (player_1_in_turn : Bool) => + match promote with + | False => + (* No attempt made to promote *) + Some {PromotionStatus} promotion_status + | True => + (* Attempt to promote *) + match promotion_status with + | Promoted => + (* Cannot promote an already promoted piece *) + None {PromotionStatus} + | NotPromoted => + (* Check that move happened in opponent territory *) + match player_1_in_turn with + | True => + (* Move must occur on row 7 or higher *) + let seven = Uint32 7 in + (* Attacking northwards *) + let origin_not_in_opponent_territory = builtin lt origin_row seven in + let target_not_in_opponent_territory = builtin lt target_row seven in + let not_in_opponent_territory = andb origin_not_in_opponent_territory target_not_in_opponent_territory in + match not_in_opponent_territory with + | True => + (* Cannot promote piece outside of opponent territory *) + None {PromotionStatus} + | False => + Some {PromotionStatus} promoted + end + | False => + (* Move must occur on row 3 or lower *) + let three = Uint32 3 in + (* Attacking northwards *) + let origin_not_in_opponent_territory = builtin lt three origin_row in + let target_not_in_opponent_territory = builtin lt three target_row in + let not_in_opponent_territory = andb origin_not_in_opponent_territory target_not_in_opponent_territory in + match not_in_opponent_territory with + | True => + (* Cannot promote piece outside of opponent territory *) + None {PromotionStatus} + | False => + Some {PromotionStatus} promoted + end + end + end + end + +type Error = +| GameOver +| PlayingOutOfTurn +| IllegalAction +| InternalError + +let game_is_over = GameOver +let playing_out_of_turn = PlayingOutOfTurn +let illegal_action = IllegalAction +let internal_error = InternalError + +(* Error events *) +let mk_error_event = + fun (err : Error) => + let err_code = + match err with + | GameOver => Int32 -1 + | PlayingOutOfTurn => Int32 -2 + | IllegalAction => Int32 -3 + | InternalError => Int32 -999 + end in + { _eventname : "ShogiError" ; err_code : err_code } + +let mk_winner_event = + fun (current_player : ByStr20) => + fun (player1 : ByStr20) => + fun (player2 : ByStr20) => + let current_player_is_one = builtin eq player1 current_player in + let player_no = + match current_player_is_one with + | True => Uint32 1 + | False => Uint32 2 + end in + { _eventname : "ShogiWinner" ; winner : player_no } + +let get_next_player = + fun (current_player : ByStr20) => + fun (player1 : ByStr20) => + fun (player2 : ByStr20) => + let current_player_is_one = builtin eq player1 current_player in + match current_player_is_one with + | True => player2 + | False => player1 + end + +contract ShogiProc +( +player1 : ByStr20, +player2 : ByStr20 +) + +(* Initialize board *) +field board : Map Uint32 (Map Uint32 SquareContents) = initial_board player1 player2 +field captured_pieces : Map ByStr20 (Map Uint32 Uint32) = init_captured_pieces player1 player2 +(* player1 moves first *) +(* player_in_turn = None indicates that game is over *) +field player_in_turn : Option ByStr20 = Some {ByStr20} player1 +field winner : Option ByStr20 = None {ByStr20} + +procedure InternalErrorEvent () + none_player = None {ByStr20}; + player_in_turn := none_player; + err = internal_error; + e = mk_error_event err; + event e +end + +procedure IllegalActionEvent () + err = illegal_action; + e = mk_error_event err; + event e +end + +procedure Winner (winning_player : ByStr20) + none = None {ByStr20}; + player_in_turn := none; + some_winner = Some {ByStr20} winning_player; + winner := some_winner +end + +procedure Resign (current_player : ByStr20) + opponent = get_next_player current_player player1 player2; + Winner opponent +end + +procedure PlacePiece (piece : Piece, square : Square) + (* Place a captured piece on the board *) + (* Check that player has captured piece available *) + piece_no = piece_to_int piece; + capture_count <- captured_pieces[_sender][piece_no]; + match capture_count with + | None => + (* This should not happen *) + InternalErrorEvent + | Some count => + zero = Uint32 0; + has_pieces = builtin lt zero count; + match has_pieces with + | False => + IllegalActionEvent + | True => + (* Check if desired square is available *) + match square with + | Square row column => + target_square_content <- board[row][column]; + match target_square_content with + | Some Free => + (* Remove from captured pieces, and place on board *) + one = Uint32 1; + new_count = builtin sub count one; + captured_pieces[_sender][piece_no] := new_count; + new_contents = Occupied piece not_promoted _sender; + board[row][column] := new_contents + | _ => + (* Square does not exist on board, or square is occupied *) + IllegalActionEvent + end + end + end + end +end + +procedure PerformMoveAndPromote ( + current_player : ByStr20, + piece : Piece, + promote : Bool, + promotion_status : PromotionStatus, + row : Uint32, + column: Uint32, + target_row : Uint32, + target_column : Uint32, + player_1_moves : Bool + ) + new_promotion_status_opt = perform_promotion promote promotion_status row target_row player_1_moves; + match new_promotion_status_opt with + | None => + (* Illegal promotion *) + IllegalActionEvent + | Some new_promotion_status => + (* Move piece *) + (* Source square is no longer occupied *) + board[row][column] := free; + (* Update target square *) + new_contents_at_target = Occupied piece new_promotion_status current_player; + board[target_row][target_column] := new_contents_at_target + end +end + +procedure MovePiece (current_player : ByStr20, square : Square, direction : Direction, distance : Uint32, promote : Bool) + match square with + | Square row column => + (* Find the contents of the origin square *) + contents <- board[row][column]; + match contents with + | Some (Occupied piece promotion_status owner) => + correct_owner = builtin eq owner current_player; + match correct_owner with + | False => + IllegalActionEvent + | True => + player_1_moves = builtin eq current_player player1; + path = movement_path square piece promotion_status direction distance player_1_moves; + match path with + | Nil => + IllegalActionEvent + | Cons (Square target_row target_column) intervening_squares => + (* Piece is allowed to move as requested. Check for blocking pieces. *) + board_tmp <- board; + blocked_path = + let exister = @list_exists Square in + let occupied_predicate = + fun (square : Square) => + match square with + | Square row column => + let row_contents = builtin get board_tmp row in + match row_contents with + | None => False (* Should never happen *) + | Some row_map => + let contents = builtin get row_map column in + match contents with + | Some (Occupied _ _ _) => True + | Some Free => False + | None => False (* Should never happen *) + end + end + end in + exister occupied_predicate intervening_squares; + match blocked_path with + | True => + IllegalActionEvent + | False => + (* Check contents of target square *) + contents_at_target <- board[target_row][target_column]; + match contents_at_target with + | None => + (* Moving off the board *) + IllegalActionEvent + | Some Free => + (* No piece captured *) + (* Check promotion, and move *) + PerformMoveAndPromote current_player piece promote promotion_status row column target_row target_column player_1_moves + | Some (Occupied captured_piece _ captured_owner) => + (* Target square is occupied. Check ownership *) + captured_owner_is_current_player = builtin eq captured_owner current_player; + match captured_owner_is_current_player with + | True => + (* Target square is blocked *) + IllegalActionEvent + | False => + (* Opponent piece captured. *) + (* Check promotion part of move *) + PerformMoveAndPromote current_player piece promote promotion_status row column target_row target_column player_1_moves; + (* Check if captured piece is the king *) + match captured_piece with + | King => + (* Game is won *) + Winner current_player + | _ => + (* Add captured piece to list of captured pieces *) + captured_piece_no = piece_to_int captured_piece; + captured_count_opt <- captured_pieces[current_player][captured_piece_no]; + match captured_count_opt with + | None => + InternalErrorEvent + | Some count => + one = Uint32 1; + new_captured_count = builtin add count one; + captured_pieces[current_player][captured_piece_no] := new_captured_count + end + end + end + end + end + end + end + | _ => + (* No piece on the square, or square does not exist *) + IllegalActionEvent + end + end +end + +(* Execute Move action by sending message to execute PlayerAction transition *) +transition MoveAction ( + row : Uint32, + column : Uint32, + direction : Direction, + distance : Uint32, + promote : Bool + ) + square = Square row column; + zero = Uint128 0; + move = Move square direction distance promote; + msg = { _tag : "PlayerAction"; _amount : zero; _recipient : _this_address; action : move}; + nil_msg = Nil {Message}; + msgs = Cons {Message} msg nil_msg; + send msgs +end + +(* Execute player action *) +transition PlayerAction (action : Action) + false = False; + true = True; + current_player_opt <- player_in_turn; + match current_player_opt with + | None => + (* Game is over *) + err = game_is_over; + e = mk_error_event err; + event e + | Some current_player => + correct_player = builtin eq _sender current_player; + match correct_player with + | False => + err = playing_out_of_turn; + e = mk_error_event err; + event e + | True => + match action with + (* Resign and award game to opponent *) + | Resign => + Resign current_player + | Place piece square => + PlacePiece piece square + | Move square direction distance promote => + MovePiece current_player square direction distance promote + end + end; + (* Check if a winner has been found *) + win <- winner; + match win with + | Some player => + (* Game is over. Announce winner *) + e = mk_winner_event player player1 player2; + event e + | None => + (* Set player_in_turn to opposite player *) + next_player = get_next_player current_player player1 player2; + next_player_opt = Some {ByStr20} next_player; + player_in_turn := next_player_opt + end + end +end \ No newline at end of file diff --git a/products/bluebell/core/tests/data/formatter/formatted/079_shogi.scilla b/products/bluebell/core/tests/data/formatter/formatted/079_shogi.scilla new file mode 100644 index 000000000..11df9c02d --- /dev/null +++ b/products/bluebell/core/tests/data/formatter/formatted/079_shogi.scilla @@ -0,0 +1,821 @@ +scilla_version 0 + +(* Import library rather than use contract library *) +(* to test that types are available *) +import ShogiLib BoolUtils ListUtils + +library Shogi + +let move_east = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin add column one in + Square row new_column + end + +let move_southeast = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin add column one in + let new_row = builtin sub row one in + Square new_row new_column + end + +let move_south = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_row = builtin sub row one in + Square new_row column + end + +let move_southwest = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin sub column one in + let new_row = builtin sub row one in + Square new_row new_column + end + +let move_west = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin sub column one in + Square row new_column + end + +let move_northwest = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin sub column one in + let new_row = builtin add row one in + Square new_row new_column + end + +let move_north = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_row = builtin add row one in + Square new_row column + end + +let move_northeast = + fun (square : Square) => + let one = Uint32 1 in + match square with + | Square row column => + let new_column = builtin add column one in + let new_row = builtin add row one in + Square new_row new_column + end + +let move_one_square = + fun (square : Square) => + fun (direction : Direction) => + match direction with + | East => + move_east square + | SouthEast => + move_southeast square + | South => + move_south square + | SouthWest => + move_southwest square + | West => + move_west square + | NorthWest => + move_northwest square + | North => + move_north square + | NorthEast => + move_northeast square + end + +let generate_path = + fun (origin : Square) => + fun (direction : Direction) => + fun (distance : Uint32) => + (* Convert to nat in order to perform recursion *) + let distance_as_nat = builtin to_nat distance in + let init = Nil {Square} in + let folder = @nat_fold (List Square) in + let f = + fun (acc : (List Square)) => + fun (count : Nat) => + let last_square = + match acc with + | Cons s _ => s + | Nil => origin + end in + (* Check if we have moved off the board *) + let off_the_board = + match last_square with + | Square row column => + let zero = Uint32 0 in + let ten = Uint32 10 in + let too_far_east = builtin eq zero column in + let too_far_west = builtin eq ten column in + let too_far_south = builtin eq zero row in + let too_far_north = builtin eq ten row in + let colum_fail = orb too_far_east too_far_west in + let row_fail = orb too_far_north too_far_south in + orb colum_fail row_fail + end in + (* If we have gone off off the board we don't add to the path *) + match off_the_board with + | True => acc + | False => + let next_square = move_one_square last_square direction in + Cons {Square} next_square acc + end in + folder f init distance_as_nat + +let king_path = + fun (square : Square) => + fun (direction : Direction) => + let one = Uint32 1 in + generate_path square direction one + +let gold_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | SouthWest => + Nil {Square} + | SouthEast => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + | False => + (* Attacking southwards *) + match direction with + | NorthWest => + Nil {Square} + | NorthEast => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + end + +let silver_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | South => + Nil {Square} + | East => + Nil {Square} + | West => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + | False => + (* Attacking southwards *) + match direction with + | North => + Nil {Square} + | East => + Nil {Square} + | West => + Nil {Square} + | _ => + let one = Uint32 1 in + generate_path square direction one + end + end + +let knight_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + (* Knights jump, so path only contains final square *) + match player_1_in_turn with + | True => + (* Attacking northwards *) + let north = North in + match direction with + | NorthEast => + let nil_path = Nil {Square} in + let first_square = move_one_square square north in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | NorthWest => + let nil_path = Nil {Square} in + let first_square = move_one_square square north in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | _ => + Nil {Square} + end + | False => + (* Attacking southwards *) + let south = South in + match direction with + | SouthEast => + let nil_path = Nil {Square} in + let first_square = move_one_square square south in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | SouthWest => + let nil_path = Nil {Square} in + let first_square = move_one_square square south in + let final_square = move_one_square first_square direction in + Cons {Square} final_square nil_path + | _ => + Nil {Square} + end + end + +let pawn_path = + fun (square : Square) => + fun (direction : Direction) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | North => + let one = Uint32 1 in + generate_path square direction one + | _ => + Nil {Square} + end + | False => + (* Attacking southwards *) + match direction with + | South => + let one = Uint32 1 in + generate_path square direction one + | _ => + Nil {Square} + end + end + +let lance_path = + fun (square : Square) => + fun (direction : Direction) => + fun (distance : Uint32) => + fun (player_1_in_turn : Bool) => + match player_1_in_turn with + | True => + (* Attacking northwards *) + match direction with + | North => + generate_path square direction distance + | _ => + Nil {Square} + end + | False => + (* Attacking southwards *) + match direction with + | South => + generate_path square direction distance + | _ => + Nil {Square} + end + end + +(* Bishops and rooks *) +let officer_path = + fun (square : Square) => + fun (direction : Direction) => + fun (distance : Uint32) => + generate_path square direction distance + +(* Generate the path of squares that a piece moves along *) +(* The first element of the resulting list of squares is the target square of the move *) +(* An empty list indicates an illegal move *) +let movement_path = + fun (square : Square) => + fun (piece : Piece) => + fun (promotion_status : PromotionStatus) => + fun (direction : Direction) => + fun (distance : Uint32) => + (* Determines whether attacking northwards or southwards *) + fun (player_1_in_turn : Bool) => + match piece with + | King => + (* Check distance *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + king_path square direction + | False => + Nil {Square} + end + | GoldGeneral => + (* Check distance *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + gold_path square direction player_1_in_turn + | False => + Nil {Square} + end + | SilverGeneral => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + gold_path square direction player_1_in_turn + | NotPromoted => + silver_path square direction player_1_in_turn + end + | False => + Nil {Square} + end + | Knight => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + gold_path square direction player_1_in_turn + | False => + Nil {Square} + end + | NotPromoted => + (* Knights move 2 squares forward and 1 to the side. *) + (* Represented as NorthEast/NorthWest (for player 1) by 2 squares *) + let two = Uint32 2 in + let distance_is_two = builtin eq two distance in + match distance_is_two with + | True => + knight_path square direction player_1_in_turn + | False => + Nil {Square} + end + end + | Pawn => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + gold_path square direction player_1_in_turn + | NotPromoted => + pawn_path square direction player_1_in_turn + end + | False => + Nil {Square} + end + | Lance => + match promotion_status with + | Promoted => + (* Promoted to gold general *) + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + gold_path square direction player_1_in_turn + | False => + Nil {Square} + end + | NotPromoted => + (* Lances move any number of squares forward. *) + let zero = Uint32 0 in + let distance_is_greater_that_zero = builtin lt zero distance in + match distance_is_greater_that_zero with + | True => + lance_path square direction distance player_1_in_turn + | False => + Nil {Square} + end + end + | Bishop => + match direction with + | SouthEast => + officer_path square direction distance + | SouthWest => + officer_path square direction distance + | NorthEast => + officer_path square direction distance + | NorthWest => + officer_path square direction distance + | _ => + (* Only allowed if bishop is promoted *) + match promotion_status with + | NotPromoted => + Nil {Square} + | Promoted => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + officer_path square direction one + | False => + Nil {Square} + end + end + end + | Rook => + match direction with + | South => + officer_path square direction distance + | West => + officer_path square direction distance + | East => + officer_path square direction distance + | North => + officer_path square direction distance + | _ => + (* Only allowed if rook is promoted *) + match promotion_status with + | NotPromoted => + Nil {Square} + | Promoted => + let one = Uint32 1 in + let distance_is_one = builtin eq one distance in + match distance_is_one with + | True => + officer_path square direction one + | False => + Nil {Square} + end + end + end + end + +let perform_promotion = + fun (promote : Bool) => + fun (promotion_status : PromotionStatus) => + fun (origin_row : Uint32) => + fun (target_row : Uint32) => + fun (player_1_in_turn : Bool) => + match promote with + | False => + (* No attempt made to promote *) + Some {PromotionStatus} promotion_status + | True => + (* Attempt to promote *) + match promotion_status with + | Promoted => + (* Cannot promote an already promoted piece *) + None {PromotionStatus} + | NotPromoted => + (* Check that move happened in opponent territory *) + match player_1_in_turn with + | True => + (* Move must occur on row 7 or higher *) + let seven = Uint32 7 in + (* Attacking northwards *) + let origin_not_in_opponent_territory = builtin lt origin_row seven in + let target_not_in_opponent_territory = builtin lt target_row seven in + let not_in_opponent_territory = andb origin_not_in_opponent_territory target_not_in_opponent_territory in + match not_in_opponent_territory with + | True => + (* Cannot promote piece outside of opponent territory *) + None {PromotionStatus} + | False => + Some {PromotionStatus} promoted + end + | False => + (* Move must occur on row 3 or lower *) + let three = Uint32 3 in + (* Attacking northwards *) + let origin_not_in_opponent_territory = builtin lt three origin_row in + let target_not_in_opponent_territory = builtin lt three target_row in + let not_in_opponent_territory = andb origin_not_in_opponent_territory target_not_in_opponent_territory in + match not_in_opponent_territory with + | True => + (* Cannot promote piece outside of opponent territory *) + None {PromotionStatus} + | False => + Some {PromotionStatus} promoted + end + end + end + end + +type Error = +| GameOver +| PlayingOutOfTurn +| IllegalAction +| InternalError + +let game_is_over = GameOver +let playing_out_of_turn = PlayingOutOfTurn +let illegal_action = IllegalAction +let internal_error = InternalError + +(* Error events *) +let mk_error_event = + fun (err : Error) => + let err_code = + match err with + | GameOver => Int32 -1 + | PlayingOutOfTurn => Int32 -2 + | IllegalAction => Int32 -3 + | InternalError => Int32 -999 + end in + { _eventname : "ShogiError" ; err_code : err_code } + +let mk_winner_event = + fun (current_player : ByStr20) => + fun (player1 : ByStr20) => + fun (player2 : ByStr20) => + let current_player_is_one = builtin eq player1 current_player in + let player_no = + match current_player_is_one with + | True => Uint32 1 + | False => Uint32 2 + end in + { _eventname : "ShogiWinner" ; winner : player_no } + +let get_next_player = + fun (current_player : ByStr20) => + fun (player1 : ByStr20) => + fun (player2 : ByStr20) => + let current_player_is_one = builtin eq player1 current_player in + match current_player_is_one with + | True => player2 + | False => player1 + end + +contract Shogi +( +player1 : ByStr20, +player2 : ByStr20 +) + +(* Initialize board *) +field board : Map Uint32 (Map Uint32 SquareContents) = initial_board player1 player2 +field captured_pieces : Map ByStr20 (Map Uint32 Uint32) = init_captured_pieces player1 player2 +(* player1 moves first *) +(* player_in_turn = None indicates that game is over *) +field player_in_turn : Option ByStr20 = Some {ByStr20} player1 +field winner : Option ByStr20 = None {ByStr20} + +(* Execute Move action by sending message to execute PlayerAction transition *) +transition MoveAction ( + row : Uint32, + column : Uint32, + direction : Direction, + distance : Uint32, + promote : Bool + ) + square = Square row column; + zero = Uint128 0; + move = Move square direction distance promote; + msg = { _tag : "PlayerAction"; _amount : zero; _recipient : _this_address; action : move}; + nil_msg = Nil {Message}; + msgs = Cons {Message} msg nil_msg; + send msgs +end + +(* Execute player action *) +transition PlayerAction (action : Action) + false = False; + true = True; + current_player_opt <- player_in_turn; + match current_player_opt with + | None => + (* Game is over *) + err = game_is_over; + e = mk_error_event err; + event e + | Some current_player => + correct_player = builtin eq _sender current_player; + match correct_player with + | False => + err = playing_out_of_turn; + e = mk_error_event err; + event e + | True => + match action with + (* Resign and award game to opponent *) + | Resign => + opponent = get_next_player current_player player1 player2; + none = None {ByStr20}; + player_in_turn := none; + some_opponent = Some {ByStr20} opponent; + winner := some_opponent + | Place piece (Square row column) => + (* Place a captured piece on the board *) + (* Check that player has captured piece available *) + piece_no = piece_to_int piece; + capture_count <- captured_pieces[_sender][piece_no]; + match capture_count with + | None => + (* This should not happen *) + none_player = None {ByStr20}; + player_in_turn := none_player; + err = internal_error; + e = mk_error_event err; + event e + | Some count => + zero = Uint32 0; + has_pieces = builtin lt zero count; + match has_pieces with + | False => + err = illegal_action; + e = mk_error_event err; + event e + | True => + (* Check if desired square is available *) + target_square_content <- board[row][column]; + match target_square_content with + | Some Free => + (* Remove from captured pieces, and place on board *) + one = Uint32 1; + new_count = builtin sub count one; + captured_pieces[_sender][piece_no] := new_count; + new_contents = Occupied piece not_promoted _sender; + board[row][column] := new_contents + | _ => + (* Square does not exist on board, or square is occupied *) + err = illegal_action; + e = mk_error_event err; + event e + end + end + end + | Move square direction distance promote => + match square with + | Square row column => + (* Find the contents of the origin square *) + contents <- board[row][column]; + match contents with + | Some (Occupied piece promotion_status owner) => + correct_owner = builtin eq owner current_player; + match correct_owner with + | False => + err = illegal_action; + e = mk_error_event err; + event e + | True => + player_1_moves = builtin eq current_player player1; + path = movement_path square piece promotion_status direction distance player_1_moves; + match path with + | Nil => + err = illegal_action; + e = mk_error_event err; + event e + | Cons (Square target_row target_column) intervening_squares => + (* Piece is allowed to move as requested. Check for blocking pieces. *) + board_tmp <- board; + blocked_path = + let exister = @list_exists Square in + let occupied_predicate = + fun (square : Square) => + match square with + | Square row column => + let row_contents = builtin get board_tmp row in + match row_contents with + | None => False (* Should never happen *) + | Some row_map => + let contents = builtin get row_map column in + match contents with + | Some (Occupied _ _ _) => True + | Some Free => False + | None => False (* Should never happen *) + end + end + end in + exister occupied_predicate intervening_squares; + match blocked_path with + | True => + err = illegal_action; + e = mk_error_event err; + event e + | False => + (* Check contents of target square *) + contents_at_target <- board[target_row][target_column]; + match contents_at_target with + | None => + (* Moving off the board *) + err = illegal_action; + e = mk_error_event err; + event e + | Some Free => + (* No piece captured *) + (* Check promotion part of move *) + new_promotion_status_opt = perform_promotion promote promotion_status row target_row player_1_moves; + match new_promotion_status_opt with + | None => + (* Illegal promotion *) + err = illegal_action; + e = mk_error_event err; + event e + | Some new_promotion_status => + (* Move piece *) + (* Source square is no longer occupied *) + board[row][column] := free; + (* Update target square *) + new_contents_at_target = Occupied piece new_promotion_status current_player; + board[target_row][target_column] := new_contents_at_target + end + | Some (Occupied captured_piece _ captured_owner) => + (* Target square is occupied. Check ownership *) + captured_owner_is_current_player = builtin eq captured_owner current_player; + match captured_owner_is_current_player with + | True => + (* Target square is blocked *) + err = illegal_action; + e = mk_error_event err; + event e + | False => + (* Opponent piece captured. *) + (* Check promotion part of move *) + new_promotion_status_opt = perform_promotion promote promotion_status row target_row player_1_moves; + match new_promotion_status_opt with + | None => + (* Illegal promotion *) + err = illegal_action; + e = mk_error_event err; + event e + | Some new_promotion_status => + (* Move own piece *) + board[row][column] := free; + (* Update target square *) + new_contents_at_target = Occupied piece new_promotion_status current_player; + board[target_row][target_column] := new_contents_at_target; + (* Check if captured piece is the king *) + match captured_piece with + | King => + (* Game is won *) + none = None {ByStr20}; + player_in_turn := none; + some_current_player = Some {ByStr20} current_player; + winner := some_current_player + | _ => + (* Add captured piece to list of captured pieces *) + captured_piece_no = piece_to_int captured_piece; + captured_count_opt <- captured_pieces[current_player][captured_piece_no]; + match captured_count_opt with + | None => + err = internal_error; + e = mk_error_event err; + event e + | Some count => + one = Uint32 1; + new_captured_count = builtin add count one; + captured_pieces[current_player][captured_piece_no] := new_captured_count + end + end + end + end + end + end + end + end + | _ => + (* No piece on the square, or square does not exist *) + err = illegal_action; + e = mk_error_event err; + event e + end + end + end + end; + (* Check if a winner has been found *) + win <- winner; + match win with + | Some player => + (* Game is over. Announce winner *) + e = mk_winner_event player player1 player2; + event e + | None => + (* Set player_in_turn to opposite player *) + next_player = get_next_player current_player player1 player2; + next_player_opt = Some {ByStr20} next_player; + player_in_turn := next_player_opt + end + end +end \ No newline at end of file diff --git a/products/bluebell/core/tests/data/llvm/gold/01_foo.scilla b/products/bluebell/core/tests/data/llvm/gold/01_foo.scilla new file mode 100644 index 000000000..a222f87e5 --- /dev/null +++ b/products/bluebell/core/tests/data/llvm/gold/01_foo.scilla @@ -0,0 +1,10 @@ +scilla_version 0 + +library TheLibraryPart + +contract TheContractPart() + +transition hello() + msg = "Zilliqa Rocks!"; + x = builtin print msg +end diff --git a/products/bluebell/core/tests/error_checking_tests.rs b/products/bluebell/core/tests/error_checking_tests.rs new file mode 100644 index 000000000..25cad44de --- /dev/null +++ b/products/bluebell/core/tests/error_checking_tests.rs @@ -0,0 +1,27 @@ +#[cfg(test)] +mod tests { + use bluebell::testing::test_execution_path; + + #[test] + fn test_hello_world() { + test_execution_path( + "HelloWorldExample::TriggerHelloWorld", + "[42]", + r#" +--| scilla_version 0 +--| library HelloWorldContract +--| contract HelloWorldExample() +--> transition TriggerHelloWorld() +--> msg = "Hello world."; +--> print msg +--| end + "#, + "", + "", + ); + } + + // TODO: Add test for stdout. + // TODO: Work out how to test panic + // --> panic msg +} diff --git a/products/bluebell/core/tests/evm_compiler_full_tests.rs b/products/bluebell/core/tests/evm_compiler_full_tests.rs new file mode 100644 index 000000000..a7bf3a497 --- /dev/null +++ b/products/bluebell/core/tests/evm_compiler_full_tests.rs @@ -0,0 +1,172 @@ +#[cfg(test)] +mod tests { + use bluebell::support::{ + evm::EvmCompiler, + modules::{ScillaDebugBuiltins, ScillaDefaultBuiltins, ScillaDefaultTypes}, + }; + use evm_assembly::{executor::ExecutorResult, types::EvmTypeValue}; + use serde_json; + + fn result_to_string(ret: ExecutorResult) -> String { + let mut result = "".to_string(); + let mut sorted_changeset: Vec<(String, Option)> = + ret.changeset.into_iter().collect(); + sorted_changeset.sort_by_key(|(key, _)| key.clone()); + for (k, v) in sorted_changeset { + match v { + Some(v) => { + result.push_str("+"); + result.push_str(&k); + result.push_str("="); + result.push_str(&v); + } + None => { + result.push_str("-"); + result.push_str(&k); + } + } + result.push_str("\n"); + } + + result.trim().to_string() + } + + fn compile_and_execute_full_evm( + entry_point: &str, + args: &str, + script: &str, + ) -> Result { + let mut compiler = EvmCompiler::new(); + let default_types = ScillaDefaultTypes {}; + let default_builtins = ScillaDefaultBuiltins {}; + let debug = ScillaDebugBuiltins {}; + + compiler.attach(&default_types); + compiler.attach(&default_builtins); + compiler.attach(&debug); + let executable = compiler.executable_from_script(script.to_string())?; + + let arguments: Vec = if args == "" { + [].to_vec() + } else { + serde_json::from_str(&args).expect("Failed to deserialize arguments") + }; + + let ret = executable.execute(&entry_point, arguments); + + Ok(ret) + } + + macro_rules! test_compile_and_execute_full_evm { + ($entry:expr, $args:expr, $source:expr, $expected:expr) => { + match compile_and_execute_full_evm($entry, $args, $source) { + Ok(result) => { + let result_str = result_to_string(result); + assert_eq!($expected.to_string(), result_str); + } + Err(err) => panic!("{}", err), + } + }; + } + + #[test] + fn test_set_state_uint() { + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 +library HelloWorld +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHello (msg : Uint64) + welcome_msg := msg +end +"#, + "+0x1000000000000000000000000000000000000000.0x0000000000000000000000000000000000000000000000000000000000001337=0x000000000000000000000000000000000000000000000000000000000000002a" + ); + } + + #[test] + fn test_conditional_set_state_uint_negative() { + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHello (msg : Uint64) + is_owner = False; + match is_owner with + | True => welcome_msg := msg + end +end +"#, + "" + ); + } + + #[test] + fn test_conditional_set_state_uint_positive() { + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHello (msg : Uint64) + is_owner = True; + match is_owner with + | True => welcome_msg := msg + end +end +"#, + "+0x1000000000000000000000000000000000000000.0x0000000000000000000000000000000000000000000000000000000000001337=0x000000000000000000000000000000000000000000000000000000000000002a" + ); + } + + #[test] + fn test_conditional_set_state_combined_logic() { + // TODO: Test case not working + + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 + + library HelloWorld + + contract HelloWorld() + field welcome_msg : Uint64 = Uint64 0 + + transition setHello (msg: Uint64) + zero = Uint64 0; + test = Uint64 42; + is_owner = builtin eq msg test; + test2 = False; + is_false = builtin eq test2 is_owner; + match is_false with + | True => + welcome_msg := zero + | _ => + welcome_msg := msg + end + end + +"#, + "+0x1000000000000000000000000000000000000000.0x0000000000000000000000000000000000000000000000000000000000001337=0x000000000000000000000000000000000000000000000000000000000000002a" + ); + } +} diff --git a/products/bluebell/core/tests/evm_compiler_no_abi_tests.rs b/products/bluebell/core/tests/evm_compiler_no_abi_tests.rs new file mode 100644 index 000000000..1cdfee77f --- /dev/null +++ b/products/bluebell/core/tests/evm_compiler_no_abi_tests.rs @@ -0,0 +1,399 @@ +#[cfg(test)] +mod tests { + use std::rc::Rc; + + use bluebell::support::{ + evm::EvmCompiler, + modules::{ScillaDebugBuiltins, ScillaDefaultBuiltins, ScillaDefaultTypes}, + }; + use evm_assembly::{ + executable::EvmExecutable, executor::ExecutorResult, observable_machine::ObservableMachine, + types::EvmTypeValue, + }; + use serde_json; + + fn result_to_string(ret: ExecutorResult) -> String { + let mut result = "".to_string(); + let mut sorted_changeset: Vec<(String, Option)> = + ret.changeset.into_iter().collect(); + sorted_changeset.sort_by_key(|(key, _)| key.clone()); + for (k, v) in sorted_changeset { + match v { + Some(v) => { + result.push_str("+"); + result.push_str(&k); + result.push_str("="); + result.push_str(&v); + } + None => { + result.push_str("-"); + result.push_str(&k); + } + } + result.push_str("\n"); + } + + result.trim().to_string() + } + + fn compile_and_execute( + entry_point: &str, + args: &str, + script: &str, + ) -> Result { + let mut compiler = EvmCompiler::new_no_abi_support(); + compiler.pass_manager_mut().enable_debug_printer(); + + let default_types = ScillaDefaultTypes {}; + let default_builtins = ScillaDefaultBuiltins {}; + let debug = ScillaDebugBuiltins {}; + + compiler.attach(&default_types); + compiler.attach(&default_builtins); + compiler.attach(&debug); + let executable = compiler.executable_from_script(script.to_string())?; + + let arguments: Vec = if args == "" { + [].to_vec() + } else { + serde_json::from_str(&args).expect("Failed to deserialize arguments") + }; + + let ret = executable.execute(&entry_point, arguments); + + Ok(ret) + } + + macro_rules! test_compile_and_execute { + ($entry:expr, $args:expr, $source:expr, $expected:expr) => { + match compile_and_execute($entry, $args, $source) { + Ok(result) => { + let result_str = result_to_string(result); + assert_eq!($expected.to_string(), result_str); + } + Err(err) => panic!("{}", err), + } + }; + } + + fn create_vm_and_run_code(source: String) -> (ObservableMachine, EvmExecutable) { + let mut compiler = EvmCompiler::new_no_abi_support(); + compiler.pass_manager_mut().enable_debug_printer(); + + let default_types = ScillaDefaultTypes {}; + let default_builtins = ScillaDefaultBuiltins {}; + let debug = ScillaDebugBuiltins {}; + + compiler.attach(&default_types); + compiler.attach(&default_builtins); + compiler.attach(&debug); + let executor = compiler + .executable_from_script(source) + .expect("Failed to compile source"); + println!( + "Produced code: {}", + hex::encode(&executor.executable.bytecode.clone()) + ); + + let data = "00"; + let code = executor.executable.bytecode.clone(); + let data = hex::decode(data).unwrap(); + + println!("Executable code: {:#}", hex::encode(code.clone())); + + let mut vm = ObservableMachine::new(Rc::new(code), Rc::new(data), 1024, 10000, None); + vm.run(); + + (vm, executor.executable) + } + + macro_rules! expect_was_visited { + ($vm:expr, $executable:expr, $label:expr) => { + if let Some(label) = $executable.get_label_position($label) { + assert!($vm.did_visit_program_counter(label)); + } else { + panic!("{}", format!("Label '{}' not found.", $label)); + } + }; + } + + macro_rules! expect_not_visited { + ($vm:expr, $executable:expr, $label:expr) => { + if let Some(label) = $executable.get_label_position($label) { + assert!($vm.did_not_visit_program_counter(label)); + } else { + panic!("{}", format!("Label '{}' not found.", $label)); + } + }; + } + + #[test] + fn test_set_true_path_in_match_nobody() { + let (vm, executable) = create_vm_and_run_code( + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() +transition setHello () + x = True; + match x with + | True => + end +end +"# + .to_string(), + ); + println!("{:#?}", executable.label_positions); + expect_was_visited!(vm, executable, "HelloWorld::setHello"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_condition_1"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_block_2"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::match_exit_0"); + expect_was_visited!(vm, executable, "__entry_function__::success"); + } + + #[test] + fn test_set_false_path_in_match_nobody() { + let (vm, executable) = create_vm_and_run_code( + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() +transition setHello () + x = False; + match x with + | True => + end +end +"# + .to_string(), + ); + println!("{:#?}", executable.label_positions); + expect_was_visited!(vm, executable, "HelloWorld::setHello"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_condition_1"); + expect_not_visited!(vm, executable, "HelloWorld::setHello::clause_0_block_2"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::match_exit_0"); + expect_was_visited!(vm, executable, "__entry_function__::success"); + } + + #[test] + fn test_set_true_path_in_match_nobody_multi_choice() { + let (vm, executable) = create_vm_and_run_code( + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() +transition setHello () + x = True; + match x with + | True => + | False => + end +end +"# + .to_string(), + ); + println!("{:#?}", executable.label_positions); + expect_was_visited!(vm, executable, "HelloWorld::setHello"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_condition_1"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_block_2"); + expect_not_visited!(vm, executable, "HelloWorld::setHello::clause_1_block_4"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::match_exit_0"); + expect_was_visited!(vm, executable, "__entry_function__::success"); + } + + #[test] + fn test_cset_false_path_in_match_nobody_multi_choice() { + let (vm, executable) = create_vm_and_run_code( + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() +transition setHello () + x = False; + match x with + | True => + | False => + end +end +"# + .to_string(), + ); + println!("{:#?}", executable.label_positions); + expect_was_visited!(vm, executable, "HelloWorld::setHello"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_condition_1"); + expect_not_visited!(vm, executable, "HelloWorld::setHello::clause_0_block_2"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_1_block_4"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::match_exit_0"); + expect_was_visited!(vm, executable, "__entry_function__::success"); + } + + #[test] + fn test_set_false_path_in_match_nobody_multi_choice_with_block() { + let (vm, executable) = create_vm_and_run_code( + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() +transition setHello () + msg = Uint64 12; + x = False; + match x with + | True => + print msg + | False => + print msg; + print msg + end +end +"# + .to_string(), + ); + println!("{:#?}", executable.label_positions); + expect_was_visited!(vm, executable, "HelloWorld::setHello"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_0_condition_1"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_1_condition_3"); + expect_not_visited!(vm, executable, "HelloWorld::setHello::clause_0_block_2"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::clause_1_block_4"); + expect_was_visited!(vm, executable, "HelloWorld::setHello::match_exit_0"); + expect_was_visited!(vm, executable, "__entry_function__::success"); + } + + #[test] + fn test_std_out() { + test_compile_and_execute!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 + +contract HelloWorld() + +transition setHello () + msg = Uint64 12; + print msg; + print msg +end +"#, + "" + ); + // TODO: test output - requires a new module + // assert!(false); + } + + #[test] + fn test_match_std_out() { + test_compile_and_execute!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 + +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() + +transition setHello () + msg = Uint64 12; + + is_owner = False; + match is_owner with + | True => + print msg + | False => + print msg; + print msg + end + +end +"#, + "" + ); + // TODO: test output - requires a new module + // assert!(false); + } + + #[test] + fn test_single_statement_in_match() { + test_compile_and_execute!( + "HelloWorld::setHello", + "", + r#"scilla_version 0 + +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() + +transition setHello (msg : Uint64) + is_owner = True; + match is_owner with + | True => + print msg + end +end +"#, + "" + ); + } + + #[test] + fn test_set_match_uint() { + test_compile_and_execute!( + "HelloWorld::setHello", + "", + r#"scilla_version 0 +library HelloWorld + +contract HelloWorld() +transition setHello () + x = Uint64 1 +end +"#, + "" + ); + } + + #[test] + fn test_redefinition_of_variables() { + test_compile_and_execute!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 + +contract HelloWorld() +field welcome_msg : Uint64 = Uint64 0 + +transition setHelloImpl (msg : Uint64) + welcome_msg := msg +end + +transition setHello (msg : Uint64) + setHelloImpl msg; + msg <- welcome_msg; + print msg +end +"#, + "" + ); + // TODO: test output - requires a new module + // assert!(false); + } +} diff --git a/products/bluebell/core/tests/evm_line_visit_test.rs b/products/bluebell/core/tests/evm_line_visit_test.rs new file mode 100644 index 000000000..af7826b43 --- /dev/null +++ b/products/bluebell/core/tests/evm_line_visit_test.rs @@ -0,0 +1,67 @@ +#[cfg(test)] +mod tests { + use bluebell::testing::test_execution_path; + + #[test] + fn test_visiting() { + test_execution_path( + "HelloWorld::setHello", + "[42]", + r#" +--| scilla_version 0 +--| +--| contract HelloWorld() +--| +--> transition setHello () +--> msg = Uint64 12; +--> print msg; +--> print msg +--| end +"#, + "", + "", + ); + + test_execution_path( + "HelloWorld::setHello", + "[42]", + r#" +--| scilla_version 0 +--| +--| library HelloWorld +--| contract HelloWorld() +--| field welcome_msg : Uint64 = Uint64 0 +--| +--> transition setHello (x: Uint64) +--> welcome_msg := x; +--| y <- welcome_msg (* TODO: Source map not correctly generated here *) +--| end + +"#, + "0x00...1337:0x00...2c", + "0x00...1337:0x00...2a", + ); + + test_execution_path( + "HelloWorld::setHello", + "[42]", + r#" +--| scilla_version 0 +--| +--| library HelloWorld +--| contract HelloWorld() +--| field welcome_msg : Uint64 = Uint64 0 +--| +--> transition setHello (x: Uint64) +--> welcome_msg := x; +--| y <- welcome_msg (* TODO: Source map not correctly generated here *) +--| end + +"#, + "0x00...1338:0x00...2c", + r#"0x00...1338:0x00...2c + 0x00...1337:0x00...2a + "#, + ); + } +} diff --git a/products/bluebell/core/tests/execution_path_tests.rs b/products/bluebell/core/tests/execution_path_tests.rs new file mode 100644 index 000000000..4ee5d0748 --- /dev/null +++ b/products/bluebell/core/tests/execution_path_tests.rs @@ -0,0 +1,139 @@ +#[cfg(test)] +mod tests { + use bluebell::support::{ + evm::EvmCompiler, + modules::{ScillaDebugBuiltins, ScillaDefaultBuiltins, ScillaDefaultTypes}, + }; + use evm_assembly::{executor::ExecutorResult, types::EvmTypeValue}; + use serde_json; + + fn result_to_string(ret: ExecutorResult) -> String { + let mut result = "".to_string(); + let mut sorted_changeset: Vec<(String, Option)> = + ret.changeset.into_iter().collect(); + sorted_changeset.sort_by_key(|(key, _)| key.clone()); + for (k, v) in sorted_changeset { + match v { + Some(v) => { + result.push_str("+"); + result.push_str(&k); + result.push_str("="); + result.push_str(&v); + } + None => { + result.push_str("-"); + result.push_str(&k); + } + } + result.push_str("\n"); + } + + result.trim().to_string() + } + + fn compile_and_execute_full_evm( + entry_point: &str, + args: &str, + script: &str, + ) -> Result { + let mut compiler = EvmCompiler::new(); + let default_types = ScillaDefaultTypes {}; + let default_builtins = ScillaDefaultBuiltins {}; + let debug = ScillaDebugBuiltins {}; + + compiler.attach(&default_types); + compiler.attach(&default_builtins); + compiler.attach(&debug); + let executable = compiler.executable_from_script(script.to_string())?; + + let arguments: Vec = if args == "" { + [].to_vec() + } else { + serde_json::from_str(&args).expect("Failed to deserialize arguments") + }; + + let ret = executable.execute(&entry_point, arguments); + + Ok(ret) + } + + macro_rules! test_compile_and_execute_full_evm { + ($entry:expr, $args:expr, $source:expr, $expected:expr) => { + match compile_and_execute_full_evm($entry, $args, $source) { + Ok(result) => { + let result_str = result_to_string(result); + assert_eq!($expected.to_string(), result_str); + } + Err(err) => panic!("{}", err), + } + }; + } + + #[test] + fn test_set_state_uint() { + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 +library HelloWorld +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHello (msg : Uint64) + welcome_msg := msg +end +"#, + "+0x1000000000000000000000000000000000000000.0x0000000000000000000000000000000000000000000000000000000000001337=0x000000000000000000000000000000000000000000000000000000000000002a" + ); + } + + #[test] + fn test_conditional_set_state_uint_negative() { + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHello (msg : Uint64) + is_owner = False; + match is_owner with + | True => welcome_msg := msg + end +end +"#, + "" + ); + } + + #[test] + fn test_conditional_set_state_uint_positive() { + test_compile_and_execute_full_evm!( + "HelloWorld::setHello", + "[42]", + r#"scilla_version 0 +library HelloWorld +type Bool = + | True + | False + +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHello (msg : Uint64) + is_owner = True; + match is_owner with + | True => welcome_msg := msg + end +end +"#, + "+0x1000000000000000000000000000000000000000.0x0000000000000000000000000000000000000000000000000000000000001337=0x000000000000000000000000000000000000000000000000000000000000002a" + ); + } +} diff --git a/products/bluebell/core/tests/formatter_preformatted_test.rs b/products/bluebell/core/tests/formatter_preformatted_test.rs new file mode 100644 index 000000000..11e6bb99a --- /dev/null +++ b/products/bluebell/core/tests/formatter_preformatted_test.rs @@ -0,0 +1,139 @@ +#[cfg(test)] +mod tests { + extern crate diffy; + use std::{fs, fs::File, io::Read}; + + use bluebell::{ + formatter::BluebellFormatter, + parser::{ + lexer, + lexer::{Lexer, SourcePosition}, + parser, ParserError, + }, + }; + use diffy::{create_patch, PatchFormatter}; + + fn strip_comments(input: &str) -> String { + let re = regex::Regex::new(r"[ ]*\(\*([^*]|\*+[^*)])*\*+\)\n*").unwrap(); + let result = re.replace_all(input, ""); + result.to_string() + } + + fn parse_and_format(path: String) -> bool { + let mut file = File::open(&path).expect("Unable to open file"); + let mut script = String::new(); + file.read_to_string(&mut script) + .expect("Unable to read file"); + let lexer = Lexer::new(&script); + + let mut errors: Vec = [].to_vec(); + let parser = parser::ProgramParser::new(); + assert!(errors.len() == 0); + + // TODO: Hack to deal with that we do not support comments yet + let script = strip_comments(&script); + + match parser.parse(&mut errors, lexer) { + Ok(ast) => { + let mut formatter = BluebellFormatter::new(); + let mut ast2 = ast.clone(); + let formatted = formatter.emit(&mut ast2); + + if formatted != script { + println!("Orignial:\n{}\n\n", script); + println!("Formatted:\n{}\n\n", formatted); + let diff = create_patch(&script, &formatted); + let f = PatchFormatter::new().with_color(); + println!("Diff:\n{}\n\n", f.fmt_patch(&diff)); + println!("Filename: {}\n\n", path) + } + assert_eq!(formatted, script); + formatted == script + } + Err(error) => { + let _ret = error.clone(); + let message = format!("Syntax error {:?}", error); + let mut pos: Vec = [].to_vec(); + error.map_location(|l| { + pos.push(l.clone()); + l + }); + + let mut n = 0; + let mut line_counter = 0; + let mut char_counter = 0; + let mut line_start = 0; + let mut line_end = 0; + let mut should_stop = false; + for ch in script.chars() { + if ch == '\n' { + if should_stop { + line_end = n; + break; + } else { + line_start = n + 1; + } + } + if !should_stop && n == pos[0].position { + should_stop = true; + } + + n += 1; + if !should_stop { + char_counter += 1; + } + + if ch == '\n' { + line_counter += 1; + char_counter = 0; + } + } + + if line_end < line_start { + line_end = script.len(); + } + + let line = &script[line_start..line_end]; + println!("Line {},{}:{}", line_counter, char_counter, line); + print!( + "{}", + " ".repeat( + char_counter + format!("Line {},{}:", line_counter, char_counter).len() + ) + ); + println!("{}", "^".repeat(pos[1].position - pos[0].position)); + + let my_error = ParserError { + message, + line: 0, //error.location_line(), + column: 0, // err.location_column(), + }; + println!("{}", my_error); + + false + } + } + } + + #[test] + fn test_scilla_files() { + let mut success = true; + + let mut entries: Vec<_> = fs::read_dir("./tests/data/formatter/formatted") + .expect("read_dir call failed") + .collect::>() + .expect("Failed to collect directory entries"); + entries.sort_by_key(|entry| entry.path().to_string_lossy().into_owned()); + for entry in entries { + let path = entry.path(); + let path_str = path.to_string_lossy().into_owned(); + + // Run the .scilla file using your Scilla execution command + println!("- Formatting {}", path_str); + let ret = parse_and_format(path_str); + success = ret && success; + } + + assert!(success) + } +} diff --git a/products/bluebell/docs/address.md b/products/bluebell/docs/address.md new file mode 100644 index 000000000..86eca5c40 --- /dev/null +++ b/products/bluebell/docs/address.md @@ -0,0 +1,137 @@ +## `Address` type format + +The `Address` data structure in Scilla represents the 20-byte Ethereum-like +address format. It is utilized to identify contracts and external accounts +within the Zilliqa blockchain network. + +```text ++--------------------+ +| 20 bytes | +| | +| Address Payload | ++--------------------+ +``` + +Addresses are fundamental in various aspects of contract development in Scilla, +such as sending and receiving funds, calling other contracts, or designating +permissions. It is crucial to ensure the correctness of these addresses to +prevent unintentional transactions. + +```scilla +(* Example of contract using Scilla address *) + +import ListUtils + +contract SimpleStorage(owner: ByStr20) + +field storedData : Int32 = 0 + +transition Store(newData : Int32) + is_owner = builtin eq owner _sender; + match is_owner with + | False => + e = {_eventname : "Unauthorized"; msg : "You are not the contract owner."}; + event e + | True => + storedData := newData; + e = {_eventname : "DataStored"; data : newData}; + event e + end +end +``` + +## Address Verification + +To verify the validity of a Scilla address, one typically checks the following: + +1. Ensure the address has a length of 20 bytes. +2. Check if the address does not contain non-hexadecimal characters. +3. For contract addresses, confirm that a corresponding contract exists on the + blockchain. + +It's also common to employ checksums to further validate addresses, though this +isn't mandated by Scilla or Zilliqa. + +## Print `Address` + +The new `print` function allows developers to print the `Address` types, which +is especially useful for debugging purposes. The function outputs the address in +its standard hexadecimal format. + +```scilla +(* Example of using print to display Address *) + +transition PrintAddress() + owner_address = owner; (* Fetch the owner address *) + print owner_address; +end +``` + +## Using Addresses with `zilliqa-js` + +The `zilliqa-js` library provides a comprehensive suite of functions to manage, +validate, and work with addresses in Zilliqa's blockchain. Here's how you can +work with addresses using `zilliqa-js`: + +### Initializing the SDK + +Before performing any operations, you need to initialize the SDK. + +```javascript +const { Zilliqa } = require("@zilliqa-js/zilliqa"); +const zilliqa = new Zilliqa("https://api.zilliqa.com/"); +``` + +### **Creating a New Address** + +To generate a new keypair and associated address: + +```javascript +const { getAddressFromPrivateKey } = require("@zilliqa-js/crypto"); +const privateKey = zilliqa.wallet.create(); +const address = getAddressFromPrivateKey(privateKey); +console.log(`Address: ${address}`); +``` + +### Validating an Address + +Before any operations involving an address, it's always good practice to +validate it: + +```javascript +const { validation } = require("@zilliqa-js/util"); +const isValid = validation.isAddress("Your_Address_Here"); +console.log(`Is valid address: ${isValid}`); +``` + +### Converting Between Address and Bech32 + +Zilliqa uses the Bech32 format for human-readable addresses. Here's how to +convert between a standard address and its Bech32 format: + +```javascript +const { toBech32Address, fromBech32Address } = require("@zilliqa-js/crypto"); + +const bech32 = toBech32Address("Your_Address_Here"); +console.log(`Bech32 format: ${bech32}`); + +const originalAddress = fromBech32Address(bech32); +console.log(`Original format: ${originalAddress}`); +``` + +### Using an Address in Transactions + +When you're sending a transaction, you'll typically need to specify the +recipient's address: + +```javascript +const tx = zilliqa.transactions.new({ + toAddr: "Recipient_Address_Here", + amount: zilliqa.utils.units.toQa("1", zilliqa.utils.units.Units.Zil), // 1 ZIL + gasPrice: zilliqa.utils.units.toQa("1000", zilliqa.utils.units.Units.Li), // Gas Price in Li + gasLimit: Long.fromNumber(50), +}); +``` + +Always remember to handle private keys securely. Avoid exposing them in +client-side code or any public space. diff --git a/products/bluebell/docs/balance-transfer.md b/products/bluebell/docs/balance-transfer.md new file mode 100644 index 000000000..2d7c63af6 --- /dev/null +++ b/products/bluebell/docs/balance-transfer.md @@ -0,0 +1,57 @@ +# Contract funds + +## Getting the balance owned by the contract + +You can get the balance owned by the contract using the `_balance` keyword in +Scilla. + +```scilla +scilla_version 0 + +library BalanceChecker +contract BalanceQuery() + + +transition CheckBalance() + current_balance <- _balance; + + e = { _eventname : "ContractBalance"; current_balance : current_balance }; + event e +end +``` + +## Send funds from contract + +In Scilla, sending funds from the contract involves using the `send` +instruction: + +```scilla +scilla_version 0 + +library SendFunds + +contract SendMoney(owner: ByStr20) + +field balance : Uint128 = Uint128 0 + +transition Send(to: ByStr20, amount: Uint128) + b <- _balance; + can_send = builtin lt amount b; + match can_send with + | False => + e = { _eventname : "SendFailed"; reason : "InsufficientFunds" }; + event e + | True => + msg = { _tag : ""; _recipient : to; _amount : amount }; + value = builtin sub b amount; + balance := value; + (* TODO: send msg; *) + e = { _eventname : "SendSuccess"; recipient : to; sent_amount : amount }; + event e + end +end +``` + +## Advanced example + +TODO: Yet to be written diff --git a/products/bluebell/docs/builtin-functions.md b/products/bluebell/docs/builtin-functions.md new file mode 100644 index 000000000..baeaff07c --- /dev/null +++ b/products/bluebell/docs/builtin-functions.md @@ -0,0 +1,89 @@ +# Builtin functions + +## Builtin example usage + +The `eq` builtin in Scilla is used to check the equality of two values. In this +example, we demonstrate how to check the equality of two Uint128 values: + +```scilla +scilla_version 0 + +library EqualityCheck + +contract EqualityChecker() + +transition CheckEquality(a : Uint128, b : Uint128) + (* Use builtin eq to check equality *) + isEqual = builtin eq a b; + e = { _eventname : "CheckEqualityResult"; result : isEqual }; + event e +end +``` + +The `concat` builtin in Scilla is used to concatenate two strings. In the +following example, we demonstrate how to concatenate two strings: + +```scilla +scilla_version 0 + +library StringConcatContract + +contract StringConcat() + +(* Fields to store the strings and the result *) +field str1 : String = "" +field str2 : String = "" +field result : String = "" + +(* Transition to set the strings *) +transition SetStrings(s1: String, s2: String) + str1 := s1; + str2 := s2; + e = { _eventname : "StringsSet"; s1 : s1; s2 : s2 }; + event e +end + +(* Transition to concatenate the stored strings *) +transition ConcatenateStrings() + s1 <- str1; + s2 <- str2; + concatenated = builtin concat s1 s2; + result := concatenated; + e = { _eventname : "StringsConcatenated"; concatenated : concatenated }; + event e +end +``` + +With the above contracts, users can check the equality of two `Uint128` values +and concatenate two strings, respectively. + +## Builtin summary + +Below is the summarized table of builtin functions: + +| Function name | Inputs | Outputs | Comments | +| -------------------- | ---------------------------------------------------------------- | --------------------- | ---------------------------------------------------------------------------------------- | +| `builtin eq` | `i1: IntX / UintX, i2: IntX / UintX` OR `s1: String, s2: String` | `Bool` | Checks equality between two integers or strings. | +| `builtin add` | `i1: IntX / UintX, i2: IntX / UintX` | `IntX / UintX` | Adds two integer values. | +| `builtin sub` | `i1: IntX / UintX, i2: IntX / UintX` | `IntX / UintX` | Subtracts the second integer from the first. | +| `builtin mul` | `i1: IntX / UintX, i2: IntX / UintX` | `IntX / UintX` | Multiplies two integers. | +| `builtin div` | `i1: IntX / UintX, i2: IntX / UintX` | `IntX / UintX` | Integer division. | +| `builtin rem` | `i1: IntX / UintX, i2: IntX / UintX` | `IntX / UintX` | Provides the remainder after division. | +| `builtin lt` | `i1: IntX / UintX, i2: IntX / UintX` | `Bool` | Checks if the first integer is less than the second. | +| `builtin pow` | `i1: IntX / UintX, i2: Uint32` | `IntX / UintX` | Raises the first integer to the power of the second. | +| `builtin isqrt` | `i: UintX` | `UintX` | Computes the integer square root. | +| `builtin to_nat` | `i1: Uint32` | `Nat` | Converts a Uint32 value to type Nat. | +| `builtin to_(u)intX` | `UintX / IntX or String` | `Option UintX / IntX` | Converts a value to a specified integer type. Can fail in certain cases. | +| `builtin concat` | `s1: String, s2: String` OR `h1: ByStr(X/Y), h2: ByStr(X/Y)` | `String / ByStr` | Concatenates two strings or byte strings. | +| `builtin substr` | `s: String, idx: Uint32, len: Uint32` | `String` | Extracts a substring from a given string. | +| `builtin to_string` | `x: IntX, UintX, ByStrX, ByStr` | `String` | Converts various types to a string literal. | +| `builtin strlen` | `s: String` OR `h: ByStr` | `Uint32` | Calculates the length of a string or byte string. | +| `builtin strrev` | `s: String` | `String` | Returns the reversed version of a string. | +| `builtin to_ascii` | `h: ByStr or ByStrX` | `String` | Converts a byte string to an ASCII string. Raises an error for non-printable characters. | +| `builtin to_bystr` | `h: ByStrX` | `ByStr` | Converts a fixed size byte string to one of arbitrary length. | +| `builtin to_bystrX` | `h: ByStr OR Uint(X)` | `Option ByStrX` | Converts an arbitrary size byte string or unsigned integer to a fixed size byte string. | +| `builtin to_uintX` | `h: ByStrX` | `Uint(X)` | Converts a fixed sized byte string to an equivalent unsigned integer value. | + +Note: In the table, "X" and "Y" represent placeholder values, meaning you would +replace them with actual numeric values (32, 64, 128, 256) as appropriate for +the function's usage. diff --git a/products/bluebell/docs/control-flow.md b/products/bluebell/docs/control-flow.md new file mode 100644 index 000000000..4ec517425 --- /dev/null +++ b/products/bluebell/docs/control-flow.md @@ -0,0 +1,55 @@ +# Control flow + +## match + +The `match` construct is used for pattern matching and in place of `if` +statements. It's especially useful for handling ADTs (Algebraic Data Types) and +Options. + +Here's a simple example of using `match` with an ADT: + +```scilla +scilla_version 0 + +library MatchExample + +type Animal = +| Dog +| Cat +| Elephant + +contract AnimalSound() + +transition GetSound(animal: Animal) + sound = + match animal with + | Dog => "Bark" + | Cat => "Meow" + | Elephant => "Trumpet" + end; + + e = { _eventname : "AnimalSound"; sound : sound }; + event e +end +``` + +Here's another example of using `match` to handle an Option type: + +```scilla +scilla_version 0 + +library OptionMatchExample + +contract HandleOption() + +transition GetNumber(opt: Option Uint32) + result = + match opt with + | Some n => n + | None => Uint32 0 + end; + + e = { _eventname : "NumberResult"; number : result }; + event e +end +``` diff --git a/products/bluebell/docs/crypto.md b/products/bluebell/docs/crypto.md new file mode 100644 index 000000000..e0adeacb4 --- /dev/null +++ b/products/bluebell/docs/crypto.md @@ -0,0 +1,71 @@ +# Crypto functions + +## SHA256 + +SHA256 is a cryptographic hash function that produces a fixed-size (256-bit) +hash value. In Scilla, this function is available as a built-in function. + +Example: + +```scilla +scilla_version 0 + +library CryptoExampleSHA256 + +contract CryptoSHA256() + +field hashedResult : ByStr32 = 0x0000000000000000000000000000000000000000000000000000000000000000 + +transition Hash(input : String) + hashedValue = builtin sha256hash input; + hashedResult := hashedValue; + e = { _eventname : "HashedValue"; value : hashedValue }; + event e +end +``` + +This contract allows a user to hash an input string using SHA256 and store the +result in the contract state. + +## Keccak256 + +Keccak256 is another cryptographic hash function that produces a fixed-size +(256-bit) hash value. It's popularly used in Ethereum. + +Example: + +```scilla +scilla_version 0 + +library CryptoExampleKeccak256 + +contract CryptoKeccak256() + +field hashedResult : ByStr32 = 0x0000000000000000000000000000000000000000000000000000000000000000 + +transition Hash(input : String) + hashedValue = builtin keccak256hash input; + hashedResult := hashedValue; + e = { _eventname : "HashedValue"; value : hashedValue }; + event e +end +``` + +This contract allows a user to hash an input string using Keccak256 and store +the result in the contract state. + +## Other functions + +For other cryptographic primitives available in Scilla, a similar pattern can be +followed. Ensure you check Scilla's official documentation for the availability +and correct naming of other cryptographic functions. Below is a table +summarizing cryptographic functions commonly used, using the Scilla convention: + +| Function name | Inputs | Outputs | Comments | +| ---------------- | ------------------------------- | --------- | --------------------------------------------------------- | +| `sha256hash` | `String` | `ByStr32` | SHA-256 cryptographic hash function | +| `keccak256hash` | `String` | `ByStr32` | Keccak-256 cryptographic hash function (used in Ethereum) | +| `ripemd160hash` | `String` | `ByStr20` | RIPEMD-160 cryptographic hash function | +| `ecdsa_verify` | `ByStr64`, `ByStr32`, `ByStr33` | `Bool` | ECDSA signature verification | +| `schnorr_verify` | `ByStr64`, `ByStr32`, `ByStr33` | `Bool` | Schnorr signature verification | +| `blake2b` | `String` | `ByStr32` | Blake2b cryptographic hash function | diff --git a/products/bluebell/docs/error-checking.md b/products/bluebell/docs/error-checking.md new file mode 100644 index 000000000..9b40fedb2 --- /dev/null +++ b/products/bluebell/docs/error-checking.md @@ -0,0 +1,56 @@ +# Error checking + +Error checking in Scilla is crucial for ensuring that contracts behave as +intended, especially when handling crucial operations involving assets. Proper +error checking can prevent unintended behavior and mitigate potential +vulnerabilities. + +## Panic + +In Scilla, the `panic` function allows a contract to halt execution immediately, +without making any state changes. This can be useful when a condition is met +that should stop the execution of the contract immediately. + +Example: + +```scilla +scilla_version 0 + +library PanicContract + +contract PanicExample() + +transition TriggerPanic() + panic "This is a panic message."; +end +``` + +In the above contract, calling the `TriggerPanic` transition will always cause +the contract to halt execution with the provided panic message. + +## Assert + +The `assert` function in Scilla checks a given condition, and if it evaluates to +`False`, the contract execution halts immediately without making any state +changes. + +Example: + +```scilla +scilla_version 0 + +library AssertContract + +contract AssertExample() + +transition AssertNonZero(value: Uint128) + is_non_zero = builtin lt value Uint128 1; + assert is_non_zero; + e = { _eventname : "AssertionPassed"; value : value }; + event e +end +``` + +In the above contract, the `AssertNonZero` transition checks if the provided +`value` is not zero using the `assert` function. If the `value` is zero, the +execution will halt. diff --git a/products/bluebell/docs/functions.md b/products/bluebell/docs/functions.md new file mode 100644 index 000000000..c414febd2 --- /dev/null +++ b/products/bluebell/docs/functions.md @@ -0,0 +1,131 @@ +# Functions + +## Writing a function + +In Scilla, functions are essential constructs that allow us to encapsulate +logic. A function can be defined using the `fun` keyword, and it has a set +format: `fun (parameter_name : parameter_type) => expression`. + +Here's an example of a simple function that takes an `Int128` and checks if it's +less than 3: + +```scilla +scilla_version 0 + +library SimpleFunctionLibrary + +let f = + fun (a : Int128) => + let three = Int128 3 in + builtin lt a three + +contract SimpleContract() +``` + +## Parameter and return types + +Each function in Scilla must specify its parameter's type and will also have an +associated return type. The return type is inferred from the expression of the +function. + +For instance, here's a function that checks if two `Uint128` numbers are equal +and if so, adds them: + +```scilla +scilla_version 0 + +library CheckAndAddLibrary + +let add_if_equal = + fun (a : Uint128) => fun (b : Uint128) => + let eq = builtin eq a b in + match eq with + | True => builtin add a b + | False => Uint128 0 + end + +contract ContractName() +``` + +## Generics + +Scilla allows for generic or parametric polymorphism through the use of type +functions (`tfun`). This means you can write code in a type-agnostic manner, and +then instantiate the type as required. + +Here's a function that returns the first element of a pair, regardless of the +type of elements the pair holds: + +```scilla +scilla_version 0 + +library GenericsLibrary + +let fst = + tfun 'A => + tfun 'B => + fun (p : Pair ('A) ('B)) => + match p with + | Pair a b => a + end + +contract ContractName() +``` + +## Transitions and procedures + +Transitions are the primary way by which a Scilla contract's state can be +modified. They are analogous to methods in object-oriented languages. +Procedures, on the other hand, are akin to transitions but cannot change the +contract's state. + +Here's a contract with a transition to set an integer value: + +```scilla +scilla_version 0 + +library SetValueLibrary + +contract SetValueContract() + +field stored_value : Int128 = Int128 0 + +transition Set(value : Int128) + stored_value := value; + e = { _eventname : "ValueSet"; new_value : value }; + event e +end +``` + +## Using functions in transitions + +Functions and transitions often work hand-in-hand. Here's a contract that uses +the previously defined `add_if_equal` function in a transition: + +```scilla +scilla_version 0 + +library UseFunctionInTransitionLibrary + +let add_if_equal = + fun (a : Uint128) => fun (b : Uint128) => + let eq = builtin eq a b in + match eq with + | True => builtin add a b + | False => Uint128 0 + end + +contract UseFunctionContract() + +field result : Uint128 = Uint128 0 + +transition ComputeAndStore(a : Uint128, b : Uint128) + r = add_if_equal a b; + result := r; + e = { _eventname : "ComputedResult"; value : r }; + event e +end +``` + +These examples give an overview of defining and using functions, transitions, +and procedures in Scilla. diff --git a/products/bluebell/docs/lists.md b/products/bluebell/docs/lists.md new file mode 100644 index 000000000..8124d605e --- /dev/null +++ b/products/bluebell/docs/lists.md @@ -0,0 +1,202 @@ +# Lists + +## One dimensional lists + +Lists in Scilla are ordered collections of items that can have duplicate +elements. Lists are useful when there's a need to group together elements +sequentially. + +```scilla +scilla_version 0 +library ListLib + +contract OneDimList() + +field myList : List Int32 = Nil {Int32} + +``` + +## Two dimensional lists + +Two dimensional lists, often referred to as lists of lists, allow for +representation of matrix-like structures. + +```scilla +scilla_version 0 +library TwoDimListLib + +contract TwoDimList() + +field my2DList : List (List Int32) = Nil {(List Int32)} + +``` + +## Nested lists + +Nested lists allow for representation of tree-like structures or multi-level +lists. + +```scilla +scilla_version 0 +library NestedListLib + +contract NestedList() + +field nestedList : List (List (List Int32)) = Nil {(List (List Int32))} +``` + +## List functions + +### Count + +Counting elements in a list helps determine its length. + +```scilla +scilla_version 0 +library ListCountLib + +contract ListCount() + +field numbers : List Int32 = [1; 2; 3; 4] + +transition countList() + n <- numbers; + len = @list_length Int32 n; + event "ListLength" len +end +``` + +### Append + +Appending allows you to combine two lists into one. + +```scilla +scilla_version 0 +library ListAppendLib + +contract ListAppend() + +field listA : List Int32 = [1; 2] +field listB : List Int32 = [3; 4] + +transition appendLists() + a <- listA; + b <- listB; + combined = @append Int32 a b; + event "AppendedList" combined +end +``` + +### Extend + +Extend can be used to add elements to the end of the list. + +```scilla +scilla_version 0 +library ListExtendLib + +contract ListExtend() + +field listA : List Int32 = [1; 2] + +transition extendList(value : Int32) + a <- listA; + extended = @list_append Int32 a value; + listA := extended +end +``` + +### Pop back and pop front + +Popping elements from either the front or the back of a list removes them. + +```scilla +(* NOTE: Scilla doesn't natively support pop operations. + This example demonstrates a potential approach using helper functions *) + +scilla_version 0 +library PopFrontBackLib + +contract PopFrontBack() + +field list : List Int32 = [1; 2; 3] + +transition popFront() + l <- list; + new_list = @tail Int32 l; + list := new_list +end + +transition popBack() + l <- list; + new_list = @remove_last Int32 l; + list := new_list +end +``` + +### Pop back and front with n + +Removing n elements from either the front or the back. + +```scilla +(* NOTE: Demonstrating a potential approach with helper functions *) + +scilla_version 0 +library PopNLib + +contract PopN() + +field list : List Int32 = [1; 2; 3; 4; 5] + +transition popFrontN(n : Uint32) + l <- list; + new_list = @remove_first_n Int32 l n; + list := new_list +end + +transition popBackN(n : Uint32) + l <- list; + new_list = @remove_last_n Int32 l n; + list := new_list +end +``` + +### Reverse + +Reversing a list inverts the order of its elements. + +```scilla +scilla_version 0 +library ReverseLib + +contract ListReverse() + +field list : List Int32 = [1; 2; 3] + +transition reverseList() + l <- list; + reversed = @list_reverse Int32 l; + list := reversed +end +``` + +### Erase + +Erase removes a specific element or range of elements from the list. + +```scilla +(* NOTE: Demonstrating a potential approach with helper functions *) + +scilla_version 0 +library EraseLib + +contract ListErase() + +field list : List Int32 = [1; 2; 3; 2; 4] + +transition eraseValue(value : Int32) + l <- list; + new_list = @list_erase_value Int32 l value; + list := new_list +end +``` diff --git a/products/bluebell/docs/random/Architecture.md b/products/bluebell/docs/random/Architecture.md new file mode 100644 index 000000000..4d9d79886 --- /dev/null +++ b/products/bluebell/docs/random/Architecture.md @@ -0,0 +1,120 @@ +# Architecture Overview of the Bluebell Compiler + +The Bluebell compiler is designed specifically for compiling the Zilliqa Scilla +Language. The compiling process is divided into four structured stages, each +implementing a trait to convert or transform the code into a more low-level +representation. + +```text +TODO: Expand on following: +- Bluebell is a the next generation scilla compiler +- It aims to target both WASM and EVM +``` + +## Compilation Stages + +The compilation process in Bluebell involves several stages that transform +Scilla code from its initial high-level format into machine-executable bytecode. +Each stage refines and optimizes the code, focusing on specific aspects to +enhance execution, resource utilization, and maintainability. The stages of +compilation include: + +1. Parsing +2. Converting the AST to a high-level IR +3. Lowering the high-level IR to a low-level IR +4. Emitting bytecode + +### Parsing (Scilla Parser) + +The parser function forms the initial phase of the compiler. Bluebell uses a +parser implemented with LALRPOP, with a custom lexer, to produce an Abstract +Syntax Tree (AST) representation of the Scilla code. + +The parsing process begins as the source code is read from left to right and +tokenized by the lexer. These tokens represent the smallest meaningful units of +the code, such as literals, identifiers, operators, and assorted keyword. +Following the rules defined in the LALRPOP grammar, these tokens are then +grouped into expressions and statements that construct the AST. + +One of the distinct challenges in parsing Scilla code is handling its functional +programming aspects and strict typing system. As Scilla has been designed with +formal verification in mind, its syntax differs substantially from regular +programming languages, necessitating a custom lexer and unique parsing +strategies. + +Moreover, the error recovery during this phase needs special attention. When a +syntax error is encountered, the parsing should be able to recover and continue +with the next statements or declarations, in order to report multiple errors in +one run if necessary. + +Additionally, as a part of the parsing process, some initial semantic checks can +also be performed such as checking for undeclared variables or incompatible data +types, depending on the complexity and runtime cost of these checks. Hence, the +efficiency of the parser is crucial to the overall function of Bluebell. + +The result of this process is an AST, a tree-like data structure that simplifies +subsequent compiler phases like static checking and code optimization. + +### AST Conversion to High-Level IR + +Using the trait `AstConverting`, the AST is converted to a High-Level +Intermediate Representation (IR). It implements type deduction during the +generation of this high-level IR. + +During this stage, the AST representation of the Scilla code is converted into a +high-level intermediate representation (IR) using the trait `AstConverting`. +This facilitates further optimization processes. The representation carries out +type deduction to ensure that all variables, expressions, and operations are +type-safe. The high-level IR stage reformulates the code into a format which is +easier for subsequent stages of the compiler to process, optimizing its +structure without altering its behavior. This format could be more flexible and +efficient to manipulate compared to the original syntax, particularly for +complex operations such as loop unrolling, constant folding, and strength +reduction. + +### High-Level IR Lowering to Low-Level IR + +The High-Level IR is then lowered to a Low-Level IR using the `IrLowering` +trait. The Low-Level IR used here is the LLVM infrastructural framework, +providing robust and extensive architecture support. + +Once the high-level IR has been established, it's then further refined into a +low-level IR through the `IrLowering` trait. This low-level IR relies on the +LLVM infrastructural framework, which has remarkable architecture support. At +this level, the IR has lost most of its high-level structures (like loops) and +takes on a form much closer to assembly language. This form is more suitable for +machine-code translation and allows for machine-specific optimizations. + +### Low-Level IR Lowering to Byte Code + +Finally, the Low-Level IR is lowered into bytecode using the `BytecodeEmitting` +trait. + +The final stage of the compilation process involves lowering the low-level IR +into bytecode with the `BytecodeEmitting` trait. This bytecode is the final +machine-executable format that can be interpreted by the host JVM. During this +stage, all the aggregated optimizations and transformations from previous stages +are finalized and applied to produce efficient and robust machine code. +Optimizations at this stage are typically related to register allocation, +instruction scheduling, and peephole optimizations, where the compiler looks at +a few lines of code (the 'peephole') to optimize its operations. + +## Extending the Compiler + +For adding more functionality like a code formatter or a new target, Bluebell +has designated spaces to add these: + +### Code Formatter + +To implement a code formatter, you can make use of the `AstConverting` trait. + +_TODO: Provide specific instructions or details on how to use the +`AstConverting` trait to implement a code formatter._ + +### New Target Implementation + +If you wish to add a new target, one would implement a `BytecodeEmitter` trait +for the struct representing that target. + +_TODO: Provide specific instructions or details on how to implement the +`BytecodeEmitter` trait for a new target._ diff --git a/products/bluebell/docs/random/Builtins.md b/products/bluebell/docs/random/Builtins.md new file mode 100644 index 000000000..9adba412c --- /dev/null +++ b/products/bluebell/docs/random/Builtins.md @@ -0,0 +1,44 @@ +Here is a list of all builtins. Update according to +https://scilla.readthedocs.io/en/latest/scilla-in-depth.html#primitive-data-types-operations + +| Function name | Inputs | Outputs | Comments | Example | +| ---------------- | --------------------------- | ------------------ | ---------------------------------------- | ---------------------------------------------------------- | +| `add` | `Integral, Integral` | `Integral` | Addition for integral types | `result = builtin add x y` | +| `sub` | `Integral, Integral` | `Integral` | Subtraction for integral types | `difference = builtin sub x y` | +| `mul` | `Integral, Integral` | `Integral` | Multiplication for integral types | `product = builtin mul x y` | +| `div` | `Integral, Integral` | `Integral` | Division for integral types | `quotient = builtin div x y` | +| `rem` | `Integral, Integral` | `Integral` | Remainder for integral types | `remainder = builtin rem x y` | +| `lt` | `Integral, Integral` | `Bool` | Less than comparison | `is_less = builtin lt x y` | +| `lte` | `Integral, Integral` | `Bool` | Less than or equal comparison | `is_leq = builtin lte x y` | +| `eq` | `'A, 'A` | `Bool` | Equality check (generic) | `is_equal = builtin eq x y` | +| `gt` | `Integral, Integral` | `Bool` | Greater than comparison | `is_greater = builtin gt x y` | +| `gte` | `Integral, Integral` | `Bool` | Greater than or equal comparison | `is_geq = builtin gte x y` | +| `andb` | `Bool, Bool` | `Bool` | Logical AND | `both_true = builtin andb x y` | +| `orb` | `Bool, Bool` | `Bool` | Logical OR | `either_true = builtin orb x y` | +| `notb` | `Bool` | `Bool` | Logical NOT | `inverse = builtin notb x` | +| `sha256hash` | `ByStr` | `ByStr32` | Performs SHA-256 hashing | `hash_val = builtin sha256hash data` | +| `keccak256hash` | `ByStr` | `ByStr32` | Performs Keccak-256 hashing | `hash_val = builtin keccak256hash data` | +| `ripemd160hash` | `ByStr` | `ByStr20` | Performs RIPEMD-160 hashing | `hash_val = builtin ripemd160hash data` | +| `schnorr_sign` | `ByStr32, ByStr32` | `ByStr64` | Schnorr signature generation | `signature = builtin schnorr_sign data private_key` | +| `schnorr_verify` | `ByStr32, ByStr33, ByStr64` | `Bool` | Schnorr signature verification | `is_valid = builtin schnorr_verify data pub_key signature` | +| `head` | `List 'A` | `Option 'A` | Returns the first element | `first_elem = builtin head lst` | +| `tail` | `List 'A` | `Option (List 'A)` | Returns the list minus the first element | `remaining = builtin tail lst` | +| `append` | `List 'A, List 'A` | `List 'A` | Appends two lists | `combined = builtin append lst1 lst2` | +| `is_some` | `Option 'A` | `Bool` | Checks if Option has value | `has_value = builtin is_some opt` | +| `is_none` | `Option 'A` | `Bool` | Checks if Option is None | `is_empty = builtin is_none opt` | +| `option_match` | `Option 'A, 'A -> 'B, 'B` | `'B` | Matches Option value or None | `result = builtin option_match opt (fun v => v) default` | +| `put` | `Map 'K 'V, 'K, 'V` | `Map 'K 'V` | Puts a key-value pair in the map | `updated_map = builtin put m k v` | +| `get` | `Map 'K 'V, 'K` | `Option 'V` | Retrieves value for a key from the map | `value_opt = builtin get m k` | +| `contains` | `Map 'K 'V, 'K` | `Bool` | Checks if a key exists in the map | `key_exists = builtin contains m k` | +| `remove` | `Map 'K 'V, 'K` | `Map 'K 'V` | Removes a key-value pair from the map | `map_without_key = builtin remove m k` | + +| Special Identifier | Type | Comments | Example | +| ------------------ | --------- | ----------------------------------- | ----------------------------------- | +| `_sender` | `ByStr20` | Address of the caller | `let caller = _sender` | +| `_amount` | `Uint128` | ZILs sent with the current message | `let funds_received = _amount` | +| `_this_address` | `ByStr20` | Address of the current contract | `let contract_addr = _this_address` | +| `_creation_block` | `Uint128` | Block number of contract's creation | `let created_on = _creation_block` | + +`add`, `sub`, `mul`, `div`, `rem`, `lt`, `lte`, `eq`, `gt`, `gte`, `andb`, +`orb`, `notb`, `sha256hash`, `keccak256hash`, `ripemd160hash`, `schnorr_sign`, +`schnorr_verify` diff --git a/products/bluebell/docs/random/GettingStarted.md b/products/bluebell/docs/random/GettingStarted.md new file mode 100644 index 000000000..15287c187 --- /dev/null +++ b/products/bluebell/docs/random/GettingStarted.md @@ -0,0 +1,12 @@ +## Playground + +```sh +cd playground +trunk serve +``` + +## CLI + +```sh +cargo run --bin cli -- examples/target4.scilla --runtime-enable debug run --backend evm --entry-point "HelloWorld::setHello" --args "[\"Zilliqa ❤️ Rocks\"]" +``` diff --git a/products/bluebell/docs/random/ScillaExpressions.md b/products/bluebell/docs/random/ScillaExpressions.md new file mode 100644 index 000000000..a7611be1e --- /dev/null +++ b/products/bluebell/docs/random/ScillaExpressions.md @@ -0,0 +1,176 @@ +# Scilla expressions used for development + +Here is a list of Scilla expressions that can be used for testing type +inference. Each expression consists of a combination of different types, +functions, and Scilla specific constructs to help you cover various cases during +type inference testing. + +1. Add an integer and a boolean: + + ```scilla + let x = 2 in + let y = True in + x + y + ``` + + ```rust + NodeFullExpression::LocalVariableDeclaration { + identifier_name: "x".to_string(), + expression: Box::new(NodeFullExpression::ExpressionAtomic(Box::new(NodeAtomicExpression::AtomicLit( + NodeValueLiteral::LiteralInt(NodeTypeNameIdentifier::ByteStringType(NodeByteStr::Constant("Int32".to_string())), "2".to_string()) + ))), + type_annotation: None, + containing_expression: Box::new(NodeFullExpression::LocalVariableDeclaration { + identifier_name: "y".to_string(), + expression: Box::new(NodeFullExpression::ExpressionAtomic(Box::new(NodeAtomicExpression::AtomicLit( + NodeValueLiteral::LiteralInt(NodeTypeNameIdentifier::ByteStringType(NodeByteStr::Constant("Bool".to_string())), "True".to_string()) + ))), + type_annotation: None, + containing_expression: Box::new(NodeFullExpression::ExpressionBuiltin { + b: "_add_".to_string(), + targs: None, + xs: NodeBuiltinArguments { + arguments: vec![ + NodeVariableIdentifier::VariableName("x".to_string()), + NodeVariableIdentifier::VariableName("y".to_string()), + ], + type_annotation: None, + }, + }), + }), + } + ``` + +2. Define a custom function and use it: + + ```scilla + let foo = tfun ('T) => fun (x : 'T) => x in + let bar = @foo Uint32 42 in + bar + ``` + +3. Create a custom List ADT and define functions to manipulate it (similar to a + simple implementation for List.length): + + ```scilla + type List = | Nil | Cons of (Uint32, List); + fun length : List -> Uint32 = + tfun l => + match l with + | Nil => Uint32 0 + | Cons h t => let tmp_length = @length t in + 1 + tmp_length + end; + ``` + +4. Work with Scilla's transactions, messages, and events: + + ```scilla + type Payment = (ByStr20, Uint128); + type Event = | ReceivePayment of Payment; + transition OnPayment(sender: ByStr20, amt: Uint128) + is_sender = builtin eq _sender sender; + match is_sender with + | False => + msg = {_tag : ""; _recipient : sender; _amount_QTZ : amt}; + e = ReceivePayment (sender, amt); + event e; + msgs = one_msg msg; + send msgs + | True => skip + end + end + ``` + +5. Use Map and Functors: + + ```scilla + type Storage = Map ByStr20 Uint128; + fun get_balance: Storage -> ByStr20 -> Uint128 = + fun (s : Storage) => + fun (addr : ByStr20) => + match (builtin get s addr) with + | Some bal => bal + | None => Uint128 0 + end; + ``` + +6. Recursion with Fibonacci sequence: + + ```scilla + fun fibonacci : Uint32 -> Uint32 = + fun (n : Uint32) => + let eq1 = uint32_eq n (Uint32 0) in + let eq2 = uint32_eq n (Uint32 1) in + match eq1 with + | True => Uint32 0 + | False => + match eq2 with + | True => Uint32 1 + | False => + let n_minus1 = builtin sub n (Uint32 1) in + let fib_n_minus1 = fibonacci n_minus1 in + let n_minus2 = builtin sub n (Uint32 2) in + let fib_n_minus2 = fibonacci n_minus2 in + builtin add fib_n_minus1 fib_n_minus2 + end + end; + ``` + +7. Custom User ADT with type parameters: + + ```Scilla + type User (ByStr, StdLib.Option Uint32) = + | Unknown + | UserDetails of (ByStr, StdLib.Option Uint32); + + let user = UserDetails (@0x123, (Some (Uint32 28))); + ``` + +8. Higher-order functions and mapping a function over a List: + + ```Scilla + type List a = | Nil | Cons of (a, List a); + free function map_for_List : ((List a) -> b) -> List a -> List b = + fun (f: (a -> b)) => + fun (l: List a) => + match l with + | Nil => Nil + | Cons h t => (@Cons b) (f h) (map_for_List f t) + end; + + let square = fun (x: Uint32) => builtin mul x x; + let numbers = Cons {a = Uint32; b = List Uint32} (Uint32 1) (Cons {a = Uint32; b = List Uint32} (Uint32 2) (Cons {a = Uint32; b = List Uint32} (Uint32 3) Nil)); + let squares = map_for_List square numbers; + ``` + +9. Custom Result type and safe division function: + + ```Scilla + type Result a b = | Ok of a | Error of b; + let safe_div : Uint32 -> Uint32 -> Result Uint32 String = + fun (x : Uint32) => + fun (y : Uint32) => + let eq_zero = uint32_eq y (Uint32 0) in + match eq_zero with + | True => Error ("Cannot divide by zero") + | False => let quotient = builtin div x y in + Ok (quotient) + end; + ``` + +10. Custom Tree ADT and Sum of elements: + + ```Scilla + type Tree a = | Empty | Node of (a, Tree a, Tree a); + fun tree_sum : Tree Uint32 -> Uint32 = + fun (t : Tree Uint32) => + match t with + | Empty => Uint32 0 + | Node (val, left, right) => + let left_sum = tree_sum left in + let right_sum = tree_sum right in + let subtrees_sum = builtin add left_sum right_sum in + builtin add subtrees_sum val + end; + ``` diff --git a/products/bluebell/docs/syntax.md b/products/bluebell/docs/syntax.md new file mode 100644 index 000000000..d6c03fe3c --- /dev/null +++ b/products/bluebell/docs/syntax.md @@ -0,0 +1,151 @@ +# Syntax + +Scilla's syntax is concise and functional, resembling OCaml and other ML-family +languages. + +## Declarations + +Scilla provides a way to declare constants, mutable fields (contract state), and +types. + +### Constants + +Declare a constant using the `let` keyword. + +```scilla +let x = Uint128 5 +``` + +### Fields + +Fields represent the mutable state of a contract. + +```scilla +field totalSupply : Uint128 = Uint128 1000000 +``` + +Full example: + +```scilla +scilla_version 0 + +library SimpleToken + +contract SimpleToken() +field totalSupply : Uint128 = Uint128 1000000 +``` + +### Maps + +Maps are key-value storage constructs. + +```scilla +field balances : Map ByStr20 Uint128 = Emp ByStr20 Uint128 +``` + +Full example: + +```scilla +scilla_version 0 + +library TokenWithBalances + +contract TokenWithBalances() +field balances : Map ByStr20 Uint128 = Emp ByStr20 Uint128 +``` + +### User-Defined ADT + +You can also declare custom ADTs (Algebraic Data Types). + +```scilla +type color = | Red | Blue | Green +``` + +Full example: + +```scilla +scilla_version 0 + +library ColorContract + +type color = | Red | Blue | Green + +contract ColorContract() +field selectedColor : color = Red +``` + +## Procedures + +Procedures are like transitions but can't change the contract's state or invoke +events. + +```scilla +procedure CalculateSum(x : Uint128, y : Uint128) + var sum : Uint128; + sum := x + y; +end +``` + +## Transitions + +Transitions are the primary way to interact with a contract. They can modify the +contract's state and invoke events. + +```scilla +transition UpdateBalance(addr : ByStr20, value : Uint128) + balances[addr] := value; + e = { _eventname : "BalanceUpdated"; address : addr; new_balance : value }; + event e +end +``` + +Full example: + +```scilla +scilla_version 0 + +library BalanceUpdater + +contract BalanceUpdater() + +field balances : Map ByStr20 Uint128 = Emp ByStr20 Uint128 + +transition UpdateBalance(addr : ByStr20, value : Uint128) + balances[addr] := value; + e = { _eventname : "BalanceUpdated"; address : addr; new_balance : value }; + event e +end + +``` + +## Keywords + +Here is a current list of Scilla keywords: + +| Keyword name | Description | +| ------------ | ---------------------------------------- | +| `let` | Declare a constant | +| `transition` | Define a contract transition | +| `procedure` | Define a contract procedure | +| `field` | Declare a mutable contract field (state) | +| `map` | Key-value storage construct | +| `type` | Type definition | +| `end` | End of a transition or procedure | +| `event` | Emit an event | +| `fun` | Declares a function | +| `accept` | Accept incoming funds to the contract | +| `delete` | Deletes entry in map | + +## Comments + +In Scilla, comments are denoted by `(*` to start the comment and `*)` to close +it. + +```scilla +(* This is a comment *) +(* + This is a multi-line comment + *) +(* Nested (* Comments *) also work *) +``` diff --git a/products/bluebell/docs/variables.md b/products/bluebell/docs/variables.md new file mode 100644 index 000000000..47d86e527 --- /dev/null +++ b/products/bluebell/docs/variables.md @@ -0,0 +1,210 @@ +# Variables + +Variables in Scilla can be declared and used in the contract body and +transitions. Here's a basic example: + +```scilla +scilla_version 0 + +library VariableExample + +(* A basic variable declaration *) +let someVariable = Uint128 5 + +contract VariableContract() +``` + +## Integers + +Integers in Scilla can be both signed and unsigned. The size can range from 32 +bits to 256 bits. + +```scilla +scilla_version 0 + +library IntegerExample + +(* Unsigned Integer of 128 bits *) +let uintVal = Uint128 10 + +(* Signed Integer of 128 bits *) +let intVal = Int128 -10 + +contract IntegerContract() +``` + +## 32 byte unsigned integer + +Uint256 can be used to declare a 32-byte unsigned integer: + +```scilla +scilla_version 0 + +library Uint256Example + +(* Unsigned 32-byte integer *) +let bigValue = Uint256 99999999999999999999999999999999999999 + +contract Uint256Contract() +``` + +## Boolean + +Boolean values can either be `True` or `False`: + +```scilla +scilla_version 0 + +library BooleanExample + +let isTrue = True +let isFalse = False + +contract BooleanContract() +``` + +## Lists + +Lists or Lists can be used to store a collection of items: + +```scilla +scilla_version 0 + +library ArrayExample + +(* TODO: Not working *) +let numberList = [Uint128 1, Uint128 2, Uint128 3] + +contract ArrayContract() + +``` + +## Maps + +Maps can be used to create key-value storage: + +```scilla +scilla_version 0 + +library MapExample + +contract MapContract() + +field storedMap : Map Uint128 String = Emp Uint128 String + +(* To add to the map *) +transition AddToMap(key : Uint128, value : String) + storedMap[key] := value +end +``` + +## Events + +Events can be emitted for external observers: + +```scilla +scilla_version 0 + +library EventExample + +contract EventContract() + +(* event Notify(message: String) *) + +transition EmitEvent() + e = { _eventname : "Notify"; message : "Event emitted!" }; + event e +end +``` + +## State + +State is used to maintain contract storage: + +```scilla +scilla_version 0 + +library StateExample + +contract StateContract() + +field count : Uint128 = Uint128 0 + +transition Increment() + current <- count; + one = Uint128 1; + newCount = builtin add current one; + count := newCount +end +``` + +## Address + +Addresses are used to identify contracts or users: + +```scilla +scilla_version 0 + +library AddressExample + +let someAddress = 0x1234567890123456789012345678901234567890 + +contract AddressContract() +``` + +## Type casting + +Converting one data type to another: + +```scilla +scilla_version 0 + +library TypeCastExample +contract TypeCastContract() + +(* Fields to store the results *) +field uintVal : Uint128 = Uint128 0 + +(* Transition to demonstrate type "casting" *) +transition CastIntToUint(input : Int128) + optUintResult = builtin to_uint128 input; + match optUintResult with + | Some uintResult => + uintVal := uintResult; + e = { _eventname : "Casted"; uintValue : uintResult }; + event e + | None => + e = { _eventname : "Error"; message : "Failed to cast Int128 to Uint128" }; + event e + end +end +``` + +## Constants + +Constants are values that cannot be changed: + +```scilla +scilla_version 0 + +library ConstantExample + +(* Scilla doesn't have a separate "constant" keyword, but you can use 'let' bindings as constants *) +let pi = Uint256 3141592653589793238 + +contract ConstantContract() +``` + +## Default values + +Default values can be set for fields: + +```scilla +scilla_version 0 + +library DefaultValueExample + +contract DefaultValueContract() + +field name : String = "DefaultName" +``` diff --git a/products/bluebell/evm_assembly/Cargo.toml b/products/bluebell/evm_assembly/Cargo.toml new file mode 100644 index 000000000..2989bcd35 --- /dev/null +++ b/products/bluebell/evm_assembly/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "evm_assembly" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +evm = { git = "https://github.com/Zilliqa/evm.git", branch="master" } +primitive-types = { version = "0.12", default-features = false } +hex = "0.4" +sha3 = "0.10.8" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" + +# Logging +log = "0.4.2" \ No newline at end of file diff --git a/products/bluebell/evm_assembly/src/block.rs b/products/bluebell/evm_assembly/src/block.rs new file mode 100644 index 000000000..0d425f120 --- /dev/null +++ b/products/bluebell/evm_assembly/src/block.rs @@ -0,0 +1,1533 @@ +use std::{ + collections::{BTreeSet, HashMap}, + mem, +}; + +use evm::Opcode; +use log::info; +use primitive_types::U256; + +use crate::{ + function_signature::EvmFunctionSignature, + instruction::{EvmInstruction, EvmSourcePosition, RustPosition}, + opcode_spec::{OpcodeSpec, OpcodeSpecification}, + types::{EvmType, EvmTypeValue}, +}; + +pub const ALLOCATION_POINTER: u8 = 0x40; +pub const MEMORY_OFFSET: u8 = 0x80; + +#[derive(Debug, Clone)] +pub struct Scope { + pub stack_counter: i32, + pub arg_count: i32, + entry_stack_counter: i32, + name_location: HashMap, + location_name: HashMap, +} + +impl Scope { + pub fn empty(arg_count: i32) -> Self { + Scope { + stack_counter: 0, + entry_stack_counter: arg_count, + arg_count, + name_location: HashMap::new(), + location_name: HashMap::new(), + } + } + + pub fn new(parent: Scope, arg_count: i32) -> Self { + let mut ret = parent.clone(); + ret.entry_stack_counter = ret.stack_counter + arg_count; + + ret + } + + pub fn relative_stack_counter(&self) -> i32 { + (self.stack_counter - self.entry_stack_counter) as i32 + } + + pub fn arg_count(&self) -> i32 { + self.arg_count + } + + pub fn register_arg_name(&mut self, name: &str, arg_number: i32) -> Result<(), String> { + if self.name_location.contains_key(name) { + return Err(format!("SSA name {} already exists", name)); + } + + assert!( + self.entry_stack_counter > self.stack_counter, + "Attempting to register too many function arguments" + ); + + // TODO: assumes that args are first in, last out + self.name_location.insert(name.to_string(), arg_number); + self.location_name.insert(arg_number, name.to_string()); + + self.stack_counter += 1; + + // TODO: Consider pruning of the names + + Ok(()) + } + + pub fn register_stack_name(&mut self, name: &str) -> Result<(), String> { + if self.name_location.contains_key(name) { + let depth = match self.name_location.get(name) { + Some(depth) => depth.clone(), + _ => return Err("Unable to find the depth of existing SSA name".to_string()), + }; + + self.location_name.remove(&depth); + self.name_location.remove(name); + } + + assert!(self.stack_counter + self.arg_count > 0); + + self.name_location + .insert(name.to_string(), self.stack_counter - 1); + self.location_name + .insert(self.stack_counter - 1, name.to_string()); + + // TODO: Consider pruning of the names + + Ok(()) + } + + pub fn register_alias(&mut self, source: &str, dest: &str) -> Result<(), String> { + // TODO: Create separate alias record to deal with this + if self.name_location.contains_key(dest) { + return Err(format!("SSA name {} already exists", dest)); + } + + if let Some(value) = self.name_location.get(source) { + let value = *value as i32; + self.name_location.insert(dest.to_string(), value); + self.location_name.insert(value, dest.to_string()); + Ok(()) + } else { + return Err(format!("SSA name {} does not exists", dest)); + } + } + + fn update_stack(&mut self, opcode: Opcode) -> i32 { + let consumes: i32 = opcode.stack_consumed(); + let produces: i32 = opcode.stack_produced(); + + let before = self.stack_counter; + + self.stack_counter -= consumes; + let ret = self.entry_stack_counter - self.stack_counter; + self.stack_counter += produces; + + // Note that we allow the stack to be exceed by exactly one element for the return address + assert!(self.stack_counter + self.arg_count >= -1); + + let after = self.stack_counter; + + // Trimming locations + for depth in after..before { + let name = match self.location_name.get(&depth) { + Some(name) => name.clone(), + _ => continue, + }; + + self.location_name.remove(&depth); + self.name_location.remove(&name); + } + + ret + } + + fn swap(&mut self, depth: i32) { + let position = self.stack_counter - depth; + + let name_at_position: Option = match self.location_name.get(&position) { + Some(n) => Some(n.clone()), + None => None, + }; + + let name_at_zero: Option = match self.location_name.get(&self.stack_counter) { + Some(n) => Some(n.clone()), + None => None, + }; + + if let Some(name_at_position) = &name_at_position { + self.location_name.remove(&position); + self.name_location.remove(name_at_position); + } + + if let Some(name_at_zero) = name_at_zero { + self.location_name.remove(&self.stack_counter); + self.name_location.remove(&name_at_zero); + + self.name_location + .insert(name_at_zero.to_string(), position); + self.location_name + .insert(position, name_at_zero.to_string()); + } + + if let Some(name_at_position) = name_at_position { + self.name_location.insert(name_at_position.to_string(), 0); + self.location_name.insert(0, name_at_position.to_string()); + } + } +} + +#[derive(Debug, Clone)] +pub struct EvmBlock { + pub name: String, + pub position: Option, + pub instructions: Vec, + pub entry_from: Vec, + pub is_entry: bool, + pub is_terminated: bool, + pub is_lookup_table: bool, + + pub consumes: i32, + pub produces: i32, + + pub scope: Scope, + pub comment: Option, // stack_counter: i32, + // name_location: HashMap, + + // Debug info + pub source_position: Option, + pub rust_position: Option, + pub block_arugments: Option>, + pub next_label: Option, + pub label_counter: u32, +} + +impl EvmBlock { + pub fn to_string(&self) -> String { + let mut ret: String = "".to_string(); + ret.push_str(&self.name); + ret.push_str(":\n"); + for instr in &self.instructions { + ret.push_str(" "); + ret.push_str(&instr.to_opcode_string()); + ret.push_str("\n"); + } + + ret + } + + pub fn new(position: Option, arg_names: BTreeSet, name: &str) -> Self { + let mut ret = Self { + name: name.to_string(), + position, + instructions: Vec::new(), + entry_from: Vec::new(), + is_entry: false, + is_terminated: false, + is_lookup_table: false, + consumes: 0, + produces: 0, + scope: Scope::empty(arg_names.len() as i32), + comment: None, + source_position: None, + rust_position: None, + block_arugments: Some(arg_names.clone()), + next_label: None, + label_counter: 0, + }; + + for (i, name) in arg_names.iter().enumerate() { + match ret.register_arg_name(name, i as i32) { + Err(e) => panic!("{}", e), + _ => (), + } + } + ret.jumpdest(); + + ret + } + + pub fn generate_label(&mut self, label: String) -> String { + let label = format!("{}__{}__{}", self.name, label, self.label_counter).to_string(); + self.label_counter += 1; + label + } + + pub fn set_next_instruction_comment(&mut self, comment: String) { + self.comment = Some(comment); + } + + pub fn set_next_instruction_location(&mut self, position: EvmSourcePosition) { + self.source_position = Some(position); + } + + pub fn set_next_rust_position(&mut self, filename: String, line: usize) { + self.rust_position = Some(RustPosition { line, filename }); + } + + pub fn register_arg_name(&mut self, name: &str, arg_number: i32) -> Result<(), String> { + self.scope.register_arg_name(name, arg_number) + } + + pub fn register_stack_name(&mut self, name: &str) -> Result<(), String> { + self.scope.register_stack_name(name) + } + + pub fn register_alias(&mut self, source: &str, dest: &str) -> Result<(), String> { + self.scope.register_alias(source, dest) + } + + fn update_stack(&mut self, opcode: Opcode) { + let deepest_visit = self.scope.update_stack(opcode); + + // Updating how deeply in the stack we consume + if deepest_visit > 0 { + self.consumes = std::cmp::max(self.consumes, deepest_visit); + } + } + + pub fn move_value(&mut self, from: i32, to: i32) -> Result<(), String> { + if from == to { + return Ok(()); + } + + // Ensuring that we are handling the corner + // case where eihter from or to is 0 correctly: + // Net result will be a single swap since swap(0) is noop + let (a, b) = if from < to { (from, to) } else { (to, from) }; + + self.swap(a); + self.swap(b); + self.swap(a); + + Ok(()) + } + + pub fn move_stack_name(&mut self, name: &str, pos: i32) -> Result<(), String> { + match self.scope.name_location.get(name) { + Some(depth) => { + let orig_pos = self.scope.stack_counter - depth - 1; + self.move_value(orig_pos, pos) + } + None => Err("Stack overflow.".to_string()), + } + } + + pub fn duplicate_stack_name(&mut self, name: &str) -> Result<(), String> { + match self.scope.name_location.get(name) { + Some(pos) => { + let distance = self.scope.stack_counter - pos; + + match distance { + 1 => { + self.dup1(); + Ok(()) + } + 2 => { + self.dup2(); + Ok(()) + } + 3 => { + self.dup3(); + Ok(()) + } + 4 => { + self.dup4(); + Ok(()) + } + 5 => { + self.dup5(); + Ok(()) + } + 6 => { + self.dup6(); + Ok(()) + } + 7 => { + self.dup7(); + Ok(()) + } + 8 => { + self.dup8(); + Ok(()) + } + 9 => { + self.dup9(); + Ok(()) + } + 10 => { + self.dup10(); + Ok(()) + } + 11 => { + self.dup11(); + Ok(()) + } + 12 => { + self.dup12(); + Ok(()) + } + 13 => { + self.dup13(); + Ok(()) + } + 14 => { + self.dup14(); + Ok(()) + } + 15 => { + self.dup15(); + Ok(()) + } + 16 => { + self.dup16(); + Ok(()) + } + _ => panic!("{}", "Stack overflow.".to_string()), + } + } + None => Err(format!("Failed to find SSA name {} on stack", name)), + } + } + + pub fn alloca(&mut self) { + // Stack args: [size] + todo!("Implement alloca"); + } + + pub fn mem_copy(&mut self) { + // Stack args: [dest, source, size] + } + + pub fn copy_object(&mut self) { + // Stack args: [dest, source] + // p_dest => p_dest + // p_src => p_src + // => len + // => 0x0 + + self.dup1(); + self.mload(); + self.push1([224].to_vec()); + self.shr(); + self.set_next_instruction_comment("Copy loop counter".to_string()); + // Increasing copy len by 4 to ensure that we also copy the length + // of the object (stored in u32) + self.push([0x04].to_vec()); + self.add(); + + self.push1([0x0].to_vec()); + + let lbl_condition = self.generate_label("copy_loop_condition".to_string()); + let lbl_done = self.generate_label("copy_done".to_string()); + let lbl_body = self.generate_label("copy_body".to_string()); + + self.create_label(lbl_condition.clone()); + self.dup2(); + self.dup2(); + self.lt(); + self.jump_if_to(&lbl_body); + self.jump_to(&lbl_done); + + self.create_label(lbl_body); + // Stack: + // p_dest => p_dest + 0x20 + // p_src => p_src + 0x20 + // len => len + // counter => counter + 0x20 + + self.dup3(); + self.push([0x20].to_vec()); + self.add(); + self.swap3(); + + self.mload(); + + self.dup5(); + self.push([0x20].to_vec()); + self.add(); + self.swap5(); + + self.mstore(); + + self.push([0x20].to_vec()); + self.add(); + self.jump_to(&lbl_condition); + + // Stack: + // p_dest + // p_src + // len + // counter + self.create_label(lbl_done); + self.pop(); + self.swap2(); + self.pop(); + self.pop(); + } + + pub fn alloca_static(&mut self, size: u64) { + self.push1([ALLOCATION_POINTER].to_vec()); + self.mload(); // Stack element is the pointer to be left on stack + self.dup1(); + self.push_u64(size); + self.add(); + self.push1([ALLOCATION_POINTER].to_vec()); + self.mstore(); + } + + pub fn allocate_object(&mut self, value: Vec) { + let chunks = (4 + value.len() + 31) / 32; + let padded_length = chunks * 32; + + self.alloca_static((padded_length).try_into().unwrap()); + + // Storing size + self.push_u32(value.len().try_into().unwrap()); + self.push1([224].to_vec()); + self.shl(); + self.dup2(); + self.mstore(); + + self.dup1(); // Adding rolling pointer + self.push1([4].to_vec()); + self.add(); + + for i in 0..chunks { + let start = i * 32; + let mut end = (i + 1) * 32; + if end > value.len() { + end = value.len(); + } + let mut byte_slice: Vec = value[start..end].into(); + while byte_slice.len() < 32 { + byte_slice.push(0); + } + + self.push(byte_slice); + self.dup2(); + self.mstore(); + + if i != chunks - 1 { + self.push1([32].to_vec()); + self.add(); + } + } + + self.pop(); // Removing rolling pointer + } + + pub fn call_internal( + &mut self, + _function: &EvmFunctionSignature, + _args: Vec, + ) -> &mut Self { + todo!() + } + + pub fn call(&mut self, function: &EvmFunctionSignature, args: Vec) -> &mut Self { + if let Some(generator) = function.inline_assembly_generator { + generator(self); + return self; + } + + let address = match function.external_address { + Some(a) => a, + None => { + info!("{:#?}", function); + panic!( + "TODO: Internal calls' not supported yet. Attempted to call {}", + function.name + ) + } + }; + // TODO: Deal with internal calls + // See https://medium.com/@rbkhmrcr/precompiles-solidity-e5d29bd428c4 + // Head-tail encoding https://medium.com/@hayeah/how-to-decipher-a-smart-contract-method-call-8ee980311603 + + self.push1([ALLOCATION_POINTER].to_vec()); + // Stack: + // arg N => arg N + // alloc_ptr => p + // => p_data + + self.mload(); // Stack element is the pointer + + self.dup1(); // p_data = p + 0x20 * len(args) + self.push_u32((0x20 * args.len()).try_into().unwrap()); + self.add(); + + for (i, arg) in args.iter().enumerate().rev() { + match arg { + EvmType::String => { + // By default we store in head: + // p_data - p -> p + 0x20 * i (p_head) + + // Stack: + // arg N => p + // p => p_data + // p_data => arg N + self.swap1(); + self.swap2(); + + // Stack: + // p => p + // p_data => p_data + // arg N => arg N + // => tail offset + self.dup3(); + self.dup3(); + self.sub(); + + // Stack: + // p => p + // p_data => p_data + // arg N => arg N + // tail offset => tail offset + // => p_head + self.dup4(); + self.push_u32((0x20 * i) as u32); + self.add(); + + // Stack: + // p => p + // p_data => p_data + // arg N => arg N + // tail offset + // p_head + self.mstore(); + + // Storing the tail: + // arg N -> *p_data + + // Stack: + // p => p + // p_data => p_data + // arg N => arg N (p_str) + // => p_data + self.dup2(); + + // Stack: + // p => p + // p_data => p_data + // arg N + // p_data + + self.set_next_instruction_comment("Loading string argument".to_string()); + + // Stack: + // p => p + // p_data => p_data + // arg N (p_str) => p_data (dest) + // p_data => p_str (src) + self.swap1(); + + // Stack: + // p => p + // p_data => p_data + // p_data (dest) => copy len + // p_str_data (src) + self.set_next_instruction_comment("Copying string to call data".to_string()); + self.copy_object(); + self.add(); + + // panic!("Strings not supported."); + } + _ => { + // By default we store in head: + // arg N - > p + 0x20 * i (p_head) + + // Stack: + // arg N => p + // p => p_data + // p_data => arg N + self.swap1(); + self.swap2(); + + // Stack: + // p => p + // p_data => p_data + // arg N => arg N + // => p_head + self.dup3(); + self.push_u32((0x20 * i) as u32); + self.add(); + + // Stack: + // p => p + // p_data => p_data + // arg N + self.mstore(); + continue; + } + } + } + + // Target format: gas address argsOffset argsSize retOffset retSize + + // Stack: + // p => p + // p_data => data_size + self.dup2(); + self.swap1(); + self.sub(); + + let gas = EvmTypeValue::Uint32(0x1337); // TODO: How to compute this or where to get it from + let address = EvmTypeValue::Uint32(address); + + // Stack: + // p => p + // data_size => data_size + // => 0x20 + + self.push([0x20].to_vec()); //return size, TODO: Compute the size of the return type + + // Stack: + // p => 0x20 + // data_size => p + // 0x20 => data_size + self.swap2(); + self.swap1(); + + // Stack: + // 0x20 => 0x20 + // p => p + // data_size => data_size + // => p + self.dup2(); + + // Stack: + // 0x20 => 0x20 + // p => p + // data_size => data_size + // p => p + // => address + // => gas + self.push(address.to_bytes_unpadded()); + self.push(gas.to_bytes_unpadded()); + + // TODO: How come self.external_call(); does not call the precompile? + self.external_staticcall(); + + self + } + + pub fn extract_blocks_from_bytecode( + bytecode: &Vec, + _opcode_specs: &HashMap, // TODO: remove + ) -> (Vec, Vec) { + let mut blocks: Vec = Vec::new(); + let mut block_counter = 0; + let mut current_block = + EvmBlock::new(None, BTreeSet::new(), &format!("block{}", block_counter)); + current_block.is_entry = true; + block_counter += 1; + + let offset = 0; + let mut i = offset; + while i < bytecode.len() { + let opcode = Opcode(bytecode[i]); + let is_terminator = opcode.is_terminator(); + let mut collect_args = opcode.bytecode_arguments(); + // TODO: Use write_instruction + let mut instr = EvmInstruction { + position: Some(i as u32), + opcode, + arguments: Vec::new(), + unresolved_argument_label: None, + + stack_size: 0, // TODO: Should be calculated using write_instruction + is_terminator, + comment: None, + source_position: None, + rust_position: None, + label: None, + }; + + i += 1; + if i + collect_args > bytecode.len() { + panic!("This is not good - we exceed the byte code"); + } + + while collect_args > 0 { + instr.arguments.push(bytecode[i]); + i += 1; + collect_args -= 1; + } + + if instr.opcode == Opcode::JUMPDEST { + blocks.push(current_block); + current_block = EvmBlock::new( + instr.position, + BTreeSet::new(), + &format!("block{}", block_counter), + ); + + block_counter += 1; + } + + current_block.instructions.push(instr); + + // A terminated block followed by an invalid opcode starts the data section. + // TODO: Find some spec to confirm this assumption + if is_terminator { + if Opcode(bytecode[i]) == Opcode::INVALID { + i += 1; + + // Encountered the auxilary data section + break; + } + } + } + + let mut data: Vec = Vec::new(); + while i < bytecode.len() { + data.push(bytecode[i]); + i += 1; + } + + blocks.push(current_block); + (blocks, data) + } + + pub fn write_instruction( + &mut self, + opcode: Opcode, + unresolved_argument_label: Option, + ) -> &mut Self { + let mut comment = None; + mem::swap(&mut comment, &mut self.comment); + + let mut source_position = None; + mem::swap(&mut source_position, &mut self.source_position); + + let mut rust_position = None; + mem::swap(&mut rust_position, &mut self.rust_position); + let mut label = None; + mem::swap(&mut label, &mut self.next_label); + + self.instructions.push(EvmInstruction { + position: None, + opcode: opcode.clone(), + arguments: [].to_vec(), + unresolved_argument_label, + + stack_size: self.scope.stack_counter, + is_terminator: false, + comment, + source_position, + rust_position, + label, + }); + self.update_stack(opcode); + + self + } + + pub fn write_instruction_with_args(&mut self, opcode: Opcode, arguments: Vec) -> &mut Self { + assert!(opcode.bytecode_arguments() == arguments.len()); + + let mut comment = None; + mem::swap(&mut comment, &mut self.comment); + + let mut source_position = None; + mem::swap(&mut source_position, &mut self.source_position); + + let mut rust_position = None; + mem::swap(&mut rust_position, &mut self.rust_position); + + let mut label = None; + mem::swap(&mut label, &mut self.next_label); + + self.instructions.push(EvmInstruction { + position: None, + opcode: opcode.clone(), + arguments, + + unresolved_argument_label: None, + + stack_size: self.scope.stack_counter, + is_terminator: false, + comment, + source_position, + rust_position, + label, + }); + + self.update_stack(opcode); + self + } + + pub fn stop(&mut self) -> &mut Self { + self.write_instruction(Opcode::STOP, None) + } + + pub fn add(&mut self) -> &mut Self { + self.write_instruction(Opcode::ADD, None) + } + + pub fn mul(&mut self) -> &mut Self { + self.write_instruction(Opcode::MUL, None) + } + + pub fn sub(&mut self) -> &mut Self { + self.write_instruction(Opcode::SUB, None) + } + + pub fn div(&mut self) -> &mut Self { + self.write_instruction(Opcode::DIV, None) + } + + pub fn sdiv(&mut self) -> &mut Self { + self.write_instruction(Opcode::SDIV, None) + } + + pub fn r#mod(&mut self) -> &mut Self { + self.write_instruction(Opcode::MOD, None) + } + + pub fn smod(&mut self) -> &mut Self { + self.write_instruction(Opcode::SMOD, None) + } + + pub fn addmod(&mut self) -> &mut Self { + self.write_instruction(Opcode::ADDMOD, None) + } + + pub fn mulmod(&mut self) -> &mut Self { + self.write_instruction(Opcode::MULMOD, None) + } + + pub fn exp(&mut self) -> &mut Self { + self.write_instruction(Opcode::EXP, None) + } + + pub fn signextend(&mut self) -> &mut Self { + self.write_instruction(Opcode::SIGNEXTEND, None) + } + + pub fn lt(&mut self) -> &mut Self { + self.write_instruction(Opcode::LT, None) + } + + pub fn gt(&mut self) -> &mut Self { + self.write_instruction(Opcode::GT, None) + } + + pub fn slt(&mut self) -> &mut Self { + self.write_instruction(Opcode::SLT, None) + } + + pub fn sgt(&mut self) -> &mut Self { + self.write_instruction(Opcode::SGT, None) + } + + pub fn eq(&mut self) -> &mut Self { + self.write_instruction(Opcode::EQ, None) + } + + pub fn iszero(&mut self) -> &mut Self { + self.write_instruction(Opcode::ISZERO, None) + } + + pub fn and(&mut self) -> &mut Self { + self.write_instruction(Opcode::AND, None) + } + + pub fn or(&mut self) -> &mut Self { + self.write_instruction(Opcode::OR, None) + } + + pub fn xor(&mut self) -> &mut Self { + self.write_instruction(Opcode::XOR, None) + } + + pub fn not(&mut self) -> &mut Self { + self.write_instruction(Opcode::NOT, None) + } + + pub fn byte(&mut self) -> &mut Self { + self.write_instruction(Opcode::BYTE, None) + } + + pub fn calldataload(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALLDATALOAD, None) + } + + pub fn calldatasize(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALLDATASIZE, None) + } + + pub fn calldatacopy(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALLDATACOPY, None) + } + + pub fn codesize(&mut self) -> &mut Self { + self.write_instruction(Opcode::CODESIZE, None) + } + + pub fn codecopy(&mut self) -> &mut Self { + self.write_instruction(Opcode::CODECOPY, None) + } + + pub fn shl(&mut self) -> &mut Self { + self.write_instruction(Opcode::SHL, None) + } + + pub fn shr(&mut self) -> &mut Self { + self.write_instruction(Opcode::SHR, None) + } + + pub fn sar(&mut self) -> &mut Self { + self.write_instruction(Opcode::SAR, None) + } + + pub fn pop(&mut self) -> &mut Self { + self.write_instruction(Opcode::POP, None) + } + + pub fn mload(&mut self) -> &mut Self { + self.write_instruction(Opcode::MLOAD, None) + } + + pub fn mstore(&mut self) -> &mut Self { + self.write_instruction(Opcode::MSTORE, None) + } + + pub fn mstore8(&mut self) -> &mut Self { + self.write_instruction(Opcode::MSTORE8, None) + } + + pub fn jump(&mut self) -> &mut Self { + self.write_instruction(Opcode::JUMP, None) + } + + pub fn jumpi(&mut self) -> &mut Self { + self.write_instruction(Opcode::JUMPI, None) + } + + pub fn jump_to(&mut self, label: &str) -> &mut Self { + self.write_instruction(Opcode::PUSH4, Some(label.to_string())); + self.write_instruction(Opcode::JUMP, None) + } + + pub fn push_label(&mut self, label: &str) -> &mut Self { + self.write_instruction(Opcode::PUSH4, Some(label.to_string())) + } + + pub fn jump_if_to(&mut self, label: &str) -> &mut Self { + self.write_instruction(Opcode::PUSH4, Some(label.to_string())); + self.write_instruction(Opcode::JUMPI, None) + } + + pub fn pc(&mut self) -> &mut Self { + self.write_instruction(Opcode::PC, None) + } + + pub fn msize(&mut self) -> &mut Self { + self.write_instruction(Opcode::MSIZE, None) + } + + pub fn jumpdest(&mut self) -> &mut Self { + self.write_instruction(Opcode::JUMPDEST, None) + } + + pub fn create_label(&mut self, label: String) -> &mut Self { + self.next_label = Some(label); + self.write_instruction(Opcode::JUMPDEST, None) + } + + /* + pub fn push0(&mut self) -> &mut Self { + self.write_instruction(Opcode::PUSH0, None) + } + */ + + pub fn push_u64(&mut self, arg: u64) -> &mut Self { + self.push(arg.to_be_bytes().to_vec()) + } + + pub fn push_u32(&mut self, arg: u32) -> &mut Self { + self.push(arg.to_be_bytes().to_vec()) + } + + pub fn push_u256(&mut self, arg: U256) -> &mut Self { + let mut bytes = [0u8; 32]; + arg.to_big_endian(&mut bytes); + self.push(Vec::from(bytes)) + } + + pub fn push(&mut self, arguments: Vec) -> &mut Self { + match arguments.len() { + // TODO: 0 => self.push0(arguments), + 1 => self.push1(arguments), + 2 => self.push2(arguments), + 3 => self.push3(arguments), + 4 => self.push4(arguments), + 5 => self.push5(arguments), + 6 => self.push6(arguments), + 7 => self.push7(arguments), + 8 => self.push8(arguments), + 9 => self.push9(arguments), + + 10 => self.push10(arguments), + 11 => self.push11(arguments), + 12 => self.push12(arguments), + 13 => self.push13(arguments), + 14 => self.push14(arguments), + 15 => self.push15(arguments), + 16 => self.push16(arguments), + 17 => self.push17(arguments), + 18 => self.push18(arguments), + 19 => self.push19(arguments), + + 20 => self.push20(arguments), + 21 => self.push21(arguments), + 22 => self.push22(arguments), + 23 => self.push23(arguments), + 24 => self.push24(arguments), + 25 => self.push25(arguments), + 26 => self.push26(arguments), + 27 => self.push27(arguments), + 28 => self.push28(arguments), + 29 => self.push29(arguments), + + 30 => self.push30(arguments), + 31 => self.push31(arguments), + 32 => self.push32(arguments), + _ => panic!("Push size not supported."), + } + } + + pub fn push1(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 1); + self.write_instruction_with_args(Opcode::PUSH1, arguments) + } + + pub fn push2(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 2); + self.write_instruction_with_args(Opcode::PUSH2, arguments) + } + + pub fn push3(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 3); + self.write_instruction_with_args(Opcode::PUSH3, arguments) + } + + pub fn push4(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 4); + self.write_instruction_with_args(Opcode::PUSH4, arguments) + } + + pub fn push5(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 5); + self.write_instruction_with_args(Opcode::PUSH5, arguments) + } + + pub fn push6(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 6); + self.write_instruction_with_args(Opcode::PUSH6, arguments) + } + + pub fn push7(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 7); + self.write_instruction_with_args(Opcode::PUSH7, arguments) + } + + pub fn push8(&mut self, arguments: Vec) -> &mut Self { + assert!(arguments.len() == 8); + self.write_instruction_with_args(Opcode::PUSH8, arguments) + } + + pub fn push9(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH9, arguments) + } + + pub fn push10(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH10, arguments) + } + + pub fn push11(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH11, arguments) + } + + pub fn push12(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH12, arguments) + } + + pub fn push13(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH13, arguments) + } + + pub fn push14(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH14, arguments) + } + + pub fn push15(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH15, arguments) + } + + pub fn push16(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH16, arguments) + } + + pub fn push17(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH17, arguments) + } + + pub fn push18(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH18, arguments) + } + + pub fn push19(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH19, arguments) + } + + pub fn push20(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH20, arguments) + } + + pub fn push21(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH21, arguments) + } + + pub fn push22(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH22, arguments) + } + + pub fn push23(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH23, arguments) + } + + pub fn push24(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH24, arguments) + } + + pub fn push25(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH25, arguments) + } + + pub fn push26(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH26, arguments) + } + + pub fn push27(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH27, arguments) + } + + pub fn push28(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH28, arguments) + } + + pub fn push29(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH29, arguments) + } + + pub fn push30(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH30, arguments) + } + + pub fn push31(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH31, arguments) + } + + pub fn push32(&mut self, arguments: Vec) -> &mut Self { + self.write_instruction_with_args(Opcode::PUSH32, arguments) + } + + pub fn dup1(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP1, None) + } + + pub fn dup2(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP2, None) + } + + pub fn dup3(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP3, None) + } + + pub fn dup4(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP4, None) + } + + pub fn dup5(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP5, None) + } + + pub fn dup6(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP6, None) + } + + pub fn dup7(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP7, None) + } + + pub fn dup8(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP8, None) + } + + pub fn dup9(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP9, None) + } + + pub fn dup10(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP10, None) + } + + pub fn dup11(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP11, None) + } + + pub fn dup12(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP12, None) + } + + pub fn dup13(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP13, None) + } + + pub fn dup14(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP14, None) + } + + pub fn dup15(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP15, None) + } + + pub fn dup16(&mut self) -> &mut Self { + self.write_instruction(Opcode::DUP16, None) + } + + pub fn swap(&mut self, depth: i32) -> &mut Self { + match depth { + 0 => self, + 1 => self.swap1(), + 2 => self.swap2(), + 3 => self.swap3(), + 4 => self.swap4(), + 5 => self.swap5(), + 6 => self.swap6(), + 7 => self.swap7(), + 8 => self.swap8(), + 9 => self.swap9(), + 10 => self.swap10(), + 11 => self.swap11(), + 12 => self.swap12(), + 13 => self.swap13(), + 14 => self.swap14(), + 15 => self.swap15(), + _ => panic!("Swap depth must be at least 0 and lower than 16"), + } + } + + pub fn swap1(&mut self) -> &mut Self { + self.scope.swap(1); + self.write_instruction(Opcode::SWAP1, None) + } + + pub fn swap2(&mut self) -> &mut Self { + self.scope.swap(2); + self.write_instruction(Opcode::SWAP2, None) + } + + pub fn swap3(&mut self) -> &mut Self { + self.scope.swap(3); + self.write_instruction(Opcode::SWAP3, None) + } + + pub fn swap4(&mut self) -> &mut Self { + self.scope.swap(4); + self.write_instruction(Opcode::SWAP4, None) + } + + pub fn swap5(&mut self) -> &mut Self { + self.scope.swap(5); + self.write_instruction(Opcode::SWAP5, None) + } + + pub fn swap6(&mut self) -> &mut Self { + self.scope.swap(6); + self.write_instruction(Opcode::SWAP6, None) + } + + pub fn swap7(&mut self) -> &mut Self { + self.scope.swap(7); + self.write_instruction(Opcode::SWAP7, None) + } + + pub fn swap8(&mut self) -> &mut Self { + self.scope.swap(8); + self.write_instruction(Opcode::SWAP8, None) + } + + pub fn swap9(&mut self) -> &mut Self { + self.scope.swap(9); + self.write_instruction(Opcode::SWAP9, None) + } + + pub fn swap10(&mut self) -> &mut Self { + self.scope.swap(10); + self.write_instruction(Opcode::SWAP10, None) + } + + pub fn swap11(&mut self) -> &mut Self { + self.scope.swap(11); + self.write_instruction(Opcode::SWAP11, None) + } + + pub fn swap12(&mut self) -> &mut Self { + self.scope.swap(12); + self.write_instruction(Opcode::SWAP12, None) + } + + pub fn swap13(&mut self) -> &mut Self { + self.scope.swap(13); + self.write_instruction(Opcode::SWAP13, None) + } + + pub fn swap14(&mut self) -> &mut Self { + self.scope.swap(14); + self.write_instruction(Opcode::SWAP14, None) + } + + pub fn swap15(&mut self) -> &mut Self { + self.scope.swap(15); + self.write_instruction(Opcode::SWAP15, None) + } + + pub fn swap16(&mut self) -> &mut Self { + self.scope.swap(16); + self.write_instruction(Opcode::SWAP16, None) + } + + pub fn r#return(&mut self) -> &mut Self { + self.write_instruction(Opcode::RETURN, None) + } + + pub fn revert(&mut self) -> &mut Self { + self.write_instruction(Opcode::REVERT, None) + } + + pub fn invalid(&mut self) -> &mut Self { + self.write_instruction(Opcode::INVALID, None) + } + + pub fn eofmagic(&mut self) -> &mut Self { + self.write_instruction(Opcode::EOFMAGIC, None) + } + + // Externals + pub fn external_sha3(&mut self) -> &mut Self { + self.write_instruction(Opcode::SHA3, None) + } + pub fn external_address(&mut self) -> &mut Self { + self.write_instruction(Opcode::ADDRESS, None) + } + pub fn external_balance(&mut self) -> &mut Self { + self.write_instruction(Opcode::BALANCE, None) + } + pub fn external_selfbalance(&mut self) -> &mut Self { + self.write_instruction(Opcode::SELFBALANCE, None) + } + pub fn external_basefee(&mut self) -> &mut Self { + self.write_instruction(Opcode::BASEFEE, None) + } + pub fn external_origin(&mut self) -> &mut Self { + self.write_instruction(Opcode::ORIGIN, None) + } + pub fn external_caller(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALLER, None) + } + pub fn external_callvalue(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALLVALUE, None) + } + pub fn external_gasprice(&mut self) -> &mut Self { + self.write_instruction(Opcode::GASPRICE, None) + } + pub fn external_extcodesize(&mut self) -> &mut Self { + self.write_instruction(Opcode::EXTCODESIZE, None) + } + pub fn external_extcodecopy(&mut self) -> &mut Self { + self.write_instruction(Opcode::EXTCODECOPY, None) + } + pub fn external_extcodehash(&mut self) -> &mut Self { + self.write_instruction(Opcode::EXTCODEHASH, None) + } + pub fn external_returndatasize(&mut self) -> &mut Self { + self.write_instruction(Opcode::RETURNDATASIZE, None) + } + pub fn external_returndatacopy(&mut self) -> &mut Self { + self.write_instruction(Opcode::RETURNDATACOPY, None) + } + pub fn external_blockhash(&mut self) -> &mut Self { + self.write_instruction(Opcode::BLOCKHASH, None) + } + pub fn external_coinbase(&mut self) -> &mut Self { + self.write_instruction(Opcode::COINBASE, None) + } + pub fn external_timestamp(&mut self) -> &mut Self { + self.write_instruction(Opcode::TIMESTAMP, None) + } + pub fn external_number(&mut self) -> &mut Self { + self.write_instruction(Opcode::NUMBER, None) + } + pub fn external_difficulty(&mut self) -> &mut Self { + self.write_instruction(Opcode::DIFFICULTY, None) + } + pub fn external_gaslimit(&mut self) -> &mut Self { + self.write_instruction(Opcode::GASLIMIT, None) + } + pub fn external_sload(&mut self) -> &mut Self { + self.write_instruction(Opcode::SLOAD, None) + } + pub fn external_sstore(&mut self) -> &mut Self { + self.write_instruction(Opcode::SSTORE, None) + } + pub fn external_gas(&mut self) -> &mut Self { + self.write_instruction(Opcode::GAS, None) + } + pub fn external_log0(&mut self) -> &mut Self { + self.write_instruction(Opcode::LOG0, None) + } + pub fn external_log1(&mut self) -> &mut Self { + self.write_instruction(Opcode::LOG1, None) + } + pub fn external_log2(&mut self) -> &mut Self { + self.write_instruction(Opcode::LOG2, None) + } + pub fn external_log3(&mut self) -> &mut Self { + self.write_instruction(Opcode::LOG3, None) + } + pub fn external_log4(&mut self) -> &mut Self { + self.write_instruction(Opcode::LOG4, None) + } + pub fn external_create(&mut self) -> &mut Self { + self.write_instruction(Opcode::CREATE, None) + } + pub fn external_create2(&mut self) -> &mut Self { + self.write_instruction(Opcode::CREATE2, None) + } + pub fn external_call(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALL, None) + } + pub fn external_callcode(&mut self) -> &mut Self { + self.write_instruction(Opcode::CALLCODE, None) + } + pub fn external_delegatecall(&mut self) -> &mut Self { + self.write_instruction(Opcode::DELEGATECALL, None) + } + pub fn external_staticcall(&mut self) -> &mut Self { + self.write_instruction(Opcode::STATICCALL, None) + } + pub fn external_suicide(&mut self) -> &mut Self { + self.write_instruction(Opcode::SUICIDE, None) + } + pub fn external_chainid(&mut self) -> &mut Self { + self.write_instruction(Opcode::CHAINID, None) + } +} + +/* +// TODO: Everything block should be defined in block, not the builder + +*/ diff --git a/products/bluebell/evm_assembly/src/bytecode_ir.rs b/products/bluebell/evm_assembly/src/bytecode_ir.rs new file mode 100644 index 000000000..8370d0a20 --- /dev/null +++ b/products/bluebell/evm_assembly/src/bytecode_ir.rs @@ -0,0 +1,130 @@ +use std::collections::VecDeque; + +use crate::{block::EvmBlock, function::EvmFunction}; + +#[derive(Debug, Clone)] +pub struct EvmBytecodeIr { + pub functions: VecDeque, + pub data: Vec<(String, Vec)>, + pub unused_blocks: Vec, +} +impl EvmBytecodeIr { + pub fn new() -> EvmBytecodeIr { + return EvmBytecodeIr { + functions: VecDeque::new(), + data: Vec::new(), + unused_blocks: Vec::new(), + }; + } + + pub fn to_string(&self) -> String { + let mut script = "Unused blocks:\n\n".to_string(); + + let unused_blocks = self + .unused_blocks + .iter() + .map(|block| { + let code = block + .instructions + .iter() + .map(|instr| { + let position = match instr.position { + Some(v) => v, + None => 0, + }; + let instruction_value = if instr.arguments.len() > 0 { + let argument: String = instr + .arguments + .iter() + .map(|byte| format!("{:02x}", byte).to_string()) + .collect(); + + format!("{} 0x{}", instr.opcode.to_string(), argument).to_string() + } else { + instr.opcode.to_string() + }; + + format!( + "[0x{:02x}: 0x{:02x}] {:>() + .join("\n"); + let position = match block.position { + Some(v) => v, + None => 0, + }; + format!( + "{}: ;; Starts at 0x{:02x} u8[{}] \n{}", + block.name, position, block.consumes, code + ) + }) + .collect::>() + .join("\n\n"); + script.push_str(&unused_blocks); + + for function in &self.functions { + let code_blocks = function + .blocks + .iter() + .map(|block| { + let code = block + .instructions + .iter() + .map(|instr| { + let position = match instr.position { + Some(v) => v, + None => 0, + }; + + let instruction_value = if instr.arguments.len() > 0 { + let argument: String = instr + .arguments + .iter() + .map(|byte| format!("{:02x}", byte).to_string()) + .collect(); + + format!("{} 0x{}", instr.opcode.to_string(), argument).to_string() + } else { + instr.opcode.to_string() + }; + + format!( + "[0x{:02x}: 0x{:02x}] {:>() + .join("\n"); + let position = match block.position { + Some(v) => v, + None => 0, + }; + format!( + "{}: ;; Starts at 0x{:02x} u8[{}]\n{}", + block.name, position, block.consumes, code + ) + }) + .collect::>() + .join("\n\n"); + + script.push_str("\n\nFunction:\n"); + script.push_str(&code_blocks); + } + + script + } +} diff --git a/products/bluebell/evm_assembly/src/compiler_context.rs b/products/bluebell/evm_assembly/src/compiler_context.rs new file mode 100644 index 000000000..76e4cf65a --- /dev/null +++ b/products/bluebell/evm_assembly/src/compiler_context.rs @@ -0,0 +1,217 @@ +use std::{ + collections::{BTreeMap, HashMap}, + str::FromStr, +}; + +use evm::executor::stack::PrecompileFn; +use primitive_types::H160; + +use crate::{ + block::EvmBlock, + evm_bytecode_builder::EvmByteCodeBuilder, + function_signature::{AssemblyBuilderFn, EvmFunctionSignature}, + types::EvmType, +}; + +type InlineGenericsFn = + fn(&mut EvmCompilerContext, &mut EvmBlock, Vec) -> Result, String>; +type SpecialVariableFn = + fn(&mut EvmCompilerContext, &mut EvmBlock) -> Result, String>; + +pub struct EvmCompilerContext { + pub raw_function_declarations: HashMap, String)>, + + pub type_declarations: HashMap, + pub default_constructors: HashMap, + pub function_declarations: HashMap, + pub inline_generics: HashMap, + pub special_variables: HashMap, + + /// Scilla types -> EVM types + precompiles: BTreeMap, + precompile_addresses: HashMap, + contract_offset: u32, +} + +pub struct EvmPrecompileBuilder<'a> { + context: &'a mut EvmCompilerContext, + pub signature: EvmFunctionSignature, +} + +impl<'a> EvmPrecompileBuilder<'a> { + pub fn attach_runtime(&mut self, get_precompile: F) -> Result<(), String> + where + F: FnOnce() -> PrecompileFn, + { + let precompiled = get_precompile(); + let name = self.signature.name.clone(); + + if self.context.precompile_addresses.contains_key(&name) { + return Err(format!("Runtime function '{}' already exists.", name).to_string()); + } + + let index = self.context.contract_offset; + self.context.contract_offset += 1; + + let address = { + let value = index; + // Convert `value: u32` to a hexadecimal string, pad it with leading zeros to 40 characters, and then convert it to `H160` + let padded_string = format!("{:0>40}", format!("{:x}", value)); // Pad with leading zeros to 40 characters + H160::from_str(&padded_string).unwrap() + }; + + self.signature.external_address = Some(index); + self.context + .function_declarations + .insert(name.clone(), self.signature.clone()); + + self.context.precompiles.insert(address, precompiled); + + Ok(()) + } + + pub fn attach_assembly(&mut self, builder: AssemblyBuilderFn) -> Result<(), String> { + let name = self.signature.name.clone(); + self.signature.inline_assembly_generator = Some(builder); + self.context + .function_declarations + .insert(name.clone(), self.signature.clone()); + + Ok(()) + } +} + +impl EvmCompilerContext { + pub fn new() -> Self { + Self { + raw_function_declarations: HashMap::new(), + + default_constructors: HashMap::new(), + type_declarations: HashMap::new(), + function_declarations: HashMap::new(), + inline_generics: HashMap::new(), + special_variables: HashMap::new(), + precompile_addresses: HashMap::new(), + precompiles: BTreeMap::new(), + contract_offset: 5, + } + } + + pub fn create_builder<'ctx>(&'ctx mut self) -> EvmByteCodeBuilder<'ctx> { + EvmByteCodeBuilder::new(self, true) + } + + pub fn create_builder_no_abi_support<'ctx>(&'ctx mut self) -> EvmByteCodeBuilder<'ctx> { + EvmByteCodeBuilder::new(self, false) + } + + pub fn declare_integer(&mut self, name: &str, bits: usize) { + assert!(bits <= 256); + self.type_declarations + .insert(name.to_string(), EvmType::Int(bits)); + } + + pub fn declare_unsigned_integer(&mut self, name: &str, bits: usize) { + assert!(bits <= 256); + self.type_declarations + .insert(name.to_string(), EvmType::Uint(bits)); + } + + pub fn declare_address(&mut self, name: &str) { + self.type_declarations + .insert(name.to_string(), EvmType::String); + } + + pub fn declare_dynamic_string(&mut self, name: &str) { + self.type_declarations + .insert(name.to_string(), EvmType::String); + } + + pub fn declare_opaque_type(&mut self, _name: &str) { + unimplemented!() + // self.type_declarations + // .insert(name.to_string(), EvmType::Opaque); + } + + pub fn declare_special_variable( + &mut self, + name: &str, + _typename: &str, + builder: SpecialVariableFn, + ) -> Result<(), String> { + if self.special_variables.contains_key(name) { + return Err(format!("Special variable {} already exists", name).to_string()); + } + self.special_variables.insert(name.to_string(), builder); + Ok(()) + } + + pub fn declare_inline_generics( + &mut self, + name: &str, + builder: InlineGenericsFn, + ) -> Result<(), String> { + if self.inline_generics.contains_key(name) { + return Err(format!("Geneic {} already exists", name).to_string()); + } + self.inline_generics.insert(name.to_string(), builder); + Ok(()) + } + + pub fn declare_default_constructor(&mut self, name: &str, constructor: AssemblyBuilderFn) { + self.default_constructors + .insert(name.to_string(), constructor); + } + + pub fn declare_function( + &mut self, + name: &str, + arg_types: Vec<&str>, + return_type: &str, + ) -> EvmPrecompileBuilder { + // TODO: check if the function already exists + + self.raw_function_declarations.insert( + name.to_string(), + ( + arg_types.iter().map(|x| x.to_string()).collect(), + return_type.to_string(), + ), + ); + + let return_type = self + .type_declarations + .get(return_type) + .expect("Return type not found."); + + // Resolve argument types + let arg_types: Vec<_> = arg_types + .iter() + .map(|&type_name| { + self.type_declarations + .get(type_name) + .expect("Arg type not found.") + .clone() + }) + .collect(); + + let function_signature = + EvmFunctionSignature::new(name.to_string(), arg_types, return_type); + + self.function_declarations + .insert(name.to_string(), function_signature.clone()); + + EvmPrecompileBuilder { + context: self, + signature: function_signature, + } + } + + pub fn get_function(&self, name: &str) -> Option<&EvmFunctionSignature> { + self.function_declarations.get(name).clone() + } + + pub fn get_precompiles(&self) -> BTreeMap { + self.precompiles.clone() + } +} diff --git a/products/bluebell/evm_assembly/src/evm_asm_tokeniser.deperecated.rs b/products/bluebell/evm_assembly/src/evm_asm_tokeniser.deperecated.rs new file mode 100644 index 000000000..a70bde95c --- /dev/null +++ b/products/bluebell/evm_assembly/src/evm_asm_tokeniser.deperecated.rs @@ -0,0 +1,176 @@ +use evm::Opcode; + +enum Token { + Opcode(Opcode), + Number(u64), + HexNumber(Vec), + Identifier(String), +} + +pub fn tokenise(input: &str) -> Vec { + let mut tokens = Vec::new(); + + for word in input.split_whitespace() { + let token = match word { + "stop" => Token::Opcode(Opcode::STOP), + "add" => Token::Opcode(Opcode::ADD), + "mul" => Token::Opcode(Opcode::MUL), + "sub" => Token::Opcode(Opcode::SUB), + "div" => Token::Opcode(Opcode::DIV), + "sdiv" => Token::Opcode(Opcode::SDIV), + "mod" => Token::Opcode(Opcode::MOD), + "smod" => Token::Opcode(Opcode::SMOD), + "addmod" => Token::Opcode(Opcode::ADDMOD), + "mulmod" => Token::Opcode(Opcode::MULMOD), + "exp" => Token::Opcode(Opcode::EXP), + "signextend" => Token::Opcode(Opcode::SIGNEXTEND), + "lt" => Token::Opcode(Opcode::LT), + "gt" => Token::Opcode(Opcode::GT), + "slt" => Token::Opcode(Opcode::SLT), + "sgt" => Token::Opcode(Opcode::SGT), + "eq" => Token::Opcode(Opcode::EQ), + "iszero" => Token::Opcode(Opcode::ISZERO), + "and" => Token::Opcode(Opcode::AND), + "or" => Token::Opcode(Opcode::OR), + "xor" => Token::Opcode(Opcode::XOR), + "not" => Token::Opcode(Opcode::NOT), + "byte" => Token::Opcode(Opcode::BYTE), + "calldataload" => Token::Opcode(Opcode::CALLDATALOAD), + "calldatasize" => Token::Opcode(Opcode::CALLDATASIZE), + "calldatacopy" => Token::Opcode(Opcode::CALLDATACOPY), + "codesize" => Token::Opcode(Opcode::CODESIZE), + "codecopy" => Token::Opcode(Opcode::CODECOPY), + "shl" => Token::Opcode(Opcode::SHL), + "shr" => Token::Opcode(Opcode::SHR), + "sar" => Token::Opcode(Opcode::SAR), + "pop" => Token::Opcode(Opcode::POP), + "mload" => Token::Opcode(Opcode::MLOAD), + "mstore" => Token::Opcode(Opcode::MSTORE), + "mstore8" => Token::Opcode(Opcode::MSTORE8), + "jump" => Token::Opcode(Opcode::JUMP), + "jumpi" => Token::Opcode(Opcode::JUMPI), + "pc" => Token::Opcode(Opcode::PC), + "msize" => Token::Opcode(Opcode::MSIZE), + "jumpdest" => Token::Opcode(Opcode::JUMPDEST), + "push0" => Token::Opcode(Opcode::PUSH0), + "push1" => Token::Opcode(Opcode::PUSH1), + "push2" => Token::Opcode(Opcode::PUSH2), + "push3" => Token::Opcode(Opcode::PUSH3), + "push4" => Token::Opcode(Opcode::PUSH4), + "push5" => Token::Opcode(Opcode::PUSH5), + "push6" => Token::Opcode(Opcode::PUSH6), + "push7" => Token::Opcode(Opcode::PUSH7), + "push8" => Token::Opcode(Opcode::PUSH8), + "push9" => Token::Opcode(Opcode::PUSH9), + "push10" => Token::Opcode(Opcode::PUSH10), + "push11" => Token::Opcode(Opcode::PUSH11), + "push12" => Token::Opcode(Opcode::PUSH12), + "push13" => Token::Opcode(Opcode::PUSH13), + "push14" => Token::Opcode(Opcode::PUSH14), + "push15" => Token::Opcode(Opcode::PUSH15), + "push16" => Token::Opcode(Opcode::PUSH16), + "push17" => Token::Opcode(Opcode::PUSH17), + "push18" => Token::Opcode(Opcode::PUSH18), + "push19" => Token::Opcode(Opcode::PUSH19), + "push20" => Token::Opcode(Opcode::PUSH20), + "push21" => Token::Opcode(Opcode::PUSH21), + "push22" => Token::Opcode(Opcode::PUSH22), + "push23" => Token::Opcode(Opcode::PUSH23), + "push24" => Token::Opcode(Opcode::PUSH24), + "push25" => Token::Opcode(Opcode::PUSH25), + "push26" => Token::Opcode(Opcode::PUSH26), + "push27" => Token::Opcode(Opcode::PUSH27), + "push28" => Token::Opcode(Opcode::PUSH28), + "push29" => Token::Opcode(Opcode::PUSH29), + "push30" => Token::Opcode(Opcode::PUSH30), + "push31" => Token::Opcode(Opcode::PUSH31), + "push32" => Token::Opcode(Opcode::PUSH32), + "dup1" => Token::Opcode(Opcode::DUP1), + "dup2" => Token::Opcode(Opcode::DUP2), + "dup3" => Token::Opcode(Opcode::DUP3), + "dup4" => Token::Opcode(Opcode::DUP4), + "dup5" => Token::Opcode(Opcode::DUP5), + "dup6" => Token::Opcode(Opcode::DUP6), + "dup7" => Token::Opcode(Opcode::DUP7), + "dup8" => Token::Opcode(Opcode::DUP8), + "dup9" => Token::Opcode(Opcode::DUP9), + "dup10" => Token::Opcode(Opcode::DUP10), + "dup11" => Token::Opcode(Opcode::DUP11), + "dup12" => Token::Opcode(Opcode::DUP12), + "dup13" => Token::Opcode(Opcode::DUP13), + "dup14" => Token::Opcode(Opcode::DUP14), + "dup15" => Token::Opcode(Opcode::DUP15), + "dup16" => Token::Opcode(Opcode::DUP16), + "swap1" => Token::Opcode(Opcode::SWAP1), + "swap2" => Token::Opcode(Opcode::SWAP2), + "swap3" => Token::Opcode(Opcode::SWAP3), + "swap4" => Token::Opcode(Opcode::SWAP4), + "swap5" => Token::Opcode(Opcode::SWAP5), + "swap6" => Token::Opcode(Opcode::SWAP6), + "swap7" => Token::Opcode(Opcode::SWAP7), + "swap8" => Token::Opcode(Opcode::SWAP8), + "swap9" => Token::Opcode(Opcode::SWAP9), + "swap10" => Token::Opcode(Opcode::SWAP10), + "swap11" => Token::Opcode(Opcode::SWAP11), + "swap12" => Token::Opcode(Opcode::SWAP12), + "swap13" => Token::Opcode(Opcode::SWAP13), + "swap14" => Token::Opcode(Opcode::SWAP14), + "swap15" => Token::Opcode(Opcode::SWAP15), + "swap16" => Token::Opcode(Opcode::SWAP16), + "#return" => Token::Opcode(Opcode::RETURN), + "revert" => Token::Opcode(Opcode::REVERT), + "invalid" => Token::Opcode(Opcode::INVALID), + "eofmagic" => Token::Opcode(Opcode::EOFMAGIC), + + "sha3" => Token::Opcode(Opcode::SHA3), + "address" => Token::Opcode(Opcode::ADDRESS), + "balance" => Token::Opcode(Opcode::BALANCE), + "selfbalance" => Token::Opcode(Opcode::SELFBALANCE), + "basefee" => Token::Opcode(Opcode::BASEFEE), + "origin" => Token::Opcode(Opcode::ORIGIN), + "caller" => Token::Opcode(Opcode::CALLER), + "callvalue" => Token::Opcode(Opcode::CALLVALUE), + "gasprice" => Token::Opcode(Opcode::GASPRICE), + "extcodesize" => Token::Opcode(Opcode::EXTCODESIZE), + "extcodecopy" => Token::Opcode(Opcode::EXTCODECOPY), + "extcodehash" => Token::Opcode(Opcode::EXTCODEHASH), + "returndatasize" => Token::Opcode(Opcode::RETURNDATASIZE), + "returndatacopy" => Token::Opcode(Opcode::RETURNDATACOPY), + "blockhash" => Token::Opcode(Opcode::BLOCKHASH), + "coinbase" => Token::Opcode(Opcode::COINBASE), + "timestamp" => Token::Opcode(Opcode::TIMESTAMP), + "number" => Token::Opcode(Opcode::NUMBER), + "difficulty" => Token::Opcode(Opcode::DIFFICULTY), + "gaslimit" => Token::Opcode(Opcode::GASLIMIT), + "sload" => Token::Opcode(Opcode::SLOAD), + "sstore" => Token::Opcode(Opcode::SSTORE), + "gas" => Token::Opcode(Opcode::GAS), + "log0" => Token::Opcode(Opcode::LOG0), + "log1" => Token::Opcode(Opcode::LOG1), + "log2" => Token::Opcode(Opcode::LOG2), + "log3" => Token::Opcode(Opcode::LOG3), + "log4" => Token::Opcode(Opcode::LOG4), + "create" => Token::Opcode(Opcode::CREATE), + "create2" => Token::Opcode(Opcode::CREATE2), + "call" => Token::Opcode(Opcode::CALL), + "callcode" => Token::Opcode(Opcode::CALLCODE), + "delegatecall" => Token::Opcode(Opcode::DELEGATECALL), + "staticcall" => Token::Opcode(Opcode::STATICCALL), + "suicide" => Token::Opcode(Opcode::SUICIDE), + "chainid" => Token::Opcode(Opcode::CHAINID), + + _ => { + if let Ok(number) = word.parse::() { + Token::Number(number) + } else if word.starts_with("0x") { + Token::HexNumber(hex::decode(&word[2..]).unwrap()) + } else { + Token::Identifier(word.to_string()) + } + } + }; + tokens.push(token); + } + + tokens +} diff --git a/products/bluebell/evm_assembly/src/evm_bytecode_builder.rs b/products/bluebell/evm_assembly/src/evm_bytecode_builder.rs new file mode 100644 index 000000000..f35339236 --- /dev/null +++ b/products/bluebell/evm_assembly/src/evm_bytecode_builder.rs @@ -0,0 +1,590 @@ +use std::{ + collections::{BTreeSet, HashMap, HashSet}, + mem, +}; + +use evm::Opcode; + +use crate::{ + block::EvmBlock, + bytecode_ir::EvmBytecodeIr, + compiler_context::EvmCompilerContext, + evm_decompiler::EvmAssemblyGenerator, + executable::EvmExecutable, + function::EvmFunction, + opcode_spec::{create_opcode_spec, OpcodeSpec, OpcodeSpecification}, + types::EvmType, +}; + +pub struct FunctionBuilder<'a, 'ctx> { + pub builder: &'a mut EvmByteCodeBuilder<'ctx>, + function: EvmFunction, +} + +impl<'a, 'ctx> FunctionBuilder<'a, 'ctx> { + pub fn build(mut self, builder: F) + where + F: Fn(&mut EvmByteCodeBuilder<'ctx>) -> Vec, + { + let signature = &self.function.signature.clone().unwrap(); + + self.builder + .set_current_function_name(signature.name.clone()); + self.function.blocks = builder(&mut self.builder); + self.builder.clear_current_function_name(); + + // if first_block.consumes + + match self.function.compute_stack_difference() { + Err(e) => panic!("{}", e), + _ => (), + } + + /* + TODO: + if self.function.consumes != signature.arguments.len().try_into().unwrap() { + panic!("{}", format!("Function consumes {} but expects {}",self.function.consumes,signature.arguments.len() )) + } + */ + + if self.function.produces > 1 { + panic!( + "{}", + format!( + "Function produces {} but at the moment we only support 1 return argument", + self.function.produces + ) + ) + } + + self.builder.ir.functions.push_back(self.function); + } +} + +/* +impl<'a, 'ctx> FunctionBuilder<'a, 'ctx>> { + +} +*/ + +pub struct EvmByteCodeBuilder<'ctx> { + pub context: &'ctx mut EvmCompilerContext, + pub ir: EvmBytecodeIr, + + pub bytecode: Vec, + pub opcode_specs: HashMap, // TODO: Should be deleted + pub auxiliary_data: Vec, + pub was_finalized: bool, + pub create_abi_boilerplate: bool, + pub label_positions: HashMap, + + pub current_function_name: Option, + pub used_block_names: HashSet, +} + +impl<'ctx> EvmByteCodeBuilder<'ctx> { + pub fn new(context: &'ctx mut EvmCompilerContext, create_abi_boilerplate: bool) -> Self { + let mut ret = Self { + context, + ir: EvmBytecodeIr::new(), + bytecode: Vec::new(), + opcode_specs: create_opcode_spec(), + auxiliary_data: Vec::new(), + was_finalized: false, + create_abi_boilerplate, + label_positions: HashMap::new(), + current_function_name: None, + used_block_names: HashSet::new(), + }; + + // Reserving the start of the bytecode for the "entry" function + ret.define_function("__main__", [].to_vec(), "Uint256") + .build(|code_builder| { + // Placeholder block for the main function + [code_builder.new_evm_block("main_entry")].to_vec() + // EvmBlock::new(None, BTreeSet::new(), &code_builder.add_scope_to_label("main_entry")) + }); + + ret + } + + pub fn new_evm_block(&mut self, name: &str) -> EvmBlock { + EvmBlock::new( + None, + BTreeSet::new(), + &self.generate_unique_block_name(name), + ) + } + + pub fn new_evm_block_with_args(&mut self, name: &str, args: BTreeSet) -> EvmBlock { + EvmBlock::new(None, args, &self.generate_unique_block_name(name)) + } + + pub fn set_current_function_name(&mut self, name: String) { + self.current_function_name = Some(name); + } + + pub fn clear_current_function_name(&mut self) { + self.current_function_name = None; + } + + pub fn generate_unique_block_name(&mut self, name: &str) -> String { + let base = self.add_scope_to_label(name); + let mut candidate = base.clone(); + let mut i = 1; + while self.used_block_names.contains(&candidate) { + candidate = format!("{}.{}", base, i).to_string(); + i += 1; + } + self.used_block_names.insert(candidate.clone()); + + candidate + } + + pub fn add_scope_to_label(&mut self, name: &str) -> String { + let candidate = if let Some(current_function_name) = &self.current_function_name { + format!("{}::{}", current_function_name, name) + } else { + name.to_string() + }; + + candidate + } + + pub fn define_function<'a>( + &'a mut self, + name: &str, + arg_types: Vec<&str>, + return_type: &str, + ) -> FunctionBuilder<'a, 'ctx> { + let signature = { + let prototype = self.context.declare_function(name, arg_types, return_type); + prototype.signature + }; + + FunctionBuilder { + builder: self, + function: EvmFunction::from_signature(signature), + } + } + + pub fn from_bytes(context: &'ctx mut EvmCompilerContext, bytes: Vec) -> Self { + let opcode_specs = create_opcode_spec(); + let (blocks, auxiliary_data) = + EvmBlock::extract_blocks_from_bytecode(&bytes, &opcode_specs); + + let (functions, unused_blocks) = EvmFunction::extract_functions(&blocks); + let ir = EvmBytecodeIr { + functions: functions.into(), + data: Vec::new(), + unused_blocks, + }; + Self { + context, + ir, + opcode_specs, + auxiliary_data, + bytecode: bytes, + + was_finalized: false, + create_abi_boilerplate: false, + label_positions: HashMap::new(), + current_function_name: None, + used_block_names: HashSet::new(), + } + } + + pub fn from_asm(_script: &str) -> Self { + unimplemented!(); + } + + pub fn push_u8(&mut self, opcode: u8) -> &mut Self { + self.bytecode.push(opcode); + self + } + pub fn push(&mut self, opcode: Opcode) -> &mut Self { + self.bytecode.push(opcode.as_u8()); + self + } + + pub fn push_bytes(&mut self, bytes: &[u8]) -> &mut Self { + self.bytecode.extend_from_slice(bytes); + self + } + + pub fn build(&mut self) -> EvmExecutable { + let mut bytecode = Vec::new(); + self.finalize_blocks(); + + // Generating bytecode + for function in self.ir.functions.iter_mut() { + for block in function.blocks.iter_mut() { + for instruction in block.instructions.iter_mut() { + // Sanity check that arguments matches + assert!( + instruction.opcode.bytecode_arguments() == instruction.arguments.len(), + "Sanity check failed while writing byte code." + ); + + // Writing code + bytecode.push(instruction.opcode.as_u8()); + bytecode.extend(instruction.arguments.clone()); + } + } + } + + bytecode.push(Opcode::STOP.as_u8()); + + for (_, payload) in &self.ir.data { + bytecode.extend(payload); + } + + let mut ir = EvmBytecodeIr::new(); + mem::swap(&mut ir, &mut self.ir); + + // TODO: Make block table + EvmExecutable { + bytecode, + label_positions: self.label_positions.clone(), + ir, + } + } + + pub fn finalize_blocks(&mut self) { + if self.was_finalized { + return; + } + + // Building entry function + let mut main = { + let mut binding = self.ir.functions.front_mut(); + let main = match binding { + Some(ref mut main) => main, + _ => panic!("Expected the reserved main function."), + }; + + main.clone() + }; + + let mut binding_block = main.blocks.first_mut(); + let first_block = match binding_block { + Some(ref mut block) => block, + None => panic!("Function does not have a main block."), + }; + + self.set_current_function_name("__entry_function__".to_string()); + let mut switch_block = self.new_evm_block("switch"); + let mut fail_block = self.new_evm_block("fail"); + let mut success_block = self.new_evm_block("success"); + self.clear_current_function_name(); + + // Making sure that there is value attached to the contract call + if self.create_abi_boilerplate { + first_block.push1([0x80].to_vec()); + first_block.push1([0x40].to_vec()); + first_block.mstore(); + first_block.external_callvalue(); + first_block.dup1(); + first_block.iszero(); + first_block.jump_if_to(&switch_block.name); + first_block.push1([0x00].to_vec()); + first_block.dup1(); + first_block.revert(); + } else { + first_block.push1([0x80].to_vec()); + first_block.push1([0x40].to_vec()); + first_block.mstore(); + + // Adding return address + first_block.push_label(&success_block.name); + if let Some(fnc) = &self.ir.functions.get(1) { + if let Some(block) = fnc.blocks.first() { + first_block.jump_to(&block.name); + } else { + first_block.jump(); + } + } else { + first_block.jump(); + } + } + + switch_block.pop(); // 0 Oribabky remove dup1()? + switch_block.push1([0x04].to_vec()); // Checking that the size of call args + switch_block.calldatasize(); + switch_block.lt(); + switch_block.jump_if_to(&fail_block.name); + switch_block.push1([0x00].to_vec()); + switch_block.calldataload(); + switch_block.push1([0xe0].to_vec()); + switch_block.shr(); + + let mut data_loading_blocks: Vec = Vec::new(); + let functions = self.ir.functions.clone(); + for (i, function) in functions.iter().enumerate() { + // Skipping the entry function (the one we are building now) + if i > 0 { + // Ensuring that we are producing unique block names + let signature = &function.signature.clone().unwrap(); + self.set_current_function_name(signature.name.clone()); + + switch_block.dup1(); + switch_block.push(function.selector.clone()); + switch_block.eq(); + match function.blocks.first() { + Some(block) => { + let mut load_data_block = self.new_evm_block("load_args"); + switch_block.jump_if_to(&load_data_block.name); + + let signature = function.signature.clone().unwrap(); + + load_data_block.pop(); // Remove the user function selector from the stack + + // Checking that the size of call args + // TODO: Assumptino is that all arguments are 256-bits + let args_size = 0x04 + 0x20 * signature.arguments.len(); + load_data_block.push_u64(args_size.try_into().unwrap()); + load_data_block.calldatasize(); + load_data_block.lt(); + load_data_block.jump_if_to(&fail_block.name); + + // Adding return address + load_data_block.push_label(&success_block.name); + + // Loading data + for (i, arg) in signature.arguments.iter().enumerate() { + if let EvmType::String = arg { + // TODO: We only support loading of 32 byte strings. + // TODO: Count non-zero characters and push to the stack + let size = 32; + load_data_block.alloca_static(4 + size); + // First four bytes store size + load_data_block.push_u32(size as u32); + load_data_block.push_u32(256 - 32); + load_data_block.shl(); + load_data_block.dup2(); + load_data_block.mstore(); + + load_data_block.dup1(); + load_data_block.push1([0x04].to_vec()); + load_data_block.add(); + + load_data_block.push_u64((0x04 + 0x20 * i).try_into().unwrap()); + load_data_block.calldataload(); + load_data_block.swap1(); + load_data_block.mstore(); + } else { + load_data_block.push_u64((0x04 + 0x20 * i).try_into().unwrap()); + load_data_block.calldataload(); + } + } + + load_data_block.jump_to(&block.name); + data_loading_blocks.push(load_data_block); + } + _ => panic!("Function does not have any blocks."), + }; + } + + self.clear_current_function_name(); + } + + switch_block.jump_to(&fail_block.name); + + fail_block.push1([0x00].to_vec()); + fail_block.dup1(); + fail_block.revert(); + + success_block.push1([0x00].to_vec()); + success_block.dup1(); + success_block.r#return(); + + if self.create_abi_boilerplate { + main.blocks.push(switch_block); + for block in data_loading_blocks { + main.blocks.push(block); + } + main.blocks.push(fail_block); + main.blocks.push(success_block); + } else { + main.blocks.push(success_block); + } + + self.ir.functions[0] = main; + + // Resolving labels + self.resolve_positions(); + + // TODO: Test that all stack positions zero out + + self.was_finalized = true; + } + + pub fn resolve_positions(&mut self) { + let mut position: u32 = 0; + self.label_positions = HashMap::new(); + + // Creating code positions + for function in self.ir.functions.iter_mut() { + for (i, block) in function.blocks.iter_mut().enumerate() { + block.position = Some(position); + self.label_positions.insert(block.name.clone(), position); + if i == 0 { + let function_name = match &function.signature { + Some(v) => v.name.clone(), + None => panic!("Invalid function signature {:?}", function), + }; + self.label_positions.insert(function_name, position); + } + for instruction in block.instructions.iter_mut() { + instruction.position = Some(position); + if let Some(label) = &instruction.label { + self.label_positions.insert(label.to_string(), position); + } + position += 1 + instruction.expected_args_length() as u32; + } + } + } + + // Position reserved for STOP + position += 1; + + // Creating data positions + for (name, payload) in &self.ir.data { + self.label_positions.insert(name.to_string(), position); + position += payload.len() as u32; + } + + // Updating labels + for function in self.ir.functions.iter_mut() { + for block in function.blocks.iter_mut() { + for instruction in block.instructions.iter_mut() { + if let Some(name) = &instruction.unresolved_argument_label { + match self.label_positions.get(name) { + Some(p) => { + instruction.u32_to_arg_big_endian(*p); + } + None => { + println!("Available labels: {:#?}", self.label_positions); + panic!("Label not found {:#?}!", name); + } + } + } + } + } + } + } +} + +impl EvmAssemblyGenerator for EvmByteCodeBuilder<'_> { + fn generate_evm_assembly(&self) -> String { + let mut script = "Unused blocks:\n\n".to_string(); + + let unused_blocks = self + .ir + .unused_blocks + .iter() + .map(|block| { + let code = block + .instructions + .iter() + .map(|instr| { + let position = match instr.position { + Some(v) => v, + None => 0, + }; + let instruction_value = if instr.arguments.len() > 0 { + let argument: String = instr + .arguments + .iter() + .map(|byte| format!("{:02x}", byte).to_string()) + .collect(); + + format!("{} 0x{}", instr.opcode.to_string(), argument).to_string() + } else { + instr.opcode.to_string() + }; + + format!( + "[0x{:02x}: 0x{:02x}] {:>() + .join("\n"); + let position = match block.position { + Some(v) => v, + None => 0, + }; + format!( + "{}: ;; Starts at 0x{:02x} u8[{}] \n{}", + block.name, position, block.consumes, code + ) + }) + .collect::>() + .join("\n\n"); + script.push_str(&unused_blocks); + + for function in &self.ir.functions { + let code_blocks = function + .blocks + .iter() + .map(|block| { + let code = block + .instructions + .iter() + .map(|instr| { + let position = match instr.position { + Some(v) => v, + None => 0, + }; + + let instruction_value = if instr.arguments.len() > 0 { + let argument: String = instr + .arguments + .iter() + .map(|byte| format!("{:02x}", byte).to_string()) + .collect(); + + format!("{} 0x{}", instr.opcode.to_string(), argument).to_string() + } else { + instr.opcode.to_string() + }; + + format!( + "[0x{:02x}: 0x{:02x}] {:>() + .join("\n"); + let position = match block.position { + Some(v) => v, + None => 0, + }; + format!( + "{}: ;; Starts at 0x{:02x} u8[{}]\n{}", + block.name, position, block.consumes, code + ) + }) + .collect::>() + .join("\n\n"); + + script.push_str("\n\nFunction:\n"); + script.push_str(&code_blocks); + } + + script + } +} diff --git a/products/bluebell/evm_assembly/src/evm_decompiler.rs b/products/bluebell/evm_assembly/src/evm_decompiler.rs new file mode 100644 index 000000000..1e485e5dc --- /dev/null +++ b/products/bluebell/evm_assembly/src/evm_decompiler.rs @@ -0,0 +1,3 @@ +pub trait EvmAssemblyGenerator { + fn generate_evm_assembly(&self) -> String; +} diff --git a/products/bluebell/evm_assembly/src/executable.rs b/products/bluebell/evm_assembly/src/executable.rs new file mode 100644 index 000000000..e303ccaaa --- /dev/null +++ b/products/bluebell/evm_assembly/src/executable.rs @@ -0,0 +1,40 @@ +use std::collections::HashMap; + +use crate::bytecode_ir::EvmBytecodeIr; + +pub type TypeSourceMap = HashMap; + +#[derive(Debug, Clone)] +pub struct EvmExecutable { + pub bytecode: Vec, + pub label_positions: HashMap, + pub ir: EvmBytecodeIr, // TODO: add abi +} + +impl EvmExecutable { + pub fn get_label_position(&self, label: &str) -> Option { + self.label_positions.get(label).copied() + } + + pub fn get_source_map(&self) -> TypeSourceMap { + let mut ret = HashMap::::new(); + + let functions = &self.ir.functions; + for function in functions { + for block in &function.blocks { + for instr in &block.instructions { + let pc = match &instr.position { + Some(p) => p, + None => continue, + }; + let source_pos = match &instr.source_position { + Some(p) => (p.start, p.end, p.line, p.column), + None => continue, + }; + ret.insert(*pc as usize, source_pos); + } + } + } + ret + } +} diff --git a/products/bluebell/evm_assembly/src/executor.rs b/products/bluebell/evm_assembly/src/executor.rs new file mode 100644 index 000000000..a181291cd --- /dev/null +++ b/products/bluebell/evm_assembly/src/executor.rs @@ -0,0 +1,127 @@ +use std::{ + collections::{BTreeMap, HashMap}, + str::FromStr, +}; + +use evm::{ + backend::Apply, + executor::stack::{MemoryStackState, StackExecutor, StackSubstateMetadata}, + Config, +}; +use log::info; +use primitive_types::{H160, U256}; + +use crate::{ + compiler_context::EvmCompilerContext, + executable::EvmExecutable, + io_interface::{CustomMemoryAccount, EvmIoInterface}, + types::EvmTypeValue, +}; + +pub struct EvmExecutor<'a> { + pub context: &'a EvmCompilerContext, + pub executable: EvmExecutable, +} + +#[derive(Debug, Clone)] +pub struct ExecutorResult { + pub changeset: HashMap>, + pub result: String, +} + +impl<'a> EvmExecutor<'a> { + pub fn new(context: &'a EvmCompilerContext, executable: EvmExecutable) -> Self { + Self { + context, + executable, + } + } + + pub fn get_label_position(&self, label: &str) -> Option { + self.executable.label_positions.get(label).copied() + } + + pub fn execute(&self, name: &str, args: Vec) -> ExecutorResult { + let input = self + .context + .get_function(name) + .expect(&format!("Function name {} not found", name).to_string()) + .generate_transaction_data(args); + + // Initialized the state of EVM's memory. + let config = Config::istanbul(); + let mut state = BTreeMap::new(); + + // Add our contract under the 0x10 address. + state.insert( + H160::from_str("0x1000000000000000000000000000000000000000").unwrap(), + CustomMemoryAccount { + nonce: U256::one(), + balance: U256::from(10000000), + storage: BTreeMap::new(), + code: self.executable.bytecode.clone(), + }, + ); + + // Add new user 0xf0 that will be used as the contract caller. + state.insert( + H160::from_str("0xf000000000000000000000000000000000000000").unwrap(), + CustomMemoryAccount { + nonce: U256::one(), + balance: U256::from(10000000), + storage: BTreeMap::new(), + code: Vec::new(), + }, + ); + + // Prepare the executor. + let backend = EvmIoInterface::new(state); //MemoryBackend::new(&vicinity, state); + let metadata = StackSubstateMetadata::new(u64::MAX, &config); + let mem_state = MemoryStackState::new(metadata, &backend); + let precompiles = self.context.get_precompiles(); + let mut executor = StackExecutor::new_with_precompiles(mem_state, &config, &precompiles); + + // Call the 0x10 contract using the 0xf0 user. + // Use the input variable. + let (exit_reason, result) = executor.transact_call( + H160::from_str("0xf000000000000000000000000000000000000000").unwrap(), + H160::from_str("0x1000000000000000000000000000000000000000").unwrap(), + U256::zero(), + input, + u64::MAX, + Vec::new(), + ); + + let (state_apply, _logs) = executor.into_state().deconstruct(); + info!("\n\n\nExit reason: {:#?}", exit_reason); + info!("Result: {:#?}", result); + + let mut ret = ExecutorResult { + changeset: HashMap::new(), + result: format!("{:?}", result), + }; + + for update in state_apply { + match update { + Apply::Modify { + address, + basic: _, + code: _, + storage, + reset_storage: _, + } => { + for (k, v) in storage { + let key = format!("{:?}.{:?}", address, k); + ret.changeset.insert(key, Some(format!("{:?}", v))); + } + } + Apply::Delete { address } => { + let key = format!("{:?}", address); + ret.changeset.insert(key, None); + } + } + } + + ret + } +} diff --git a/products/bluebell/evm_assembly/src/function.rs b/products/bluebell/evm_assembly/src/function.rs new file mode 100644 index 000000000..1acdb9158 --- /dev/null +++ b/products/bluebell/evm_assembly/src/function.rs @@ -0,0 +1,258 @@ +use std::collections::{HashMap, HashSet, VecDeque}; + +use evm::Opcode; + +use crate::{block::EvmBlock, function_signature::EvmFunctionSignature}; + +#[derive(Debug, Clone)] +pub struct EvmFunction { + pub signature: Option, + pub selector: Vec, + pub blocks: Vec, + pub consumes: i32, + pub produces: i32, +} + +impl EvmFunction { + /// Function that computes how many stack elements are consumed and produced + /// as well as checking stack integrety for block jumps + pub fn compute_stack_difference(&mut self) -> Result<(), String> { + let function_name = self.signature.clone().unwrap().name; + let mut block_map: HashMap = HashMap::new(); + for block in self.blocks.iter() { + if block_map.contains_key(&block.name) { + return Err(format!("Multiple blocks with name {}", block.name)); + } + block_map.insert(block.name.clone(), &block); + } + + let binding = self.blocks.first(); + let first_block = match &binding { + Some(v) => v, + None => { + return Err("No entry block found for function".to_string()); + } + }; + + let consumes = first_block.consumes; + let mut produces: Option = None; + + let mut traversal_queue: Vec<(&EvmBlock, i32)> = [(*first_block, consumes)].to_vec(); + while !traversal_queue.is_empty() { + let (next, passed_in) = traversal_queue.pop().unwrap(); + if passed_in < next.consumes { + return Err(format!( + "Block requires at least {} but only {} was provided", + passed_in, next.consumes + )); + } + + // TODO: This needs to be done outside of the loop + // It is basically to prevent that placeholder blocks are analyzed + if next.instructions.len() == 1 { + // TODO: and check that it is a jumpdest + produces = Some(0); + continue; + } + + for instr in next.instructions.iter() { + let block_production = passed_in + next.produces - next.consumes; + + let label = match instr.opcode { + Opcode::RETURN | Opcode::REVERT => { + produces = Some(block_production); + // TODO: Check 0 + continue; + } + Opcode::JUMP | Opcode::JUMPI => &instr.unresolved_argument_label, + _ => continue, + }; + + let label = match label { + Some(l) => l, + _ => { + produces = Some(block_production); + + // Returns to a pointer and there is nothing to resolve + continue; + // todo!(); // This is actually an internal function end + // return Err(format!("No label specified for jump in {}", next.name)); + } + }; + + let &block = match block_map.get(label) { + Some(v) => v, + None => { + return Err(format!( + "Label '{}' not found in block '{}'", + label, next.name + )) + } + }; + + traversal_queue.push((block, block_production)); + } + } + + let produces = match produces { + Some(v) => v, + None => { + return Err(format!( + "Unable to determine the produced number of blocks in {}", + function_name + )); + } + }; + self.produces = produces; + self.consumes = consumes; + + // TODO: Check signature + + Ok(()) + } + + pub fn empty() -> Self { + Self { + signature: None, + selector: Vec::new(), + blocks: Vec::new(), + consumes: 0, + produces: 0, + } + } + + pub fn from_signature(signature: EvmFunctionSignature) -> Self { + let selector = signature.selector(); + Self { + signature: Some(signature), + selector, + blocks: Vec::new(), + consumes: 0, + produces: 0, + } + } + + pub fn extract_functions(blocks: &Vec) -> (Vec, Vec) { + let mut ret: Vec = Vec::new(); + let mut current_function = EvmFunction { + signature: None, + selector: Vec::new(), + blocks: Vec::new(), + consumes: 0, + produces: 0, + }; + + // Preparing + let mut queue: VecDeque<&EvmBlock> = VecDeque::new(); + let mut pos = 0; + match blocks.first() { + Some(start) => { + queue.push_back(start); + pos += 1; + } + None => (), + }; + + let blocks: HashMap = { + let mut ret: HashMap = HashMap::new(); + + while pos < blocks.len() { + let block = &blocks[pos]; + if let Some(position) = block.position { + ret.insert(position, &block); + } + pos += 1; + } + + ret + }; + + let mut used_blocks = HashSet::new(); + + // "main" function - extracting function starts + let mut function_starts: Vec<(Vec, &EvmBlock)> = Vec::new(); + while !queue.is_empty() { + let next = queue.pop_front().unwrap(); + used_blocks.insert(next.position); + + let mut last_push_value: Option = None; + let mut last_push_args: Option> = None; + let mut signature_value: Option> = None; + + for instr in next.instructions.iter() { + if instr.opcode == Opcode::EQ { + signature_value = last_push_args; + } + + if instr.opcode == Opcode::JUMPI || instr.opcode == Opcode::JUMP { + if let Some(position) = last_push_value { + let position = position as u32; + if let Some(block) = &blocks.get(&position) { + if let Some(selector) = signature_value { + function_starts.push((selector, &block)); + } else { + queue.push_back(&block); + } + signature_value = None; + } + } + } + + last_push_value = instr.push_value_as_u64(); + last_push_args = instr.push_value(); + } + + current_function.blocks.push(next.clone()); + } + + ret.push(current_function); + + // Extracting other functions + while !function_starts.is_empty() { + let (selector, block) = function_starts.pop().unwrap(); + + current_function = EvmFunction { + signature: None, + selector, + blocks: Vec::new(), + consumes: 0, + produces: 0, + }; + + queue.push_back(block); + while !queue.is_empty() { + let next = queue.pop_front().unwrap(); + used_blocks.insert(next.position); + + let mut last_push_value: Option = None; + for instr in next.instructions.iter() { + // TODO: Prevent cross function block inclusion (i.e. you call one function from the other) + if instr.opcode == Opcode::JUMPI || instr.opcode == Opcode::JUMP { + if let Some(position) = last_push_value { + let position = position as u32; + if let Some(block) = &blocks.get(&position) { + queue.push_back(&block); + } + } + } + + last_push_value = instr.push_value_as_u64(); + } + current_function.blocks.push(next.clone()); + } + ret.push(current_function); + } + + let unused_blocks = Vec::new(); + for (_position, _block) in blocks { + /* + // TODO: + if position == None || !used_blocks.contains(&position.unwrap()) { + unused_blocks.push(block.clone()); + } + */ + } + + (ret, unused_blocks) + } +} diff --git a/products/bluebell/evm_assembly/src/function_signature.rs b/products/bluebell/evm_assembly/src/function_signature.rs new file mode 100644 index 000000000..93765aa6a --- /dev/null +++ b/products/bluebell/evm_assembly/src/function_signature.rs @@ -0,0 +1,74 @@ +use crate::{ + block::EvmBlock, + types::{EvmType, EvmTypeValue}, +}; + +pub type AssemblyBuilderFn = fn(&mut EvmBlock); + +#[derive(Debug, Clone)] +pub struct EvmFunctionSignature { + pub name: String, + pub arguments: Vec, + pub return_type: EvmType, + + pub inline_assembly_generator: Option, + pub external_address: Option, +} + +impl EvmFunctionSignature { + pub fn new(name: String, arguments: Vec, return_type: &EvmType) -> Self { + Self { + name, + arguments, + return_type: return_type.clone(), + inline_assembly_generator: None, + external_address: None, + } + } + + pub fn signature(&self) -> String { + let mut argnames = Vec::new(); + for arg in &self.arguments { + argnames.push(arg.signature()); + } + + format!("{}({})", self.name, argnames.join(",")).to_string() + } + + pub fn full_signature(&self) -> String { + let mut argnames = Vec::new(); + for arg in &self.arguments { + argnames.push(arg.signature()); + } + + format!( + "{}({})->{}", + self.name, + argnames.join(","), + self.return_type.signature() + ) + .to_string() + } + + pub fn selector(&self) -> Vec { + let signature = self.signature(); + use sha3::{Digest, Keccak256}; + let hash = Keccak256::digest(signature); + + let mut selector = Vec::new(); + selector.extend_from_slice(&hash[..4]); + selector + } + + pub fn generate_transaction_data(&self, args: Vec) -> Vec { + let mut data = Vec::new(); + data.extend(self.selector()); + + // Encode the arguments + for arg in args { + data.extend(arg.to_bytes()); + } + + data + } +} diff --git a/products/bluebell/evm_assembly/src/instruction.rs b/products/bluebell/evm_assembly/src/instruction.rs new file mode 100644 index 000000000..1a49c8fb3 --- /dev/null +++ b/products/bluebell/evm_assembly/src/instruction.rs @@ -0,0 +1,181 @@ +use evm::Opcode; + +#[derive(Debug, Clone)] +pub struct EvmSourcePosition { + pub start: usize, + pub end: usize, + pub line: usize, + pub column: usize, +} + +#[derive(Debug, Clone)] +pub struct RustPosition { + pub filename: String, + pub line: usize, +} + +#[derive(Debug, Clone)] +pub struct EvmInstruction { + pub position: Option, + pub opcode: Opcode, + pub arguments: Vec, + + pub unresolved_argument_label: Option, + + pub stack_size: i32, // The number of elements on the stack since the start of the block before this instruction is executed + pub is_terminator: bool, + pub comment: Option, + pub source_position: Option, + pub rust_position: Option, + + pub label: Option, +} + +impl EvmInstruction { + fn arg_to_u64_big_endian(&self) -> Option { + if self.arguments.len() > 8 { + return None; // The input data is too large to fit into a u64 + } + + let mut buf = [0; 8]; + buf[8 - self.arguments.len()..].copy_from_slice(&self.arguments); + + Some(u64::from_be_bytes(buf)) + } + + pub fn u32_to_arg_big_endian(&mut self, value: u32) { + let bytes = value.to_be_bytes(); + let mut leading_zeros = 0; + for byte in &bytes { + if *byte == 0 { + leading_zeros += 1; + } else { + break; + } + } + + let argument_size = self.expected_args_length(); + + if leading_zeros == 4 { + // If the u64 value is zero, we still need to ensure that the argument size is correct + let leading_zero_bytes = argument_size - 4; + if leading_zero_bytes > 0 { + self.arguments = vec![0; leading_zero_bytes]; + } else { + self.arguments = vec![]; + } + } else { + let actual_size = 4 - leading_zeros; + if actual_size > argument_size { + // If the actual size is greater than the expected size, remove leading zeros + self.arguments = bytes[leading_zeros..].to_vec(); + } else { + // If the actual size is less than the expected size, add leading zeros + let leading_zero_bytes = argument_size - actual_size; + let mut new_arguments = vec![0; leading_zero_bytes]; + new_arguments.extend_from_slice(&bytes[leading_zeros..]); + self.arguments = new_arguments; + } + } + } + + pub fn expected_args_length(&self) -> usize { + match self.opcode { + Opcode::PUSH1 => 1, + Opcode::PUSH2 => 2, + Opcode::PUSH3 => 3, + Opcode::PUSH4 => 4, + Opcode::PUSH5 => 5, + Opcode::PUSH6 => 6, + Opcode::PUSH7 => 7, + Opcode::PUSH8 => 8, + Opcode::PUSH9 => 9, + Opcode::PUSH10 => 10, + Opcode::PUSH11 => 11, + Opcode::PUSH12 => 12, + Opcode::PUSH13 => 13, + Opcode::PUSH14 => 14, + Opcode::PUSH15 => 15, + Opcode::PUSH16 => 16, + Opcode::PUSH17 => 17, + Opcode::PUSH18 => 18, + Opcode::PUSH19 => 19, + Opcode::PUSH20 => 20, + Opcode::PUSH21 => 21, + Opcode::PUSH22 => 22, + Opcode::PUSH23 => 23, + Opcode::PUSH24 => 24, + Opcode::PUSH25 => 25, + Opcode::PUSH26 => 26, + Opcode::PUSH27 => 27, + Opcode::PUSH28 => 28, + Opcode::PUSH29 => 29, + Opcode::PUSH30 => 30, + Opcode::PUSH31 => 31, + Opcode::PUSH32 => 32, + _ => 0, + } + } + + pub fn push_value_as_u64(&self) -> Option { + match self.opcode { + // Opcode::PUSH0 => Some(0), + Opcode::PUSH1 + | Opcode::PUSH2 + | Opcode::PUSH3 + | Opcode::PUSH4 + | Opcode::PUSH5 + | Opcode::PUSH6 + | Opcode::PUSH7 + | Opcode::PUSH8 => self.arg_to_u64_big_endian(), + _ => None, + } + } + + pub fn push_value(&self) -> Option> { + match self.opcode { + // TODO: Opcode::PUSH0 | + Opcode::PUSH1 + | Opcode::PUSH2 + | Opcode::PUSH3 + | Opcode::PUSH4 + | Opcode::PUSH5 + | Opcode::PUSH6 + | Opcode::PUSH7 + | Opcode::PUSH8 => Some(self.arguments.clone()), + _ => None, + } + } + + pub fn to_opcode_string(&self) -> String { + if self.arguments.len() > 0 { + let argument: String = self + .arguments + .iter() + .map(|byte| format!("{:02x}", byte).to_string()) + .collect(); + let position = match self.position { + Some(v) => v, + None => 0, + }; + format!( + "[0x{:02x}: 0x{:02x}] {} 0x{}", + position, + self.opcode.as_u8(), + self.opcode.to_string(), + argument + ) + } else { + let position = match self.position { + Some(v) => v, + None => 0, + }; + format!( + "[0x{:02x}: 0x{:02x}] {}", + position, + self.opcode.as_u8(), + self.opcode.to_string() + ) + } + } +} diff --git a/products/bluebell/evm_assembly/src/io_interface.rs b/products/bluebell/evm_assembly/src/io_interface.rs new file mode 100644 index 000000000..7baa472a6 --- /dev/null +++ b/products/bluebell/evm_assembly/src/io_interface.rs @@ -0,0 +1,129 @@ +use std::collections::BTreeMap; + +use evm::backend::{Backend, Basic}; +use primitive_types::{H160, H256, U256}; + +#[derive(Default, Clone, Debug, Eq, PartialEq)] +pub struct CustomMemoryAccount { + /// Account nonce. + pub nonce: U256, + /// Account balance. + pub balance: U256, + /// Full account storage. + pub storage: BTreeMap, + /// Account code. + pub code: Vec, +} + +#[derive(Debug)] +pub struct EvmIoInterface { + // Backend refers to storage, not execution platform + state: BTreeMap, +} + +impl EvmIoInterface { + pub fn new(state: BTreeMap) -> Self { + Self { state } + } +} + +impl Backend for EvmIoInterface { + fn gas_price(&self) -> U256 { + U256::zero() + } + + fn origin(&self) -> H160 { + unimplemented!() + } + + fn block_hash(&self, _: U256) -> H256 { + H256::zero() + } + + fn block_number(&self) -> U256 { + U256::zero() + } + + fn block_coinbase(&self) -> H160 { + unimplemented!() + } + + fn block_timestamp(&self) -> U256 { + U256::zero() + } + + fn block_difficulty(&self) -> U256 { + unimplemented!() + } + + //fn block_randomness(&self) -> Option { // Put note for PR + // None + //} + + fn block_gas_limit(&self) -> U256 { + unimplemented!() + } + + fn block_base_fee_per_gas(&self) -> U256 { + unimplemented!() + } + + fn chain_id(&self) -> U256 { + unimplemented!() + } + + fn exists(&self, address: H160) -> bool { + self.state.contains_key(&address) + } + + fn basic(&self, _address: H160) -> Basic { + Basic { + balance: 0.into(), + nonce: 0.into(), + } + } + + fn code(&self, address: H160) -> Vec { + self.state + .get(&address) + .map(|v| v.code.clone()) + .unwrap_or_default() + } + + fn storage(&self, address: H160, index: H256) -> H256 { + let storage = self + .state + .get(&address) + .map(|v| v.storage.clone()) + .unwrap_or_default(); + + match storage.get(&index) { + Some(v) => v.clone(), + None => H256::zero(), + } + } + + fn original_storage(&self, address: H160, index: H256) -> Option { + let storage = self + .state + .get(&address) + .map(|v| v.storage.clone()) + .unwrap_or_default(); + + storage.get(&index).copied() + } + + // todo: this. + fn code_as_json(&self, _address: H160) -> Vec { + unimplemented!() + } + + fn init_data_as_json(&self, _address: H160) -> Vec { + unimplemented!() + } + + // todo: this. + fn substate_as_json(&self, _address: H160, _vname: &str, _indices: &[String]) -> Vec { + unimplemented!() + } +} diff --git a/products/bluebell/evm_assembly/src/lib.rs b/products/bluebell/evm_assembly/src/lib.rs new file mode 100644 index 000000000..329cf302c --- /dev/null +++ b/products/bluebell/evm_assembly/src/lib.rs @@ -0,0 +1,16 @@ +pub mod block; +pub mod bytecode_ir; +pub mod compiler_context; +mod evm_bytecode_builder; +mod evm_decompiler; +pub mod executable; +pub mod executor; +pub mod function; +pub mod function_signature; +pub mod instruction; +pub mod io_interface; +pub mod observable_machine; +pub mod opcode_spec; +pub mod types; + +pub use self::{evm_bytecode_builder::EvmByteCodeBuilder, evm_decompiler::EvmAssemblyGenerator}; diff --git a/products/bluebell/evm_assembly/src/observable_machine.rs b/products/bluebell/evm_assembly/src/observable_machine.rs new file mode 100644 index 000000000..7a5983e48 --- /dev/null +++ b/products/bluebell/evm_assembly/src/observable_machine.rs @@ -0,0 +1,307 @@ +use std::{ + collections::{BTreeMap, HashMap, HashSet}, + rc::Rc, + str::FromStr, +}; + +use evm::{ + executor::stack::PrecompileFn, + Capture, + Capture::{Exit, Trap as CaptureTrap}, + Context, ExitReason, Machine, Opcode, Trap, +}; +use log::{error, info}; +use primitive_types::{H160, H256, U256}; + +use crate::{executable::TypeSourceMap, io_interface::EvmIoInterface}; + +pub type EvmPrecompileSet = BTreeMap; + +pub struct ObservableMachine { + pub machine: Machine, + pub positions_visited: HashMap, + pub lines_visited_ordered: Vec, + pub lines_visited: HashSet, + pub position_to_line: HashMap, + pub failed: bool, + pub error_message: Option, + pub storage: HashMap, + pub precompile_set: Option, + + pub caller: H160, +} + +fn h160_to_usize(address: H160) -> usize { + let bytes = address.as_fixed_bytes(); + let mut result = 0usize; + + for &byte in bytes.iter().rev().take(std::mem::size_of::()).rev() { + result = (result << 8) | (byte as usize); + } + + result +} + +impl ObservableMachine { + /// Create a new machine with given code and data. + pub fn new( + code: Rc>, + data: Rc>, + stack_limit: usize, + memory_limit: usize, + precompile_set: Option, + ) -> Self { + Self { + machine: Machine::new(code, data, stack_limit, memory_limit), + positions_visited: HashMap::new(), + lines_visited_ordered: Vec::new(), + lines_visited: HashSet::new(), + position_to_line: HashMap::new(), + failed: false, + error_message: None, + storage: HashMap::new(), + precompile_set, + caller: H160::zero(), + } + } + + pub fn set_caller(&mut self, caller: String) { + let caller_address = H160::from_str(&caller).expect("Failed to parse caller address"); + self.caller = caller_address; + } + + pub fn set_source_map(&mut self, source_map: &TypeSourceMap) { + self.position_to_line = source_map + .iter() + .map(|(k, (_, _, line, _))| (*k, *line)) + .collect::>(); + } + + pub fn step(&mut self) -> Result<(), Capture> { + match self.machine.step() { + Ok(()) => (), + Err(code) => match code { + Exit(ref _value) => { + return Err(code); + } + CaptureTrap(opcode) => { + match opcode { + Opcode::SSTORE => { + let stack = self.machine.stack_mut(); + let address = match stack.pop() { + Ok(v) => v, + Err(_) => panic!("Stack empty!"), + }; + let value = match stack.pop() { + Ok(v) => v, + Err(_) => panic!("Stack empty!"), + }; + + self.storage.insert(address, value); + } + + Opcode::SLOAD => { + let stack = self.machine.stack_mut(); + let address = match stack.pop() { + Ok(v) => v, + Err(_) => panic!("Stack empty!"), + }; + + let value = match self.storage.get(&address) { + Some(v) => v.clone(), + None => panic!("Unable to find value!"), + }; + + let _ = stack.push(value); + } + Opcode::CALLER => { + let stack = self.machine.stack_mut(); + + let h256_bytes = [0u8; 32]; // Create h256_bytes[12..].copy_from_slice(&self.caller.0); + + let _ = stack.push(H256::from_slice(&h256_bytes)); + } + Opcode::CALLVALUE => { + let stack = self.machine.stack_mut(); + // We always assume zero value caller (root call) + let v = stack.push(H256::zero()); + if v.is_err() { + panic!("Failed to push result to stack"); + } + } + Opcode::CALLDATASIZE => { + panic!("Call size not set.") + } + Opcode::CALLDATALOAD => { + panic!("Call data not loadable.") + } + + Opcode::STATICCALL => { + // Emulating static call + // TODO: Attach runtime! + info!("Static call"); + let (gas, address, args_offset, args_size, _ret_offset, _ret_size) = { + let stack = self.machine.stack_mut(); + let gas: u64 = match stack.pop() { + Ok(g) => h160_to_usize(g.into()) as u64, + Err(_) => { + panic!("Gas argument missing"); + } + }; + let address: H160 = match stack.pop() { + Ok(g) => g.into(), + Err(_) => { + panic!("Address argument missing"); + } + }; + let args_offset: usize = match stack.pop() { + Ok(g) => h160_to_usize(g.into()), + Err(_) => { + panic!("Args offset argument missing"); + } + }; + let args_size: usize = match stack.pop() { + Ok(g) => h160_to_usize(g.into()), + Err(_) => { + panic!("Args size argument missing"); + } + }; + let ret_offset: usize = match stack.pop() { + Ok(g) => h160_to_usize(g.into()), + Err(_) => { + panic!("Return offset argument missing"); + } + }; + let ret_size: usize = match stack.pop() { + Ok(g) => h160_to_usize(g.into()), + Err(_) => { + panic!("Return size argument missing"); + } + }; + + (gas, address, args_offset, args_size, ret_offset, ret_size) + }; + + let ret = if let Some(precompile_set) = &self.precompile_set { + if let Some(f) = precompile_set.get(&address) { + let ret = { + let mem = self.machine.memory().data(); + let end = args_offset + args_size; + + let input = if args_size > 0 { + &mem[args_offset..end] + } else { + &[] + }; + + // TODO: Integrate these properly + let dummy_context = Context { + address: H160::zero(), + caller: self.caller.clone(), + apparent_value: U256::zero(), + }; + let dummy_backend = EvmIoInterface::new(BTreeMap::new()); + + f(input, Some(gas), &dummy_context, &dummy_backend, true) + }; + + if let Ok(_ret) = ret { + let _mem = self.machine.memory_mut().data(); + // TODO: Write ret to memory + H256::zero() + } else { + error!("Result error in static call"); + H256::zero() + } + } else { + error!("Contract on address {:?} not found", address); + H256::zero() + } + } else { + error!("Precompile set not found"); + H256::zero() + }; + + let stack = self.machine.stack_mut(); + if stack.push(ret).is_err() { + panic!("Failed to push result to stack"); + } + } + + _ => { + self.failed = true; + self.error_message = Some(format!("{:?}", opcode).to_string()); + panic!("Unhandled trap opcode {:?}", opcode) + } + } + } + }, + } + + if let Ok(p) = self.machine.position() { + if let Some(value) = self.positions_visited.get_mut(&(*p as u32)) { + *value = *value + 1; + } else { + self.positions_visited.insert(*p as u32, 1); + } + + if let Some(line) = self.position_to_line.get(p) { + self.lines_visited.insert(*line as u32); + let should_add = if let Some(last) = self.lines_visited_ordered.last() { + *last != *line as u32 + } else { + true + }; + + if should_add { + self.lines_visited_ordered.push(*line as u32); + } + } + } + + Ok(()) + } + + pub fn run(&mut self) { + loop { + match self.step() { + Ok(()) => (), + Err(code) => match code { + Exit(_value) => { + return; + } + _ => (), + }, + } + if self.machine.position().is_err() { + // Breaking only when we've reached an invalid position + // This is to ignore issues of traps with static calls + return; + } + } + } + + pub fn did_visit_program_counter(&self, pc: u32) -> bool { + None != self.positions_visited.get(&pc) + } + + pub fn did_not_visit_program_counter(&self, pc: u32) -> bool { + None == self.positions_visited.get(&pc) + } + + pub fn did_visit_line(&self, pc: u32) -> bool { + None != self.lines_visited.get(&pc) + } + + pub fn did_not_visit_line(&self, pc: u32) -> bool { + None == self.lines_visited.get(&pc) + } + + pub fn has_record(&self, key: &H256, value: &H256) -> bool { + // Check if the key exists in storage and if its value matches the given value + match self.storage.get(&key) { + Some(stored_value) => *stored_value == *value, + None => false, + } + } +} diff --git a/products/bluebell/evm_assembly/src/opcode_spec.rs b/products/bluebell/evm_assembly/src/opcode_spec.rs new file mode 100644 index 000000000..c48455517 --- /dev/null +++ b/products/bluebell/evm_assembly/src/opcode_spec.rs @@ -0,0 +1,979 @@ +use std::collections::HashMap; + +use evm::Opcode; + +#[derive(Debug, Clone)] +pub struct OpcodeSpecification { + pub opcode: Opcode, + pub stack_consumed: usize, + pub stack_produced: usize, + pub is_terminator: bool, + pub bytecode_arguments: usize, +} + +impl OpcodeSpecification { + pub fn new( + opcode: Opcode, + stack_consumed: usize, + stack_produced: usize, + is_terminator: bool, + bytecode_arguments: usize, + ) -> OpcodeSpecification { + OpcodeSpecification { + opcode, + stack_consumed, + stack_produced, + is_terminator, + bytecode_arguments, + } + } +} + +pub trait OpcodeSpec { + fn stack_consumed(&self) -> i32; + fn stack_produced(&self) -> i32; + fn is_terminator(&self) -> bool; + fn bytecode_arguments(&self) -> usize; +} + +impl OpcodeSpec for Opcode { + fn bytecode_arguments(&self) -> usize { + match *self { + Opcode::PUSH1 => 1, + Opcode::PUSH2 => 2, + Opcode::PUSH3 => 3, + Opcode::PUSH4 => 4, + Opcode::PUSH5 => 5, + Opcode::PUSH6 => 6, + Opcode::PUSH7 => 7, + Opcode::PUSH8 => 8, + Opcode::PUSH9 => 9, + Opcode::PUSH10 => 10, + Opcode::PUSH11 => 11, + Opcode::PUSH12 => 12, + Opcode::PUSH13 => 13, + Opcode::PUSH14 => 14, + Opcode::PUSH15 => 15, + Opcode::PUSH16 => 16, + Opcode::PUSH17 => 17, + Opcode::PUSH18 => 18, + Opcode::PUSH19 => 19, + Opcode::PUSH20 => 20, + Opcode::PUSH21 => 21, + Opcode::PUSH22 => 22, + Opcode::PUSH23 => 23, + Opcode::PUSH24 => 24, + Opcode::PUSH25 => 25, + Opcode::PUSH26 => 26, + Opcode::PUSH27 => 27, + Opcode::PUSH28 => 28, + Opcode::PUSH29 => 29, + Opcode::PUSH30 => 30, + Opcode::PUSH31 => 31, + Opcode::PUSH32 => 32, + _ => 0, + } + } + + fn is_terminator(&self) -> bool { + match *self { + Opcode::JUMP | // TODO: Consider whether we should treat JUMPI as a terminator + Opcode::RETURN | + Opcode::REVERT => true, + _ => false + } + } + + fn stack_consumed(&self) -> i32 { + match *self { + Opcode::STOP => 0, + Opcode::ADD => 2, + Opcode::MUL => 2, + Opcode::SUB => 2, + Opcode::DIV => 2, + Opcode::SDIV => 2, + Opcode::MOD => 2, + Opcode::SMOD => 2, + Opcode::ADDMOD => 3, + Opcode::MULMOD => 3, + Opcode::EXP => 2, + Opcode::SIGNEXTEND => 2, + Opcode::LT => 2, + Opcode::GT => 2, + Opcode::SLT => 2, + Opcode::SGT => 2, + Opcode::EQ => 2, + Opcode::ISZERO => 1, + Opcode::AND => 2, + Opcode::OR => 2, + Opcode::XOR => 2, + Opcode::NOT => 1, + Opcode::BYTE => 2, + Opcode::CALLDATALOAD => 1, + Opcode::CALLDATASIZE => 0, + Opcode::CALLDATACOPY => 3, + Opcode::CODESIZE => 0, + Opcode::CODECOPY => 3, + Opcode::SHL => 2, + Opcode::SHR => 2, + Opcode::SAR => 2, + Opcode::POP => 1, + Opcode::MLOAD => 1, + Opcode::MSTORE => 2, + Opcode::MSTORE8 => 2, + Opcode::JUMP => 1, + Opcode::JUMPI => 2, + Opcode::PC => 0, + Opcode::MSIZE => 0, + Opcode::JUMPDEST => 0, + Opcode::PUSH1 => 0, + Opcode::PUSH2 => 0, + Opcode::PUSH3 => 0, + Opcode::PUSH4 => 0, + Opcode::PUSH5 => 0, + Opcode::PUSH6 => 0, + Opcode::PUSH7 => 0, + Opcode::PUSH8 => 0, + Opcode::PUSH9 => 0, + Opcode::PUSH10 => 0, + Opcode::PUSH11 => 0, + Opcode::PUSH12 => 0, + Opcode::PUSH13 => 0, + Opcode::PUSH14 => 0, + Opcode::PUSH15 => 0, + Opcode::PUSH16 => 0, + Opcode::PUSH17 => 0, + Opcode::PUSH18 => 0, + Opcode::PUSH19 => 0, + Opcode::PUSH20 => 0, + Opcode::PUSH21 => 0, + Opcode::PUSH22 => 0, + Opcode::PUSH23 => 0, + Opcode::PUSH24 => 0, + Opcode::PUSH25 => 0, + Opcode::PUSH26 => 0, + Opcode::PUSH27 => 0, + Opcode::PUSH28 => 0, + Opcode::PUSH29 => 0, + Opcode::PUSH30 => 0, + Opcode::PUSH31 => 0, + Opcode::PUSH32 => 0, + Opcode::DUP1 => 1, + Opcode::DUP2 => 2, + Opcode::DUP3 => 3, + Opcode::DUP4 => 4, + Opcode::DUP5 => 5, + Opcode::DUP6 => 6, + Opcode::DUP7 => 7, + Opcode::DUP8 => 8, + Opcode::DUP9 => 9, + Opcode::DUP10 => 10, + Opcode::DUP11 => 11, + Opcode::DUP12 => 12, + Opcode::DUP13 => 13, + Opcode::DUP14 => 14, + Opcode::DUP15 => 15, + Opcode::DUP16 => 16, + Opcode::SWAP1 => 2, + Opcode::SWAP2 => 3, + Opcode::SWAP3 => 4, + Opcode::SWAP4 => 5, + Opcode::SWAP5 => 6, + Opcode::SWAP6 => 7, + Opcode::SWAP7 => 8, + Opcode::SWAP8 => 9, + Opcode::SWAP9 => 10, + Opcode::SWAP10 => 11, + Opcode::SWAP11 => 12, + Opcode::SWAP12 => 13, + Opcode::SWAP13 => 14, + Opcode::SWAP14 => 15, + Opcode::SWAP15 => 16, + Opcode::SWAP16 => 17, + Opcode::RETURN => 2, + Opcode::REVERT => 2, + Opcode::INVALID => 0, + Opcode::EOFMAGIC => 0, + Opcode::SHA3 => 2, + Opcode::ADDRESS => 0, + Opcode::BALANCE => 1, + Opcode::SELFBALANCE => 0, + Opcode::BASEFEE => 0, + Opcode::ORIGIN => 0, + Opcode::CALLER => 0, + Opcode::CALLVALUE => 0, + Opcode::GASPRICE => 0, + Opcode::EXTCODESIZE => 1, + Opcode::EXTCODECOPY => 4, + Opcode::EXTCODEHASH => 1, + Opcode::RETURNDATASIZE => 0, + Opcode::RETURNDATACOPY => 3, + Opcode::BLOCKHASH => 1, + Opcode::COINBASE => 0, + Opcode::TIMESTAMP => 0, + Opcode::NUMBER => 0, + Opcode::DIFFICULTY => 0, + Opcode::GASLIMIT => 0, + Opcode::SLOAD => 1, + Opcode::SSTORE => 2, + Opcode::GAS => 0, + Opcode::LOG0 => 2, + Opcode::LOG1 => 3, + Opcode::LOG2 => 4, + Opcode::LOG3 => 5, + Opcode::LOG4 => 6, + Opcode::CREATE => 3, + Opcode::CREATE2 => 4, + Opcode::CALL => 7, + Opcode::CALLCODE => 7, + Opcode::DELEGATECALL => 6, + Opcode::STATICCALL => 6, + Opcode::SUICIDE => 0, + Opcode::CHAINID => 0, + _ => todo!(), + } + } + + fn stack_produced(&self) -> i32 { + match *self { + Opcode::STOP => 0, + Opcode::ADD => 1, + Opcode::MUL => 1, + Opcode::SUB => 1, + Opcode::DIV => 1, + Opcode::SDIV => 1, + Opcode::MOD => 1, + Opcode::SMOD => 1, + Opcode::ADDMOD => 1, + Opcode::MULMOD => 1, + Opcode::EXP => 1, + Opcode::SIGNEXTEND => 1, + Opcode::LT => 1, + Opcode::GT => 1, + Opcode::SLT => 1, + Opcode::SGT => 1, + Opcode::EQ => 1, + Opcode::ISZERO => 1, + Opcode::AND => 1, + Opcode::OR => 1, + Opcode::XOR => 1, + Opcode::NOT => 1, + Opcode::BYTE => 1, + Opcode::CALLDATALOAD => 1, + Opcode::CALLDATASIZE => 1, + Opcode::CALLDATACOPY => 0, + Opcode::CODESIZE => 1, + Opcode::CODECOPY => 0, + Opcode::SHL => 1, + Opcode::SHR => 1, + Opcode::SAR => 1, + Opcode::POP => 0, + Opcode::MLOAD => 1, + Opcode::MSTORE => 0, + Opcode::MSTORE8 => 0, + Opcode::JUMP => 0, + Opcode::JUMPI => 0, + Opcode::PC => 1, + Opcode::MSIZE => 1, + Opcode::JUMPDEST => 0, + Opcode::PUSH1 => 1, + Opcode::PUSH2 => 1, + Opcode::PUSH3 => 1, + Opcode::PUSH4 => 1, + Opcode::PUSH5 => 1, + Opcode::PUSH6 => 1, + Opcode::PUSH7 => 1, + Opcode::PUSH8 => 1, + Opcode::PUSH9 => 1, + Opcode::PUSH10 => 1, + Opcode::PUSH11 => 1, + Opcode::PUSH12 => 1, + Opcode::PUSH13 => 1, + Opcode::PUSH14 => 1, + Opcode::PUSH15 => 1, + Opcode::PUSH16 => 1, + Opcode::PUSH17 => 1, + Opcode::PUSH18 => 1, + Opcode::PUSH19 => 1, + Opcode::PUSH20 => 1, + Opcode::PUSH21 => 1, + Opcode::PUSH22 => 1, + Opcode::PUSH23 => 1, + Opcode::PUSH24 => 1, + Opcode::PUSH25 => 1, + Opcode::PUSH26 => 1, + Opcode::PUSH27 => 1, + Opcode::PUSH28 => 1, + Opcode::PUSH29 => 1, + Opcode::PUSH30 => 1, + Opcode::PUSH31 => 1, + Opcode::PUSH32 => 1, + Opcode::DUP1 => 2, + Opcode::DUP2 => 3, + Opcode::DUP3 => 4, + Opcode::DUP4 => 5, + Opcode::DUP5 => 6, + Opcode::DUP6 => 7, + Opcode::DUP7 => 8, + Opcode::DUP8 => 9, + Opcode::DUP9 => 10, + Opcode::DUP10 => 11, + Opcode::DUP11 => 12, + Opcode::DUP12 => 13, + Opcode::DUP13 => 14, + Opcode::DUP14 => 15, + Opcode::DUP15 => 16, + Opcode::DUP16 => 17, + Opcode::SWAP1 => 2, + Opcode::SWAP2 => 3, + Opcode::SWAP3 => 4, + Opcode::SWAP4 => 5, + Opcode::SWAP5 => 6, + Opcode::SWAP6 => 7, + Opcode::SWAP7 => 8, + Opcode::SWAP8 => 9, + Opcode::SWAP9 => 10, + Opcode::SWAP10 => 11, + Opcode::SWAP11 => 12, + Opcode::SWAP12 => 13, + Opcode::SWAP13 => 14, + Opcode::SWAP14 => 15, + Opcode::SWAP15 => 16, + Opcode::SWAP16 => 17, + Opcode::RETURN => 0, + Opcode::REVERT => 0, + Opcode::INVALID => 0, + Opcode::EOFMAGIC => 0, + Opcode::SHA3 => 1, + Opcode::ADDRESS => 1, + Opcode::BALANCE => 1, + Opcode::SELFBALANCE => 1, + Opcode::BASEFEE => 1, + Opcode::ORIGIN => 1, + Opcode::CALLER => 1, + Opcode::CALLVALUE => 1, + Opcode::GASPRICE => 1, + Opcode::EXTCODESIZE => 1, + Opcode::EXTCODECOPY => 0, + Opcode::EXTCODEHASH => 1, + Opcode::RETURNDATASIZE => 1, + Opcode::RETURNDATACOPY => 0, + Opcode::BLOCKHASH => 1, + Opcode::COINBASE => 1, + Opcode::TIMESTAMP => 1, + Opcode::NUMBER => 1, + Opcode::DIFFICULTY => 0, + Opcode::GASLIMIT => 1, + Opcode::SLOAD => 1, + Opcode::SSTORE => 0, + Opcode::GAS => 1, + Opcode::LOG0 => 0, + Opcode::LOG1 => 0, + Opcode::LOG2 => 0, + Opcode::LOG3 => 0, + Opcode::LOG4 => 0, + Opcode::CREATE => 1, + Opcode::CREATE2 => 1, + Opcode::CALL => 1, + Opcode::CALLCODE => 1, + Opcode::DELEGATECALL => 1, + Opcode::STATICCALL => 1, + Opcode::SUICIDE => 0, + Opcode::CHAINID => 1, + _ => todo!(), + } + } +} + +// TODO: Finish the spec +pub fn create_opcode_spec() -> HashMap { + let spec: HashMap = [ + ( + // TODO: Change PUSH0 once the Zilliqa EVM is upgraded + // TODO: Ugly hack PUSH0 -> PUSH1 + 0x5f, + OpcodeSpecification::new(Opcode::PUSH1, 0, 0, false, 0), + ), + ( + Opcode::STOP.as_u8(), + OpcodeSpecification::new(Opcode::STOP, 0, 0, false, 0), + ), + ( + Opcode::ADD.as_u8(), + OpcodeSpecification::new(Opcode::ADD, 2, 1, false, 0), + ), + ( + Opcode::MUL.as_u8(), + OpcodeSpecification::new(Opcode::MUL, 2, 1, false, 0), + ), + ( + Opcode::SUB.as_u8(), + OpcodeSpecification::new(Opcode::SUB, 2, 1, false, 0), + ), + ( + Opcode::DIV.as_u8(), + OpcodeSpecification::new(Opcode::DIV, 2, 1, false, 0), + ), + ( + Opcode::SDIV.as_u8(), + OpcodeSpecification::new(Opcode::SDIV, 2, 1, false, 0), + ), + ( + Opcode::MOD.as_u8(), + OpcodeSpecification::new(Opcode::MOD, 2, 1, false, 0), + ), + ( + Opcode::SMOD.as_u8(), + OpcodeSpecification::new(Opcode::SMOD, 2, 1, false, 0), + ), + ( + Opcode::ADDMOD.as_u8(), + OpcodeSpecification::new(Opcode::ADDMOD, 3, 1, false, 0), + ), + ( + Opcode::MULMOD.as_u8(), + OpcodeSpecification::new(Opcode::MULMOD, 3, 1, false, 0), + ), + ( + Opcode::EXP.as_u8(), + OpcodeSpecification::new(Opcode::EXP, 2, 1, false, 0), + ), + ( + Opcode::SIGNEXTEND.as_u8(), + OpcodeSpecification::new(Opcode::SIGNEXTEND, 2, 1, false, 0), + ), + ( + Opcode::LT.as_u8(), + OpcodeSpecification::new(Opcode::LT, 2, 1, false, 0), + ), + ( + Opcode::GT.as_u8(), + OpcodeSpecification::new(Opcode::GT, 2, 1, false, 0), + ), + ( + Opcode::SLT.as_u8(), + OpcodeSpecification::new(Opcode::SLT, 2, 1, false, 0), + ), + ( + Opcode::SGT.as_u8(), + OpcodeSpecification::new(Opcode::SGT, 2, 1, false, 0), + ), + ( + Opcode::EQ.as_u8(), + OpcodeSpecification::new(Opcode::EQ, 2, 1, false, 0), + ), + ( + Opcode::ISZERO.as_u8(), + OpcodeSpecification::new(Opcode::ISZERO, 1, 1, false, 0), + ), + ( + Opcode::AND.as_u8(), + OpcodeSpecification::new(Opcode::AND, 2, 1, false, 0), + ), + ( + Opcode::OR.as_u8(), + OpcodeSpecification::new(Opcode::OR, 2, 1, false, 0), + ), + ( + Opcode::XOR.as_u8(), + OpcodeSpecification::new(Opcode::XOR, 2, 1, false, 0), + ), + ( + Opcode::NOT.as_u8(), + OpcodeSpecification::new(Opcode::NOT, 1, 1, false, 0), + ), + ( + Opcode::BYTE.as_u8(), + OpcodeSpecification::new(Opcode::BYTE, 2, 1, false, 0), + ), + ( + Opcode::CALLDATALOAD.as_u8(), + OpcodeSpecification::new(Opcode::CALLDATALOAD, 1, 1, false, 0), + ), + ( + Opcode::CALLDATASIZE.as_u8(), + OpcodeSpecification::new(Opcode::CALLDATASIZE, 0, 1, false, 0), + ), + ( + Opcode::CALLDATACOPY.as_u8(), + OpcodeSpecification::new(Opcode::CALLDATACOPY, 3, 0, false, 0), + ), + ( + Opcode::CODESIZE.as_u8(), + OpcodeSpecification::new(Opcode::CODESIZE, 0, 1, false, 0), + ), + ( + Opcode::CODECOPY.as_u8(), + OpcodeSpecification::new(Opcode::CODECOPY, 3, 0, false, 0), + ), + ( + Opcode::SHL.as_u8(), + OpcodeSpecification::new(Opcode::SHL, 2, 1, false, 0), + ), + ( + Opcode::SHR.as_u8(), + OpcodeSpecification::new(Opcode::SHR, 2, 1, false, 0), + ), + ( + Opcode::SAR.as_u8(), + OpcodeSpecification::new(Opcode::SAR, 2, 1, false, 0), + ), + ( + Opcode::POP.as_u8(), + OpcodeSpecification::new(Opcode::POP, 1, 0, false, 0), + ), + ( + Opcode::MLOAD.as_u8(), + OpcodeSpecification::new(Opcode::MLOAD, 1, 1, false, 0), + ), + ( + Opcode::MSTORE.as_u8(), + OpcodeSpecification::new(Opcode::MSTORE, 2, 0, false, 0), + ), + ( + Opcode::MSTORE8.as_u8(), + OpcodeSpecification::new(Opcode::MSTORE8, 2, 0, false, 0), + ), + ( + Opcode::JUMP.as_u8(), + OpcodeSpecification::new(Opcode::JUMP, 1, 0, true, 0), + ), + ( + Opcode::JUMPI.as_u8(), + OpcodeSpecification::new(Opcode::JUMPI, 2, 0, false, 0), + ), + ( + Opcode::PC.as_u8(), + OpcodeSpecification::new(Opcode::PC, 0, 1, false, 0), + ), + ( + Opcode::MSIZE.as_u8(), + OpcodeSpecification::new(Opcode::MSIZE, 0, 1, false, 0), + ), + ( + Opcode::JUMPDEST.as_u8(), + OpcodeSpecification::new(Opcode::JUMPDEST, 0, 0, false, 0), + ), + // TODO: Push0 + ( + Opcode::PUSH1.as_u8(), + OpcodeSpecification::new(Opcode::PUSH1, 0, 1, false, 1), + ), + ( + Opcode::PUSH2.as_u8(), + OpcodeSpecification::new(Opcode::PUSH2, 0, 1, false, 2), + ), + ( + Opcode::PUSH3.as_u8(), + OpcodeSpecification::new(Opcode::PUSH3, 0, 1, false, 3), + ), + ( + Opcode::PUSH4.as_u8(), + OpcodeSpecification::new(Opcode::PUSH4, 0, 1, false, 4), + ), + ( + Opcode::PUSH5.as_u8(), + OpcodeSpecification::new(Opcode::PUSH5, 0, 1, false, 5), + ), + ( + Opcode::PUSH6.as_u8(), + OpcodeSpecification::new(Opcode::PUSH6, 0, 1, false, 6), + ), + ( + Opcode::PUSH7.as_u8(), + OpcodeSpecification::new(Opcode::PUSH7, 0, 1, false, 7), + ), + ( + Opcode::PUSH8.as_u8(), + OpcodeSpecification::new(Opcode::PUSH8, 0, 1, false, 8), + ), + ( + Opcode::PUSH9.as_u8(), + OpcodeSpecification::new(Opcode::PUSH9, 0, 1, false, 9), + ), + ( + Opcode::PUSH10.as_u8(), + OpcodeSpecification::new(Opcode::PUSH10, 0, 1, false, 10), + ), + ( + Opcode::PUSH11.as_u8(), + OpcodeSpecification::new(Opcode::PUSH11, 0, 1, false, 11), + ), + ( + Opcode::PUSH12.as_u8(), + OpcodeSpecification::new(Opcode::PUSH12, 0, 1, false, 12), + ), + ( + Opcode::PUSH13.as_u8(), + OpcodeSpecification::new(Opcode::PUSH13, 0, 1, false, 13), + ), + ( + Opcode::PUSH14.as_u8(), + OpcodeSpecification::new(Opcode::PUSH14, 0, 1, false, 14), + ), + ( + Opcode::PUSH15.as_u8(), + OpcodeSpecification::new(Opcode::PUSH15, 0, 1, false, 15), + ), + ( + Opcode::PUSH16.as_u8(), + OpcodeSpecification::new(Opcode::PUSH16, 0, 1, false, 16), + ), + ( + Opcode::PUSH17.as_u8(), + OpcodeSpecification::new(Opcode::PUSH17, 0, 1, false, 17), + ), + ( + Opcode::PUSH18.as_u8(), + OpcodeSpecification::new(Opcode::PUSH18, 0, 1, false, 18), + ), + ( + Opcode::PUSH19.as_u8(), + OpcodeSpecification::new(Opcode::PUSH19, 0, 1, false, 19), + ), + ( + Opcode::PUSH20.as_u8(), + OpcodeSpecification::new(Opcode::PUSH20, 0, 1, false, 20), + ), + ( + Opcode::PUSH21.as_u8(), + OpcodeSpecification::new(Opcode::PUSH21, 0, 1, false, 21), + ), + ( + Opcode::PUSH22.as_u8(), + OpcodeSpecification::new(Opcode::PUSH22, 0, 1, false, 22), + ), + ( + Opcode::PUSH23.as_u8(), + OpcodeSpecification::new(Opcode::PUSH23, 0, 1, false, 23), + ), + ( + Opcode::PUSH24.as_u8(), + OpcodeSpecification::new(Opcode::PUSH24, 0, 1, false, 24), + ), + ( + Opcode::PUSH25.as_u8(), + OpcodeSpecification::new(Opcode::PUSH25, 0, 1, false, 25), + ), + ( + Opcode::PUSH26.as_u8(), + OpcodeSpecification::new(Opcode::PUSH26, 0, 1, false, 26), + ), + ( + Opcode::PUSH27.as_u8(), + OpcodeSpecification::new(Opcode::PUSH27, 0, 1, false, 27), + ), + ( + Opcode::PUSH28.as_u8(), + OpcodeSpecification::new(Opcode::PUSH28, 0, 1, false, 28), + ), + ( + Opcode::PUSH29.as_u8(), + OpcodeSpecification::new(Opcode::PUSH29, 0, 1, false, 29), + ), + ( + Opcode::PUSH30.as_u8(), + OpcodeSpecification::new(Opcode::PUSH30, 0, 1, false, 30), + ), + ( + Opcode::PUSH31.as_u8(), + OpcodeSpecification::new(Opcode::PUSH31, 0, 1, false, 31), + ), + ( + Opcode::PUSH32.as_u8(), + OpcodeSpecification::new(Opcode::PUSH32, 0, 1, false, 32), + ), + ( + Opcode::DUP1.as_u8(), + OpcodeSpecification::new(Opcode::DUP1, 1, 2, false, 0), + ), + ( + Opcode::DUP2.as_u8(), + OpcodeSpecification::new(Opcode::DUP2, 2, 3, false, 0), + ), + ( + Opcode::DUP3.as_u8(), + OpcodeSpecification::new(Opcode::DUP3, 3, 4, false, 0), + ), + ( + Opcode::DUP4.as_u8(), + OpcodeSpecification::new(Opcode::DUP4, 4, 5, false, 0), + ), + ( + Opcode::DUP5.as_u8(), + OpcodeSpecification::new(Opcode::DUP5, 5, 6, false, 0), + ), + ( + Opcode::DUP6.as_u8(), + OpcodeSpecification::new(Opcode::DUP6, 6, 7, false, 0), + ), + ( + Opcode::DUP7.as_u8(), + OpcodeSpecification::new(Opcode::DUP7, 7, 8, false, 0), + ), + ( + Opcode::DUP8.as_u8(), + OpcodeSpecification::new(Opcode::DUP8, 8, 9, false, 0), + ), + ( + Opcode::DUP9.as_u8(), + OpcodeSpecification::new(Opcode::DUP9, 9, 10, false, 0), + ), + ( + Opcode::DUP10.as_u8(), + OpcodeSpecification::new(Opcode::DUP10, 10, 11, false, 0), + ), + ( + Opcode::DUP11.as_u8(), + OpcodeSpecification::new(Opcode::DUP11, 11, 12, false, 0), + ), + ( + Opcode::DUP12.as_u8(), + OpcodeSpecification::new(Opcode::DUP12, 12, 13, false, 0), + ), + ( + Opcode::DUP13.as_u8(), + OpcodeSpecification::new(Opcode::DUP13, 13, 14, false, 0), + ), + ( + Opcode::DUP14.as_u8(), + OpcodeSpecification::new(Opcode::DUP14, 14, 15, false, 0), + ), + ( + Opcode::DUP15.as_u8(), + OpcodeSpecification::new(Opcode::DUP15, 15, 16, false, 0), + ), + ( + Opcode::DUP16.as_u8(), + OpcodeSpecification::new(Opcode::DUP16, 16, 17, false, 0), + ), + ( + Opcode::SWAP1.as_u8(), + OpcodeSpecification::new(Opcode::SWAP1, 2, 2, false, 0), + ), + ( + Opcode::SWAP2.as_u8(), + OpcodeSpecification::new(Opcode::SWAP2, 3, 3, false, 0), + ), + ( + Opcode::SWAP3.as_u8(), + OpcodeSpecification::new(Opcode::SWAP3, 4, 4, false, 0), + ), + ( + Opcode::SWAP4.as_u8(), + OpcodeSpecification::new(Opcode::SWAP4, 5, 5, false, 0), + ), + ( + Opcode::SWAP5.as_u8(), + OpcodeSpecification::new(Opcode::SWAP5, 6, 6, false, 0), + ), + ( + Opcode::SWAP6.as_u8(), + OpcodeSpecification::new(Opcode::SWAP6, 7, 7, false, 0), + ), + ( + Opcode::SWAP7.as_u8(), + OpcodeSpecification::new(Opcode::SWAP7, 8, 8, false, 0), + ), + ( + Opcode::SWAP8.as_u8(), + OpcodeSpecification::new(Opcode::SWAP8, 9, 9, false, 0), + ), + ( + Opcode::SWAP9.as_u8(), + OpcodeSpecification::new(Opcode::SWAP9, 10, 10, false, 0), + ), + ( + Opcode::SWAP10.as_u8(), + OpcodeSpecification::new(Opcode::SWAP10, 11, 11, false, 0), + ), + ( + Opcode::SWAP11.as_u8(), + OpcodeSpecification::new(Opcode::SWAP11, 12, 12, false, 0), + ), + ( + Opcode::SWAP12.as_u8(), + OpcodeSpecification::new(Opcode::SWAP12, 13, 13, false, 0), + ), + ( + Opcode::SWAP13.as_u8(), + OpcodeSpecification::new(Opcode::SWAP13, 14, 14, false, 0), + ), + ( + Opcode::SWAP14.as_u8(), + OpcodeSpecification::new(Opcode::SWAP14, 15, 15, false, 0), + ), + ( + Opcode::SWAP15.as_u8(), + OpcodeSpecification::new(Opcode::SWAP15, 16, 16, false, 0), + ), + ( + Opcode::SWAP16.as_u8(), + OpcodeSpecification::new(Opcode::SWAP16, 17, 17, false, 0), + ), + ( + Opcode::RETURN.as_u8(), + OpcodeSpecification::new(Opcode::RETURN, 2, 0, true, 0), + ), + ( + Opcode::REVERT.as_u8(), + OpcodeSpecification::new(Opcode::REVERT, 2, 0, true, 0), + ), // TODO: Determine if this is a terminator - assuming true for now. + ( + Opcode::INVALID.as_u8(), + OpcodeSpecification::new(Opcode::INVALID, 0, 0, false, 0), + ), + ( + Opcode::EOFMAGIC.as_u8(), + OpcodeSpecification::new(Opcode::EOFMAGIC, 0, 0, false, 0), + ), + ( + Opcode::SHA3.as_u8(), + OpcodeSpecification::new(Opcode::SHA3, 2, 1, false, 0), + ), + ( + Opcode::ADDRESS.as_u8(), + OpcodeSpecification::new(Opcode::ADDRESS, 0, 1, false, 0), + ), + ( + Opcode::BALANCE.as_u8(), + OpcodeSpecification::new(Opcode::BALANCE, 1, 1, false, 0), + ), + ( + Opcode::SELFBALANCE.as_u8(), + OpcodeSpecification::new(Opcode::SELFBALANCE, 0, 1, false, 0), + ), + ( + Opcode::BASEFEE.as_u8(), + OpcodeSpecification::new(Opcode::BASEFEE, 0, 1, false, 0), + ), + ( + Opcode::ORIGIN.as_u8(), + OpcodeSpecification::new(Opcode::ORIGIN, 0, 1, false, 0), + ), + ( + Opcode::CALLER.as_u8(), + OpcodeSpecification::new(Opcode::CALLER, 0, 1, false, 0), + ), + ( + Opcode::CALLVALUE.as_u8(), + OpcodeSpecification::new(Opcode::CALLVALUE, 0, 1, false, 0), + ), + ( + Opcode::GASPRICE.as_u8(), + OpcodeSpecification::new(Opcode::GASPRICE, 0, 1, false, 0), + ), + ( + Opcode::EXTCODESIZE.as_u8(), + OpcodeSpecification::new(Opcode::EXTCODESIZE, 1, 1, false, 0), + ), + ( + Opcode::EXTCODECOPY.as_u8(), + OpcodeSpecification::new(Opcode::EXTCODECOPY, 4, 0, false, 0), + ), + ( + Opcode::EXTCODEHASH.as_u8(), + OpcodeSpecification::new(Opcode::EXTCODEHASH, 1, 1, false, 0), + ), + ( + Opcode::RETURNDATASIZE.as_u8(), + OpcodeSpecification::new(Opcode::RETURNDATASIZE, 0, 1, false, 0), + ), + ( + Opcode::RETURNDATACOPY.as_u8(), + OpcodeSpecification::new(Opcode::RETURNDATACOPY, 3, 0, false, 0), + ), + ( + Opcode::BLOCKHASH.as_u8(), + OpcodeSpecification::new(Opcode::BLOCKHASH, 1, 1, false, 0), + ), + ( + Opcode::COINBASE.as_u8(), + OpcodeSpecification::new(Opcode::COINBASE, 0, 1, false, 0), + ), + ( + Opcode::TIMESTAMP.as_u8(), + OpcodeSpecification::new(Opcode::TIMESTAMP, 0, 1, false, 0), + ), + ( + Opcode::NUMBER.as_u8(), + OpcodeSpecification::new(Opcode::NUMBER, 0, 1, false, 0), + ), + ( + Opcode::DIFFICULTY.as_u8(), // TODO: Consume and produce not found on evm.code + OpcodeSpecification::new(Opcode::DIFFICULTY, 0, 0, false, 0), + ), + ( + Opcode::GASLIMIT.as_u8(), + OpcodeSpecification::new(Opcode::GASLIMIT, 0, 1, false, 0), + ), + ( + Opcode::SLOAD.as_u8(), + OpcodeSpecification::new(Opcode::SLOAD, 1, 1, false, 0), + ), + ( + Opcode::SSTORE.as_u8(), + OpcodeSpecification::new(Opcode::SSTORE, 1, 1, false, 0), + ), + ( + Opcode::GAS.as_u8(), + OpcodeSpecification::new(Opcode::GAS, 0, 1, false, 0), + ), + ( + Opcode::LOG0.as_u8(), + OpcodeSpecification::new(Opcode::LOG0, 2, 0, false, 0), + ), + ( + Opcode::LOG1.as_u8(), + OpcodeSpecification::new(Opcode::LOG1, 3, 0, false, 0), + ), + ( + Opcode::LOG2.as_u8(), + OpcodeSpecification::new(Opcode::LOG2, 4, 0, false, 0), + ), + ( + Opcode::LOG3.as_u8(), + OpcodeSpecification::new(Opcode::LOG3, 5, 0, false, 0), + ), + ( + Opcode::LOG4.as_u8(), + OpcodeSpecification::new(Opcode::LOG4, 6, 0, false, 0), + ), + ( + Opcode::CREATE.as_u8(), + OpcodeSpecification::new(Opcode::CREATE, 3, 1, false, 0), + ), + ( + Opcode::CREATE2.as_u8(), + OpcodeSpecification::new(Opcode::CREATE2, 4, 1, false, 0), + ), + ( + Opcode::CALL.as_u8(), + OpcodeSpecification::new(Opcode::CALL, 7, 1, false, 0), + ), + ( + Opcode::CALLCODE.as_u8(), + OpcodeSpecification::new(Opcode::CALLCODE, 7, 1, false, 0), + ), + ( + Opcode::DELEGATECALL.as_u8(), + OpcodeSpecification::new(Opcode::DELEGATECALL, 6, 1, false, 0), + ), + ( + Opcode::STATICCALL.as_u8(), + OpcodeSpecification::new(Opcode::STATICCALL, 6, 1, false, 0), + ), + ( + Opcode::SUICIDE.as_u8(), // TODO: Not found on evm.code + OpcodeSpecification::new(Opcode::SUICIDE, 0, 0, false, 0), + ), + ( + Opcode::CHAINID.as_u8(), + OpcodeSpecification::new(Opcode::CHAINID, 0, 1, false, 0), + ), + ] + .iter() + .cloned() + .collect(); + spec +} diff --git a/products/bluebell/evm_assembly/src/types.rs b/products/bluebell/evm_assembly/src/types.rs new file mode 100644 index 000000000..f8f96b617 --- /dev/null +++ b/products/bluebell/evm_assembly/src/types.rs @@ -0,0 +1,138 @@ +use core::str::FromStr; + +use primitive_types::U256; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use serde_json::Value; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum EvmTypeValue { + Uint32(u32), + Uint64(u64), + Uint256(U256), + String(String), + // Address(Address), + // Add more types as needed + StackReference(u32), +} + +impl Serialize for EvmTypeValue { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + // TODO: Update to match whatever is the standard for Ethereum + match self { + EvmTypeValue::Uint32(value) => serializer.serialize_u32(*value), + EvmTypeValue::Uint64(value) => serializer.serialize_u64(*value), + EvmTypeValue::Uint256(value) => { + let s = value.to_string(); + serializer.serialize_str(&s) + } + EvmTypeValue::String(value) => serializer.serialize_str(value), + EvmTypeValue::StackReference(value) => serializer.serialize_u32(*value), + } + } +} + +impl<'de> Deserialize<'de> for EvmTypeValue { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + // TODO: Update to match whatever is the standard for Ethereum + let value: Value = Deserialize::deserialize(deserializer)?; + + match value { + Value::Number(num) => { + if num.is_u64() { + Ok(EvmTypeValue::Uint64(num.as_u64().unwrap())) + } else { + Err(serde::de::Error::custom("Invalid integer value")) + } + } + Value::String(s) => Ok(EvmTypeValue::String(s)), + _ => Err(serde::de::Error::custom("Unsupported type")), + } + } +} + +impl EvmTypeValue { + fn pad_byte_array(bytes: Vec) -> Vec { + let padding_size = 32 - bytes.len(); + let mut ret = vec![0; padding_size]; + ret.extend(bytes); + ret + } + + pub fn to_bytes(&self) -> Vec { + Self::pad_byte_array(self.to_bytes_unpadded()) + } + + pub fn to_bytes_unpadded(&self) -> Vec { + match self { + EvmTypeValue::Uint32(value) => value.to_be_bytes().to_vec(), + EvmTypeValue::Uint64(value) => value.to_be_bytes().to_vec(), + EvmTypeValue::String(value) => value.as_bytes().to_vec(), + // EvmTypeValue::Uint256(value) => pad_byte_array(value.to_big_endian(/* &mut [u8] */).to_vec()), + // TODO EvmTypeValue::Address(value) => pad_byte_array(value.as_bytes().to_vec()), + // Handle other types here + _ => panic!("Type conversion not implemented."), + } + } +} + +#[derive(Clone, Debug)] +pub enum EvmType { + Uint(usize), + Int(usize), + Bytes(usize), + Address, + Bool, + String, +} + +impl EvmType { + pub fn signature(&self) -> String { + match self { + EvmType::Uint(size) => format!("uint{}", size).to_string(), + EvmType::Int(size) => format!("int{}", size).to_string(), + EvmType::Bytes(size) => format!("bytes{}", size).to_string(), + EvmType::Address => "address".to_string(), + EvmType::Bool => "bool".to_string(), + EvmType::String => "string".to_string(), + } + } +} + +impl FromStr for EvmType { + type Err = &'static str; + + fn from_str(s: &str) -> Result { + let s_lower = s.to_ascii_lowercase(); + + if s_lower == "address" { + Ok(EvmType::Address) + } else if s_lower == "bool" { + Ok(EvmType::Bool) + } else if s_lower == "string" { + Ok(EvmType::String) + } else if s_lower.starts_with("uint") { + s[4..] + .parse::() + .map(|size| EvmType::Uint(size)) + .map_err(|_| "Error parsing Uint size") + } else if s_lower.starts_with("int") { + s[3..] + .parse::() + .map(|size| EvmType::Int(size)) + .map_err(|_| "Error parsing Int size") + } else if s_lower.starts_with("bystr") { + s[5..] + .parse::() + .map(|size| EvmType::Bytes(size)) + .map_err(|_| "Error parsing Bytes size") + } else { + Err("Unknown type") + } + } +} diff --git a/products/bluebell/evm_assembly/tests/evm_basic_run.rs b/products/bluebell/evm_assembly/tests/evm_basic_run.rs new file mode 100644 index 000000000..742a504f5 --- /dev/null +++ b/products/bluebell/evm_assembly/tests/evm_basic_run.rs @@ -0,0 +1,123 @@ +use std::{collections::BTreeMap, str::FromStr}; + +use evm::{ + backend::Backend, + executor::stack::{PrecompileFailure, PrecompileFn, PrecompileOutput, PrecompileOutputType}, + Context, ExitError, ExitSucceed, +}; +use evm_assembly::{compiler_context::EvmCompilerContext, types::EvmTypeValue}; +use primitive_types::H160; + +// See +// https://odra.dev/blog/evm-at-risc0/ +// https://github.com/Zilliqa/zq2/blob/main/zilliqa/src/exec.rs#L152 + +// Transaction spec: +// https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding + +fn test_precompile( + input: &[u8], + gas_limit: Option, + _contex: &Context, + _backend: &dyn Backend, + _is_static: bool, +) -> Result<(PrecompileOutput, u64), PrecompileFailure> { + let gas_needed = match required_gas(input) { + Ok(i) => i, + Err(err) => return Err(PrecompileFailure::Error { exit_status: err }), + }; + + if let Some(gas_limit) = gas_limit { + if gas_limit < gas_needed { + return Err(PrecompileFailure::Error { + exit_status: ExitError::OutOfGas, + }); + } + } + + Ok(( + PrecompileOutput { + output_type: PrecompileOutputType::Exit(ExitSucceed::Returned), + output: input.to_vec(), + }, + gas_needed, + )) +} + +fn required_gas(_input: &[u8]) -> Result { + Ok(20) +} + +pub fn get_precompiles() -> BTreeMap { + BTreeMap::from([( + H160::from_str("0000000000000000000000000000000000000005").unwrap(), + test_precompile as PrecompileFn, + )]) +} + +#[cfg(test)] +mod tests { + use std::str::FromStr; + + use evm_assembly::{executor::EvmExecutor, types::EvmType, EvmByteCodeBuilder}; + + use crate::{test_precompile, EvmCompilerContext, EvmTypeValue}; + + #[test] + fn blah() { + let mut specification = EvmCompilerContext::new(); + specification.declare_integer("Int8", 8); + specification.declare_integer("Int16", 16); + specification.declare_integer("Int32", 32); + specification.declare_integer("Int64", 64); + specification.declare_unsigned_integer("Uint8", 8); + specification.declare_unsigned_integer("Uint16", 16); + specification.declare_unsigned_integer("Uint32", 32); + specification.declare_unsigned_integer("Uint64", 64); + specification.declare_unsigned_integer("Uint256", 256); + + let _ = specification + .declare_function("fibonacci", ["Uint256"].to_vec(), "Uint256") + .attach_runtime(|| test_precompile); + + /////// + // Executable + let mut builder = EvmByteCodeBuilder::new(&mut specification, true); + + builder + .define_function("hello", ["Uint256"].to_vec(), "Uint256") + .build(|code_builder| { + let mut entry = code_builder.new_evm_block("entry"); + let mut success = code_builder.new_evm_block("success"); + let mut finally = code_builder.new_evm_block("finally"); + + // EvmBlock::new(None, [].to_vec().into_iter().collect(), "entry"); + + let fnc = code_builder.context.get_function("fibonacci").unwrap(); + entry.call( + fnc, + ["Uint256".to_string()] + .to_vec() + .iter() + .map(|s| EvmType::from_str(s).unwrap()) + .collect(), + ); + + entry.push1([1].to_vec()); + entry.jump_if_to(&success.name); + entry.jump_to(&finally.name); + + success.jump_to(&finally.name); + + finally.r#return(); + [entry, success, finally].to_vec() + }); + + let executable = builder.build(); + + let executor = EvmExecutor::new(&specification, executable); + executor.execute("hello", [EvmTypeValue::Uint32(10)].to_vec()); + + assert!(false); + } +} diff --git a/products/bluebell/evm_assembly/tests/evm_decompile.rs b/products/bluebell/evm_assembly/tests/evm_decompile.rs new file mode 100644 index 000000000..0f4d83b12 --- /dev/null +++ b/products/bluebell/evm_assembly/tests/evm_decompile.rs @@ -0,0 +1,23 @@ +#[cfg(test)] +mod tests { + use evm_assembly::{compiler_context::EvmCompilerContext, EvmByteCodeBuilder}; + + #[test] + fn blah() { + let mut specification = EvmCompilerContext::new(); + specification.declare_integer("Int8", 8); + specification.declare_integer("Int16", 16); + specification.declare_integer("Int32", 32); + specification.declare_integer("Int64", 64); + specification.declare_unsigned_integer("Uint8", 8); + specification.declare_unsigned_integer("Uint16", 16); + specification.declare_unsigned_integer("Uint32", 32); + specification.declare_unsigned_integer("Uint64", 64); + specification.declare_unsigned_integer("Uint256", 256); + + let bytes = hex::decode("608060405234801561001057600080fd5b506004361061002b5760003560e01c80633a19a7c614610030575b600080fd5b61003861004e565b6040516100459190610107565b60405180910390f35b60606000604051806101400160405280610114815260200161012a610114913990508091505090565b600081519050919050565b600082825260208201905092915050565b60005b838110156100b1578082015181840152602081019050610096565b60008484015250505050565b6000601f19601f8301169050919050565b60006100d982610077565b6100e38185610082565b93506100f3818560208601610093565b6100fc816100bd565b840191505092915050565b6000602082019050818103600083015261012181846100ce565b90509291505056fe48656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c642048656c6c6f20576f726c6420a26469706673582212209e44d7f3c5ad5ed44f2d09f524e9aea6f2a72997367b5def3f0952f557cf658864736f6c63430008140033").unwrap(); + let _builder = EvmByteCodeBuilder::from_bytes(&mut specification, bytes); + + assert!(false); + } +} diff --git a/products/bluebell/evm_assembly/tests/evm_value_type_serialization.rs b/products/bluebell/evm_assembly/tests/evm_value_type_serialization.rs new file mode 100644 index 000000000..c5705bfce --- /dev/null +++ b/products/bluebell/evm_assembly/tests/evm_value_type_serialization.rs @@ -0,0 +1,20 @@ +#[cfg(test)] +mod tests { + use evm_assembly::types::EvmTypeValue; + + #[test] + fn blah() { + let values: Vec = vec![ + EvmTypeValue::Uint64(123), + EvmTypeValue::String("Hello".to_string()), + EvmTypeValue::Uint64(11), + ]; + // TODO: Update the serialization format + let json_string = serde_json::to_string(&values).expect("Failed to serialize"); + assert!(json_string == "[123,\"Hello\",11]"); + + let deserialized: Vec = + serde_json::from_str(&json_string).expect("Failed to deserialize"); + assert!(deserialized == values); + } +} diff --git a/products/bluebell/examples/add.scilla b/products/bluebell/examples/add.scilla new file mode 100644 index 000000000..beaf8059e --- /dev/null +++ b/products/bluebell/examples/add.scilla @@ -0,0 +1,11 @@ +scilla_version 0 + +library TheLibraryPart + +contract TheContractPart() + +transition hello() + a = Uint64 23; + b = Uint64 209; + x = builtin fibonacci a b +end diff --git a/products/bluebell/examples/builtin-type-deduction.scilla b/products/bluebell/examples/builtin-type-deduction.scilla new file mode 100644 index 000000000..1a3c72142 --- /dev/null +++ b/products/bluebell/examples/builtin-type-deduction.scilla @@ -0,0 +1,10 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld() + +transition setHello (a : Uint64, c: Uint64) + b = Uint64 127; + d = builtin add b c; + x = builtin fibonacci a d +end diff --git a/products/bluebell/examples/getting-started.md b/products/bluebell/examples/getting-started.md new file mode 100644 index 000000000..ccbb9bf23 --- /dev/null +++ b/products/bluebell/examples/getting-started.md @@ -0,0 +1,111 @@ +# Getting started + +## Prerequisites + +Before you proceed, ensure you have the following prerequisites installed on +your system: + +- For CLI: Install Rust by following the instructions from + [Rust's official documentation](https://rust-lang.org/). + +- For Playground: + - Install Rust nightly: `rustup install nightly` + - Install `trunk`: `cargo install trunk` + - Install WebAssembly (wasm): `rustup target add wasm32-unknown-unknown` + - Install `tailwindcss`: `npm install tailwindcss` + +### Installation + +To compile the project, run: + +``` +cargo build +``` + +### Run CLI + +To run the CLI, use the following command: + +``` +cargo run --bin cli -- examples/hello-world.scilla --runtime-enable debug run --backend evm --entry-point "HelloDebugModule::setHello" --args "[\"Zilliqa ❤️ Rocks\"]" +``` + +### Run Playground + +Navigate to the playground directory and set up the environment: + +``` +cd playground +NODE_ENV=production tailwindcss -c ./tailwind.config.js -o ./tailwind.css --minify +trunk serve +``` + +This will serve the playground for you to interact with. + +## Hello world with Scilla + +Here's a simple Hello World example in Scilla: + +```scilla +scilla_version 0 + +library HelloDebugModule + +contract HelloDebugModule() + +transition setHello (msg : Uint64) + x = builtin print msg +end +``` + +You can run the above code using: + +``` +cargo run --bin cli -- examples/hello-world.scilla --runtime-enable debug run --backend evm --entry-point "HelloDebugModule::setHello" --args "[\"Zilliqa ❤️ Rocks\"]" +``` + +## Working with State + +The following contract demonstrates how to work with state in Scilla: + +```scilla +scilla_version 0 + +library HelloState + +contract HelloState() + +field welcome_msg : Uint64 = Uint64 0 + +transition setHello (msg : Uint64) + welcome_msg := msg; + msg <- welcome_msg; + x = builtin print msg +end +``` + +## Default values + +Demonstrating default values in Scilla: + +```scilla +scilla_version 0 + +library DefaultValuesExample + +contract DefaultValuesContract() + +field data : Uint128 = Uint128 100 + +transition UpdateData(newData : Option Uint128) + match newData with + | Some val => + data := val + | None => + (* Do nothing, keep the default value *) + end +end +``` + +This completes the basic introductory tutorial for Scilla. Make sure to consult +the official documentation for more detailed insights. diff --git a/products/bluebell/examples/hello-world.scilla b/products/bluebell/examples/hello-world.scilla new file mode 100644 index 000000000..4f2d9f628 --- /dev/null +++ b/products/bluebell/examples/hello-world.scilla @@ -0,0 +1,8 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld() + +transition setHello (msg : String) + print msg +end \ No newline at end of file diff --git a/products/bluebell/examples/target-final.scilla b/products/bluebell/examples/target-final.scilla new file mode 100644 index 000000000..4fd7d5ddd --- /dev/null +++ b/products/bluebell/examples/target-final.scilla @@ -0,0 +1,14 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld(owner: ByStr20) + +field welcome_msg : String = "" + +transition setHello (msg : String) + is_owner = builtin eq owner _sender; + match is_owner with + | True => + welcome_msg := msg; + end +end \ No newline at end of file diff --git a/products/bluebell/examples/target0.scilla b/products/bluebell/examples/target0.scilla new file mode 100644 index 000000000..dd7a27182 --- /dev/null +++ b/products/bluebell/examples/target0.scilla @@ -0,0 +1,12 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld() + +transition setHello (a : Uint64, b: Uint64) + x = builtin fibonacci a b; + x = builtin print a; + x = builtin print a +end + + diff --git a/products/bluebell/examples/target1.scilla b/products/bluebell/examples/target1.scilla new file mode 100644 index 000000000..b71088824 --- /dev/null +++ b/products/bluebell/examples/target1.scilla @@ -0,0 +1,21 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 +transition setHelloImpl(msg: Uint64) + welcome_msg := msg +end + +transition setHello (msg : Uint64) + setHelloImpl msg; + msg <- welcome_msg; + x = builtin print msg +end + + +transition printState() + msg <- welcome_msg; + x = builtin print msg +end diff --git a/products/bluebell/examples/target2.scilla b/products/bluebell/examples/target2.scilla new file mode 100644 index 000000000..4fd7d5ddd --- /dev/null +++ b/products/bluebell/examples/target2.scilla @@ -0,0 +1,14 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld(owner: ByStr20) + +field welcome_msg : String = "" + +transition setHello (msg : String) + is_owner = builtin eq owner _sender; + match is_owner with + | True => + welcome_msg := msg; + end +end \ No newline at end of file diff --git a/products/bluebell/examples/target3.scilla b/products/bluebell/examples/target3.scilla new file mode 100644 index 000000000..a0e8956ad --- /dev/null +++ b/products/bluebell/examples/target3.scilla @@ -0,0 +1,13 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld() + +field welcome_msg : Uint64 = Uint64 0 + +transition setHello (msg : Uint64) + print msg; + (* value = "Hello world"; + x = builtin print value; *) + welcome_msg := msg +end \ No newline at end of file diff --git a/products/bluebell/examples/target4.scilla b/products/bluebell/examples/target4.scilla new file mode 100644 index 000000000..e18b8560d --- /dev/null +++ b/products/bluebell/examples/target4.scilla @@ -0,0 +1,8 @@ +scilla_version 0 + +library HelloWorld +contract HelloWorld() + +transition setHello (msg : Uint64) + print msg +end \ No newline at end of file diff --git a/products/bluebell/examples/target5.scilla b/products/bluebell/examples/target5.scilla new file mode 100644 index 000000000..f7481949f --- /dev/null +++ b/products/bluebell/examples/target5.scilla @@ -0,0 +1,13 @@ +scilla_version 0 + +library HelloDebugModule +contract HelloDebugModule() + +field welcome_msg : Uint64 = Uint64 0 + +transition setHello (msg : Uint64) + welcome_msg := msg; + msg <- welcome_msg; + print msg +end + diff --git a/products/bluebell/examples/target6.scilla b/products/bluebell/examples/target6.scilla new file mode 100644 index 000000000..f570dd5ac --- /dev/null +++ b/products/bluebell/examples/target6.scilla @@ -0,0 +1,24 @@ +scilla_version 0 + +library HelloWorld +type Bool = + | True + | False + + + +contract HelloWorld() + + +field welcome_msg : Uint64 = Uint64 0 + +transition setHello (msg : Uint64) + is_owner = False; + match is_owner with + | True => + print msg + | False => + print msg; + print msg + end +end diff --git a/products/bluebell/examples/target7.scilla b/products/bluebell/examples/target7.scilla new file mode 100644 index 000000000..ecbcc4d6e --- /dev/null +++ b/products/bluebell/examples/target7.scilla @@ -0,0 +1,8 @@ +scilla_version 0 + +contract HelloWorld() + +transition setHello (msg : Uint64) + print msg; + print msg +end diff --git a/products/bluebell/examples/target8.scilla b/products/bluebell/examples/target8.scilla new file mode 100644 index 000000000..b3ab1bbfd --- /dev/null +++ b/products/bluebell/examples/target8.scilla @@ -0,0 +1,20 @@ +scilla_version 0 + +contract HelloWorld() +field welcome_msg : Uint64 = Uint64 0 + +transition setValue () + x = Uint64 1337; + welcome_msg := x +end + +transition readValue () + x <- welcome_msg; + print x +end + + +transition setHello () + setValue; + readValue +end diff --git a/products/bluebell/examples/target9.scilla b/products/bluebell/examples/target9.scilla new file mode 100644 index 000000000..7403a40ec --- /dev/null +++ b/products/bluebell/examples/target9.scilla @@ -0,0 +1,23 @@ +scilla_version 0 + +contract HelloWorld() +field welcome_msg : Uint64 = Uint64 0 + +transition setValue (x: Uint64) + welcome_msg := x +end + +transition readValue () + x <- welcome_msg; + print x +end + + +transition setHello () + x = Uint64 1337; + setValue x; + readValue; + x = Uint64 7331; + setValue x; + readValue +end diff --git a/products/bluebell/nginx/default.conf b/products/bluebell/nginx/default.conf new file mode 100644 index 000000000..3a91265aa --- /dev/null +++ b/products/bluebell/nginx/default.conf @@ -0,0 +1,26 @@ +server { + listen 80; + server_name localhost; + + + rewrite ^/docs/(.*)$ /$1 permanent; + + location / { + root /usr/share/nginx/html; + index index.html; + + try_files $uri $uri/index.html =404; + } + + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + } + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/products/bluebell/playground/.github/workflows/pr_check.yml b/products/bluebell/playground/.github/workflows/pr_check.yml new file mode 100644 index 000000000..ce06f41b5 --- /dev/null +++ b/products/bluebell/playground/.github/workflows/pr_check.yml @@ -0,0 +1,32 @@ +name: pr_check + +on: + workflow_dispatch: + push: + pull_request: + branches: [master] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: wasm32-unknown-unknown + override: true + profile: minimal + - name: Install trunk + uses: jetli/trunk-action@v0.1.0 + with: + version: "latest" + - name: Build + run: trunk build + - name: Run tests + run: cargo test --verbose diff --git a/products/bluebell/playground/.gitignore b/products/bluebell/playground/.gitignore new file mode 100644 index 000000000..b64faa932 --- /dev/null +++ b/products/bluebell/playground/.gitignore @@ -0,0 +1,3 @@ +/dist/ +/target/ +tailwind.css \ No newline at end of file diff --git a/products/bluebell/playground/Cargo.lock b/products/bluebell/playground/Cargo.lock new file mode 100644 index 000000000..58509ff08 --- /dev/null +++ b/products/bluebell/playground/Cargo.lock @@ -0,0 +1,897 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.26", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] +name = "gloo" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d" +dependencies = [ + "gloo-console", + "gloo-dialogs", + "gloo-events", + "gloo-file", + "gloo-history", + "gloo-net", + "gloo-render", + "gloo-storage", + "gloo-timers", + "gloo-utils", + "gloo-worker", +] + +[[package]] +name = "gloo-console" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "gloo-events", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfd137a4b629e72b8c949ec56c71ea9bd5491cc66358a0a7787e94875feec71" +dependencies = [ + "gloo-events", + "gloo-utils", + "serde", + "serde-wasm-bindgen", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3000ef231a67d5bfee6b35f2c0f6f5c8d45b3381ef5bbbea603690ec4e539762" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "http", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "implicit-clone" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40fc102e70475c320b185cd18c1e48bba2d7210b63970a4d581ef903e4368ef7" +dependencies = [ + "indexmap", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pin-project" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.26", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a829027bd95e54cfe13e3e258a1ae7b645960553fb82b75ff852c29688ee595b" +dependencies = [ + "futures", + "rustversion", + "thiserror", +] + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prokio" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" +dependencies = [ + "futures", + "gloo", + "num_cpus", + "once_cell", + "pin-project", + "pinned", + "tokio", + "tokio-stream", + "wasm-bindgen-futures", +] + +[[package]] +name = "quote" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "serde" +version = "1.0.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.26", +] + +[[package]] +name = "serde_json" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.26", +] + +[[package]] +name = "tokio" +version = "1.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +dependencies = [ + "autocfg", + "backtrace", + "pin-project-lite", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.26", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "trunk-template" +version = "0.1.0" +dependencies = [ + "yew", +] + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.26", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.26", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "yew" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dbecfe44343b70cc2932c3eb445425969ae21754a8ab3a0966981c1cf7af1cc" +dependencies = [ + "console_error_panic_hook", + "futures", + "gloo", + "implicit-clone", + "indexmap", + "js-sys", + "prokio", + "rustversion", + "serde", + "slab", + "thiserror", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-macro" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64c253c1d401f1ea868ca9988db63958cfa15a69f739101f338d6f05eea8301" +dependencies = [ + "boolinator", + "once_cell", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/products/bluebell/playground/Cargo.toml b/products/bluebell/playground/Cargo.toml new file mode 100644 index 000000000..b7f7b5b87 --- /dev/null +++ b/products/bluebell/playground/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "bluebell-playground" +version = "0.1.0" +edition = "2021" + + +[build] +target = "./index.html" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies] +yew = { version = "0.20.0", features = ["csr"] } +yew-router = "0.17.0" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +wasm-bindgen = "0.2" +wasm-bindgen-futures = "0.4" +serde-wasm-bindgen = "0.4" +js-sys = "0.3" +web-sys = { version = "0.3.64" } +gloo-utils = "0.1.7" +gloo-console = "0.2.3" +regex = "1" +getrandom = { version = "0.2", features = ["js"] } +yewdux = "0.9.3" +gloo-timers = "0.3" + +log = "0.4.6" +wasm-logger = "0.2.0" + +# Bluebell +bluebell = { path = "../core" } + +# EVM +evm = { git = "https://github.com/Zilliqa/evm.git", branch="master" } +evm_assembly = { path = "../evm_assembly" } +primitive-types = { version = "0.12", default-features = false } +hex = "0.4" \ No newline at end of file diff --git a/products/bluebell/playground/README.md b/products/bluebell/playground/README.md new file mode 100644 index 000000000..905a9550e --- /dev/null +++ b/products/bluebell/playground/README.md @@ -0,0 +1,89 @@ +# Yew Trunk Template + +This is a fairly minimal template for a Yew app that's built with [Trunk]. + +## Usage + +For a more thorough explanation of Trunk and its features, please head over to +the [repository][trunk]. + +### Prerequisites + +```bash +yarn global add tailwindcss +``` + +### Installation + +If you don't already have it installed, it's time to install Rust: +. The rest of this guide assumes a +typical Rust installation which contains both `rustup` and Cargo. + +To compile Rust to WASM, we need to have the `wasm32-unknown-unknown` target +installed. If you don't already have it, install it with the following command: + +```bash +rustup target add wasm32-unknown-unknown +``` + +Now that we have our basics covered, it's time to install the star of the show: +[Trunk]. Simply run the following command to install it: + +```bash +cargo install trunk wasm-bindgen-cli +``` + +That's it, we're done! + +### Running + +```bash +trunk serve +``` + +Rebuilds the app whenever a change is detected and runs a local server to host +it. + +There's also the `trunk watch` command which does the same thing but without +hosting it. + +### Release + +```bash +trunk build --release +``` + +This builds the app in release mode similar to `cargo build --release`. You can +also pass the `--release` flag to `trunk serve` if you need to get every last +drop of performance. + +Unless overwritten, the output will be located in the `dist` directory. + +## Using this template + +There are a few things you have to adjust when adopting this template. + +### Remove example code + +The code in [src/main.rs](src/main.rs) specific to the example is limited to +only the `view` method. There is, however, a fair bit of Sass in +[index.scss](index.scss) you can remove. + +### Update metadata + +Update the `name`, `version`, `description` and `repository` fields in the +[Cargo.toml](Cargo.toml) file. The [index.html](index.html) file also contains a +`` tag that needs updating. + +Finally, you should update this very `README` file to be about your app. + +### License + +The template ships with both the Apache and MIT license. If you don't want to +have your app dual licensed, just remove one (or both) of the files and update +the `license` field in `Cargo.toml`. + +There are two empty spaces in the MIT license you need to fill out: ``and`Troels +F. Rønnow <troels@wonop.com>`. + +[trunk]: https://github.com/thedodd/trunk diff --git a/products/bluebell/playground/bonnie.toml b/products/bluebell/playground/bonnie.toml new file mode 100644 index 000000000..6c66cfd7c --- /dev/null +++ b/products/bluebell/playground/bonnie.toml @@ -0,0 +1,38 @@ +version="0.3.2" + +[scripts] +## Builds Tailwind CSS for development (no purging) +build-tailwind-dev = [ + "tailwindcss -c ./tailwind.config.js -o ./tailwind.css" +] + +## Builds Tailwind CSS for production (maximum purging and minification) +build-tailwind-prod = [ + "NODE_ENV=production tailwindcss -c ./tailwind.config.js -o ./tailwind.css --minify" +] + + +## Builds Tailwind CSS for development usage +setup.subcommands.tailwind = "bonnie build-tailwind-dev" +setup.subcommands.prompt-tailwind = "echo \"Have you installed the Tailwind CLI globally with 'npm i -g tailwindcss' or 'yarn global add tailwindcss'?\"" +setup.order = """ +tailwind { + Failure => prompt-tailwind +} +""" + +## Builds everything +build.cmd = "cargo build" + +## Builds the frontend +build.subcommands.frontend = [ + "bonnie build-tailwind-prod", + "cargo build" +] + +## Runs the frontend, watching for changes (uses Trunk) +## Tailwind is assumed to be set up after `setup` +run.subcommands.frontend = [ + "bonnie build-tailwind-dev", + "trunk serve" +] \ No newline at end of file diff --git a/products/bluebell/playground/img/logo.png b/products/bluebell/playground/img/logo.png new file mode 100644 index 000000000..ec53a4861 Binary files /dev/null and b/products/bluebell/playground/img/logo.png differ diff --git a/products/bluebell/playground/index.html b/products/bluebell/playground/index.html new file mode 100644 index 000000000..e86b35bab --- /dev/null +++ b/products/bluebell/playground/index.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html class="h-full bg-white"> + <head> + <meta charset="utf-8" /> + <title>Scilla Playground + + + + + + + diff --git a/products/bluebell/playground/index.scss b/products/bluebell/playground/index.scss new file mode 100644 index 000000000..1f2a2b795 --- /dev/null +++ b/products/bluebell/playground/index.scss @@ -0,0 +1,69 @@ +html, +body { + height: 100%; + margin: 0; +} + +body { + align-items: center; + display: flex; + justify-content: center; + + background: linear-gradient(to bottom right, #444444, #009a5b); +} + +main { + color: #fff6d5; + font-family: sans-serif; + text-align: center; +} + +.editor-container { + position: relative; +} + +.highlighted-code { + /* This is your styled code output from Prism.js */ +} + +.overlay-textarea { + position: absolute; + top: 0; + left: 0; + background: transparent; + color: transparent; /* Hide the actual text but still show cursor and selection */ + border: none; + width: 100%; + height: 100%; + overflow: hidden; +} + +.error-annotation { + position: absolute; + left: 100%; /* or wherever you want it relative to the code line */ + color: red; +} + +textarea:focus { + caret-color: green; /* or any other contrasting color */ +} + +.token.keyword { + color: #6699cc; +} +.token.string { + color: #f8c555; +} +.token.number { + color: #f77; +} +.token.boolean { + color: #116611; +} +.token.operator { + color: #a67f59; +} +.token.comment { + color: #999; + font-style: italic; +} diff --git a/products/bluebell/playground/src/app.rs b/products/bluebell/playground/src/app.rs new file mode 100644 index 000000000..ca8cc7b3f --- /dev/null +++ b/products/bluebell/playground/src/app.rs @@ -0,0 +1,449 @@ +use std::{collections::HashMap, rc::Rc}; + +use gloo_timers::callback::Timeout; +use web_sys::HtmlInputElement; +use yew::{prelude::*, virtual_dom::VNode}; +use yewdux::prelude::*; + +use crate::{ + bytecode_view::ByteCodeView, + dropdown::Dropdown, + examples::EXAMPLES, + logger::LoggerView, + machine_view::MachineView, + state::{ExecutionStatus, State, StateMessage}, + vm_remote::VmRemote, +}; + +#[derive(Clone, PartialEq)] +pub struct MenuItem { + pub icon: VNode, + pub text: String, + pub index: u32, +} + +#[derive(Properties, Clone, PartialEq)] +pub struct AppLayoutProps { + pub children: Children, + pub on_select_view: Callback, + pub menu: Vec, + pub view: u32, +} + +pub struct AppLayout { + props: AppLayoutProps, + _dispatch: Dispatch, + state: Rc, +} + +pub enum AppLayoutMessage { + UpdateState(Rc), +} + +impl Component for AppLayout { + type Message = AppLayoutMessage; + type Properties = AppLayoutProps; + + fn create(ctx: &Context) -> Self { + let props = ctx.props().clone(); + + let state_callback = ctx.link().callback(AppLayoutMessage::UpdateState); + let dispatch = Dispatch::::subscribe(state_callback); + + Self { + props: props.clone(), + state: dispatch.get(), + _dispatch: dispatch, + } + } + + fn changed(&mut self, ctx: &Context, _props: &Self::Properties) -> bool { + self.props = ctx.props().clone(); + true + } + + fn update(&mut self, _ctx: &Context, msg: Self::Message) -> bool { + match msg { + AppLayoutMessage::UpdateState(state) => { + self.state = state; + } + } + true + } + + fn view(&self, _ctx: &Context) -> Html { + let generate_menu = { + let selected_view = self.props.view as u32; + move |item: &MenuItem, is_desktop: bool| { + let mut item_class = if is_desktop { + "text-gray-400 hover:text-white hover:bg-gray-800 group flex gap-x-3 rounded-md p-3 text-sm leading-6 font-semibold".to_string() + } else { + "text-gray-400 hover:text-white hover:bg-gray-800 group flex gap-x-3 rounded-md p-2 text-sm leading-6 font-semibold".to_string() + }; + + if item.index == selected_view { + item_class.push_str(" bg-gray-700"); + } + let index = item.index; + + html! { +
  • + + { item.icon.clone() } + { if !is_desktop { html! { &item.text } } else { html! {} } } + +
  • + } + } + }; + + html! { +
    + + + /* Static sidebar for desktop */ + + +
    + +
    {"Dashboard"}
    + + {"Your profile"} + + +
    + +
    +
    +
    + { for self.props.children.iter() } + /* Main area */ +
    +
    +
    + + { + if let Some(_) = &self.state.executable { + html! { + + + } + } else { + html! {} + } + } +
    + } + } +} + +fn line_to_pixel_offset(line: usize) -> usize { + const FONT_SIZE: usize = 24; /* font size in pixels */ + const LINE_HEIGHT: f32 = 1.0; /* line height as a multiplier */ + (line - 1) * (FONT_SIZE as f32 * LINE_HEIGHT) as usize +} + +#[function_component(App)] +pub fn app() -> Html { + let state = use_store_value::(); + let source_code = &state.source_code; + let bytecode_hex = &state.bytecode_hex; + let program_counter = state.program_counter as usize; + + let current_view_state: UseStateHandle = use_state(|| 0); + let current_view = current_view_state.clone(); + let set_current_view = move |i| { + current_view_state.set(i); + }; + let exit_message = &state.exit_message; + + let compile_button_click = { + let source_code = source_code.clone(); + + Callback::from(move |_| { + let dispatch = Dispatch::::new(); + dispatch.reduce_mut(move |s| s.compiling = true); + + // Adding delay for improved UX + let source_code = source_code.clone(); + Timeout::new(500, move || { + let dispatch = Dispatch::::new(); + dispatch.apply(StateMessage::CompileCode { + source_code: source_code.to_string(), + }); + }) + .forget(); + }) + }; + + let target_input_value = |e: &Event| { + let input: HtmlInputElement = e.target_unchecked_into(); + input.value() + }; + + let handle_source_code_change = { + Dispatch::::new().reduce_mut_callback_with(move |s, e: InputEvent| { + let value = target_input_value(&e); + s.source_code = value + }) + }; + + let source_code: String = source_code.to_string(); + let error_map: HashMap = HashMap::new(); + + let menu : Vec< MenuItem > = [ + MenuItem { + icon: html!{ + + + + }, + text: "Code Editor".to_string(), + index: 0 + }, + MenuItem { + icon: html!{ + + + + + }, + text: "Virtual Machine".to_string(), + index: 1 + }, + MenuItem { + icon: html!{ + + + + + }, + text: "Bytecode".to_string(), + index: 2 + } + + ].to_vec(); + + let is_compiling = state.compiling; + let show_console = true; + + html! { + + { + if let Some((error_code, exit_message)) = exit_message { + html! { +
    +
    "pointer-events-auto flex items-center justify-between gap-x-6 bg-green-600 px-6 py-2.5 sm:rounded-xl sm:py-3 sm:pl-4 sm:pr-3.5", + // Unused ExecutionStatus::Paused => "pointer-events-auto flex items-center justify-between gap-x-6 bg-yellow-600 px-6 py-2.5 sm:rounded-xl sm:py-3 sm:pl-4 sm:pr-3.5", + ExecutionStatus::Failed => "pointer-events-auto flex items-center justify-between gap-x-6 bg-red-600 px-6 py-2.5 sm:rounded-xl sm:py-3 sm:pl-4 sm:pr-3.5" + } + }> +

    + + + { + match *error_code { + ExecutionStatus::Succeeded => "Execution suceeded", + // Unused ExecutionStatus::Paused => "Execution paused", + ExecutionStatus::Failed => "Execution failed" + } + } + + + + {exit_message} + +

    + +
    +
    + } + + } else { + html!{} + } + } + { if *current_view == 0 { + + html! { +
    +
    +
    + >()} on_item_click={|i:usize| { + let value: String = EXAMPLES[i].1.to_string().clone(); + Dispatch::::new().reduce_mut(move | s| { + s.program_counter = 0; + s.executable = None; + s.observable_machine = None; + s.pc_to_position = HashMap::new(); + s.current_position = None; + s.source_code = value + }) + }} /> +
    + { + if let Some(p) = state.current_position { + let (_, _, line, _) = p; + let pos = if line < usize::MAX/2 { + line_to_pixel_offset(line+1) + } + else + { + 0 + }; + html! { +
    +
    + } + } else { + html! {} + } + } + +