@seedprotocol/publish 0.4.8

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 (100) hide show
  1. package/README.md +75 -0
  2. package/dist/config.d.ts +40 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/helpers/blockchain.d.ts +3 -0
  5. package/dist/helpers/blockchain.d.ts.map +1 -0
  6. package/dist/helpers/constants.d.ts +16 -0
  7. package/dist/helpers/constants.d.ts.map +1 -0
  8. package/dist/helpers/debugLog.d.ts +7 -0
  9. package/dist/helpers/debugLog.d.ts.map +1 -0
  10. package/dist/helpers/easDirect.d.ts +91 -0
  11. package/dist/helpers/easDirect.d.ts.map +1 -0
  12. package/dist/helpers/thirdweb/11155420/0x043462304114da543add6b693c686b7d98865f3e.d.ts +565 -0
  13. package/dist/helpers/thirdweb/11155420/0x043462304114da543add6b693c686b7d98865f3e.d.ts.map +1 -0
  14. package/dist/helpers/thirdweb/11155420/0x67a4881391ad8b1f197c6bf7a556d70f87c3a786.d.ts +1586 -0
  15. package/dist/helpers/thirdweb/11155420/0x67a4881391ad8b1f197c6bf7a556d70f87c3a786.d.ts.map +1 -0
  16. package/dist/helpers/thirdweb/11155420/0x76f47d88bfaf670f5208911181fcdc0e160cb16d.d.ts +2878 -0
  17. package/dist/helpers/thirdweb/11155420/0x76f47d88bfaf670f5208911181fcdc0e160cb16d.d.ts.map +1 -0
  18. package/dist/helpers/thirdweb/11155420/0xa2b8315fd0f31c334be1b137d9e0ffbb3f200e57.d.ts +2 -0
  19. package/dist/helpers/thirdweb/11155420/0xa2b8315fd0f31c334be1b137d9e0ffbb3f200e57.d.ts.map +1 -0
  20. package/dist/helpers/thirdweb/11155420/0xcd8c945872df8e664e55cf8885c85ea3ea8f2148.d.ts +1617 -0
  21. package/dist/helpers/thirdweb/11155420/0xcd8c945872df8e664e55cf8885c85ea3ea8f2148.d.ts.map +1 -0
  22. package/dist/helpers/thirdweb/11155420/nameSchemaAttestation.d.ts +45 -0
  23. package/dist/helpers/thirdweb/11155420/nameSchemaAttestation.d.ts.map +1 -0
  24. package/dist/helpers/thirdweb/11155420/schemaRegistry.d.ts +145 -0
  25. package/dist/helpers/thirdweb/11155420/schemaRegistry.d.ts.map +1 -0
  26. package/dist/helpers/thirdweb.d.ts +40 -0
  27. package/dist/helpers/thirdweb.d.ts.map +1 -0
  28. package/dist/helpers/transformPayloadToIntegerIds.d.ts +34 -0
  29. package/dist/helpers/transformPayloadToIntegerIds.d.ts.map +1 -0
  30. package/dist/helpers/uploadApi.d.ts +30 -0
  31. package/dist/helpers/uploadApi.d.ts.map +1 -0
  32. package/dist/index.d.ts +12 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +11733 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/react/ConnectButton.d.ts +4 -0
  37. package/dist/react/ConnectButton.d.ts.map +1 -0
  38. package/dist/react/PublishProvider.d.ts +19 -0
  39. package/dist/react/PublishProvider.d.ts.map +1 -0
  40. package/dist/services/PublishManager/actions/addSubscription.d.ts +2 -0
  41. package/dist/services/PublishManager/actions/addSubscription.d.ts.map +1 -0
  42. package/dist/services/PublishManager/actions/createPublish.d.ts +2 -0
  43. package/dist/services/PublishManager/actions/createPublish.d.ts.map +1 -0
  44. package/dist/services/PublishManager/actions/publishDone.d.ts +2 -0
  45. package/dist/services/PublishManager/actions/publishDone.d.ts.map +1 -0
  46. package/dist/services/PublishManager/actions/query.d.ts +2 -0
  47. package/dist/services/PublishManager/actions/query.d.ts.map +1 -0
  48. package/dist/services/PublishManager/actions/removeSubscription.d.ts +2 -0
  49. package/dist/services/PublishManager/actions/removeSubscription.d.ts.map +1 -0
  50. package/dist/services/PublishManager/actions/requestSavePublish.d.ts +2 -0
  51. package/dist/services/PublishManager/actions/requestSavePublish.d.ts.map +1 -0
  52. package/dist/services/PublishManager/actions/stopAll.d.ts +2 -0
  53. package/dist/services/PublishManager/actions/stopAll.d.ts.map +1 -0
  54. package/dist/services/PublishManager/actions/stopPublish.d.ts +2 -0
  55. package/dist/services/PublishManager/actions/stopPublish.d.ts.map +1 -0
  56. package/dist/services/PublishManager/actors/activeRouter.d.ts +3 -0
  57. package/dist/services/PublishManager/actors/activeRouter.d.ts.map +1 -0
  58. package/dist/services/PublishManager/actors/restoreFromDb.d.ts +3 -0
  59. package/dist/services/PublishManager/actors/restoreFromDb.d.ts.map +1 -0
  60. package/dist/services/PublishManager/actors/savePublish.d.ts +6 -0
  61. package/dist/services/PublishManager/actors/savePublish.d.ts.map +1 -0
  62. package/dist/services/PublishManager/actors/subscribe.d.ts +3 -0
  63. package/dist/services/PublishManager/actors/subscribe.d.ts.map +1 -0
  64. package/dist/services/PublishManager/index.d.ts +82 -0
  65. package/dist/services/PublishManager/index.d.ts.map +1 -0
  66. package/dist/services/configService.d.ts +15 -0
  67. package/dist/services/configService.d.ts.map +1 -0
  68. package/dist/services/publish/actors/checking.d.ts +9 -0
  69. package/dist/services/publish/actors/checking.d.ts.map +1 -0
  70. package/dist/services/publish/actors/createAttestationsDirectToEas.d.ts +6 -0
  71. package/dist/services/publish/actors/createAttestationsDirectToEas.d.ts.map +1 -0
  72. package/dist/services/publish/actors/persistSeedUid.d.ts +11 -0
  73. package/dist/services/publish/actors/persistSeedUid.d.ts.map +1 -0
  74. package/dist/services/publish/actors.d.ts +31 -0
  75. package/dist/services/publish/actors.d.ts.map +1 -0
  76. package/dist/services/publish/helpers/ensureEasSchemas.d.ts +14 -0
  77. package/dist/services/publish/helpers/ensureEasSchemas.d.ts.map +1 -0
  78. package/dist/services/publish/helpers/getSchemasNeedingNameAttestation.d.ts +17 -0
  79. package/dist/services/publish/helpers/getSchemasNeedingNameAttestation.d.ts.map +1 -0
  80. package/dist/services/publish/helpers/itemNeedsArweave.d.ts +16 -0
  81. package/dist/services/publish/helpers/itemNeedsArweave.d.ts.map +1 -0
  82. package/dist/services/publish/index.d.ts +116 -0
  83. package/dist/services/publish/index.d.ts.map +1 -0
  84. package/dist/services/publish/seeds.d.ts +2 -0
  85. package/dist/services/publish/seeds.d.ts.map +1 -0
  86. package/dist/services/publish/utils.d.ts +18 -0
  87. package/dist/services/publish/utils.d.ts.map +1 -0
  88. package/dist/services/publish/versions.d.ts +3 -0
  89. package/dist/services/publish/versions.d.ts.map +1 -0
  90. package/dist/services/shared.d.ts +7 -0
  91. package/dist/services/shared.d.ts.map +1 -0
  92. package/dist/services/upload/actors.d.ts +8 -0
  93. package/dist/services/upload/actors.d.ts.map +1 -0
  94. package/dist/services/upload/index.d.ts +2 -0
  95. package/dist/services/upload/index.d.ts.map +1 -0
  96. package/dist/services/upload/utils.d.ts +19 -0
  97. package/dist/services/upload/utils.d.ts.map +1 -0
  98. package/dist/types.d.ts +49 -0
  99. package/dist/types.d.ts.map +1 -0
  100. package/package.json +54 -0
