@stratal/framework 0.0.17 → 0.0.19

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 (52) hide show
  1. package/dist/access-control/index.d.mts +180 -0
  2. package/dist/access-control/index.d.mts.map +1 -0
  3. package/dist/access-control/index.mjs +71 -0
  4. package/dist/access-control/index.mjs.map +1 -0
  5. package/dist/access.service-BjYVtUJw.mjs +145 -0
  6. package/dist/access.service-BjYVtUJw.mjs.map +1 -0
  7. package/dist/auth/index.d.mts +134 -13
  8. package/dist/auth/index.d.mts.map +1 -1
  9. package/dist/auth/index.mjs +262 -75
  10. package/dist/auth/index.mjs.map +1 -1
  11. package/dist/{auth-context-BD2ApWg1.d.mts → auth-context-BXSkiJ56.d.mts} +14 -1
  12. package/dist/auth-context-BXSkiJ56.d.mts.map +1 -0
  13. package/dist/{auth-context-CV3Ko1ew.mjs → auth-context-BberoPal.mjs} +25 -4
  14. package/dist/auth-context-BberoPal.mjs.map +1 -0
  15. package/dist/context/index.d.mts +1 -1
  16. package/dist/context/index.mjs +2 -2
  17. package/dist/database/index.d.mts +3 -3
  18. package/dist/database/index.mjs +49 -43
  19. package/dist/database/index.mjs.map +1 -1
  20. package/dist/{decorate-RSane8dy.mjs → decorate-CdfCRvAc.mjs} +1 -1
  21. package/dist/{decorateMetadata-CETItPez.mjs → decorateMetadata-CqtSx3_1.mjs} +1 -1
  22. package/dist/decorateParam-Dc5DGEpb.mjs +18 -0
  23. package/dist/decorateParam-Dc5DGEpb.mjs.map +1 -0
  24. package/dist/{errors-C_KIIU1v.mjs → errors-B1vVXc1T.mjs} +1 -1
  25. package/dist/{errors-C_KIIU1v.mjs.map → errors-B1vVXc1T.mjs.map} +1 -1
  26. package/dist/factory/index.d.mts +1 -1
  27. package/dist/guards/index.d.mts +7 -6
  28. package/dist/guards/index.d.mts.map +1 -1
  29. package/dist/guards/index.mjs +39 -30
  30. package/dist/guards/index.mjs.map +1 -1
  31. package/dist/{index-eukGTmI8.d.mts → index-CpFBG0Ws.d.mts} +26 -45
  32. package/dist/index-CpFBG0Ws.d.mts.map +1 -0
  33. package/dist/index.d.mts +2 -2
  34. package/dist/insufficient-permissions.error-CRnOHYvq.mjs +23 -0
  35. package/dist/insufficient-permissions.error-CRnOHYvq.mjs.map +1 -0
  36. package/dist/types-BLyu9dAd.d.mts +11 -0
  37. package/dist/types-BLyu9dAd.d.mts.map +1 -0
  38. package/dist/types-BZlcRR2M.d.mts +92 -0
  39. package/dist/types-BZlcRR2M.d.mts.map +1 -0
  40. package/package.json +25 -25
  41. package/dist/auth-context-BD2ApWg1.d.mts.map +0 -1
  42. package/dist/auth-context-CV3Ko1ew.mjs.map +0 -1
  43. package/dist/decorateParam-CcTvpNsw.mjs +0 -8
  44. package/dist/index-eukGTmI8.d.mts.map +0 -1
  45. package/dist/rbac/index.d.mts +0 -206
  46. package/dist/rbac/index.d.mts.map +0 -1
  47. package/dist/rbac/index.mjs +0 -346
  48. package/dist/rbac/index.mjs.map +0 -1
  49. package/dist/tokens-Di1ofovy.mjs +0 -32
  50. package/dist/tokens-Di1ofovy.mjs.map +0 -1
  51. package/dist/types-Gjk0d2qB.d.mts +0 -47
  52. package/dist/types-Gjk0d2qB.d.mts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stratal/framework",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Temitayo Fadojutimi",
@@ -26,6 +26,10 @@
26
26
  "types": "./dist/index.d.mts",
27
27
  "import": "./dist/index.mjs"
28
28
  },
