reroute-js 0.36.2 → 0.36.3
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/cli/bin.d.ts +1 -1
- package/cli/bin.js +6 -6
- package/cli/bin.js.map +1 -1
- package/cli/index.d.ts +1 -1
- package/cli/index.js +4 -4
- package/cli/index.js.map +1 -1
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.d.ts +1 -1
- package/cli/src/commands/lib/assets.d.ts +1 -1
- package/cli/src/commands/lib/bundler.d.ts +1 -1
- package/cli/src/commands/lib/command.d.ts +1 -1
- package/cli/src/commands/lib/env.d.ts +1 -1
- package/cli/src/commands/lib/index.d.ts +1 -1
- package/cli/src/commands/lib/log.d.ts +1 -1
- package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
- package/cli/src/commands/lib/markdown/index.d.ts +1 -1
- package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
- package/cli/src/commands/lib/production.d.ts +1 -1
- package/cli/src/commands/lib/server.d.ts +1 -1
- package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
- package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
- package/cli/src/commands/lib/tailwind.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/og.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +2 -2
- package/core/index.js.map +1 -1
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +1 -1
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute/content.d.ts +1 -1
- package/core/src/ssr/lib/compute/index.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts +1 -1
- package/core/src/ssr/lib/data.d.ts +1 -1
- package/core/src/ssr/lib/html.d.ts +1 -1
- package/core/src/ssr/lib/imports.d.ts +1 -1
- package/core/src/ssr/lib/index.d.ts +1 -1
- package/core/src/ssr/lib/layouts.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts +1 -1
- package/core/src/ssr/lib/mime.d.ts +1 -1
- package/core/src/ssr/lib/modules.d.ts +1 -1
- package/core/src/ssr/lib/path.d.ts +1 -1
- package/core/src/ssr/lib/preload.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
- package/core/src/ssr/lib/scripts/data.d.ts +1 -1
- package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
- package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
- package/core/src/ssr/lib/scripts/index.d.ts +1 -1
- package/core/src/ssr/lib/seed.d.ts +1 -1
- package/core/src/ssr/lib/serialize.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts +1 -1
- package/core/src/ssr/lib/styles.d.ts +1 -1
- package/core/src/ssr/lib/template.d.ts +1 -1
- package/core/src/ssr/lib/types.d.ts +1 -1
- package/core/src/ssr/render.d.ts +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +27 -31
- package/elysia/index.js.map +3 -3
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/image.d.ts +1 -1
- package/elysia/src/libs/index.d.ts +1 -1
- package/elysia/src/libs/llms.d.ts +1 -1
- package/elysia/src/libs/response.d.ts +1 -1
- package/elysia/src/libs/serving.d.ts +1 -1
- package/elysia/src/plugin.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/content.d.ts +1 -1
- package/elysia/src/routes/image.d.ts +1 -1
- package/elysia/src/routes/index.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts +1 -1
- package/elysia/src/routes/llms.d.ts +1 -1
- package/elysia/src/routes/og.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts.map +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/types.d.ts +1 -1
- package/package.json +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +2 -2
- package/react/index.js.map +1 -1
- package/react/src/components/ClientOnly.d.ts +1 -1
- package/react/src/components/ContentRoute.d.ts +1 -1
- package/react/src/components/Image.d.ts +1 -1
- package/react/src/components/LazyRoute.d.ts +1 -1
- package/react/src/components/Link.d.ts +1 -1
- package/react/src/components/Markdown.d.ts +1 -1
- package/react/src/components/Outlet.d.ts +1 -1
- package/react/src/components/index.d.ts +1 -1
- package/react/src/hooks/index.d.ts +1 -1
- package/react/src/hooks/useContent.d.ts +1 -1
- package/react/src/hooks/useData.d.ts +1 -1
- package/react/src/hooks/useFeed.d.ts +1 -1
- package/react/src/hooks/useLayoutData.d.ts +1 -1
- package/react/src/hooks/useLlms.d.ts +1 -1
- package/react/src/hooks/useNavigate.d.ts +1 -1
- package/react/src/hooks/useParams.d.ts +1 -1
- package/react/src/hooks/useRouter.d.ts +1 -1
- package/react/src/hooks/useSearch.d.ts +1 -1
- package/react/src/hooks/useSearchParams.d.ts +1 -1
- package/react/src/hooks/useToc.d.ts +1 -1
- package/react/src/index.d.ts +1 -1
- package/react/src/lib/collection.d.ts +1 -1
- package/react/src/lib/content.d.ts +1 -1
- package/react/src/lib/head.d.ts +1 -1
- package/react/src/lib/index.d.ts +1 -1
- package/react/src/lib/lazy-route.d.ts +1 -1
- package/react/src/lib/route-loader.d.ts +1 -1
- package/react/src/providers/ContentProvider.d.ts +1 -1
- package/react/src/providers/RerouteProvider.d.ts +1 -1
- package/react/src/providers/RouterProvider.d.ts +1 -1
- package/react/src/providers/index.d.ts +1 -1
- package/react/src/types/any.d.ts +1 -1
- package/react/src/types/index.d.ts +1 -1
- package/react/src/types/router.d.ts +1 -1
- package/telemetry/react.d.ts +1 -1
- package/telemetry/react.js +2 -2
- package/telemetry/react.js.map +1 -1
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +2 -2
- package/telemetry/server.js.map +1 -1
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/elysia/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* reroute-js v0.36.
|
|
2
|
+
* reroute-js v0.36.3
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2025 stewones <hi@stewan.io>
|
|
@@ -6756,7 +6756,6 @@ function registerOGRoutes(app, options) {
|
|
|
6756
6756
|
}
|
|
6757
6757
|
|
|
6758
6758
|
// packages/elysia/src/routes/redirects.ts
|
|
6759
|
-
import { NotFoundError as NotFoundError7 } from "elysia";
|
|
6760
6759
|
function compileRedirects(rules) {
|
|
6761
6760
|
return rules.map((rule) => {
|
|
6762
6761
|
const isRegex = rule.regex ?? rule.source instanceof RegExp;
|
|
@@ -6809,13 +6808,10 @@ function registerRedirectRoutes(app, rules) {
|
|
|
6809
6808
|
try {
|
|
6810
6809
|
const result = await match.destination(url);
|
|
6811
6810
|
if (result === null) {
|
|
6812
|
-
|
|
6811
|
+
return null;
|
|
6813
6812
|
}
|
|
6814
6813
|
return { destination: result, isHandlerFunction: true };
|
|
6815
6814
|
} catch (error) {
|
|
6816
|
-
if (error instanceof NotFoundError7) {
|
|
6817
|
-
throw error;
|
|
6818
|
-
}
|
|
6819
6815
|
console.error("[reroute] Redirect handler error:", error);
|
|
6820
6816
|
return null;
|
|
6821
6817
|
}
|
|
@@ -6856,7 +6852,7 @@ function registerRedirectRoutes(app, rules) {
|
|
|
6856
6852
|
|
|
6857
6853
|
// packages/elysia/src/routes/robots.ts
|
|
6858
6854
|
init_core();
|
|
6859
|
-
import { NotFoundError as
|
|
6855
|
+
import { NotFoundError as NotFoundError7 } from "elysia";
|
|
6860
6856
|
function registerRobotsRoute(app, options) {
|
|
6861
6857
|
const {
|
|
6862
6858
|
cwd,
|
|
@@ -6881,7 +6877,7 @@ function registerRobotsRoute(app, options) {
|
|
|
6881
6877
|
return textResponse(txt, { maxAge, cacheStatus: "MISS" });
|
|
6882
6878
|
} catch (error) {
|
|
6883
6879
|
console.error("[reroute] Failed to generate robots.txt:", error);
|
|
6884
|
-
throw new
|
|
6880
|
+
throw new NotFoundError7;
|
|
6885
6881
|
}
|
|
6886
6882
|
});
|
|
6887
6883
|
return app;
|
|
@@ -6889,7 +6885,7 @@ function registerRobotsRoute(app, options) {
|
|
|
6889
6885
|
|
|
6890
6886
|
// packages/elysia/src/routes/rss.ts
|
|
6891
6887
|
init_core();
|
|
6892
|
-
import { NotFoundError as
|
|
6888
|
+
import { NotFoundError as NotFoundError8 } from "elysia";
|
|
6893
6889
|
function createFeedTitle(configTitle, name) {
|
|
6894
6890
|
return configTitle ?? `${name.charAt(0).toUpperCase() + name.slice(1)} Feed`;
|
|
6895
6891
|
}
|
|
@@ -6942,7 +6938,7 @@ async function registerMainFeedRoute(app, cwd, collections2, baseUrl, isWatchMod
|
|
|
6942
6938
|
return feedResponse(xml, format, { maxAge, cacheStatus: "MISS" });
|
|
6943
6939
|
} catch (error) {
|
|
6944
6940
|
console.error("[reroute] Failed to generate main feed:", error);
|
|
6945
|
-
throw new
|
|
6941
|
+
throw new NotFoundError8;
|
|
6946
6942
|
}
|
|
6947
6943
|
});
|
|
6948
6944
|
}
|
|
@@ -6962,7 +6958,7 @@ function registerCollectionFeedRoutes(app, collections2, options) {
|
|
|
6962
6958
|
const discovery5 = await discoverRSSData(options.cwd, [collection], options.baseUrl, options.isWatchMode, options.rssConfig);
|
|
6963
6959
|
const items = discovery5.collections.get(collection) ?? [];
|
|
6964
6960
|
if (items.length === 0)
|
|
6965
|
-
throw new
|
|
6961
|
+
throw new NotFoundError8;
|
|
6966
6962
|
const feed = {
|
|
6967
6963
|
title: createFeedTitle(options.rssConfig?.title, collection),
|
|
6968
6964
|
link: `${options.baseUrl}/${collection}/feed.xml`,
|
|
@@ -6982,10 +6978,10 @@ function registerCollectionFeedRoutes(app, collections2, options) {
|
|
|
6982
6978
|
cacheStatus: "MISS"
|
|
6983
6979
|
});
|
|
6984
6980
|
} catch (error) {
|
|
6985
|
-
if (error instanceof
|
|
6981
|
+
if (error instanceof NotFoundError8)
|
|
6986
6982
|
throw error;
|
|
6987
6983
|
console.error(`[reroute] Failed to generate ${collection} feed:`, error);
|
|
6988
|
-
throw new
|
|
6984
|
+
throw new NotFoundError8;
|
|
6989
6985
|
}
|
|
6990
6986
|
});
|
|
6991
6987
|
}
|
|
@@ -7024,7 +7020,7 @@ async function generateSSRDataFeed(route, options) {
|
|
|
7024
7020
|
items = discovery5.ssrDataFeeds.get(route.pattern) ?? [];
|
|
7025
7021
|
}
|
|
7026
7022
|
if (items.length === 0)
|
|
7027
|
-
throw new
|
|
7023
|
+
throw new NotFoundError8;
|
|
7028
7024
|
const feed = {
|
|
7029
7025
|
title: createFeedTitle(options.rssConfig?.title, routeName),
|
|
7030
7026
|
link: `${options.baseUrl}${route.pattern}/feed.xml`,
|
|
@@ -7050,11 +7046,11 @@ function registerSSRDataFeedRoutes(app, routesWithFeeds, options) {
|
|
|
7050
7046
|
try {
|
|
7051
7047
|
return await generateSSRDataFeed(route, options);
|
|
7052
7048
|
} catch (error) {
|
|
7053
|
-
if (error instanceof
|
|
7049
|
+
if (error instanceof NotFoundError8)
|
|
7054
7050
|
throw error;
|
|
7055
7051
|
const routeName = route.pattern.replace(/^\//, "") || "index";
|
|
7056
7052
|
console.error(`[reroute] Failed to generate ${routeName} feed:`, error);
|
|
7057
|
-
throw new
|
|
7053
|
+
throw new NotFoundError8;
|
|
7058
7054
|
}
|
|
7059
7055
|
});
|
|
7060
7056
|
}
|
|
@@ -7240,7 +7236,7 @@ function registerSearchRoute(app, cwd, directive, maxAge, searchConfig) {
|
|
|
7240
7236
|
|
|
7241
7237
|
// packages/elysia/src/routes/sitemap.ts
|
|
7242
7238
|
init_core();
|
|
7243
|
-
import { NotFoundError as
|
|
7239
|
+
import { NotFoundError as NotFoundError9 } from "elysia";
|
|
7244
7240
|
async function generateAndCacheSitemap(options, _ttlMs) {
|
|
7245
7241
|
const { cwd, collections: collections2, baseUrl, isWatchMode, sitemapConfig } = options;
|
|
7246
7242
|
const discovery5 = await discoverSitemapData(cwd, collections2, baseUrl, isWatchMode, sitemapConfig);
|
|
@@ -7281,14 +7277,14 @@ function registerSitemapRoutes(app, options) {
|
|
|
7281
7277
|
return xmlResponse(result.xml, { maxAge, cacheStatus: "MISS" });
|
|
7282
7278
|
} catch (error) {
|
|
7283
7279
|
console.error("[reroute] Failed to generate sitemap:", error);
|
|
7284
|
-
throw new
|
|
7280
|
+
throw new NotFoundError9;
|
|
7285
7281
|
}
|
|
7286
7282
|
});
|
|
7287
7283
|
app.get("/sitemap-*", async ({ params }) => {
|
|
7288
7284
|
const wildcardPath = params["*"] || "";
|
|
7289
7285
|
const pageMatch = wildcardPath.match(/^(\d+)\.xml$/);
|
|
7290
7286
|
if (!pageMatch) {
|
|
7291
|
-
throw new
|
|
7287
|
+
throw new NotFoundError9;
|
|
7292
7288
|
}
|
|
7293
7289
|
const filename = `sitemap-${pageMatch[1]}.xml`;
|
|
7294
7290
|
const cacheKey = `sitemap:${filename}`;
|
|
@@ -7300,7 +7296,7 @@ function registerSitemapRoutes(app, options) {
|
|
|
7300
7296
|
const result = await generateAndCacheSitemap(options, ttlMs);
|
|
7301
7297
|
const pageData = result.pages.find((p) => p.filename === filename);
|
|
7302
7298
|
if (!pageData) {
|
|
7303
|
-
throw new
|
|
7299
|
+
throw new NotFoundError9;
|
|
7304
7300
|
}
|
|
7305
7301
|
sitemapCache.set(cacheKey, {
|
|
7306
7302
|
xml: pageData.xml,
|
|
@@ -7308,10 +7304,10 @@ function registerSitemapRoutes(app, options) {
|
|
|
7308
7304
|
});
|
|
7309
7305
|
return xmlResponse(pageData.xml, { maxAge, cacheStatus: "MISS" });
|
|
7310
7306
|
} catch (error) {
|
|
7311
|
-
if (error instanceof
|
|
7307
|
+
if (error instanceof NotFoundError9)
|
|
7312
7308
|
throw error;
|
|
7313
7309
|
console.error("[reroute] Failed to generate paginated sitemap:", error);
|
|
7314
|
-
throw new
|
|
7310
|
+
throw new NotFoundError9;
|
|
7315
7311
|
}
|
|
7316
7312
|
});
|
|
7317
7313
|
return app;
|
|
@@ -7322,7 +7318,7 @@ init_core();
|
|
|
7322
7318
|
init_server2();
|
|
7323
7319
|
import { join as join4 } from "node:path";
|
|
7324
7320
|
import { trace as trace4 } from "@opentelemetry/api";
|
|
7325
|
-
import { NotFoundError as
|
|
7321
|
+
import { NotFoundError as NotFoundError10 } from "elysia";
|
|
7326
7322
|
if (typeof process !== "undefined") {
|
|
7327
7323
|
process.on("unhandledRejection", (reason, _promise) => {
|
|
7328
7324
|
console.error("[reroute] Unhandled Promise Rejection:", reason);
|
|
@@ -7388,10 +7384,10 @@ function registerSSRRoutes(app, options) {
|
|
|
7388
7384
|
const t0 = performance.now();
|
|
7389
7385
|
const method = request.method || "GET";
|
|
7390
7386
|
if (method !== "GET")
|
|
7391
|
-
throw new
|
|
7387
|
+
throw new NotFoundError10;
|
|
7392
7388
|
const accept = request.headers.get("accept") || "";
|
|
7393
7389
|
if (accept && !/text\/html|\*\/\*/i.test(String(accept))) {
|
|
7394
|
-
throw new
|
|
7390
|
+
throw new NotFoundError10;
|
|
7395
7391
|
}
|
|
7396
7392
|
const url = new URL(request.url);
|
|
7397
7393
|
const pathname = url.pathname;
|
|
@@ -7752,7 +7748,7 @@ function registerSSRRoutes(app, options) {
|
|
|
7752
7748
|
// packages/elysia/src/routes/static.ts
|
|
7753
7749
|
init_core();
|
|
7754
7750
|
import { trace as trace5 } from "@opentelemetry/api";
|
|
7755
|
-
import { NotFoundError as
|
|
7751
|
+
import { NotFoundError as NotFoundError11 } from "elysia";
|
|
7756
7752
|
var otelAvailable4;
|
|
7757
7753
|
function isOtelAvailable4() {
|
|
7758
7754
|
if (otelAvailable4 !== undefined)
|
|
@@ -7810,11 +7806,11 @@ function registerStaticRoutes(app, options) {
|
|
|
7810
7806
|
const exists = await Bun.file(filePath).exists();
|
|
7811
7807
|
if (!exists) {
|
|
7812
7808
|
setOtelAttributes(404, false, requestPath, undefined, "file_not_exists");
|
|
7813
|
-
throw new
|
|
7809
|
+
throw new NotFoundError11;
|
|
7814
7810
|
}
|
|
7815
7811
|
if (shouldIgnore(filePath)) {
|
|
7816
7812
|
setOtelAttributes(404, false, requestPath, undefined, "file_ignored");
|
|
7817
|
-
throw new
|
|
7813
|
+
throw new NotFoundError11;
|
|
7818
7814
|
}
|
|
7819
7815
|
const contentBuf = await Bun.file(filePath).arrayBuffer();
|
|
7820
7816
|
const content2 = new Uint8Array(contentBuf);
|
|
@@ -7842,7 +7838,7 @@ function registerStaticRoutes(app, options) {
|
|
|
7842
7838
|
}
|
|
7843
7839
|
return response.clone();
|
|
7844
7840
|
} catch (error) {
|
|
7845
|
-
if (error instanceof
|
|
7841
|
+
if (error instanceof NotFoundError11) {
|
|
7846
7842
|
throw error;
|
|
7847
7843
|
}
|
|
7848
7844
|
console.error(`[reroute] Error serving ${filePath}:`, error);
|
|
@@ -7850,7 +7846,7 @@ function registerStaticRoutes(app, options) {
|
|
|
7850
7846
|
const currentSpan = trace5.getActiveSpan();
|
|
7851
7847
|
currentSpan?.setAttribute("reroute.static.path", requestPath);
|
|
7852
7848
|
}
|
|
7853
|
-
throw new
|
|
7849
|
+
throw new NotFoundError11;
|
|
7854
7850
|
}
|
|
7855
7851
|
});
|
|
7856
7852
|
return app;
|
|
@@ -8196,4 +8192,4 @@ export {
|
|
|
8196
8192
|
reroute
|
|
8197
8193
|
};
|
|
8198
8194
|
|
|
8199
|
-
//# debugId=
|
|
8195
|
+
//# debugId=CE3325AABA63231A64756E2164756E21
|