diff --git a/dev-tools/audius-compose b/dev-tools/audius-compose
index b479dd633e8..d93cd586126 100755
--- a/dev-tools/audius-compose
+++ b/dev-tools/audius-compose
@@ -23,7 +23,8 @@ audius-protocol-solana-test-validator-1 \
audius-protocol-eth-ganache-1 \
audius-protocol-poa-ganache-1 \
audius-protocol-pedalboard \
-audius-protocol-anti-abuse-oracle-1
+audius-protocol-anti-abuse-oracle-1 \
+ddex-mongo
"""
@@ -447,6 +448,7 @@ def load_env(protocol_dir, service, environment):
help="Bring up the pedalboard containers",
)
@click.option("--comms", is_flag=True, help="Bring up comms/dms containers")
+@click.option("--ddex", is_flag=True, help="Bring up ddex containers")
@click.option("-a", "--args", type=str, multiple=True)
@click.option(
"--prod",
@@ -466,6 +468,7 @@ def up(
notifs,
pedalboard,
comms,
+ ddex,
args,
prod,
services,
@@ -498,6 +501,7 @@ def up(
*(["--profile=notifications"] if notifs else []),
*(["--profile=pedalboard"] if pedalboard else []),
*(["--profile=comms"] if comms else []),
+ *(["--profile=ddex"] if ddex else []),
*(["--profile=storage"]),
*(["--profile=libs"]),
*(["--profile=solana"]),
diff --git a/dev-tools/compose/docker-compose.ddex.yml b/dev-tools/compose/docker-compose.ddex.yml
index 0ce37567765..38b177b9d9d 100644
--- a/dev-tools/compose/docker-compose.ddex.yml
+++ b/dev-tools/compose/docker-compose.ddex.yml
@@ -10,6 +10,9 @@ services:
app_name: ddex-web
TURBO_TEAM: '${TURBO_TEAM}'
TURBO_TOKEN: '${TURBO_TOKEN}'
+ environment:
+ - DDEX_PORT=9000
+ - DDEX_MONGODB_URL=mongodb://mongo:mongo@ddex-mongo:27017/ddex?authSource=admin&replicaSet=rs0
ports:
- "9000:9000"
networks:
@@ -92,7 +95,7 @@ services:
restart: always
volumes:
- ddex-mongo-db:/data/db
- - ${PROJECT_ROOT}/packages/ddex/ingester/mongo-keyfile:/etc/mongo-keyfile
+ - ${PROJECT_ROOT}/packages/ddex/mongo-keyfile:/etc/mongo-keyfile
environment:
- MONGO_INITDB_ROOT_USERNAME=mongo
- MONGO_INITDB_ROOT_PASSWORD=mongo
diff --git a/mediorum/server/serve_health.go b/mediorum/server/serve_health.go
index 713ecfab1a8..07569aa1680 100644
--- a/mediorum/server/serve_health.go
+++ b/mediorum/server/serve_health.go
@@ -25,6 +25,7 @@ type healthCheckResponseData struct {
Version string `json:"version"`
Service string `json:"service"` // used by registerWithDelegate()
IsSeeding bool `json:"isSeeding"`
+ IsAudiusdManaged bool `json:"isAudiusdManaged"`
BuiltAt string `json:"builtAt"`
StartedAt time.Time `json:"startedAt"`
SPID int `json:"spID"`
@@ -85,6 +86,7 @@ func (ss *MediorumServer) serveHealthCheck(c echo.Context) error {
Version: ss.Config.VersionJson.Version,
Service: ss.Config.VersionJson.Service,
IsSeeding: ss.isSeeding,
+ IsAudiusdManaged: ss.isAudiusdManaged,
BuiltAt: vcsBuildTime,
StartedAt: ss.StartedAt,
SPID: ss.Config.SPID,
diff --git a/mediorum/server/serve_health_test.go b/mediorum/server/serve_health_test.go
index f408ecfc4c4..3ee04f09e66 100644
--- a/mediorum/server/serve_health_test.go
+++ b/mediorum/server/serve_health_test.go
@@ -38,7 +38,7 @@ func TestHealthCheck(t *testing.T) {
TrustedNotifierID: 1,
}
- expected := `{"audiusDockerCompose":"123456","autoUpgradeEnabled":true,"blobStorePrefix":"file","builtAt":"","databaseSize":99999,"dbSizeErr":"","dir":"/dir","env":"DEV","failsPeerReachability":false,"git":"123456","healthy":true,"isDbLocalhost":false,"isSeeding":false,"lastSuccessfulCleanup":{"AbortedReason":"","CleanupMode":false,"ContentSize":0,"Counters":null,"CursorI":0,"CursorQmCID":"","CursorUploadID":"","Duration":0,"FinishedAt":"0001-01-01T00:00:00Z","StartedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z"},"lastSuccessfulRepair":{"AbortedReason":"","CleanupMode":false,"ContentSize":777777,"Counters":null,"CursorI":0,"CursorQmCID":"","CursorUploadID":"","Duration":0,"FinishedAt":"0001-01-01T00:00:00Z","StartedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z"},"listenPort":"1991","mediorumPathSize":888888888,"mediorumPathUsed":88888,"moveFromBlobStorePrefix":"","peerHealths":null,"replicationFactor":3,"self":{"host":"test1.com","wallet":"0xtest1"},"service":"content-node","signers":[{"host":"test2.com","wallet":"0xtest2"}],"spID":1,"spOwnerWallet":"0xtest1","startedAt":"2023-06-07T08:25:30Z","storeAll":false,"trustedNotifier":{"email":"dmca@notifier.com","endpoint":"http://notifier.com","wallet":"0xnotifier"},"trustedNotifierId":1,"unreachablePeers":null,"uploadsCount":0,"uploadsCountErr":"","version":"1.0.0","wallet_is_registered":false}`
+ expected := `{"audiusDockerCompose":"123456","autoUpgradeEnabled":true,"blobStorePrefix":"file","builtAt":"","databaseSize":99999,"dbSizeErr":"","dir":"/dir","env":"DEV","failsPeerReachability":false,"git":"123456","healthy":true,"isAudiusdManaged":false,"isDbLocalhost":false,"isSeeding":false,"lastSuccessfulCleanup":{"AbortedReason":"","CleanupMode":false,"ContentSize":0,"Counters":null,"CursorI":0,"CursorQmCID":"","CursorUploadID":"","Duration":0,"FinishedAt":"0001-01-01T00:00:00Z","StartedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z"},"lastSuccessfulRepair":{"AbortedReason":"","CleanupMode":false,"ContentSize":777777,"Counters":null,"CursorI":0,"CursorQmCID":"","CursorUploadID":"","Duration":0,"FinishedAt":"0001-01-01T00:00:00Z","StartedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z"},"listenPort":"1991","mediorumPathSize":888888888,"mediorumPathUsed":88888,"moveFromBlobStorePrefix":"","peerHealths":null,"replicationFactor":3,"self":{"host":"test1.com","wallet":"0xtest1"},"service":"content-node","signers":[{"host":"test2.com","wallet":"0xtest2"}],"spID":1,"spOwnerWallet":"0xtest1","startedAt":"2023-06-07T08:25:30Z","storeAll":false,"trustedNotifier":{"email":"dmca@notifier.com","endpoint":"http://notifier.com","wallet":"0xnotifier"},"trustedNotifierId":1,"unreachablePeers":null,"uploadsCount":0,"uploadsCountErr":"","version":"1.0.0","wallet_is_registered":false}`
dataBytes, err := json.Marshal(data)
if err != nil {
t.Error(err)
diff --git a/mediorum/server/server.go b/mediorum/server/server.go
index 27cf28620f5..3abd8da8e8d 100644
--- a/mediorum/server/server.go
+++ b/mediorum/server/server.go
@@ -95,7 +95,8 @@ type MediorumServer struct {
uploadsCount int64
uploadsCountErr string
- isSeeding bool
+ isSeeding bool
+ isAudiusdManaged bool
peerHealthsMutex sync.RWMutex
peerHealths map[string]*PeerHealth
@@ -127,6 +128,11 @@ func New(config MediorumConfig) (*MediorumServer, error) {
config.Env = env
}
+ var isAudiusdManaged bool
+ if audiusdGenerated := os.Getenv("AUDIUS_D_GENERATED"); audiusdGenerated != "" {
+ isAudiusdManaged = true
+ }
+
if config.VersionJson == (VersionJson{}) {
log.Fatal(".version.json is required to be bundled with the mediorum binary")
}
@@ -249,15 +255,16 @@ func New(config MediorumConfig) (*MediorumServer, error) {
echoServer.Use(middleware.Gzip())
ss := &MediorumServer{
- echo: echoServer,
- bucket: bucket,
- crud: crud,
- pgPool: pgPool,
- reqClient: reqClient,
- logger: logger,
- quit: make(chan os.Signal, 1),
- trustedNotifier: &trustedNotifier,
- isSeeding: config.Env == "stage" || config.Env == "prod",
+ echo: echoServer,
+ bucket: bucket,
+ crud: crud,
+ pgPool: pgPool,
+ reqClient: reqClient,
+ logger: logger,
+ quit: make(chan os.Signal, 1),
+ trustedNotifier: &trustedNotifier,
+ isSeeding: config.Env == "stage" || config.Env == "prod",
+ isAudiusdManaged: isAudiusdManaged,
peerHealths: map[string]*PeerHealth{},
redirectCache: imcache.New(imcache.WithMaxEntriesOption[string, string](50_000)),
diff --git a/monitoring/healthz/src/images/audius_d.svg b/monitoring/healthz/src/images/audius_d.svg
new file mode 100644
index 00000000000..04537060c94
--- /dev/null
+++ b/monitoring/healthz/src/images/audius_d.svg
@@ -0,0 +1,55 @@
+
+
diff --git a/monitoring/healthz/src/pages/Nodes.tsx b/monitoring/healthz/src/pages/Nodes.tsx
index bf6b7e0551e..7e25585a07f 100644
--- a/monitoring/healthz/src/pages/Nodes.tsx
+++ b/monitoring/healthz/src/pages/Nodes.tsx
@@ -6,6 +6,7 @@ import {
import { SP, useServiceProviders } from '../useServiceProviders'
import { RelTime, timeSince, nanosToReadableDuration } from '../misc'
import './Nodes.css'
+const audiusdSvg = new URL('../images/audius_d.svg', import.meta.url).href
const autoUpgradeSvg = new URL('../images/auto_upgrade.svg', import.meta.url).href
const dockerSvg = new URL('../images/docker.svg', import.meta.url).href
const fileBackendSvg = new URL('../images/file_disk.svg', import.meta.url).href
@@ -173,6 +174,7 @@ function HealthRow({ isContent, sp, isStaging }: { isContent: boolean; sp: SP, i
const isDbLocalhost = health.database_is_localhost || health.isDbLocalhost
const autoUpgradeEnabled =
health.auto_upgrade_enabled || health.autoUpgradeEnabled
+ const audiusdManaged = health.audius_d_managed || health.isAudiusdManaged
const getPeers = (str: string | undefined) => {
if (str === undefined) return 'chain health undefined'
const match = str.match(/Peers: (\d+)\./)
@@ -225,7 +227,11 @@ function HealthRow({ isContent, sp, isStaging }: { isContent: boolean; sp: SP, i
- {autoUpgradeEnabled && || autoUpgradeEnabled && =14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/fast-xml-parser": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
+ "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
+ "funding": [
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.502.0.tgz",
+ "integrity": "sha512-OZAYal1+PQgUUtWiHhRayDtX0OD+XpXHKAhjYgEIPbyhQaCMp3/Bq1xDX151piWXvXqXLJHFKb8DUEqzwGO9QA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.504.0.tgz",
+ "integrity": "sha512-ODA33/nm2srhV08EW0KZAP577UgV0qjyr7Xp2yEo8MXWL4ZqQZprk1c+QKBhjr4Djesrm0VPmSD/np0mtYP68A==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.504.0",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-signing": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-provider-node": "^3.504.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/client-sso/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.504.0.tgz",
+ "integrity": "sha512-IESs8FkL7B/uY+ml4wgoRkrr6xYo4PizcNw6JX17eveq1gRBCPKeGMjE6HTDOcIYZZ8rqz/UeuH3JD4UhrMOnA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-provider-node": "^3.504.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts/node_modules/fast-xml-parser": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
+ "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
+ "funding": [
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/core": {
+ "version": "3.496.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.496.0.tgz",
+ "integrity": "sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==",
+ "dependencies": {
+ "@smithy/core": "^1.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/signature-v4": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/core/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.502.0.tgz",
+ "integrity": "sha512-KIB8Ae1Z7domMU/jU4KiIgK4tmYgvuXlhR54ehwlVHxnEoFPoPuGHFZU7oFn79jhhSLUFQ1lRYMxP0cEwb7XeQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-http": {
+ "version": "3.503.1",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.503.1.tgz",
+ "integrity": "sha512-rTdlFFGoPPFMF2YjtlfRuSgKI+XsF49u7d98255hySwhsbwd3Xp+utTTPquxP+CwDxMHbDlI7NxDzFiFdsoZug==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-stream": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.504.0.tgz",
+ "integrity": "sha512-ODICLXfr8xTUd3wweprH32Ge41yuBa+u3j0JUcLdTUO1N9ldczSMdo8zOPlP0z4doqD3xbnqMkjNQWgN/Q+5oQ==",
+ "dependencies": {
+ "@aws-sdk/client-sts": "3.504.0",
+ "@aws-sdk/credential-provider-env": "3.502.0",
+ "@aws-sdk/credential-provider-process": "3.502.0",
+ "@aws-sdk/credential-provider-sso": "3.504.0",
+ "@aws-sdk/credential-provider-web-identity": "3.504.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.504.0.tgz",
+ "integrity": "sha512-6+V5hIh+tILmUjf2ZQWQINR3atxQVgH/bFrGdSR/sHSp/tEgw3m0xWL3IRslWU1e4/GtXrfg1iYnMknXy68Ikw==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.502.0",
+ "@aws-sdk/credential-provider-http": "3.503.1",
+ "@aws-sdk/credential-provider-ini": "3.504.0",
+ "@aws-sdk/credential-provider-process": "3.502.0",
+ "@aws-sdk/credential-provider-sso": "3.504.0",
+ "@aws-sdk/credential-provider-web-identity": "3.504.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.502.0.tgz",
+ "integrity": "sha512-fJJowOjQ4infYQX0E1J3xFVlmuwEYJAFk0Mo1qwafWmEthsBJs+6BR2RiWDELHKrSK35u4Pf3fu3RkYuCtmQFw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.504.0.tgz",
+ "integrity": "sha512-4MgH2or2SjPzaxM08DCW+BjaX4DSsEGJlicHKmz6fh+w9JmLh750oXcTnbvgUeVz075jcs6qTKjvUcsdGM/t8Q==",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.502.0",
+ "@aws-sdk/token-providers": "3.504.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.504.0.tgz",
+ "integrity": "sha512-L1ljCvGpIEFdJk087ijf2ohg7HBclOeB1UgBxUBBzf4iPRZTQzd2chGaKj0hm2VVaXz7nglswJeURH5PFcS5oA==",
+ "dependencies": {
+ "@aws-sdk/client-sts": "3.504.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.502.0.tgz",
+ "integrity": "sha512-mUSP2DUcjhO5zM2b21CvZ9AqwI8DaAeZA6NYHOxWGTV9BUxHcdGWXEjDkcVj9CQ0gvNwTtw6B5L/q52rVAnZbw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-arn-parser": "3.495.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-config-provider": "^2.2.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-expect-continue": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.502.0.tgz",
+ "integrity": "sha512-DxfAuBVuPSt8as9xP57o8ks6ySVSjwO2NNNAdpLwk4KhEAPYEpHlf2yWYorYLrS+dDmwfYgOhRNoguuBdCu6ow==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.502.0.tgz",
+ "integrity": "sha512-kCt2zQDFumz/LnJJJOSd2GW4dr8oT8YMJKgxC/pph3aRXoSHXRwhrMbFnQ8swEE9vjywxtcED8sym0b0tNhhoA==",
+ "dependencies": {
+ "@aws-crypto/crc32": "3.0.0",
+ "@aws-crypto/crc32c": "3.0.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/is-array-buffer": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz",
+ "integrity": "sha512-EjnG0GTYXT/wJBmm5/mTjDcAkzU8L7wQjOzd3FTXuTCNNyvAvwrszbOj5FlarEw5XJBbQiZtBs+I5u9+zy560w==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-location-constraint": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.502.0.tgz",
+ "integrity": "sha512-fLRwPuTZvEWQkPjys03m3D6tYN4kf7zU6+c8mJxwvEg+yfBuv2RBsbd+Vn2bTisUjXvIg1kyBzONlpHoIyFneg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-location-constraint/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz",
+ "integrity": "sha512-FDyv6K4nCoHxbjLGS2H8ex8I0KDIiu4FJgVRPs140ZJy6gE5Pwxzv6YTzZGLMrnqcIs9gh065Lf6DjwMelZqaw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.502.0.tgz",
+ "integrity": "sha512-hvbyGJbxeuezxOu8VfFmcV4ql1hKXLxHTe5FNYfEBat2KaZXVhc1Hg+4TvB06/53p+E8J99Afmumkqbxs2esUA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.502.0.tgz",
+ "integrity": "sha512-GbGugrfyL5bNA/zw8iQll92yXBONfWSC8Ns00DtkOU1saPXp4/7WHtyyZGYdvPa73T1IsuZy9egpoYRBmRcd5Q==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-arn-parser": "3.495.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/signature-v4": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-config-provider": "^2.2.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz",
+ "integrity": "sha512-4hF08vSzJ7L6sB+393gOFj3s2N6nLusYS0XrMW6wYNFU10IDdbf8Z3TZ7gysDJJHEGQPmTAesPEDBsasGWcMxg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/signature-v4": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-signing/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-ssec": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.502.0.tgz",
+ "integrity": "sha512-1nidVTIba6/aVjjzD/WNqWdzSyTrXOHO3Ddz2MGD8S1yGSrYz4iYaq4Bm/uosfdr8B1L0Ws0pjdRXrNfzSw/DQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-ssec/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz",
+ "integrity": "sha512-TxbBZbRiXPH0AUxegqiNd9aM9zNSbfjtBs5MEfcBsweeT/B2O7K1EjP9+CkB8Xmk/5FLKhAKLr19b1TNoE27rw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.502.0.tgz",
+ "integrity": "sha512-mxmsX2AGgnSM+Sah7mcQCIneOsJQNiLX0COwEttuf8eO+6cLMAZvVudH3BnWTfea4/A9nuri9DLCqBvEmPrilg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-config-provider": "^2.2.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/s3-request-presigner": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.504.0.tgz",
+ "integrity": "sha512-5FxVdRufiFLSUDJ/Qul5JFPHjhFFzo+C6u53bzbi7gaSshA6lLLhJ9KbVk2LmKE1mTR+nh2+JebI6y+3njtkzw==",
+ "dependencies": {
+ "@aws-sdk/signature-v4-multi-region": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-format-url": "3.502.0",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/s3-request-presigner/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/signature-v4-multi-region": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.502.0.tgz",
+ "integrity": "sha512-NpOXtUXH0ZAgnyI3Y3s2fPrgwbsWoNMwdoXdFZvH0eDzzX80tim7Yuy6dzVA5zrxSzOYs1xjcOhM+4CmM0QZiw==",
+ "dependencies": {
+ "@aws-sdk/middleware-sdk-s3": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/signature-v4": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/token-providers": {
+ "version": "3.504.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.504.0.tgz",
+ "integrity": "sha512-YIJWWsZi2ClUiILS1uh5L6VjmCUSTI6KKMuL9DkGjYqJ0aI6M8bd8fT9Wm7QmXCyjcArTgr/Atkhia4T7oKvzQ==",
+ "dependencies": {
+ "@aws-sdk/client-sso-oidc": "3.504.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/token-providers/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/types": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.502.0.tgz",
+ "integrity": "sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/types/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-arn-parser": {
+ "version": "3.495.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz",
+ "integrity": "sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-arn-parser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz",
+ "integrity": "sha512-6LKFlJPp2J24r1Kpfoz5ESQn+1v5fEjDB3mtUKRdpwarhm3syu7HbKlHCF3KbcCOyahobvLvhoedT78rJFEeeg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-format-url": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.502.0.tgz",
+ "integrity": "sha512-4+0zBD0ZIJqtTzSE6VRruRwUx3lG+is8Egv+LN99X5y7i6OdrS9ePYHbCJ9FxkzTThgbkUq6k2W7psEDYvn4VA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/querystring-builder": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-format-url/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-locate-window": {
+ "version": "3.495.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz",
+ "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.502.0.tgz",
+ "integrity": "sha512-v8gKyCs2obXoIkLETAeEQ3AM+QmhHhst9xbM1cJtKUGsRlVIak/XyyD+kVE6kmMm1cjfudHpHKABWk9apQcIZQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.502.0.tgz",
+ "integrity": "sha512-9RjxpkGZKbTdl96tIJvAo+vZoz4P/cQh36SBUt9xfRfW0BtsaLyvSrvlR5wyUYhvRcC12Axqh/8JtnAPq//+Vw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/util-utf8-browser": {
+ "version": "3.259.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
+ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
+ "dependencies": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@aws-sdk/xml-builder": {
+ "version": "3.496.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.496.0.tgz",
+ "integrity": "sha512-GvEjh537IIeOw1ZkZuB37sV12u+ipS5Z1dwjEC/HAvhl5ac23ULtTr1/n+U1gLNN+BAKSWjKiQ2ksj8DiUzeyw==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/xml-builder/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
"node_modules/@babel/cli": {
"version": "7.7.0",
"dev": true,
@@ -18441,6 +19454,896 @@
"node": ">=8"
}
},
+ "node_modules/@smithy/abort-controller": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.1.tgz",
+ "integrity": "sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/abort-controller/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/chunked-blob-reader": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.1.1.tgz",
+ "integrity": "sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/chunked-blob-reader-native": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.1.tgz",
+ "integrity": "sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ==",
+ "dependencies": {
+ "@smithy/util-base64": "^2.1.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/chunked-blob-reader-native/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/chunked-blob-reader/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/config-resolver": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.1.tgz",
+ "integrity": "sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-config-provider": "^2.2.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/config-resolver/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/core": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.1.tgz",
+ "integrity": "sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==",
+ "dependencies": {
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/core/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/credential-provider-imds": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz",
+ "integrity": "sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/credential-provider-imds/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/eventstream-codec": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.1.tgz",
+ "integrity": "sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==",
+ "dependencies": {
+ "@aws-crypto/crc32": "3.0.0",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-hex-encoding": "^2.1.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-codec/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/eventstream-serde-browser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.1.tgz",
+ "integrity": "sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow==",
+ "dependencies": {
+ "@smithy/eventstream-serde-universal": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/eventstream-serde-config-resolver": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.1.tgz",
+ "integrity": "sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/eventstream-serde-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.1.tgz",
+ "integrity": "sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw==",
+ "dependencies": {
+ "@smithy/eventstream-serde-universal": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/eventstream-serde-universal": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.1.tgz",
+ "integrity": "sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ==",
+ "dependencies": {
+ "@smithy/eventstream-codec": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/fetch-http-handler": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz",
+ "integrity": "sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==",
+ "dependencies": {
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/querystring-builder": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-base64": "^2.1.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/fetch-http-handler/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/hash-blob-browser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.1.tgz",
+ "integrity": "sha512-jizu1+2PAUjiGIfRtlPEU8Yo6zn+d78ti/ZHDesdf1SUn2BuZW433JlPoCOLH3dBoEEvTgLvQ8tUGSoTTALA+A==",
+ "dependencies": {
+ "@smithy/chunked-blob-reader": "^2.1.1",
+ "@smithy/chunked-blob-reader-native": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/hash-blob-browser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/hash-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.1.tgz",
+ "integrity": "sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-buffer-from": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/hash-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/hash-stream-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.1.1.tgz",
+ "integrity": "sha512-VgDaKcfCy0iHcmtAZgZ3Yw9g37Gkn2JsQiMtFQXUh8Wmo3GfNgDwLOtdhJ272pOT7DStzpe9cNr+eV5Au8KfQA==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/hash-stream-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/invalid-dependency": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz",
+ "integrity": "sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/invalid-dependency/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/is-array-buffer": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz",
+ "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/is-array-buffer/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/md5-js": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.1.1.tgz",
+ "integrity": "sha512-L3MbIYBIdLlT+MWTYrdVSv/dow1+6iZ1Ad7xS0OHxTTs17d753ZcpOV4Ro7M7tRAVWML/sg2IAp/zzCb6aAttg==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/md5-js/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/middleware-content-length": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz",
+ "integrity": "sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==",
+ "dependencies": {
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-content-length/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/middleware-endpoint": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz",
+ "integrity": "sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==",
+ "dependencies": {
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-endpoint/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/middleware-retry": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz",
+ "integrity": "sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/service-error-classification": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-retry/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/middleware-retry/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/@smithy/middleware-serde": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz",
+ "integrity": "sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-serde/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/middleware-stack": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz",
+ "integrity": "sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-stack/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/node-config-provider": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz",
+ "integrity": "sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==",
+ "dependencies": {
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-config-provider/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/node-http-handler": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz",
+ "integrity": "sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==",
+ "dependencies": {
+ "@smithy/abort-controller": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/querystring-builder": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-http-handler/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/property-provider": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.1.tgz",
+ "integrity": "sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/property-provider/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/protocol-http": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.1.1.tgz",
+ "integrity": "sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/protocol-http/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/querystring-builder": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz",
+ "integrity": "sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-uri-escape": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/querystring-builder/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/querystring-parser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz",
+ "integrity": "sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/querystring-parser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/service-error-classification": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz",
+ "integrity": "sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/shared-ini-file-loader": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz",
+ "integrity": "sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/signature-v4": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.1.tgz",
+ "integrity": "sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==",
+ "dependencies": {
+ "@smithy/eventstream-codec": "^2.1.1",
+ "@smithy/is-array-buffer": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-hex-encoding": "^2.1.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "@smithy/util-uri-escape": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/signature-v4/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/smithy-client": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.3.1.tgz",
+ "integrity": "sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==",
+ "dependencies": {
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-stream": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/smithy-client/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/types": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.9.1.tgz",
+ "integrity": "sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/types/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/url-parser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.1.tgz",
+ "integrity": "sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==",
+ "dependencies": {
+ "@smithy/querystring-parser": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/url-parser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-base64": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz",
+ "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-base64/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-body-length-browser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz",
+ "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/util-body-length-browser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-body-length-node": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz",
+ "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-body-length-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-buffer-from": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz",
+ "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==",
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-buffer-from/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-config-provider": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz",
+ "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-config-provider/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-defaults-mode-browser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz",
+ "integrity": "sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==",
+ "dependencies": {
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-defaults-mode-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz",
+ "integrity": "sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==",
+ "dependencies": {
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-endpoints": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz",
+ "integrity": "sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-endpoints/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-hex-encoding": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz",
+ "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-hex-encoding/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-middleware": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.1.tgz",
+ "integrity": "sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==",
+ "dependencies": {
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-middleware/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-retry": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.1.tgz",
+ "integrity": "sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==",
+ "dependencies": {
+ "@smithy/service-error-classification": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-retry/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-stream": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.1.tgz",
+ "integrity": "sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==",
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-buffer-from": "^2.1.1",
+ "@smithy/util-hex-encoding": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-stream/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-uri-escape": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz",
+ "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-uri-escape/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-utf8": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz",
+ "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-utf8/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/@smithy/util-waiter": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.1.1.tgz",
+ "integrity": "sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==",
+ "dependencies": {
+ "@smithy/abort-controller": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-waiter/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
"node_modules/@snapchat/snap-kit-react-native": {
"version": "0.4.0",
"license": "SEE LICENSE IN 'LICENSE' FILE",
@@ -114788,6 +116691,8 @@
"version": "0.0.8",
"dependencies": {
"@audius/sdk": "*",
+ "@aws-sdk/client-s3": "3.504.0",
+ "@aws-sdk/s3-request-presigner": "3.504.0",
"@trpc/server": "10.38.4",
"decompress": "4.2.1",
"dotenv": "16.3.1",
diff --git a/packages/common/src/hooks/useCoinflowAdapter.ts b/packages/common/src/hooks/useCoinflowAdapter.ts
index b40ece36b5d..263b579d9d2 100644
--- a/packages/common/src/hooks/useCoinflowAdapter.ts
+++ b/packages/common/src/hooks/useCoinflowAdapter.ts
@@ -2,9 +2,15 @@ import { useEffect, useState } from 'react'
import { TransactionHandler } from '@audius/sdk/dist/core'
import { Connection, PublicKey, Transaction } from '@solana/web3.js'
+import { useSelector } from 'react-redux'
import { useAppContext } from '~/context'
-import { getRootSolanaAccount } from '~/services/audius-backend'
+import {
+ decorateCoinflowWithdrawalTransaction,
+ relayTransaction,
+ getRootSolanaAccount
+} from '~/services/audius-backend'
+import { getFeePayer } from '~/store/solana/selectors'
type CoinflowAdapter = {
wallet: {
@@ -14,6 +20,68 @@ type CoinflowAdapter = {
connection: Connection
}
+/** An adapter for signing and sending Coinflow withdrawal transactions. It will decorate
+ * the incoming transaction to route it through a user bank. The transcation will then be
+ * signed with the current user's Solana root wallet and sent/confirmed via Relay.
+ */
+export const useCoinflowWithdrawalAdapter = () => {
+ const { audiusBackend } = useAppContext()
+ const [adapter, setAdapter] = useState(null)
+ const feePayerOverride = useSelector(getFeePayer)
+
+ useEffect(() => {
+ const initWallet = async () => {
+ const libs = await audiusBackend.getAudiusLibsTyped()
+ if (!libs.solanaWeb3Manager) return
+ const { connection } = libs.solanaWeb3Manager
+ const wallet = await getRootSolanaAccount(audiusBackend)
+
+ setAdapter({
+ connection,
+ wallet: {
+ publicKey: wallet.publicKey,
+ sendTransaction: async (transaction: Transaction) => {
+ if (!feePayerOverride) throw new Error('Missing fee payer override')
+ const feePayer = new PublicKey(feePayerOverride)
+ const finalTransaction =
+ await decorateCoinflowWithdrawalTransaction(audiusBackend, {
+ transaction,
+ feePayer
+ })
+ finalTransaction.partialSign(wallet)
+ const { res, error, errorCode } = await relayTransaction(
+ audiusBackend,
+ {
+ transaction: finalTransaction,
+ skipPreflight: true
+ }
+ )
+ if (!res) {
+ console.error('Relaying Coinflow transaction failed.', {
+ error,
+ errorCode,
+ finalTransaction
+ })
+ throw new Error(
+ `Relaying Coinflow transaction failed: ${
+ error ?? 'Unknown error'
+ }`
+ )
+ }
+ return res
+ }
+ }
+ })
+ }
+ initWallet()
+ }, [audiusBackend])
+
+ return adapter
+}
+
+/** An adapter for signing and sending unmodified Coinflow transactions. Will partialSign with the
+ * current user's Solana root wallet and send/confirm locally (no relay).
+ */
export const useCoinflowAdapter = () => {
const { audiusBackend } = useAppContext()
const [adapter, setAdapter] = useState(null)
diff --git a/packages/common/src/hooks/useDownloadTrackButtons.ts b/packages/common/src/hooks/useDownloadTrackButtons.ts
index 8103d408ac2..923bc74ce1b 100644
--- a/packages/common/src/hooks/useDownloadTrackButtons.ts
+++ b/packages/common/src/hooks/useDownloadTrackButtons.ts
@@ -1,4 +1,4 @@
-import { useMemo } from 'react'
+import { useEffect, useMemo, useState } from 'react'
import { shallowEqual, useSelector } from 'react-redux'
@@ -11,6 +11,10 @@ import { getHasAccount } from '../store/account/selectors'
import { getTrack, getTracks } from '../store/cache/tracks/selectors'
import { CommonState } from '../store/commonStore'
import { getCurrentUploads } from '../store/stems-upload/selectors'
+import { usePrevious } from 'react-use'
+import type { AudiusSdk } from '@audius/sdk'
+import { encodeHashId } from '~/utils/hashIds'
+import { isEqual } from 'lodash'
export type DownloadButtonConfig = {
state: ButtonState
@@ -97,6 +101,37 @@ export const useCurrentStems = ({ trackId }: { trackId: ID }) => {
return { stemTracks, track }
}
+export const useFileSizes = ({ audiusSdk, trackIds }: {audiusSdk: () => Promise, trackIds: ID[] }) => {
+ const previousTrackIds = usePrevious(trackIds)
+ const [sizes, setSizes] = useState<{[trackId: ID]: number}>({})
+ useEffect(() => {
+ if (!isEqual(previousTrackIds, trackIds)) {
+ const asyncFn = async () => {
+ const sdk = await audiusSdk()
+ const sizeResults = await Promise.all(trackIds.map(async trackId => {
+ if (sizes[trackId]) {
+ return ({ trackId, size: sizes[trackId] })
+ }
+ try {
+ const res = await sdk.tracks.inspectTrack({ trackId: encodeHashId(trackId) })
+ const size = res?.data?.size ?? null
+ return ({ trackId, size })
+ } catch (e) {
+ console.error(e)
+ return ({ trackId, size: null })
+ }
+ }))
+ setSizes(sizes => ({ ...sizes, ...sizeResults.reduce((acc, curr) => {
+ acc[curr.trackId] = curr.size
+ return acc
+ }, {} as { trackId: ID, size: number }) }) )
+ }
+ asyncFn()
+ }
+ }, [trackIds, previousTrackIds, audiusSdk, sizes, setSizes])
+ return sizes
+}
+
const useUploadingStems = ({ trackId }: { trackId: ID }) => {
const currentUploads = useSelector(
(state: CommonState) => getCurrentUploads(state, trackId),
diff --git a/packages/common/src/models/Analytics.ts b/packages/common/src/models/Analytics.ts
index 05f7e38e7dc..9734a1fba7b 100644
--- a/packages/common/src/models/Analytics.ts
+++ b/packages/common/src/models/Analytics.ts
@@ -468,7 +468,14 @@ export enum Name {
// Repair Signups
SIGN_UP_REPAIR_START = 'Sign Up Repair: Start',
SIGN_UP_REPAIR_SUCCESS = 'Sign Up Repair: Success',
- SIGN_UP_REPAIR_FAILURE = 'Sign Up Repair: Failure'
+ SIGN_UP_REPAIR_FAILURE = 'Sign Up Repair: Failure',
+
+ // Export Private Key
+ EXPORT_PRIVATE_KEY_LINK_CLICKED = 'Export Private Key: Settings Link Clicked',
+ EXPORT_PRIVATE_KEY_PAGE_VIEWED = 'Export Private Key: Page Viewed',
+ EXPORT_PRIVATE_KEY_MODAL_OPENED = 'Export Private Key: Modal Opened',
+ EXPORT_PRIVATE_KEY_PUBLIC_ADDRESS_COPIED = 'Export Private Key: Public Address Copied',
+ EXPORT_PRIVATE_KEY_PRIVATE_KEY_COPIED = 'Export Private Key: Private Key Copied'
}
type PageView = {
@@ -2156,6 +2163,36 @@ type JupiterQuoteResponse = {
outAmount: number
}
+type ExportPrivateKeyLinkClicked = {
+ eventName: Name.EXPORT_PRIVATE_KEY_LINK_CLICKED
+ handle: string
+ userId: ID
+}
+
+type ExportPrivateKeyPageOpened = {
+ eventName: Name.EXPORT_PRIVATE_KEY_PAGE_VIEWED
+ handle: string
+ userId: ID
+}
+
+type ExportPrivateKeyModalOpened = {
+ eventName: Name.EXPORT_PRIVATE_KEY_MODAL_OPENED
+ handle: string
+ userId: ID
+}
+
+type ExportPrivateKeyPublicAddressCopied = {
+ eventName: Name.EXPORT_PRIVATE_KEY_PUBLIC_ADDRESS_COPIED
+ handle: string
+ userId: ID
+}
+
+type ExportPrivateKeyPrivateKeyCopied = {
+ eventName: Name.EXPORT_PRIVATE_KEY_PRIVATE_KEY_COPIED
+ handle: string
+ userId: ID
+}
+
export type BaseAnalyticsEvent = { type: typeof ANALYTICS_TRACK_EVENT }
export type AllTrackingEvents =
@@ -2439,3 +2476,8 @@ export type AllTrackingEvents =
| ChatWebsocketError
| JupiterQuoteResponse
| JupiterQuoteRequest
+ | ExportPrivateKeyLinkClicked
+ | ExportPrivateKeyPageOpened
+ | ExportPrivateKeyModalOpened
+ | ExportPrivateKeyPublicAddressCopied
+ | ExportPrivateKeyPrivateKeyCopied
diff --git a/packages/common/src/services/audius-backend/solana.ts b/packages/common/src/services/audius-backend/solana.ts
index c4dbc4dbafc..5dcf7c30b94 100644
--- a/packages/common/src/services/audius-backend/solana.ts
+++ b/packages/common/src/services/audius-backend/solana.ts
@@ -1,5 +1,12 @@
import { AudiusLibs } from '@audius/sdk'
-import { Account, createTransferCheckedInstruction } from '@solana/spl-token'
+import { u8 } from '@solana/buffer-layout'
+import {
+ Account,
+ TOKEN_PROGRAM_ID,
+ TokenInstruction,
+ createTransferCheckedInstruction,
+ decodeTransferCheckedInstruction
+} from '@solana/spl-token'
import {
AddressLookupTableAccount,
Keypair,
@@ -20,7 +27,9 @@ import { AudiusBackend } from './AudiusBackend'
const DEFAULT_RETRY_DELAY = 1000
const DEFAULT_MAX_RETRY_COUNT = 120
const PLACEHOLDER_SIGNATURE = new Array(64).fill(0)
-const RECOVERY_MEMO_STRING = 'recovery'
+export const RECOVERY_MEMO_STRING = 'Recover Withdrawal'
+export const WITHDRAWAL_MEMO_STRING = 'Withdrawal'
+export const PREPARE_WITHDRAWAL_MEMO_STRING = 'Prepare Withdrawal'
/**
* Memo program V1
@@ -121,6 +130,16 @@ export const deriveUserBankAddress = async (
return pubkey.toString() as SolanaWalletAddress
}
+export const isTransferCheckedInstruction = (
+ instruction: TransactionInstruction
+) => {
+ return (
+ instruction.programId.equals(TOKEN_PROGRAM_ID) &&
+ instruction.data.length &&
+ u8().decode(instruction.data) === TokenInstruction.TransferChecked
+ )
+}
+
type CreateUserBankIfNeededConfig = UserBankConfig & {
recordAnalytics: (event: AnalyticsEvent, callback?: () => void) => void
feePayerOverride: string
@@ -465,6 +484,102 @@ export const createRootWalletRecoveryTransaction = async (
return tx
}
+/** Converts a Coinflow transaction which transfers directly from root wallet USDC
+ * account into a transaction that routes through the current user's USDC user bank, to
+ * better facilitate indexing. The original transaction *must* use a TransferChecked instruction
+ * and must have the current user's Solana root wallet USDC token account as the source.
+ * @returns a new transaction that routes the USDC transfer through the user bank. This must be signed
+ * by the current user's Solana root wallet and the provided fee payer (likely via relay).
+ */
+export const decorateCoinflowWithdrawalTransaction = async (
+ audiusBackendInstance: AudiusBackend,
+ { transaction, feePayer }: { transaction: Transaction; feePayer: PublicKey }
+) => {
+ const libs = await audiusBackendInstance.getAudiusLibsTyped()
+ const solanaWeb3Manager = libs.solanaWeb3Manager!
+
+ const userBank = await deriveUserBankPubkey(audiusBackendInstance, {
+ mint: 'usdc'
+ })
+ const wallet = await getRootSolanaAccount(audiusBackendInstance)
+ const walletUSDCTokenAccount =
+ await solanaWeb3Manager.findAssociatedTokenAddress(
+ wallet.publicKey.toBase58(),
+ 'usdc'
+ )
+
+ // Find original transfer instruction and index
+ const transferInstructionIndex = transaction.instructions.findIndex(
+ isTransferCheckedInstruction
+ )
+ const transferInstruction = transaction.instructions[transferInstructionIndex]
+ if (!transferInstruction) {
+ throw new Error('No transfer instruction found')
+ }
+
+ const { keys, data } = decodeTransferCheckedInstruction(
+ transferInstruction,
+ TOKEN_PROGRAM_ID
+ )
+ if (!walletUSDCTokenAccount.equals(keys.source.pubkey)) {
+ throw new Error(
+ `Original sender ${keys.source.pubkey} does not match wallet ${walletUSDCTokenAccount}`
+ )
+ }
+
+ const transferToUserBankInstruction = createTransferCheckedInstruction(
+ walletUSDCTokenAccount,
+ keys.mint.pubkey,
+ userBank,
+ wallet.publicKey,
+ data.amount,
+ data.decimals
+ )
+
+ const transferFromUserBankInstructions =
+ await solanaWeb3Manager.createTransferInstructionsFromCurrentUser({
+ amount: new BN(data.amount.toString()),
+ mint: 'usdc',
+ senderSolanaAddress: userBank,
+ recipientSolanaAddress: keys.destination.pubkey.toBase58(),
+ instructionIndex: transferInstructionIndex + 1,
+ feePayerKey: feePayer
+ })
+
+ const withdrawalMemoInstruction = new TransactionInstruction({
+ keys: [
+ {
+ pubkey: wallet.publicKey,
+ isSigner: true,
+ isWritable: true
+ }
+ ],
+ programId: MEMO_PROGRAM_ID,
+ data: Buffer.from(WITHDRAWAL_MEMO_STRING)
+ })
+
+ // Remove original transfer instruction and replace with our set of transfer steps
+ const instructions = [...transaction.instructions]
+ instructions.splice(
+ transferInstructionIndex,
+ 1,
+ transferToUserBankInstruction,
+ ...transferFromUserBankInstructions,
+ withdrawalMemoInstruction
+ )
+
+ const { blockhash, lastValidBlockHeight } =
+ await solanaWeb3Manager.connection.getLatestBlockhash()
+ const modifiedTransaction = new Transaction({
+ blockhash,
+ feePayer,
+ lastValidBlockHeight
+ })
+ modifiedTransaction.add(...instructions)
+
+ return modifiedTransaction
+}
+
export const createTransferToUserBankTransaction = async (
audiusBackendInstance: AudiusBackend,
{
diff --git a/packages/common/src/store/pages/trending/types.ts b/packages/common/src/store/pages/trending/types.ts
index f07e2fc7faf..0de1a4121c5 100644
--- a/packages/common/src/store/pages/trending/types.ts
+++ b/packages/common/src/store/pages/trending/types.ts
@@ -1,3 +1,5 @@
+import { Genre } from '~/utils'
+
import { LineupState, TimeRange, Track } from '../../../models'
export type TrendingPageState = {
@@ -5,6 +7,6 @@ export type TrendingPageState = {
trendingMonth: LineupState
+
+ {messages.showPrivateKey}
+
|