29
+ "./access-control": {
30
+ "types": "./dist/access-control/index.d.mts",
31
+ "import": "./dist/access-control/index.mjs"
32
+ },
29
33
  "./auth": {
30
34
  "types": "./dist/auth/index.d.mts",
31
35
  "import": "./dist/auth/index.mjs"
@@ -46,10 +50,6 @@
46
50
  "types": "./dist/guards/index.d.mts",
47
51
  "import": "./dist/guards/index.mjs"
48
52
  },
49
- "./rbac": {
50
- "types": "./dist/rbac/index.d.mts",
51
- "import": "./dist/rbac/index.mjs"
52
- },
53
53
  "./package.json": "./package.json"
54
54
  },
55
55
  "scripts": {
@@ -63,40 +63,40 @@
63
63
  "test:coverage": "vitest run --coverage",
64
64
  "test:db": "docker compose -f test/docker-compose.yml up -d",
65
65
  "typecheck": "yarn tsc --noEmit",
66
- "lint": "npx eslint .",
67
- "lint:fix": "npx eslint --fix ."
66
+ "lint": "npx oxlint .",
67
+ "lint:fix": "npx oxlint --fix ."
68
68
  },
69
69
  "dependencies": {
70
- "@better-auth/core": "^1.5.5",
71
- "@faker-js/faker": "^10.3.0",
72
- "@zenstackhq/cli": "^3.4.6",
73
- "@zenstackhq/orm": "^3.4.6",
74
- "better-auth": "^1.5.5",
75
- "casbin": "^5.49.0",
70
+ "@better-auth/core": "^1.6.9",
71
+ "@faker-js/faker": "^10.4.0",
72
+ "@zenstackhq/cli": "^3.6.3",
73
+ "@zenstackhq/orm": "^3.6.3",
74
+ "better-auth": "^1.6.9",
76
75
  "postgres-array": "^3.0.4"
77
76
  },
78
77
  "peerDependencies": {
79
78
  "pg": "^8.0.0",
80
79
  "reflect-metadata": "^0.2.2",
81
- "stratal": "^0.0.17"
80
+ "stratal": "^0.0.19"
82
81
  },
83
82
  "devDependencies": {
84
- "@cloudflare/vitest-pool-workers": "^0.13.3",
85
- "@cloudflare/workers-types": "4.20260317.1",
83
+ "@cloudflare/vitest-pool-workers": "^0.15.0",
84
+ "@cloudflare/workers-types": "4.20260426.1",
86
85
  "@stratal/testing": "workspace:^",
87
- "@types/node": "^25.5.0",
86
+ "@types/node": "^25.6.0",
88
87
  "@types/pg": "^8.20.0",
89
- "@vitest/coverage-istanbul": "~4.1.0",
90
- "@vitest/runner": "~4.1.0",
91
- "@vitest/snapshot": "~4.1.0",
92
- "@zenstackhq/better-auth": "^3.4.6",
88
+ "@vitest/coverage-istanbul": "~4.1.5",
89
+ "@vitest/runner": "~4.1.5",
90
+ "@vitest/snapshot": "~4.1.5",
91
+ "@zenstackhq/better-auth": "^3.6.3",
93
92
  "dotenv-cli": "^11.0.0",
93
+ "kysely": "0.28.16",
94
94
  "pg": "^8.20.0",
95
95
  "reflect-metadata": "^0.2.2",
96
96
  "stratal": "workspace:*",
97
- "tsdown": "^0.21.4",
98
- "typescript": "^5.9.3",
99
- "vitest": "~4.1.0",
100
- "wrangler": "^4.76.0"
97
+ "tsdown": "^0.21.10",
98
+ "typescript": "^6.0.3",
99
+ "vitest": "~4.1.5",
100
+ "wrangler": "^4.85.0"
101
101
  }
