@helia/verified-fetch 0.0.0-f58d467 → 1.0.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.
Files changed (54) hide show
  1. package/README.md +285 -25
  2. package/dist/index.min.js +7 -4
  3. package/dist/src/index.d.ts +285 -25
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +267 -25
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/types.d.ts +2 -0
  8. package/dist/src/types.d.ts.map +1 -0
  9. package/dist/src/types.js +2 -0
  10. package/dist/src/types.js.map +1 -0
  11. package/dist/src/utils/dag-cbor-to-safe-json.d.ts +7 -0
  12. package/dist/src/utils/dag-cbor-to-safe-json.d.ts.map +1 -0
  13. package/dist/src/utils/dag-cbor-to-safe-json.js +37 -0
  14. package/dist/src/utils/dag-cbor-to-safe-json.js.map +1 -0
  15. package/dist/src/utils/get-content-disposition-filename.d.ts +6 -0
  16. package/dist/src/utils/get-content-disposition-filename.d.ts.map +1 -0
  17. package/dist/src/utils/get-content-disposition-filename.js +16 -0
  18. package/dist/src/utils/get-content-disposition-filename.js.map +1 -0
  19. package/dist/src/utils/get-e-tag.d.ts +28 -0
  20. package/dist/src/utils/get-e-tag.d.ts.map +1 -0
  21. package/dist/src/utils/get-e-tag.js +18 -0
  22. package/dist/src/utils/get-e-tag.js.map +1 -0
  23. package/dist/src/utils/get-tar-stream.d.ts +4 -0
  24. package/dist/src/utils/get-tar-stream.d.ts.map +1 -0
  25. package/dist/src/utils/get-tar-stream.js +46 -0
  26. package/dist/src/utils/get-tar-stream.js.map +1 -0
  27. package/dist/src/utils/parse-url-string.d.ts +7 -1
  28. package/dist/src/utils/parse-url-string.d.ts.map +1 -1
  29. package/dist/src/utils/parse-url-string.js +6 -0
  30. package/dist/src/utils/parse-url-string.js.map +1 -1
  31. package/dist/src/utils/responses.d.ts +5 -0
  32. package/dist/src/utils/responses.d.ts.map +1 -0
  33. package/dist/src/utils/responses.js +27 -0
  34. package/dist/src/utils/responses.js.map +1 -0
  35. package/dist/src/utils/select-output-type.d.ts +12 -0
  36. package/dist/src/utils/select-output-type.d.ts.map +1 -0
  37. package/dist/src/utils/select-output-type.js +148 -0
  38. package/dist/src/utils/select-output-type.js.map +1 -0
  39. package/dist/src/verified-fetch.d.ts +19 -26
  40. package/dist/src/verified-fetch.d.ts.map +1 -1
  41. package/dist/src/verified-fetch.js +261 -142
  42. package/dist/src/verified-fetch.js.map +1 -1
  43. package/dist/typedoc-urls.json +27 -0
  44. package/package.json +49 -112
  45. package/src/index.ts +290 -29
  46. package/src/types.ts +1 -0
  47. package/src/utils/dag-cbor-to-safe-json.ts +44 -0
  48. package/src/utils/get-content-disposition-filename.ts +18 -0
  49. package/src/utils/get-e-tag.ts +36 -0
  50. package/src/utils/get-tar-stream.ts +68 -0
  51. package/src/utils/parse-url-string.ts +17 -2
  52. package/src/utils/responses.ts +29 -0
  53. package/src/utils/select-output-type.ts +167 -0
  54. package/src/verified-fetch.ts +310 -154
