@h-ai/cli 1.0.0-beta.1 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-3JCZO34U.js → chunk-EF7WOFWZ.js} +3 -3
- package/dist/{chunk-3JCZO34U.js.map → chunk-EF7WOFWZ.js.map} +1 -1
- package/dist/{chunk-M7HN2OE3.js → chunk-MUHRBJSW.js} +34 -16
- package/dist/{chunk-M7HN2OE3.js.map → chunk-MUHRBJSW.js.map} +1 -1
- package/dist/cli-config-templates-HHFHNXBN.js +5 -0
- package/dist/{cli-config-templates-RCWQMHZN.js.map → cli-config-templates-HHFHNXBN.js.map} +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/{src-JRKSWJ2Q.js → src-TEBHR5I5.js} +3 -3
- package/dist/src-TEBHR5I5.js.map +1 -0
- package/package.json +11 -11
- package/templates/base/package.json.hbs +1 -1
- package/templates/skills/AGENTS.md +2 -0
- package/templates/skills/bridges/admin/AGENTS.md +2 -0
- package/templates/skills/bridges/api/AGENTS.md +2 -0
- package/templates/skills/bridges/fullstack/AGENTS.md.hbs +2 -0
- package/templates/skills/bridges/h5/AGENTS.md +2 -0
- package/templates/skills/bridges/mobile-app/AGENTS.md +2 -0
- package/templates/skills/bridges/website/AGENTS.md +2 -0
- package/templates/skills/hai-app-create/SKILL.md +1 -1
- package/templates/skills/hai-app-create/collaboration.md +6 -1
- package/templates/skills/hai-app-create/development.md +3 -1
- package/templates/skills/hai-app-create/reference.md +3 -1
- package/templates/skills/hai-app-review/SKILL.md +2 -0
- package/templates/skills/hai-app-tests/SKILL.md +2 -0
- package/templates/skills/hai-change-plan/SKILL.md +46 -0
- package/templates/skills/hai-deploy/SKILL.md +1 -1
- package/templates/skills/hai-feedback/SKILL.md +1 -1
- package/templates/skills/hai-pr-review/SKILL.md +2 -0
- package/templates/skills/hai-spec-implement/SKILL.md +2 -0
- package/templates/skills/hai-storage/SKILL.md +2 -2
- package/templates/skills/hai-storage/reference.md +1 -1
- package/dist/cli-config-templates-RCWQMHZN.js +0 -5
- package/dist/src-JRKSWJ2Q.js.map +0 -1
|
@@ -22612,7 +22612,7 @@ var en_US_default = {
|
|
|
22612
22612
|
deploy_webProxyInvalid: "The API prefix must be an absolute path containing only letters, numbers, underscores, hyphens and slashes.",
|
|
22613
22613
|
deploy_webBaseConflict: "The website mount path conflicts with an API or health endpoint. Choose a different PUBLIC_BASE_PATH.",
|
|
22614
22614
|
deploy_storageProxyInvalid: "Cannot generate the storage proxy. Use a valid DNS bucket name whose path does not overlap the website, API, or health endpoints.",
|
|
22615
|
-
deploy_storagePublicEndpointInvalid: "Invalid storage.publicEndpoint. Use a browser-accessible HTTP(S)
|
|
22615
|
+
deploy_storagePublicEndpointInvalid: "Invalid storage.publicEndpoint. Use a browser-accessible HTTP(S) address with an optional valid proxy path, without a bucket, credentials, query or fragment.",
|
|
22616
22616
|
deploy_storageBackendRequired: "A static browser app cannot deploy server-side storage credentials. Configure Storage in Serv or SvelteKit and obtain presigned links through its API.",
|
|
22617
22617
|
deploy_artifactInvalid: "Image artifacts are missing or invalid. Run pnpm build --target docker, select valid --artifact-dir, or use pnpm run deploy --build.",
|
|
22618
22618
|
deploy_sshRequired: "Automatic deployment requires SSH settings. Use --bundle-only for manual transfer when the server is unreachable.",
|
|
@@ -22720,7 +22720,7 @@ var ja_JP_default = {
|
|
|
22720
22720
|
deploy_webProxyInvalid: "API\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u306F\u3001\u82F1\u6570\u5B57\u3001\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u3001\u30CF\u30A4\u30D5\u30F3\u3001\u30B9\u30E9\u30C3\u30B7\u30E5\u306E\u307F\u3092\u542B\u3080\u7D76\u5BFE\u30D1\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
22721
22721
|
deploy_webBaseConflict: "\u30B5\u30A4\u30C8\u306E\u30DE\u30A6\u30F3\u30C8\u30D1\u30B9\u304CAPI\u307E\u305F\u306F\u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\u3068\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002\u5225\u306EPUBLIC_BASE_PATH\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
22722
22722
|
deploy_storageProxyInvalid: "\u30B9\u30C8\u30EC\u30FC\u30B8\u30D7\u30ED\u30AD\u30B7\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u6709\u52B9\u306A DNS \u30D0\u30B1\u30C3\u30C8\u540D\u3092\u6307\u5B9A\u3057\u3001\u30B5\u30A4\u30C8\u3001API\u3001\u30D8\u30EB\u30B9\u30C1\u30A7\u30C3\u30AF\u306E\u30D1\u30B9\u3068\u306E\u91CD\u8907\u3092\u907F\u3051\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
22723
|
-
deploy_storagePublicEndpointInvalid: "storage.publicEndpoint \u304C\u7121\u52B9\u3067\u3059\u3002\
|
|
22723
|
+
deploy_storagePublicEndpointInvalid: "storage.publicEndpoint \u304C\u7121\u52B9\u3067\u3059\u3002\u30D6\u30E9\u30A6\u30B6\u30FC\u304B\u3089\u5230\u9054\u53EF\u80FD\u306A HTTP(S) \u30A2\u30C9\u30EC\u30B9\u306B\u6709\u52B9\u306A\u30D7\u30ED\u30AD\u30B7\u30D1\u30B9\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u30D0\u30B1\u30C3\u30C8\u3001\u8A8D\u8A3C\u60C5\u5831\u3001\u30AF\u30A8\u30EA\u3001\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u306F\u542B\u3081\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002",
|
|
22724
22724
|
deploy_storageBackendRequired: "\u9759\u7684\u30D6\u30E9\u30A6\u30B6\u30A2\u30D7\u30EA\u306B\u306F\u30B5\u30FC\u30D0\u30FC\u7528\u30B9\u30C8\u30EC\u30FC\u30B8\u8A8D\u8A3C\u60C5\u5831\u3092\u914D\u7F6E\u3067\u304D\u307E\u305B\u3093\u3002Serv \u307E\u305F\u306F SvelteKit \u3067 Storage \u3092\u8A2D\u5B9A\u3057\u3001API \u7D4C\u7531\u3067\u7F72\u540D\u4ED8\u304D\u30EA\u30F3\u30AF\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
22725
22725
|
deploy_artifactInvalid: "\u30A4\u30E1\u30FC\u30B8\u6210\u679C\u7269\u304C\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u7121\u52B9\u3067\u3059\u3002pnpm build --target docker \u3092\u5B9F\u884C\u3059\u308B\u304B\u3001--artifact-dir \u3067\u6709\u52B9\u306A\u6210\u679C\u7269\u3092\u9078\u629E\u3059\u308B\u304B\u3001pnpm run deploy --build \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
22726
22726
|
deploy_sshRequired: "\u81EA\u52D5\u30C7\u30D7\u30ED\u30A4\u306B\u306FSSH\u8A2D\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002\u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3067\u304D\u306A\u3044\u5834\u5408\u306F--bundle-only\u3067\u624B\u52D5\u8EE2\u9001\u7528\u306E\u30D0\u30F3\u30C9\u30EB\u3092\u751F\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
@@ -22828,7 +22828,7 @@ var zh_CN_default2 = {
|
|
|
22828
22828
|
deploy_webProxyInvalid: "API \u524D\u7F00\u5FC5\u987B\u662F\u4EC5\u542B\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\u3001\u8FDE\u5B57\u7B26\u548C\u659C\u6760\u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002",
|
|
22829
22829
|
deploy_webBaseConflict: "\u7F51\u7AD9\u6302\u8F7D\u76EE\u5F55\u4E0E API \u6216\u5065\u5EB7\u68C0\u67E5\u5165\u53E3\u51B2\u7A81\uFF0C\u8BF7\u4F7F\u7528\u4E0D\u540C\u7684 PUBLIC_BASE_PATH\u3002",
|
|
22830
22830
|
deploy_storageProxyInvalid: "\u65E0\u6CD5\u751F\u6210\u5BF9\u8C61\u5B58\u50A8\u4EE3\u7406\uFF1A\u8BF7\u4F7F\u7528\u6709\u6548\u7684 DNS \u6876\u540D\uFF0C\u5E76\u786E\u4FDD\u6876\u8DEF\u5F84\u4E0D\u4E0E\u7F51\u7AD9\u76EE\u5F55\u3001API \u6216\u5065\u5EB7\u68C0\u67E5\u5165\u53E3\u91CD\u53E0\u3002",
|
|
22831
|
-
deploy_storagePublicEndpointInvalid: "storage.publicEndpoint \u65E0\u6548\uFF1A\u8BF7\u586B\u5199\u6D4F\u89C8\u5668\u53EF\u8BBF\u95EE\u7684 HTTP(S) \
|
|
22831
|
+
deploy_storagePublicEndpointInvalid: "storage.publicEndpoint \u65E0\u6548\uFF1A\u8BF7\u586B\u5199\u6D4F\u89C8\u5668\u53EF\u8BBF\u95EE\u7684 HTTP(S) \u5730\u5740\uFF0C\u53EF\u5305\u542B\u89C4\u8303\u7684\u4EE3\u7406\u76EE\u5F55\uFF0C\u4E0D\u80FD\u5305\u542B\u6876\u540D\u3001\u51ED\u636E\u3001\u67E5\u8BE2\u6216\u7247\u6BB5\u3002",
|
|
22832
22832
|
deploy_storageBackendRequired: "\u9759\u6001\u6D4F\u89C8\u5668\u5E94\u7528\u4E0D\u80FD\u90E8\u7F72\u5B58\u50A8\u670D\u52A1\u7AEF\u914D\u7F6E\u3002\u8BF7\u5728 Serv \u6216 SvelteKit \u670D\u52A1\u4E2D\u914D\u7F6E Storage\uFF0C\u518D\u901A\u8FC7 API \u83B7\u53D6\u9884\u7B7E\u540D\u94FE\u63A5\u3002",
|
|
22833
22833
|
deploy_artifactInvalid: "\u955C\u50CF\u4EA7\u7269\u7F3A\u5931\u6216\u6821\u9A8C\u5931\u8D25\u3002\u8BF7\u5148\u6267\u884C pnpm build --target docker\uFF0C\u6216\u7528 --artifact-dir \u6307\u5B9A\u6709\u6548\u4EA7\u7269\uFF1B\u4E5F\u53EF\u7528 pnpm run deploy --build \u4E00\u6B21\u5B8C\u6210\u3002",
|
|
22834
22834
|
deploy_sshRequired: "\u81EA\u52A8\u90E8\u7F72\u9700\u8981 SSH \u914D\u7F6E\uFF1B\u65E0\u7F51\u7EDC\u8FDE\u63A5\u65F6\u4F7F\u7528 --bundle-only \u751F\u6210\u90E8\u7F72\u5305\u5E76\u624B\u5DE5\u642C\u8FD0\u3002",
|
|
@@ -27195,8 +27195,8 @@ function generateWebProxyConfig(port, apiPrefix, options = {}) {
|
|
|
27195
27195
|
throw new Error("Invalid web proxy target");
|
|
27196
27196
|
}
|
|
27197
27197
|
const webLocation = renderWebLocation(webBasePath);
|
|
27198
|
-
const storageLocation = options.storageBucket ? renderStorageLocation(options.storageBucket, [apiPath, webBasePath]) : "";
|
|
27199
|
-
return
|
|
27198
|
+
const storageLocation = options.storageBucket ? renderStorageLocation(options.storageBucket, [apiPath, ...options.storageBasePath ? [`${webBasePath}/_app`, `${webBasePath}/assets`, `${webBasePath}/runtime-config.js`] : [webBasePath]], options.storageBasePath) : "";
|
|
27199
|
+
return `${options.storageBucket ? renderStorageUpstream(options.storageBucket, options.storageBasePath) : ""}server {
|
|
27200
27200
|
listen ${webPort};
|
|
27201
27201
|
server_name _;
|
|
27202
27202
|
${renderTrustedEdgeProxies(options.trustedEdgeProxies)} root /usr/share/nginx/html;
|
|
@@ -27232,9 +27232,11 @@ ${storageLocation}${webLocation} location = ${webBasePath}/runtime-config.js {
|
|
|
27232
27232
|
}
|
|
27233
27233
|
`;
|
|
27234
27234
|
}
|
|
27235
|
-
function renderStorageLocation(bucket, reservedPaths) {
|
|
27236
|
-
|
|
27237
|
-
|
|
27235
|
+
function renderStorageLocation(bucket, reservedPaths, storageBasePath = "") {
|
|
27236
|
+
renderWebLocation(storageBasePath);
|
|
27237
|
+
const path = `${storageBasePath}/${bucket}`;
|
|
27238
|
+
const reserved = ["/health", "/_hai", ...reservedPaths].filter(Boolean);
|
|
27239
|
+
if (!/^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$/.test(bucket) || bucket.includes("..") || ["health", "_hai"].includes(bucket) || reserved.some((item) => item === path || item.startsWith(`${path}/`) || path.startsWith(`${item}/`) || storageBasePath && (item === storageBasePath || item.startsWith(`${storageBasePath}/`) || storageBasePath.startsWith(`${item}/`)))) {
|
|
27238
27240
|
throw new Error("Storage bucket conflicts with application routes or is not a valid DNS bucket name");
|
|
27239
27241
|
}
|
|
27240
27242
|
return ` location ^~ ${path}/ {
|
|
@@ -27251,7 +27253,8 @@ function renderStorageLocation(bucket, reservedPaths) {
|
|
|
27251
27253
|
add_header Cache-Control "private, no-store" always;
|
|
27252
27254
|
limit_except GET PUT OPTIONS { deny all; }
|
|
27253
27255
|
client_max_body_size 0;
|
|
27254
|
-
|
|
27256
|
+
${storageBasePath ? ` # map \u4FDD\u7559\u539F\u59CB URI \u4E0E\u67E5\u8BE2\uFF1B\u4E0D\u5728 location \u5185\u521B\u5EFA\u6539\u53D8\u4EE3\u7406\u7EE7\u627F\u7684 if \u914D\u7F6E\u3002
|
|
27257
|
+
proxy_pass http://hai_storage_proxy$hai_storage_uri;` : " proxy_pass http://storage:9000;"}
|
|
27255
27258
|
proxy_http_version 1.1;
|
|
27256
27259
|
proxy_set_header Host $http_host;
|
|
27257
27260
|
proxy_set_header Connection "";
|
|
@@ -27263,16 +27266,27 @@ function renderStorageLocation(bucket, reservedPaths) {
|
|
|
27263
27266
|
}
|
|
27264
27267
|
`;
|
|
27265
27268
|
}
|
|
27269
|
+
function renderStorageUpstream(bucket, storageBasePath = "") {
|
|
27270
|
+
if (!storageBasePath)
|
|
27271
|
+
return "";
|
|
27272
|
+
const path = `${storageBasePath}/${bucket}`.replaceAll(".", "\\\\.");
|
|
27273
|
+
return `upstream hai_storage_proxy { server storage:9000; }
|
|
27274
|
+
map $request_uri $hai_storage_uri {
|
|
27275
|
+
default $request_uri;
|
|
27276
|
+
"~^${path}(/.*)$" /${bucket}$1;
|
|
27277
|
+
}
|
|
27278
|
+
`;
|
|
27279
|
+
}
|
|
27266
27280
|
function generateApplicationProxyConfig(options) {
|
|
27267
27281
|
const { primaryService, port, bucket, reservedPaths, maxPlaintextBytes } = options;
|
|
27268
27282
|
if (!Number.isInteger(port) || port < 1 || port > 65535)
|
|
27269
27283
|
throw new Error("Invalid application proxy target");
|
|
27270
27284
|
const bodyLimits = resolveTransportBodyLimits(maxPlaintextBytes);
|
|
27271
|
-
return
|
|
27285
|
+
return `${renderStorageUpstream(bucket, options.storageBasePath)}server {
|
|
27272
27286
|
listen 8080;
|
|
27273
27287
|
server_name _;
|
|
27274
27288
|
${renderTrustedEdgeProxies(options.trustedEdgeProxies)} large_client_header_buffers 4 32k;
|
|
27275
|
-
${renderStorageLocation(bucket, reservedPaths)} location = /_hai/gateway-health {
|
|
27289
|
+
${renderStorageLocation(bucket, reservedPaths, options.storageBasePath)} location = /_hai/gateway-health {
|
|
27276
27290
|
access_log off;
|
|
27277
27291
|
return 200 'ok';
|
|
27278
27292
|
}
|
|
@@ -27460,13 +27474,17 @@ function createDockerSshProvider(config2, container) {
|
|
|
27460
27474
|
const healthPaths = hasWebProxy ? ["/health", "/_hai/web-health", `${webBasePath}/`] : scan.isSvelteKit ? [`${webBasePath}/`] : standaloneWebConfig ? ["/health", `${webBasePath}/`] : ["/health"];
|
|
27461
27475
|
const { env, sidecar } = buildRuntimeEnv(appDir, projectName, scan, provisionEnv, containerPort, options, appEnv, container?.s3Engine);
|
|
27462
27476
|
const managedStorage = sidecar.services.includes("storage") ? JSON.parse(sidecar.env.HAI_STORAGE) : void 0;
|
|
27477
|
+
let storageBasePath = "";
|
|
27463
27478
|
if (managedStorage?.publicEndpoint !== void 0) {
|
|
27464
27479
|
try {
|
|
27465
27480
|
if (typeof managedStorage.publicEndpoint !== "string")
|
|
27466
27481
|
throw new Error("Invalid public endpoint type");
|
|
27482
|
+
const unsafeCharacters = /[\u0000-\u0020\u007F\\%]/.test(managedStorage.publicEndpoint);
|
|
27467
27483
|
const endpoint = new URL(managedStorage.publicEndpoint);
|
|
27468
|
-
if (!["http:", "https:"].includes(endpoint.protocol) || endpoint.username || endpoint.password || endpoint.
|
|
27484
|
+
if (!["http:", "https:"].includes(endpoint.protocol) || endpoint.username || endpoint.password || endpoint.search || endpoint.hash || !/^\/(?:[\w.-]+(?:\/[\w.-]+)*\/?)?$/.test(endpoint.pathname) || unsafeCharacters || /(?:^|\/)\.{1,2}(?:\/|$)/.test(managedStorage.publicEndpoint)) {
|
|
27469
27485
|
throw new Error("Invalid public endpoint origin");
|
|
27486
|
+
}
|
|
27487
|
+
storageBasePath = endpoint.pathname.replace(/\/+$/, "");
|
|
27470
27488
|
} catch {
|
|
27471
27489
|
return err(HaiDeployError.CONFIG_ERROR, deployM("deploy_storagePublicEndpointInvalid"));
|
|
27472
27490
|
}
|
|
@@ -27550,7 +27568,7 @@ function createDockerSshProvider(config2, container) {
|
|
|
27550
27568
|
try {
|
|
27551
27569
|
const configured = transport ? transport.maxPlaintextBytes : void 0;
|
|
27552
27570
|
const limits = resolveTransportBodyLimits(Math.max(createTransportBodyPolicy(configured === "auto" ? void 0 : configured, transport ? transport.routePlaintextBytes : void 0).maximum.plaintextBytes, feedbackTransportBytes ?? 0));
|
|
27553
|
-
webProxy = generateWebProxyConfig(containerPort, apiPrefix, { webPort: webContainerPort, maxPlaintextBytes: limits.plaintextBytes, webBasePath, storageBucket: managedStorage?.bucket, trustedEdgeProxies: config2.trustedEdgeProxies });
|
|
27571
|
+
webProxy = generateWebProxyConfig(containerPort, apiPrefix, { webPort: webContainerPort, maxPlaintextBytes: limits.plaintextBytes, webBasePath, storageBucket: managedStorage?.bucket, storageBasePath, trustedEdgeProxies: config2.trustedEdgeProxies });
|
|
27554
27572
|
} catch (error62) {
|
|
27555
27573
|
return err(HaiDeployError.CONFIG_ERROR, error62 instanceof RangeError ? error62.message : deployM(managedStorage ? "deploy_storageProxyInvalid" : "deploy_transportBodyLimitInvalid"));
|
|
27556
27574
|
}
|
|
@@ -27562,7 +27580,7 @@ function createDockerSshProvider(config2, container) {
|
|
|
27562
27580
|
const transport = server.data.transport;
|
|
27563
27581
|
applicationPlaintextBytes = Math.max(createTransportBodyPolicy(transport?.maxPlaintextBytes === "auto" ? void 0 : transport?.maxPlaintextBytes, transport?.routePlaintextBytes).maximum.plaintextBytes, feedbackTransportBytes ?? 0);
|
|
27564
27582
|
}
|
|
27565
|
-
webProxy = generateApplicationProxyConfig({ primaryService, port: containerPort, bucket: managedStorage.bucket, reservedPaths: [
|
|
27583
|
+
webProxy = generateApplicationProxyConfig({ primaryService, port: containerPort, bucket: managedStorage.bucket, storageBasePath, reservedPaths: [http?.apiPrefix ?? "/api/v1", ...storageBasePath ? [`${webBasePath}/_app`, `${webBasePath}/assets`, `${webBasePath}/runtime-config.js`] : [webBasePath]], maxPlaintextBytes: applicationPlaintextBytes, trustedEdgeProxies: config2.trustedEdgeProxies });
|
|
27566
27584
|
} catch {
|
|
27567
27585
|
return err(HaiDeployError.CONFIG_ERROR, deployM("deploy_storageProxyInvalid"));
|
|
27568
27586
|
}
|
|
@@ -29250,5 +29268,5 @@ async function acquireImportLock(path, root) {
|
|
|
29250
29268
|
}
|
|
29251
29269
|
|
|
29252
29270
|
export { DEPLOY_MIDDLEWARE, DeployConfigSchema, DeploymentArtifactSchema, HaiDeployError, ProviderConfigSchema, artifactChecksum, createDeploymentPlan, deploy, describeMiddlewareBackend, external_exports, getDeployCommandState, getDeployRecovery, importDeploymentSecrets, loadDeploymentConfig, loadDeploymentEnvironment, mergeEnvironmentLayers, normalizeProjectName, readDeploymentArtifact, saveDeploymentEnvironment };
|
|
29253
|
-
//# sourceMappingURL=chunk-
|
|
29254
|
-
//# sourceMappingURL=chunk-
|
|
29271
|
+
//# sourceMappingURL=chunk-MUHRBJSW.js.map
|
|
29272
|
+
//# sourceMappingURL=chunk-MUHRBJSW.js.map
|