package/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # @seedprotocol/publish
2
+
3
+ Publish UI components and helpers for Seed Protocol.
4
+
5
+ The publish flow (ConnectButton, etc.) runs `ensureEasSchemasForItem` before `getPublishPayload`, which registers EAS schemas and adds naming attestations so EASSCAN displays them. If you build a custom publish flow that calls `item.getPublishPayload()` directly, you must run schema setup first or use this package's flow.
6
+
7
+ ## Setup
8
+
9
+ Wrap your app with `PublishProvider` so that `ConnectButton` and other publish components work correctly. The provider includes:
10
+
11
+ - Thirdweb's required context (React Query, connection manager)
12
+ - SeedProvider (React Query for Seed SDK hooks like `useItems`, `useModels`, `useSchemas`)
13
+
14
+ You can optionally pass `queryClient` or `queryClientRef` to customize the Seed QueryClient.
15
+
16
+ `thirdwebClientId` and `uploadApiBaseUrl` are required. Other values (account factory, EAS contract) are defined as constants in the package.
17
+
18
+ ### useIntegerLocalIds
19
+
20
+ When using the new contract that expects `uint256` localIdIndex/publishLocalIdIndex instead of string localId/publishLocalId (gas-efficient), set `useIntegerLocalIds: true`:
21
+
22
+ ```tsx
23
+ initPublish({
24
+ thirdwebClientId: '...',
25
+ uploadApiBaseUrl: '...',
26
+ useIntegerLocalIds: true, // Use integer-based payload for new contract
27
+ })
28
+ ```
29
+
30
+ To revert to the old contract (string-based), set `useIntegerLocalIds: false` or omit the flag. No code changes required beyond config.
31
+
32
+ ### Option A: Config via provider
33
+
34
+ ```tsx
35
+ import { PublishProvider, ConnectButton } from '@seedprotocol/publish'
36
+
37
+ function App() {
38
+ return (
39
+ <PublishProvider
40
+ config={{
41
+ thirdwebClientId: import.meta.env.VITE_THIRDWEB_CLIENT_ID,
42
+ uploadApiBaseUrl: import.meta.env.VITE_UPLOAD_API_BASE_URL,
43
+ }}
44
+ >
45
+ <ConnectButton />
46
+ </PublishProvider>
47
+ )
48
+ }
49
+ ```
50
+
51
+ ### Option B: Config via initPublish
52
+
53
+ ```tsx
54
+ import { PublishProvider, ConnectButton, initPublish } from '@seedprotocol/publish'
55
+
56
+ initPublish({
57
+ thirdwebClientId: import.meta.env.VITE_THIRDWEB_CLIENT_ID,
58
+ uploadApiBaseUrl: import.meta.env.VITE_UPLOAD_API_BASE_URL,
59
+ })
60
+
61
+ function App() {
62
+ return (
63
+ <PublishProvider>
64
+ <ConnectButton />
65
+ </PublishProvider>
66
+ )
67
+ }
68
+ ```
69
+
70
+ ## Development
71
+
72
+ ```bash
73
+ bun install
74
+ bun run build
75
+ ```
@@ -0,0 +1,40 @@
1
+ export interface PublishConfig {
2
+ thirdwebClientId: string;
3
+ /** Upload API base URL (e.g. from VITE_UPLOAD_API_BASE_URL or NEXT_PUBLIC_UPLOAD_API_BASE_URL) */
4
+ uploadApiBaseUrl: string;
5
+ /**
6
+ * Use integer indices instead of string localId/publishLocalId for multiPublish (gas-efficient).
7
+ * Set to true when using the new contract that expects uint256 localIdIndex/publishLocalIdIndex.
8
+ * Default: false (uses string-based payload for backward compatibility).
9
+ */
10
+ useIntegerLocalIds?: boolean;
11
+ /**
12
+ * Bypass the SeedProtocol contract and call EAS attest/multiAttest directly from the user's wallet.
13
+ * Default: false (uses contract multiPublish).
14
+ */
15
+ useDirectEas?: boolean;
16
+ /**
17
+ * Optional IModularCore module to ensure is installed on the connected account contract.
18
+ * When set, onConnect will check getInstalledModules and install if missing.
19
+ */
20
+ modularAccountModuleContract?: string;
21
+ /** Optional module install data (default "0x"). Used with modularAccountModuleContract. */
22
+ modularAccountModuleData?: string;
23
+ /**
24
+ * Use the modular executor for multiPublish.
25
+ * Default: false (uses the smart wallet executor).
26
+ */
27
+ useModularExecutor?: boolean;
28
+ }
29
+ export declare function initPublish(c: PublishConfig): void;
30
+ export interface ResolvedPublishConfig extends PublishConfig {
31
+ thirdwebAccountFactoryAddress: string;
32
+ uploadApiBaseUrl: string;
33
+ easContractAddress: string;
34
+ useIntegerLocalIds: boolean;
35
+ useDirectEas: boolean;
36
+ modularAccountModuleData: string;
37
+ useModularExecutor: boolean;
38
+ }
39
+ export declare function getPublishConfig(): ResolvedPublishConfig;
40
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,kGAAkG;IAClG,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,2FAA2F;IAC3F,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAwBD,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAElD;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,6BAA6B,EAAE,MAAM,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,EAAE,OAAO,CAAA;IACrB,wBAAwB,EAAE,MAAM,CAAA;IAChC,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,wBAAgB,gBAAgB,IAAI,qBAAqB,CAgBxD"}
@@ -0,0 +1,3 @@
1
+ import Arweave from 'arweave';
2
+ export declare const getArweave: () => Arweave;
3
+ //# sourceMappingURL=blockchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchain.d.ts","sourceRoot":"","sources":["../../src/helpers/blockchain.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,eAAO,MAAM,UAAU,QAAO,OAe7B,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Constants for the publish package.
3
+ */
4
+ /** EAS Schema Registry on Optimism Sepolia (chain 11155420) */
5
+ export declare const SCHEMA_REGISTRY_ADDRESS: "0x4200000000000000000000000000000000000020";
6
+ /** Schema #1 (Name a Schema) - universal UID for naming attestations */
7
+ export declare const EAS_SCHEMA_NAME_ATTESTATION_UID: "0x44d562ac1d7cd77e232978687fea027ace48f719cf1d58c7888e509663bb87fc";
8
+ /** Thirdweb ManagedAccount factory on Optimism Sepolia (chain 11155420) */
9
+ export declare const THIRDWEB_ACCOUNT_FACTORY_ADDRESS: "0x76f47d88bfaf670f5208911181fcdc0e160cb16d";
10
+ /** EAS contract address on Optimism Sepolia (chain 11155420) */
11
+ export declare const EAS_CONTRACT_ADDRESS: "0x4200000000000000000000000000000000000021";
12
+ export declare const PublishMachineStates: {
13
+ readonly SUCCESS: "success";
14
+ readonly FAILURE: "failure";
15
+ };
16
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/helpers/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,EAClC,4CAAqD,CAAA;AAEvD,wEAAwE;AACxE,eAAO,MAAM,+BAA+B,EAC1C,oEAA6E,CAAA;AAE/E,2EAA2E;AAC3E,eAAO,MAAM,gCAAgC,EAC3C,4CAAqD,CAAA;AAEvD,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,EAC/B,4CAAqD,CAAA;AAEvD,eAAO,MAAM,oBAAoB;;;CAGvB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export declare function debugLog(params: {
2
+ location: string;
3
+ message: string;
4
+ data?: Record<string, unknown>;
5
+ hypothesisId?: string;
6
+ }): void;
7
+ //# sourceMappingURL=debugLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugLog.d.ts","sourceRoot":"","sources":["../../src/helpers/debugLog.ts"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,QAkBA"}
@@ -0,0 +1,91 @@
1
+ import type { ThirdwebClient } from 'thirdweb';
2
+ import type { Chain } from 'thirdweb/chains';
3
+ declare const ZERO_ADDRESS: "0x0000000000000000000000000000000000000000";
4
+ declare const ZERO_BYTES32: `0x${string}`;
5
+ export type EasAttestParams = {
6
+ schema: `0x${string}`;
7
+ data: {
8
+ recipient?: `0x${string}`;
9
+ expirationTime?: bigint;
10
+ revocable?: boolean;
11
+ refUID: `0x${string}`;
12
+ data: `0x${string}`;
13
+ value?: bigint;
14
+ };
15
+ };
16
+ /**
17
+ * Prepares a single EAS attest call.
18
+ * Used for Seed and Version attestations in the direct-to-EAS publish path.
19
+ */
20
+ export declare function prepareEasAttest(client: ThirdwebClient, chain: Chain, params: EasAttestParams): import("thirdweb").PreparedTransaction<[], {
21
+ readonly name: "attest";
22
+ readonly type: "function";
23
+ readonly stateMutability: "payable";
24
+ readonly inputs: readonly [{
25
+ readonly type: "tuple";
26
+ readonly components: readonly [{
27
+ readonly type: "bytes32";
28
+ readonly name: "schema";
29
+ }, {
30
+ readonly type: "tuple";
31
+ readonly components: readonly [{
32
+ readonly type: "address";
33
+ readonly name: "recipient";
34
+ }, {
35
+ readonly type: "uint64";
36
+ readonly name: "expirationTime";
37
+ }, {
38
+ readonly type: "bool";
39
+ readonly name: "revocable";
40
+ }, {
41
+ readonly type: "bytes32";
42
+ readonly name: "refUID";
43
+ }, {
44
+ readonly type: "bytes";
45
+ readonly name: "data";
46
+ }, {
47
+ readonly type: "uint256";
48
+ readonly name: "value";
49
+ }];
50
+ readonly name: "data";
51
+ }];
52
+ readonly name: "request";
53
+ }];
54
+ readonly outputs: readonly [{
55
+ readonly type: "bytes32";
56
+ }];
57
+ }, import("thirdweb").PrepareTransactionOptions>;
58
+ export type MultiAttestationRequest = {
59
+ schema: `0x${string}`;
60
+ data: Array<{
61
+ recipient: `0x${string}`;
62
+ expirationTime: bigint;
63
+ revocable: boolean;
64
+ refUID: `0x${string}`;
65
+ data: `0x${string}`;
66
+ value: bigint;
67
+ }>;
68
+ };
69
+ /**
70
+ * Prepares an EAS multiAttest call for batch attestations.
71
+ * Used for property attestations in the direct-to-EAS publish path.
72
+ */
73
+ export declare function prepareEasMultiAttest(client: ThirdwebClient, chain: Chain, requests: MultiAttestationRequest[]): import("thirdweb").PreparedTransaction<import("abitype").Abi, import("abitype").AbiFunction, import("thirdweb").PrepareTransactionOptions>;
74
+ /**
75
+ * Encodes a bytes32 value for Seed/Version attestation data.
76
+ * Equivalent to Solidity abi.encode(bytes32).
77
+ */
78
+ export declare function encodeBytes32(value: `0x${string}`): `0x${string}`;
79
+ /**
80
+ * Extracts the attestation UID from an EAS attest transaction receipt.
81
+ * Parses the Attested event from the receipt logs.
82
+ */
83
+ export declare function getAttestationUidFromReceipt(receipt: {
84
+ logs?: Array<{
85
+ address?: string;
86
+ data?: string;
87
+ topics?: unknown[];
88
+ }>;
89
+ }, easContractAddress: string): string | undefined;
90
+ export { ZERO_ADDRESS, ZERO_BYTES32 };
91
+ //# sourceMappingURL=easDirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easDirect.d.ts","sourceRoot":"","sources":["../../src/helpers/easDirect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAU5C,QAAA,MAAM,YAAY,EAAG,4CAAqD,CAAA;AAC1E,QAAA,MAAM,YAAY,EAA8B,KAAK,MAAM,EAAE,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,IAAI,EAAE;QACJ,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;QACzB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF,CAAA;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA2BxB;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,IAAI,EAAE,KAAK,CAAC;QACV,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;QACxB,cAAc,EAAE,MAAM,CAAA;QACtB,SAAS,EAAE,OAAO,CAAA;QAClB,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,CAAA;CACH,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,uBAAuB,EAAE,8IAepC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAEjE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,EAClF,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,SAAS,CAkBpB;AAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA"}