@gravitee/gamma-lib-observability 1.3.0-feat-gma-402-centralize-http-config.66bdeef → 1.3.0
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/INTEGRATION.md +4 -41
- package/USAGE_GUIDE.md +4 -4
- package/dist/data-sources/http-data-source.d.ts +17 -2
- package/dist/data-sources/http-data-source.d.ts.map +1 -1
- package/dist/data-sources/http-filter-source.d.ts +1 -2
- package/dist/data-sources/http-filter-source.d.ts.map +1 -1
- package/dist/data-sources/index.d.ts +0 -1
- package/dist/data-sources/index.d.ts.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +707 -795
- package/dist/providers/index.d.ts +0 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/routing/ObservabilityRoutes.d.ts +1 -3
- package/dist/routing/ObservabilityRoutes.d.ts.map +1 -1
- package/dist/routing/types.d.ts +0 -9
- package/dist/routing/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/data-sources/filter-serialization.d.ts +0 -14
- package/dist/data-sources/filter-serialization.d.ts.map +0 -1
- package/dist/data-sources/http-logs-source.d.ts +0 -11
- package/dist/data-sources/http-logs-source.d.ts.map +0 -1
- package/dist/data-sources/http-utils.d.ts +0 -8
- package/dist/data-sources/http-utils.d.ts.map +0 -1
- package/dist/providers/http-provider.d.ts +0 -41
- package/dist/providers/http-provider.d.ts.map +0 -1
package/INTEGRATION.md
CHANGED
|
@@ -288,16 +288,7 @@ export const observability = defineObservabilityFeatures({
|
|
|
288
288
|
```
|
|
289
289
|
|
|
290
290
|
```tsx
|
|
291
|
-
// Mount with logs
|
|
292
|
-
<observability.Routes
|
|
293
|
-
baseUrl={baseUrl}
|
|
294
|
-
http={{ fetch: authFetch, credentials: 'include' }}
|
|
295
|
-
logsColumns={myColumns}
|
|
296
|
-
logsOnRowClick={(entry) => navigate(`/logs/${(entry as MyLog).id}`)}
|
|
297
|
-
logsGetRowId={(row) => (row as MyLog).id}
|
|
298
|
-
/>
|
|
299
|
-
|
|
300
|
-
// Mount with logs — explicit data source override
|
|
291
|
+
// Mount with logs auto-mount
|
|
301
292
|
<observability.Routes
|
|
302
293
|
baseUrl={baseUrl}
|
|
303
294
|
logsDataSource={myLogsDataSource}
|
|
@@ -307,9 +298,7 @@ export const observability = defineObservabilityFeatures({
|
|
|
307
298
|
/>
|
|
308
299
|
```
|
|
309
300
|
|
|
310
|
-
### Implementing a
|
|
311
|
-
|
|
312
|
-
> **Note**: In most cases, the built-in `createHttpLogsSource` adapter handles log fetching automatically (see "Built-in logs adapter" below). Only implement a custom `LogsDataSource` when you need custom response mapping, typed row objects, or a non-standard API contract.
|
|
301
|
+
### Implementing a LogsDataSource
|
|
313
302
|
|
|
314
303
|
Each module defines its own log row type and implements the `LogsDataSource<TRow>` interface:
|
|
315
304
|
|
|
@@ -611,7 +600,7 @@ Build the observability `baseUrl` from your module's bootstrap config:
|
|
|
611
600
|
const baseUrl = `${config.managementBaseURL}/v2/environments/${environmentId}`;
|
|
612
601
|
```
|
|
613
602
|
|
|
614
|
-
The library uses `baseUrl` to construct its built-in HTTP
|
|
603
|
+
The library uses `baseUrl` to construct its built-in HTTP data source (`createHttpDataSource(baseUrl)`) and filter source (`createHttpFilterSource(baseUrl)`). If you pass a custom `dataSource` or `filterProviders`, `baseUrl` is still required for any internal HTTP calls.
|
|
615
604
|
|
|
616
605
|
### Authenticated backends (`createHttpDataSource` options)
|
|
617
606
|
|
|
@@ -644,32 +633,6 @@ const dataSource = createHttpDataSource(baseUrl, {
|
|
|
644
633
|
|
|
645
634
|
**Filter operators**: only the v2 `Operator` enum is supported on the wire — `EQ`, `IN`, `LTE`, `GTE`. The data source maps lib operators (`eq`, `in`, `lte`, `gte`) accordingly and **throws** on any unsupported operator (`contains`, `neq`, `not_in`, …) so dashboard authors see the mismatch immediately.
|
|
646
635
|
|
|
647
|
-
### Built-in logs adapter (`createHttpLogsSource`)
|
|
648
|
-
|
|
649
|
-
The built-in `createHttpLogsSource(baseUrl, options?)` adapter speaks the Gravitee Management v2 logs contract (`POST /logs/search`). It is automatically used by `ObservabilityRoutes` when `config.features.logs.enabled` is true and no explicit `logsDataSource` prop is provided.
|
|
650
|
-
|
|
651
|
-
```ts
|
|
652
|
-
import { createHttpLogsSource } from '@gravitee/gamma-lib-observability';
|
|
653
|
-
|
|
654
|
-
const logsSource = createHttpLogsSource(baseUrl, {
|
|
655
|
-
credentials: 'include',
|
|
656
|
-
headers: () => ({ 'X-Xsrf-Token': readXsrfTokenFromCookie() }),
|
|
657
|
-
// Override the search endpoint path (default: '/logs/search')
|
|
658
|
-
searchPath: '/observability/logs',
|
|
659
|
-
});
|
|
660
|
-
```
|
|
661
|
-
|
|
662
|
-
| Option | Purpose |
|
|
663
|
-
| ------------ | ---------------------------------------------------------------------------------------- |
|
|
664
|
-
| `fetch` | Custom fetch implementation — useful when the host already has an authenticated client |
|
|
665
|
-
| `headers` | Static `HeadersInit` or a factory called per-request (re-evaluated for every call) |
|
|
666
|
-
| `credentials`| Forwarded to `fetch` — `'include'` when the host relies on cookies |
|
|
667
|
-
| `searchPath` | Path appended to `baseUrl` for log search. Defaults to `'/logs/search'` |
|
|
668
|
-
|
|
669
|
-
**Wire format**: pagination (`page`, `perPage`) is sent as query params. The POST body contains `{ timeRange: { from, to }, filters: [...] }` where filters use the same wire format as the metrics adapter.
|
|
670
|
-
|
|
671
|
-
**`getById`**: fetches a single log via the same search endpoint with a `REQUEST_ID` EQ filter. Uses the time range from the last `fetchLogs` call (falls back to a 10-year window if no prior call). This strategy is isolated internally and will be updated if a dedicated `GET /logs/:id` endpoint becomes available.
|
|
672
|
-
|
|
673
636
|
### Custom data source
|
|
674
637
|
|
|
675
638
|
Override the built-in HTTP metrics adapter when your module needs custom request/response mapping:
|
|
@@ -757,7 +720,7 @@ const dataSource = createHttpDataSource(baseUrl);
|
|
|
757
720
|
|
|
758
721
|
1. `dataSource` / `logsDataSource` prop on `<observability.Routes>` (explicit, wins)
|
|
759
722
|
2. Outer `MetricsDataSourceProvider` / `LogsDataSourceProvider` from the host
|
|
760
|
-
3. Fallback: built from `baseUrl` via `createHttpDataSource`
|
|
723
|
+
3. Fallback: built from `baseUrl` via `createHttpDataSource`
|
|
761
724
|
|
|
762
725
|
### Query fan-out & defaults
|
|
763
726
|
|
package/USAGE_GUIDE.md
CHANGED
|
@@ -646,7 +646,7 @@ function ModuleApp() {
|
|
|
646
646
|
baseUrl="/management/v2/environments/DEFAULT"
|
|
647
647
|
dataSource={myDataSource} // optional: overrides built-in HTTP metrics adapter
|
|
648
648
|
filterProviders={myProviders} // optional: overrides async filter definition fetch
|
|
649
|
-
logsDataSource={myLogsDataSource} //
|
|
649
|
+
logsDataSource={myLogsDataSource} // required for auto-mounted logs page
|
|
650
650
|
logsColumns={myLogColumns} // required for auto-mounted logs page
|
|
651
651
|
logsOnRowClick={(entry) => navigate(`/logs/${(entry as MyLog).id}`)}
|
|
652
652
|
logsGetRowId={(row) => (row as MyLog).id}
|
|
@@ -659,7 +659,7 @@ function ModuleApp() {
|
|
|
659
659
|
}
|
|
660
660
|
```
|
|
661
661
|
|
|
662
|
-
When `logsColumns` are provided
|
|
662
|
+
When both `logsDataSource` and `logsColumns` are provided, the router auto-mounts `LogsExplorerPage` inside a `LogsDataSourceProvider`. If you need full control over the logs page layout, use the `logsPage` escape hatch instead (see below).
|
|
663
663
|
|
|
664
664
|
### Routing Behavior
|
|
665
665
|
|
|
@@ -667,7 +667,7 @@ The library provides a list-detail pattern:
|
|
|
667
667
|
|
|
668
668
|
- `/dashboards` — Dashboard list page (table with name + description). Auto-redirects to the detail page when only one dashboard is visible to the current user.
|
|
669
669
|
- `/dashboards/:dashboardId` — Dashboard detail page with title, filter bar, time range picker, and widget grid.
|
|
670
|
-
- `/logs` — Logs explorer page with search, filters, time range, and paginated table. Auto-mounted when `
|
|
670
|
+
- `/logs` — Logs explorer page with search, filters, time range, and paginated table. Auto-mounted when `logsDataSource` + `logsColumns` are provided, or rendered from the `logsPage` escape hatch.
|
|
671
671
|
- `*` — Redirects to `/dashboards` (or `/logs` if dashboards are disabled). Shows a static message if no features are enabled.
|
|
672
672
|
|
|
673
673
|
Filter state (active filters + time range) is persisted in URL query parameters (`q`, `v`) for bookmarkability.
|
|
@@ -692,7 +692,7 @@ Breadcrumbs are handled by the calling module — the library does not own the l
|
|
|
692
692
|
|
|
693
693
|
### Auto-mount (recommended)
|
|
694
694
|
|
|
695
|
-
The simplest integration is via `defineObservabilityFeatures` + route props (see "Mounting Routes" above). The router auto-mounts `LogsExplorerPage` when `logsColumns` are passed to `<observability.Routes />`.
|
|
695
|
+
The simplest integration is via `defineObservabilityFeatures` + route props (see "Mounting Routes" above). The router auto-mounts `LogsExplorerPage` when `logsDataSource` and `logsColumns` are passed to `<observability.Routes />`.
|
|
696
696
|
|
|
697
697
|
### Scope filtering via ENTRYPOINT
|
|
698
698
|
|
|
@@ -1,6 +1,21 @@
|
|
|
1
|
-
import { HttpOptions } from '../providers/http-provider';
|
|
2
1
|
import { MetricsDataSource } from './metrics-data-source';
|
|
3
|
-
export interface HttpDataSourceOptions
|
|
2
|
+
export interface HttpDataSourceOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Custom fetch implementation. Use this to inject auth headers, cookies, or
|
|
5
|
+
* to route requests through a host-specific HTTP client.
|
|
6
|
+
* Falls back to `globalThis.fetch` when not provided.
|
|
7
|
+
*/
|
|
8
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
9
|
+
/**
|
|
10
|
+
* Extra headers merged into every request. Accepts a static object or a
|
|
11
|
+
* function called per-request (useful for short-lived tokens like XSRF).
|
|
12
|
+
*/
|
|
13
|
+
readonly headers?: HeadersInit | (() => HeadersInit);
|
|
14
|
+
/**
|
|
15
|
+
* Credentials mode forwarded to `fetch`. Set to `'include'` when the host
|
|
16
|
+
* relies on cookies (e.g. Gravitee Management's session cookie).
|
|
17
|
+
*/
|
|
18
|
+
readonly credentials?: RequestCredentials;
|
|
4
19
|
/**
|
|
5
20
|
* Default metric injected when a facet request has no metrics. The v2
|
|
6
21
|
* analytics API rejects facet queries without at least one metric.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-data-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/http-data-source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-data-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/http-data-source.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA0C/D,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;IACrD;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACrE;AAwND,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,CA+CxG"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FilterProvider } from '../filters/filter-provider';
|
|
2
|
-
import { HttpOptions } from '../providers/http-provider';
|
|
3
2
|
export interface FilterSource {
|
|
4
3
|
fetchFilterDefinitions(signal?: AbortSignal): Promise<FilterProvider[]>;
|
|
5
4
|
resolveLabels(entries: {
|
|
@@ -7,5 +6,5 @@ export interface FilterSource {
|
|
|
7
6
|
ids: string[];
|
|
8
7
|
}[], signal?: AbortSignal): Promise<Record<string, Record<string, string>>>;
|
|
9
8
|
}
|
|
10
|
-
export declare function createHttpFilterSource(baseUrl: string
|
|
9
|
+
export declare function createHttpFilterSource(baseUrl: string): FilterSource;
|
|
11
10
|
//# sourceMappingURL=http-filter-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-filter-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/http-filter-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"http-filter-source.d.ts","sourceRoot":"","sources":["../../src/data-sources/http-filter-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,4BAA4B,CAAC;AA+CxG,MAAM,WAAW,YAAY;IAC3B,sBAAsB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACxE,aAAa,CACX,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,EAChD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACpD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CA+FpE"}
|
|
@@ -4,5 +4,4 @@ export type { MetricsDataSource } from './metrics-data-source';
|
|
|
4
4
|
export type { FetchTraceByIdParams, TracesDataSource, TracesQueryResult } from './traces-data-source';
|
|
5
5
|
export { createHttpDataSource, type HttpDataSourceOptions } from './http-data-source';
|
|
6
6
|
export { createHttpFilterSource, type FilterSource } from './http-filter-source';
|
|
7
|
-
export { createHttpLogsSource, type HttpLogsSourceOptions } from './http-logs-source';
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-sources/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-sources/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ export { DEFAULT_CAPABILITIES, DEFAULT_MEASURE, FILTER_OPERATORS, isBarWidget, i
|
|
|
3
3
|
export type { AttributeValue, FacetBucket, Measure, MetricResult, SpanKind, SpanStatus, TimeSeriesGroup, TimeSeriesPoint, TraceSpan, } from './types';
|
|
4
4
|
export type { FacetMetricRequest, FacetsRequest, LogsQuery, LogColumnDefinition, MeasuresRequest, MetricRequest, TimeSeriesRequest, TraceQuery, } from './types';
|
|
5
5
|
export type { DashboardPersistence, FetchTraceByIdParams, LogsDataSource, LogsQueryResult, MetricsDataSource, TracesDataSource, TracesQueryResult, } from './data-sources';
|
|
6
|
-
export { CapabilityProvider, DashboardPersistenceProvider,
|
|
7
|
-
export type { CapabilityProviderProps, DashboardPersistenceProviderProps,
|
|
6
|
+
export { CapabilityProvider, DashboardPersistenceProvider, LiveRefreshProvider, LogsDataSourceProvider, MetricsDataSourceProvider, TracesDataSourceProvider, useCapabilities, useCapability, useDashboardPersistence, useLiveRefresh, useLogsDataSource, useMetricsDataSource, useOptionalLiveRefresh, useOptionalLogsDataSource, useOptionalMetricsDataSource, useTracesDataSource, DEFAULT_REFRESH_INTERVAL_MS, } from './providers';
|
|
7
|
+
export type { CapabilityProviderProps, DashboardPersistenceProviderProps, LiveRefreshConfig, LiveRefreshProviderProps, LiveRefreshState, LogsDataSourceProviderProps, MetricsDataSourceProviderProps, TracesDataSourceProviderProps, } from './providers';
|
|
8
8
|
export { DEFAULT_STALE_TIME, observabilityQueryKeys, useFacetsQuery, useLogDetailQuery, useLogsPagedQuery, useLogsQuery, useMeasuresQuery, useTimeSeriesQuery, } from './hooks';
|
|
9
9
|
export type { UseFacetsQueryParams, UseLogDetailQueryParams, UseLogDetailQueryResult, UseLogsPagedQueryParams, UseLogsPagedQueryResult, UseLogsQueryParams, UseMeasuresQueryParams, UseTimeSeriesQueryParams, } from './hooks';
|
|
10
10
|
export { CODEC_VERSION, DEFAULT_TIME_RANGE, decodeObservabilityState, encodeObservabilityState } from './url-state';
|
|
@@ -26,6 +26,5 @@ export { ContextFiltersProvider, useContextFilters } from './routing';
|
|
|
26
26
|
export type { ContextFiltersProviderProps, DashboardFeatureConfig, FeatureKey, LogsFeatureConfig, NavGroup, NavItem, ObservabilityFeatures, ObservabilityFeaturesConfig, ObservabilityRoutesProps, } from './routing';
|
|
27
27
|
export { createHttpDataSource, type HttpDataSourceOptions } from './data-sources';
|
|
28
28
|
export { createHttpFilterSource, type FilterSource } from './data-sources';
|
|
29
|
-
export { createHttpLogsSource, type HttpLogsSourceOptions } from './data-sources';
|
|
30
29
|
export { useStableTimeRange } from './hooks/use-stable-time-range';
|
|
31
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,eAAe,EACf,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|