@@ -1 +1 @@
1
- {"version":3,"file":"parse-url-string.js","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-url-string.js","sourceRoot":"","sources":["../../../src/utils/parse-url-string.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function okResponse(body?: BodyInit | null): Response;
2
+ export declare function notSupportedResponse(body?: BodyInit | null): Response;
3
+ export declare function notAcceptableResponse(body?: BodyInit | null): Response;
4
+ export declare function badRequestResponse(body?: BodyInit | null): Response;
5
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/utils/responses.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAK5D;AAED,wBAAgB,oBAAoB,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAOtE;AAED,wBAAgB,qBAAqB,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAKvE;AAED,wBAAgB,kBAAkB,CAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAKpE"}
@@ -0,0 +1,27 @@
1
+ export function okResponse(body) {
2
+ return new Response(body, {
3
+ status: 200,
4
+ statusText: 'OK'
5
+ });
6
+ }
7
+ export function notSupportedResponse(body) {
8
+ const response = new Response(body, {
9
+ status: 501,
10
+ statusText: 'Not Implemented'
11
+ });
12
+ response.headers.set('X-Content-Type-Options', 'nosniff'); // see https://specs.ipfs.tech/http-gateways/path-gateway/#x-content-type-options-response-header
13
+ return response;
14
+ }
15
+ export function notAcceptableResponse(body) {
16
+ return new Response(body, {
17
+ status: 406,
18
+ statusText: 'Not Acceptable'
19
+ });
20
+ }
21
+ export function badRequestResponse(body) {
22
+ return new Response(body, {
23
+ status: 400,
24
+ statusText: 'Bad Request'
25
+ });
26
+ }
27
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../src/utils/responses.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAE,IAAsB;IAChD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAE,IAAsB;IAC1D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;QAClC,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAA;IACF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA,CAAC,iGAAiG;IAC3J,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAE,IAAsB;IAC3D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,gBAAgB;KAC7B,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAE,IAAsB;IACxD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,aAAa;KAC1B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RequestFormatShorthand } from '../types.js';
2
+ import type { CID } from 'multiformats/cid';
3
+ /**
4
+ * Selects an output mime-type based on the CID and a passed `Accept` header
5
+ */
6
+ export declare function selectOutputType(cid: CID, accept?: string): string | undefined;
7
+ /**
8
+ * Converts a `format=...` query param to a mime type as would be found in the
9
+ * `Accept` header, if a valid mapping is available
10
+ */
11
+ export declare function queryFormatToAcceptHeader(format?: RequestFormatShorthand): string | undefined;
12
+ //# sourceMappingURL=select-output-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-output-type.d.ts","sourceRoot":"","sources":["../../../src/utils/select-output-type.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAwD3C;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM/E;AAuFD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAI9F"}
@@ -0,0 +1,148 @@
1
+ import { code as dagCborCode } from '@ipld/dag-cbor';
2
+ import { code as dagJsonCode } from '@ipld/dag-json';
3
+ import { code as dagPbCode } from '@ipld/dag-pb';
4
+ import { code as jsonCode } from 'multiformats/codecs/json';
5
+ import { code as rawCode } from 'multiformats/codecs/raw';
6
+ /**
7
+ * This maps supported response types for each codec supported by verified-fetch
8
+ */
9
+ const CID_TYPE_MAP = {
10
+ [dagCborCode]: [
11
+ 'application/json',
12
+ 'application/vnd.ipld.dag-cbor',
13
+ 'application/cbor',
14
+ 'application/vnd.ipld.dag-json',
15
+ 'application/octet-stream',
16
+ 'application/vnd.ipld.raw',
17
+ 'application/vnd.ipfs.ipns-record',
18
+ 'application/vnd.ipld.car'
19
+ ],
20
+ [dagJsonCode]: [
21
+ 'application/json',
22
+ 'application/vnd.ipld.dag-cbor',
23
+ 'application/cbor',
24
+ 'application/vnd.ipld.dag-json',
25
+ 'application/octet-stream',
26
+ 'application/vnd.ipld.raw',
27
+ 'application/vnd.ipfs.ipns-record',
28
+ 'application/vnd.ipld.car'
29
+ ],
30
+ [jsonCode]: [
31
+ 'application/json',
32
+ 'application/vnd.ipld.dag-cbor',
33
+ 'application/cbor',
34
+ 'application/vnd.ipld.dag-json',
35
+ 'application/octet-stream',
36
+ 'application/vnd.ipld.raw',
37
+ 'application/vnd.ipfs.ipns-record',
38
+ 'application/vnd.ipld.car'
39
+ ],
40
+ [dagPbCode]: [
41
+ 'application/octet-stream',
42
+ 'application/json',
43
+ 'application/vnd.ipld.dag-cbor',
44
+ 'application/cbor',
45
+ 'application/vnd.ipld.dag-json',
46
+ 'application/vnd.ipld.raw',
47
+ 'application/vnd.ipfs.ipns-record',
48
+ 'application/vnd.ipld.car',
49
+ 'application/x-tar'
50
+ ],
51
+ [rawCode]: [
52
+ 'application/octet-stream',
53
+ 'application/vnd.ipld.raw',
54
+ 'application/vnd.ipfs.ipns-record',
55
+ 'application/vnd.ipld.car',
56
+ 'application/x-tar'
57
+ ]
58
+ };
59
+ /**
60
+ * Selects an output mime-type based on the CID and a passed `Accept` header
61
+ */
62
+ export function selectOutputType(cid, accept) {
63
+ const cidMimeTypes = CID_TYPE_MAP[cid.code];
64
+ if (accept != null) {
65
+ return chooseMimeType(accept, cidMimeTypes);
66
+ }
67
+ }
68
+ function chooseMimeType(accept, validMimeTypes) {
69
+ const requestedMimeTypes = accept
70
+ .split(',')
71
+ .map(s => {
72
+ const parts = s.trim().split(';');
73
+ return {
74
+ mimeType: `${parts[0]}`.trim(),
75
+ weight: parseQFactor(parts[1])
76
+ };
77
+ })
78
+ .sort((a, b) => {
79
+ if (a.weight === b.weight) {
80
+ return 0;
81
+ }
82
+ if (a.weight > b.weight) {
83
+ return -1;
84
+ }
85
+ return 1;
86
+ })
87
+ .map(s => s.mimeType);
88
+ for (const headerFormat of requestedMimeTypes) {
89
+ for (const mimeType of validMimeTypes) {
90
+ if (headerFormat.includes(mimeType)) {
91
+ return mimeType;
92
+ }
93
+ if (headerFormat === '*/*') {
94
+ return mimeType;
95
+ }
96
+ if (headerFormat.startsWith('*/') && mimeType.split('/')[1] === headerFormat.split('/')[1]) {
97
+ return mimeType;
98
+ }
99
+ if (headerFormat.endsWith('/*') && mimeType.split('/')[0] === headerFormat.split('/')[0]) {
100
+ return mimeType;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ /**
106
+ * Parses q-factor weighting from the accept header to allow letting some mime
107
+ * types take precedence over others.
108
+ *
109
+ * If the q-factor for an acceptable mime representation is omitted it defaults
110
+ * to `1`.
111
+ *
112
+ * All specified values should be in the range 0-1.
113
+ *
114
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept#q
115
+ */
116
+ function parseQFactor(str) {
117
+ if (str != null) {
118
+ str = str.trim();
119
+ }
120
+ if (str == null || !str.startsWith('q=')) {
121
+ return 1;
122
+ }
123
+ const factor = parseFloat(str.replace('q=', ''));
124
+ if (isNaN(factor)) {
125
+ return 0;
126
+ }
127
+ return factor;
128
+ }
129
+ const FORMAT_TO_MIME_TYPE = {
130
+ raw: 'application/vnd.ipld.raw',
131
+ car: 'application/vnd.ipld.car',
132
+ 'dag-json': 'application/vnd.ipld.dag-json',
133
+ 'dag-cbor': 'application/vnd.ipld.dag-cbor',
134
+ json: 'application/json',
135
+ cbor: 'application/cbor',
136
+ 'ipns-record': 'application/vnd.ipfs.ipns-record',
137
+ tar: 'application/x-tar'
138
+ };
139
+ /**
140
+ * Converts a `format=...` query param to a mime type as would be found in the
141
+ * `Accept` header, if a valid mapping is available
142
+ */
143
+ export function queryFormatToAcceptHeader(format) {
144
+ if (format != null) {
145
+ return FORMAT_TO_MIME_TYPE[format];
146
+ }
147
+ }
148
+ //# sourceMappingURL=select-output-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-output-type.js","sourceRoot":"","sources":["../../../src/utils/select-output-type.ts"],"names":[],"mappings":"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"}
@@ -1,57 +1,50 @@
1
- import { type DAGCBOR } from '@helia/dag-cbor';
2
- import { type DAGJSON } from '@helia/dag-json';
3
- import { type IPNS } from '@helia/ipns';
4
- import { type JSON } from '@helia/json';
1
+ import { type DNSResolver, type IPNS } from '@helia/ipns';
5
2
  import { type UnixFS as HeliaUnixFs } from '@helia/unixfs';
6
- import { type PathWalkerFn } from './utils/walk-path.js';
7
3
  import type { ContentTypeParser, Resource, VerifiedFetchInit as VerifiedFetchOptions } from './index.js';
8
4
  import type { Helia } from '@helia/interface';
9
5
  interface VerifiedFetchComponents {
10
6
  helia: Helia;
11
7
  ipns?: IPNS;
12
8
  unixfs?: HeliaUnixFs;
13
- dagJson?: DAGJSON;
14
- json?: JSON;
15
- dagCbor?: DAGCBOR;
16
- pathWalker?: PathWalkerFn;
17
9
  }
18
10
  /**
19
11
  * Potential future options for the VerifiedFetch constructor.
20
12
  */
21
13
  interface VerifiedFetchInit {
22
14
  contentTypeParser?: ContentTypeParser;
15
+ dnsResolvers?: DNSResolver[];
23
16
  }
24
17
  export declare class VerifiedFetch {
25
18
  private readonly helia;
26
19
  private readonly ipns;
27
20
  private readonly unixfs;
28
- private readonly dagJson;
29
- private readonly dagCbor;
30
- private readonly json;
31
- private readonly pathWalker;
32
21
  private readonly log;
33
22
  private readonly contentTypeParser;
34
- constructor({ helia, ipns, unixfs, dagJson, json, dagCbor, pathWalker }: VerifiedFetchComponents, init?: VerifiedFetchInit);
23
+ constructor({ helia, ipns, unixfs }: VerifiedFetchComponents, init?: VerifiedFetchInit);
24
+ /**
25
+ * Accepts an `ipns://...` URL as a string and returns a `Response` containing
26
+ * a raw IPNS record.
27
+ */
35
28
  private handleIPNSRecord;
36
- private handleIPLDCar;
37
- private handleDagJson;
29
+ /**
30
+ * Accepts a `CID` and returns a `Response` with a body stream that is a CAR
31
+ * of the `DAG` referenced by the `CID`.
32
+ */
33
+ private handleCar;
34
+ /**
35
+ * Accepts a UnixFS `CID` and returns a `.tar` file containing the file or
36
+ * directory structure referenced by the `CID`.
37
+ */
38
+ private handleTar;
38
39
  private handleJson;
39
40
  private handleDagCbor;
40
41
  private handleDagPb;
41
42
  private handleRaw;
42
43
  private setContentType;
43
44
  /**
44
- * Determines the format requested by the client, defaults to `null` if no format is requested.
45
- *
46
- * @see https://specs.ipfs.tech/http-gateways/path-gateway/#format-request-query-parameter
47
- * @default 'raw'
48
- */
49
- private getFormat;
50
- /**
51
- * Map of format to specific handlers for that format.
52
- * These format handlers should adjust the response headers as specified in https://specs.ipfs.tech/http-gateways/path-gateway/#response-headers
45
+ * If the user has not specified an Accept header or format query string arg,
46
+ * use the CID codec to choose an appropriate handler for the block data.
53
47
  */
54
- private readonly formatHandlers;
55
48
  private readonly codecHandlers;
56
49
  fetch(resource: Resource, opts?: VerifiedFetchOptions): Promise<Response>;
57
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"verified-fetch.d.ts","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAqB,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,EAAqB,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAyB,KAAK,MAAM,IAAI,WAAW,EAAoB,MAAM,eAAe,CAAA;AASnG,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,KAAK,EAAa,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACnH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAK7C,UAAU,uBAAuB;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,YAAY,CAAA;CAC1B;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AA4BD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;gBAEpD,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,iBAAiB;YAmB7G,gBAAgB;YAOhB,aAAa;YAMb,aAAa;YAab,UAAU;YAaV,aAAa;YAab,WAAW;YA6CX,SAAS;YAUT,cAAc;IA0B5B;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAyBjB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAS9B;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAM7B;IAEK,KAAK,CAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuDhF;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAG7B"}
1
+ {"version":3,"file":"verified-fetch.d.ts","sourceRoot":"","sources":["../../src/verified-fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AAE5E,OAAO,EAAyB,KAAK,MAAM,IAAI,WAAW,EAAoB,MAAM,eAAe,CAAA;AAwBnG,OAAO,KAAK,EAAa,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEnH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAK7C,UAAU,uBAAuB;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;CAC7B;AAwED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;gBAEpD,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAcvF;;;OAGG;YACW,gBAAgB;IAgC9B;;;OAGG;YACW,SAAS;IAUvB;;;OAGG;YACW,SAAS;YAaT,UAAU;YA0BV,aAAa;YA8Cb,WAAW;YAwDX,SAAS;YAiBT,cAAc;IA0B5B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAO7B;IAEK,KAAK,CAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsGhF;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAG7B"}