102
102
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-context-BD2ApWg1.d.mts","names":[],"sources":["../src/context/auth-context.ts"],"mappings":";UAMiB,QAAA;EACf,MAAA;AAAA;AAAA,cAIW,WAAA;EAAA,UACD,MAAA;EALJ;AAGR;;;EAQE,cAAA,CAAe,IAAA,EAAM,QAAA;EANX;;;;EAcV,SAAA,CAAA;EAQA;;;;EAAA,aAAA,CAAA;EA+BgB;;;EApBhB,cAAA,CAAA,GAAkB,QAAA;;;;EAYlB,eAAA,CAAA;;;;;EAQA,gBAAA,CAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-context-CV3Ko1ew.mjs","names":[],"sources":["../src/context/auth-context.ts"],"sourcesContent":["import { Transient, DI_TOKENS } from 'stratal/di'\nimport {\n ContextNotInitializedError,\n UserNotAuthenticatedError\n} from './errors'\n\nexport interface AuthInfo {\n userId?: string\n}\n\n@Transient(DI_TOKENS.AuthContext)\nexport class AuthContext {\n protected userId?: string\n\n /**\n * Set authentication context.\n * This should be called once per request with user information.\n */\n setAuthContext(info: AuthInfo): void {\n this.userId = info.userId\n }\n\n /**\n * Get user ID if available.\n * Returns undefined if no user is authenticated.\n */\n getUserId(): string | undefined {\n return this.userId\n }\n\n /**\n * Get user ID or throw if not authenticated.\n * Use this when authentication is required.\n */\n requireUserId(): string {\n const userId = this.getUserId()\n if (!userId) {\n throw new UserNotAuthenticatedError()\n }\n return userId\n }\n\n /**\n * Get full authentication context or throw if not initialized.\n */\n getAuthContext(): AuthInfo {\n if (!this.userId) {\n throw new ContextNotInitializedError('Authentication')\n }\n return {\n userId: this.userId\n }\n }\n\n /**\n * Check if user is authenticated.\n */\n isAuthenticated(): boolean {\n return !!this.userId\n }\n\n /**\n * Clear authentication context.\n * Useful for testing or cleanup.\n */\n clearAuthContext(): void {\n this.userId = undefined\n }\n}\n"],"mappings":";;;;AAWO,IAAA,cAAA,MAAM,YAAY;CACvB;;;;;CAMA,eAAe,MAAsB;AACnC,OAAK,SAAS,KAAK;;;;;;CAOrB,YAAgC;AAC9B,SAAO,KAAK;;;;;;CAOd,gBAAwB;EACtB,MAAM,SAAS,KAAK,WAAW;AAC/B,MAAI,CAAC,OACH,OAAM,IAAI,2BAA2B;AAEvC,SAAO;;;;;CAMT,iBAA2B;AACzB,MAAI,CAAC,KAAK,OACR,OAAM,IAAI,2BAA2B,iBAAiB;AAExD,SAAO,EACL,QAAQ,KAAK,QACd;;;;;CAMH,kBAA2B;AACzB,SAAO,CAAC,CAAC,KAAK;;;;;;CAOhB,mBAAyB;AACvB,OAAK,SAAS,KAAA;;;0BAxDjB,UAAU,UAAU,YAAY,CAAA,EAAA,YAAA"}
@@ -1,8 +0,0 @@
1
- //#region \0@oxc-project+runtime@0.115.0/helpers/decorateParam.js
2
- function __decorateParam(paramIndex, decorator) {
3
- return function(target, key) {
4
- decorator(target, key, paramIndex);
5
- };
6
- }
7
- //#endregion
8
- export { __decorateParam as t };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-eukGTmI8.d.mts","names":[],"sources":["../src/database/database.module.ts","../src/database/database.service.ts","../src/database/database.tokens.ts","../src/database/decorators/inject-db.decorator.ts","../src/database/errors/database-error.ts","../src/database/errors/database-config.error.ts","../src/database/errors/foreign-key-constraint.error.ts","../src/database/errors/invalid-error-code-range.error.ts","../src/database/errors/record-not-found.error.ts","../src/database/errors/unique-constraint.error.ts","../src/database/errors/from-zenstack-error.ts","../src/database/event-types.ts","../src/database/i18n/en.ts","../src/database/plugins/error-handler.plugin.ts","../src/database/plugins/event-emitter.plugin.ts","../src/database/plugins/schema-switcher.plugin.ts","../src/database/commands/zenstack.command.ts","../src/database/commands/db-generate.command.ts","../src/database/commands/db-pull.command.ts","../src/database/commands/db-push.command.ts","../src/database/commands/migrate-deploy.command.ts","../src/database/commands/migrate-dev.command.ts","../src/database/commands/migrate-reset.command.ts","../src/database/commands/migrate-status.command.ts"],"mappings":"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"}
@@ -1,206 +0,0 @@
1
- import { t as AuthContext } from "../auth-context-BD2ApWg1.mjs";
2
- import { AsyncModuleOptions, DynamicModule } from "stratal/module";
3
- import { ApplicationError } from "stratal/errors";
4
- import { Adapter, Enforcer, Model } from "casbin";
5
-
6
- //#region src/rbac/constants.d.ts
7
- /**
8
- * RBAC Constants
9
- */
10
- declare const RBAC_CONTEXT_KEYS: {
11
- /** Key for storing required authorization scopes (permissions) in context */readonly AUTH_SCOPES: symbol;
12
- };
13
- //#endregion
14
- //#region src/rbac/errors/insufficient-permissions.error.d.ts
15
- /**
16
- * InsufficientPermissionsError
17
- *
18
- * Thrown when a user attempts to perform an action without the required permissions.
19
- * This error is used by the auth guard after authorization check fails.
20
- *
21
- * HTTP Status: 403 Forbidden
22
- * Error Code: 3102 (AUTHZ.INSUFFICIENT_PERMISSIONS)
23
- */
24
- declare class InsufficientPermissionsError extends ApplicationError {
25
- constructor(requiredScopes: string[], userId?: string);
26
- }
27
- //#endregion
28
- //#region src/rbac/adapters/custom-zenstack-adapter.d.ts
29
- /**
30
- * Minimal interface for the database client used by the adapter.
31
- * The actual DatabaseService extends ZenStackClient which provides these methods
32
- * when the schema includes a `casbinRule` model.
33
- */
34
- interface CasbinDbClient {
35
- casbinRule: {
36
- findMany(args?: {
37
- where?: Record<string, unknown>;
38
- }): Promise<unknown[]>;
39
- create(args: {
40
- data: CasbinRuleCreateInput;
41
- }): Promise<unknown>;
42
- createMany(args: {
43
- data: CasbinRuleCreateInput[];
44
- }): Promise<unknown>;
45
- deleteMany(args: {
46
- where: CasbinRuleCreateInput;
47
- }): Promise<{
48
- count: number;
49
- }>;
50
- };
51
- $executeRawUnsafe(query: string, ...values: unknown[]): Promise<unknown>;
52
- }
53
- interface CasbinRuleCreateInput {
54
- ptype: string;
55
- v0?: string | null;
56
- v1?: string | null;
57
- v2?: string | null;
58
- v3?: string | null;
59
- v4?: string | null;
60
- v5?: string | null;
61
- }
62
- /**
63
- * Custom ZenStack adapter for Casbin that works with Cloudflare Workers.
64
- *
65
- * Based on the original casbin-prisma-adapter but modified to:
66
- * - Work with ZenStack v3 ORM clients
67
- * - Avoid bundling errors in Cloudflare Workers
68
- * - Accept pre-connected ZenStack clients (request-scoped)
69
- */
70
- declare class CustomZenStackAdapter implements Adapter {
71
- #private;
72
- filtered: boolean;
73
- isFiltered(): boolean;
74
- enableFiltered(enabled: boolean): void;
75
- constructor(db: CasbinDbClient);
76
- loadPolicy(model: Model): Promise<void>;
77
- loadFilteredPolicy(model: Model, filter: Record<string, string[][]>): Promise<void>;
78
- savePolicy(model: Model): Promise<boolean>;
79
- addPolicy(_sec: string, ptype: string, rule: string[]): Promise<void>;
80
- addPolicies(_sec: string, ptype: string, rules: string[][]): Promise<void>;
81
- removePolicy(_sec: string, ptype: string, rule: string[]): Promise<void>;
82
- removePolicies(_sec: string, ptype: string, rules: string[][]): Promise<void>;
83
- removeFilteredPolicy(_sec: string, ptype: string, fieldIndex: number, ...fieldValues: string[]): Promise<void>;
84
- close(): Promise<void>;
85
- static newAdapter(db: CasbinDbClient): CustomZenStackAdapter;
86
- }
87
- //#endregion
88
- //#region src/rbac/types.d.ts
89
- /**
90
- * Configuration options for the RBAC module
91
- */
92
- interface RbacModuleOptions {
93
- /** Casbin PERM model string */
94
- model: string;
95
- /** Default policies: [role, resource, action][] */
96
- defaultPolicies?: readonly (readonly [string, string, string])[];
97
- /** Role hierarchy: [childRole, parentRole][] */
98
- roleHierarchy?: readonly (readonly [string, string])[];
99
- }
100
- //#endregion
101
- //#region src/rbac/services/casbin-enforcer.service.d.ts
102
- /**
103
- * CasbinEnforcerService
104
- *
105
- * Manages the Casbin enforcer instance for authorization.
106
- * Model, default policies, and role hierarchy are provided via DI options.
107
- */
108
- declare class CasbinEnforcerService {
109
- protected readonly db: CasbinDbClient;
110
- protected readonly options: RbacModuleOptions;
111
- protected enforcer: Enforcer | null;
112
- constructor(db: CasbinDbClient, options: RbacModuleOptions);
113
- /**
114
- * Get or create the enforcer instance
115
- */
116
- getEnforcer(): Promise<Enforcer>;
117
- /**
118
- * Create a new enforcer instance.
119
- * Can be overridden by subclasses to customize enforcer creation.
120
- */
121
- protected createEnforcer(): Promise<Enforcer>;
122
- /**
123
- * Seed default policies into database
124
- */
125
- seedPolicies(): Promise<void>;
126
- /**
127
- * Clear cached enforcer instance
128
- */
129
- clearCache(): void;
130
- /**
131
- * Seed role hierarchy into database
132
- */
133
- seedRoleHierarchy(): Promise<void>;
134
- }
135
- //#endregion
136
- //#region src/rbac/services/casbin.service.d.ts
137
- /**
138
- * CasbinService
139
- *
140
- * Request-scoped service that provides the full Casbin RBAC API.
141
- * Uses AuthContext to get the current user.
142
- */
143
- declare class CasbinService {
144
- protected readonly context: AuthContext;
145
- protected readonly enforcerService: CasbinEnforcerService;
146
- constructor(context: AuthContext, enforcerService: CasbinEnforcerService);
147
- protected getEnforcer(): Promise<Enforcer>;
148
- addRoleForUser(userId: string, role: string): Promise<boolean>;
149
- deleteRoleForUser(userId: string, role: string): Promise<boolean>;
150
- deleteRolesForUser(userId: string): Promise<boolean>;
151
- getRolesForUser(userId: string): Promise<string[]>;
152
- getImplicitRolesForUser(userId: string): Promise<string[]>;
153
- getUsersForRole(role: string): Promise<string[]>;
154
- getImplicitUsersForRole(role: string): Promise<string[]>;
155
- hasRoleForUser(userId: string, role: string): Promise<boolean>;
156
- addRoleInheritance(childRole: string, parentRole: string): Promise<boolean>;
157
- deleteRoleInheritance(childRole: string, parentRole: string): Promise<boolean>;
158
- deleteUser(userId: string): Promise<boolean>;
159
- deleteRole(role: string): Promise<boolean>;
160
- getCurrentUserRoles(): Promise<string[]>;
161
- currentUserHasRole(role: string): Promise<boolean>;
162
- setRolesForUser(userId: string, roles: string[]): Promise<void>;
163
- hasPermission(userId: string, scope: string, action: string): Promise<boolean>;
164
- currentUserHasPermission(scope: string, action: string): Promise<boolean>;
165
- hasAnyPermission(userId: string, scopes: string[], action: string): Promise<boolean>;
166
- currentUserHasAnyPermission(scopes: string[], action: string): Promise<boolean>;
167
- getPermissionsForUserAsCasbinJs(userId: string): Promise<Record<string, string[]>>;
168
- getCurrentUserPermissionsAsCasbinJs(): Promise<Record<string, string[]>>;
169
- }
170
- //#endregion
171
- //#region src/rbac/rbac.module.d.ts
172
- /**
173
- * RBAC Module
174
- *
175
- * Provides role-based access control using Casbin.
176
- * Fully configurable — no hardcoded roles, policies, or model.
177
- *
178
- * @example
179
- * ```typescript
180
- * @Module({
181
- * imports: [
182
- * RbacModule.forRoot({
183
- * model: MY_RBAC_MODEL,
184
- * defaultPolicies: [['admin', 'users:*', '.*']],
185
- * roleHierarchy: [['super_admin', 'admin']],
186
- * })
187
- * ]
188
- * })
189
- * ```
190
- */
191
- declare class RbacModule {
192
- static forRoot(options: RbacModuleOptions): DynamicModule;
193
- static forRootAsync(options: AsyncModuleOptions<RbacModuleOptions>): DynamicModule;
194
- }
195
- //#endregion
196
- //#region src/rbac/tokens.d.ts
197
- /**
198
- * RBAC DI Tokens
199
- */
200
- declare const RBAC_TOKENS: {
201
- /** Request-scoped Casbin service with auto context resolution */readonly CasbinService: symbol; /** RBAC module options (model, policies, hierarchy) */
202
- readonly Options: symbol;
203
- };
204
- //#endregion
205
- export { CasbinEnforcerService, CasbinService, CustomZenStackAdapter, InsufficientPermissionsError, RBAC_CONTEXT_KEYS, RBAC_TOKENS, RbacModule, type RbacModuleOptions };
206
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/rbac/constants.ts","../../src/rbac/errors/insufficient-permissions.error.ts","../../src/rbac/adapters/custom-zenstack-adapter.ts","../../src/rbac/types.ts","../../src/rbac/services/casbin-enforcer.service.ts","../../src/rbac/services/casbin.service.ts","../../src/rbac/rbac.module.ts","../../src/rbac/tokens.ts"],"mappings":";;;;;;;;;cAGa,iBAAA;wFAGH,WAAA;AAAA;;;;;;;;AAHV;;;;cCQa,4BAAA,SAAqC,gBAAA;cACpC,cAAA,YAA0B,MAAA;AAAA;;;;;;;;UCHvB,cAAA;EACf,UAAA;IACE,QAAA,CAAS,IAAA;MAAS,KAAA,GAAQ,MAAA;IAAA,IAA4B,OAAA;IACtD,MAAA,CAAO,IAAA;MAAQ,IAAA,EAAM,qBAAA;IAAA,IAA0B,OAAA;IAC/C,UAAA,CAAW,IAAA;MAAQ,IAAA,EAAM,qBAAA;IAAA,IAA4B,OAAA;IACrD,UAAA,CAAW,IAAA;MAAQ,KAAA,EAAO,qBAAA;IAAA,IAA0B,OAAA;MAAU,KAAA;IAAA;EAAA;EAEhE,iBAAA,CAAkB,KAAA,aAAkB,MAAA,cAAoB,OAAA;AAAA;AAAA,UAGhD,qBAAA;EACR,KAAA;EACA,EAAA;EACA,EAAA;EACA,EAAA;EACA,EAAA;EACA,EAAA;EACA,EAAA;AAAA;;;;;;;;;cAsBW,qBAAA,YAAiC,OAAA;EAAA;EAG5C,QAAA;EAEO,UAAA,CAAA;EAIA,cAAA,CAAe,OAAA;cAIV,EAAA,EAAI,cAAA;EAIV,UAAA,CAAW,KAAA,EAAO,KAAA,GAAQ,OAAA;EAQ1B,kBAAA,CACJ,KAAA,EAAO,KAAA,EACP,MAAA,EAAQ,MAAA,uBACP,OAAA;EA0BG,UAAA,CAAW,KAAA,EAAO,KAAA,GAAQ,OAAA;EAyB1B,SAAA,CAAU,IAAA,UAAc,KAAA,UAAe,IAAA,aAAiB,OAAA;EAKxD,WAAA,CACJ,IAAA,UACA,KAAA,UACA,KAAA,eACC,OAAA;EAWG,YAAA,CACJ,IAAA,UACA,KAAA,UACA,IAAA,aACC,OAAA;EAKG,cAAA,CACJ,IAAA,UACA,KAAA,UACA,KAAA,eACC,OAAA;EAWG,oBAAA,CACJ,IAAA,UACA,KAAA,UACA,UAAA,aACG,WAAA,aACF,OAAA;EA0BG,KAAA,CAAA,GAAS,OAAA;EAAA,OAIR,UAAA,CAAW,EAAA,EAAI,cAAA,GAAiB,qBAAA;AAAA;;;;;;UC3MxB,iBAAA;;EAEf,KAAA;EHFW;EGIX,eAAA;;EAEA,aAAA;AAAA;;;;;;AHNF;;;cIWa,qBAAA;EAAA,mBAKU,EAAA,EAAI,cAAA;EAAA,mBAEJ,OAAA,EAAS,iBAAA;EAAA,UANpB,QAAA,EAAU,QAAA;cAIC,EAAA,EAAI,cAAA,EAEJ,OAAA,EAAS,iBAAA;EHVnB;;;EGgBL,WAAA,CAAA,GAAe,OAAA,CAAQ,QAAA;EHhBmB;;;;EAAA,UGyBhC,cAAA,CAAA,GAAkB,OAAA,CAAQ,QAAA;EHxBW;;;EGoC/C,YAAA,CAAA,GAAgB,OAAA;EFvCP;;;EEqDf,UAAA,CAAA;EFnDwD;;;EE0DlD,iBAAA,CAAA,GAAqB,OAAA;AAAA;;;;;;AJlE7B;;;cKWa,aAAA;EAAA,mBAGU,OAAA,EAAS,WAAA;EAAA,mBAET,eAAA,EAAiB,qBAAA;cAFjB,OAAA,EAAS,WAAA,EAET,eAAA,EAAiB,qBAAA;EAAA,UAGtB,WAAA,CAAA,GAAe,OAAA,CAAQ,QAAA;EAMjC,cAAA,CAAe,MAAA,UAAgB,IAAA,WAAe,OAAA;EAO9C,iBAAA,CAAkB,MAAA,UAAgB,IAAA,WAAe,OAAA;EAOjD,kBAAA,CAAmB,MAAA,WAAiB,OAAA;EAOpC,eAAA,CAAgB,MAAA,WAAiB,OAAA;EAKjC,uBAAA,CAAwB,MAAA,WAAiB,OAAA;EAKzC,eAAA,CAAgB,IAAA,WAAe,OAAA;EAK/B,uBAAA,CAAwB,IAAA,WAAe,OAAA;EAKvC,cAAA,CAAe,MAAA,UAAgB,IAAA,WAAe,OAAA;EAO9C,kBAAA,CAAmB,SAAA,UAAmB,UAAA,WAAqB,OAAA;EAO3D,qBAAA,CAAsB,SAAA,UAAmB,UAAA,WAAqB,OAAA;EAS9D,UAAA,CAAW,MAAA,WAAiB,OAAA;EAO5B,UAAA,CAAW,IAAA,WAAe,OAAA;EAS1B,mBAAA,CAAA,GAAuB,OAAA;EAMvB,kBAAA,CAAmB,IAAA,WAAe,OAAA;EAKlC,eAAA,CAAgB,MAAA,UAAgB,KAAA,aAAkB,OAAA;EAWlD,aAAA,CAAc,MAAA,UAAgB,KAAA,UAAe,MAAA,WAAiB,OAAA;EAK9D,wBAAA,CAAyB,KAAA,UAAe,MAAA,WAAiB,OAAA;EAMzD,gBAAA,CAAiB,MAAA,UAAgB,MAAA,YAAkB,MAAA,WAAiB,OAAA;EAOpE,2BAAA,CAA4B,MAAA,YAAkB,MAAA,WAAiB,OAAA;EAQ/D,+BAAA,CAAgC,MAAA,WAAiB,OAAA,CAAQ,MAAA;EAezD,mCAAA,CAAA,GAAuC,OAAA,CAAQ,MAAA;AAAA;;;;;;;ALxKvD;;;;;;;;ACQA;;;;;;;cKqBa,UAAA;EAAA,OACJ,OAAA,CAAQ,OAAA,EAAS,iBAAA,GAAoB,aAAA;EAAA,OASrC,YAAA,CAAa,OAAA,EAAS,kBAAA,CAAmB,iBAAA,IAAqB,aAAA;AAAA;;;;;;cCvC1D,WAAA;4EAKH,aAAA,UPLG;EAAA,SOKH,OAAA;AAAA"}