@unitflow/router 0.1.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.
@@ -0,0 +1,469 @@
1
+ import { Event, Model, Store } from "@unitflow/core";
2
+ import { Registry } from "@unitflow/core/registry";
3
+ import * as Context from "effect/Context";
4
+ import * as Cause from "effect/Cause";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Option from "effect/Option";
8
+ import { type Pipeable } from "effect/Pipeable";
9
+ import * as Schema from "effect/Schema";
10
+ import type { ParseOptions } from "effect/SchemaAST";
11
+ declare const RouteTypeId: unique symbol;
12
+ declare const RouteGroupTypeId: unique symbol;
13
+ import type { Register } from "./index.js";
14
+ type MaybeEffect<A, E, R> = A | Effect.Effect<A, E, R>;
15
+ export type SearchPrimitive = string | number | boolean | null | undefined;
16
+ export type SearchValue = SearchPrimitive | ReadonlyArray<SearchPrimitive>;
17
+ export type RawSearch = Readonly<Record<string, string | ReadonlyArray<string> | undefined>>;
18
+ export type SearchRecord = Readonly<Record<string, unknown>>;
19
+ type RequiredKeys<A> = {
20
+ [K in keyof A]-?: {} extends Pick<A, K> ? never : K;
21
+ }[keyof A];
22
+ type EmptyRecord = Record<never, never>;
23
+ type SegmentParams<Segment extends string> = Segment extends `:${infer Name}?` ? {
24
+ readonly [K in Name]?: string;
25
+ } : Segment extends `:${infer Name}` ? {
26
+ readonly [K in Name]: string;
27
+ } : Segment extends `*${infer Name}` ? {
28
+ readonly [K in Name extends "" ? "_splat" : Name]: string;
29
+ } : EmptyRecord;
30
+ type MergeParams<A, B> = A & B;
31
+ type PathParamsLoop<Path extends string> = Path extends `${infer Segment}/${infer Rest}` ? MergeParams<SegmentParams<Segment>, PathParamsLoop<Rest>> : SegmentParams<Path>;
32
+ export type PathParams<Path extends string> = string extends Path ? Record<string, string | undefined> : PathParamsLoop<Path extends `/${infer Rest}` ? Rest : Path>;
33
+ type NormalizePart<A extends string> = A extends `/${infer Rest}` ? NormalizePart<Rest> : A extends `${infer Rest}/` ? NormalizePart<Rest> : A;
34
+ export type JoinPath<Prefix extends string, Path extends string> = Prefix extends "/" ? Path extends "/" ? "/" : `/${NormalizePart<Path>}` : Path extends "/" ? `/${NormalizePart<Prefix>}` : `/${NormalizePart<Prefix>}/${NormalizePart<Path>}`;
35
+ export interface SearchCodec<Input extends SearchRecord, Output, E, R> extends Pipeable {
36
+ readonly decode: (raw: RawSearch) => MaybeEffect<Output, E, R>;
37
+ readonly encode?: (input: Input) => RawSearch;
38
+ readonly "~input": Input;
39
+ readonly "~output": Output;
40
+ readonly "~error": E;
41
+ readonly "~services": R;
42
+ }
43
+ export type AnySearchCodec = SearchCodec<any, any, any, any>;
44
+ export type AnySchemaCodec = Schema.Codec<any, any, any, any>;
45
+ type AnyParamsSchema = AnySchemaCodec | undefined;
46
+ type AnySearchDefinition = AnySearchCodec | AnySchemaCodec | undefined;
47
+ type SchemaTypeOf<S> = S extends Schema.Codec<infer A, any, any, any> ? A : never;
48
+ type ParamsOutputOf<Path extends string, ParamsSchema> = ParamsSchema extends AnySchemaCodec ? SchemaTypeOf<ParamsSchema> : PathParams<Path>;
49
+ type ParamsInputOf<Path extends string, ParamsSchema> = ParamsSchema extends AnySchemaCodec ? SchemaTypeOf<ParamsSchema> : PathParams<Path>;
50
+ type ParamsErrorOf<ParamsSchema> = ParamsSchema extends AnySchemaCodec ? Schema.SchemaError : never;
51
+ type ParamsServicesOf<ParamsSchema> = ParamsSchema extends AnySchemaCodec ? Schema.Codec.DecodingServices<ParamsSchema> | Schema.Codec.EncodingServices<ParamsSchema> : never;
52
+ type SearchInputOf<S> = S extends SearchCodec<infer I, any, any, any> ? I : S extends AnySchemaCodec ? SchemaTypeOf<S> : EmptyRecord;
53
+ type SearchOutputOf<S> = S extends SearchCodec<any, infer A, any, any> ? A : S extends AnySchemaCodec ? SchemaTypeOf<S> : EmptyRecord;
54
+ type SearchErrorOf<S> = S extends SearchCodec<any, any, infer E, any> ? E : S extends AnySchemaCodec ? Schema.SchemaError : never;
55
+ type SearchServicesOf<S> = S extends SearchCodec<any, any, any, infer R> ? R : S extends AnySchemaCodec ? Schema.Codec.DecodingServices<S> | Schema.Codec.EncodingServices<S> : never;
56
+ export declare const search: <Input extends SearchRecord, Output = Input, E = never, R = never>(decode: (raw: RawSearch) => MaybeEffect<Output, E, R>, options?: {
57
+ readonly encode?: (input: Input) => RawSearch;
58
+ }) => SearchCodec<Input, Output, E, R>;
59
+ export declare const schemaSearch: <A extends SearchRecord, I extends SearchRecord, RD, RE>(schema: Schema.Codec<A, I, RD, RE>, options?: ParseOptions) => SearchCodec<I, A, Schema.SchemaError, RD>;
60
+ export interface RouteContext<Path extends string, Params, Search> {
61
+ readonly route: Route.Any;
62
+ readonly location: ParsedLocation;
63
+ readonly params: Params;
64
+ readonly search: Search;
65
+ readonly path: Path;
66
+ }
67
+ export interface RouteOptions<Path extends string, ParamsSchema extends AnyParamsSchema, Search extends AnySearchDefinition> {
68
+ readonly path: Path;
69
+ readonly params?: ParamsSchema;
70
+ readonly search?: Search;
71
+ readonly parseParams?: (params: PathParams<Path>) => MaybeEffect<ParamsOutputOf<Path, ParamsSchema> | false, any, any>;
72
+ readonly stringifyParams?: (params: ParamsInputOf<Path, ParamsSchema>) => PathParams<Path>;
73
+ readonly staticData?: SearchRecord;
74
+ readonly meta?: (context: RouteContext<Path, ParamsOutputOf<Path, ParamsSchema>, SearchOutputOf<Search>>) => ReadonlyArray<SearchRecord>;
75
+ readonly links?: (context: RouteContext<Path, ParamsOutputOf<Path, ParamsSchema>, SearchOutputOf<Search>>) => ReadonlyArray<SearchRecord>;
76
+ readonly caseSensitive?: boolean;
77
+ }
78
+ /** What a middleware handler receives: the matched route's decoded
79
+ * params/search and the target location — read-only, before the navigation
80
+ * commits. */
81
+ export type MiddlewareContext = RouteContext<string, unknown, unknown>;
82
+ /** The service value behind a middleware tag: a guard run for every matched
83
+ * route the middleware is attached to, BEFORE the navigation commits.
84
+ * Failing with {@link RedirectError}/{@link NotFoundError} cancels the
85
+ * navigation — the blocked URL never reaches history or state. A non-void
86
+ * success value is the middleware's `Provides`: it lands in the route
87
+ * unit's `provided` port, `Option.some` whenever the route is open — the
88
+ * guard having passed is what LET it open. */
89
+ export interface MiddlewareHandler<Provides = void> {
90
+ (context: MiddlewareContext): Effect.Effect<Provides, RedirectError | NotFoundError>;
91
+ }
92
+ export type AnyMiddleware = Context.Service<any, MiddlewareHandler<any>>;
93
+ export type ProvidesOf<M> = M extends {
94
+ readonly "~provides": infer P;
95
+ } ? P : never;
96
+ /**
97
+ * Declares a middleware as a Context service — a TAG, not a function — so
98
+ * the router only ever requires the tag: the implementation (and ITS
99
+ * dependencies) live in the layer `make` builds, composed at the feature
100
+ * level. Attaching an inline function instead would leak every guard's
101
+ * services into the router's own requirements.
102
+ *
103
+ * ```ts
104
+ * class AuthGuard extends Router.Middleware<AuthGuard>()("app/AuthGuard") {}
105
+ * const AuthGuardLive = AuthGuard.make((ctx) => Effect.gen(function* () {
106
+ * const session = yield* SessionService;
107
+ * if (!session.canAccess) return yield* Effect.fail(Router.RedirectError({ to: "/login" }));
108
+ * }));
109
+ * ```
110
+ */
111
+ export interface MiddlewareClass<Self, Id extends string, Provides = void> extends Context.ServiceClass<Self, Id, MiddlewareHandler<Provides>> {
112
+ /** Type-level only: what the guard provides to the routes it protects. */
113
+ readonly "~provides": Provides;
114
+ /** Builds the implementation layer. The handler's services are resolved
115
+ * once at layer build and captured, so the stored handler itself is
116
+ * dependency-free — the router only ever requires the tag. */
117
+ readonly make: <R = never>(handler: (context: MiddlewareContext) => Effect.Effect<Provides, RedirectError | NotFoundError, R>) => Layer.Layer<Self, never, R>;
118
+ }
119
+ export declare const Middleware: <Self>() => <const Id extends string>(id: Id) => <Provides = void>() => MiddlewareClass<Self, Id, Provides>;
120
+ export interface Route<Id extends string, Path extends string, ParamsSchema extends AnyParamsSchema, Search extends AnySearchDefinition, Requires = never, Provided = EmptyRecord> extends Pipeable {
121
+ readonly [RouteTypeId]: typeof RouteTypeId;
122
+ readonly id: Id;
123
+ readonly path: Path;
124
+ readonly options: RouteOptions<Path, ParamsSchema, Search>;
125
+ readonly middlewares: ReadonlyArray<AnyMiddleware>;
126
+ readonly "~types": {
127
+ readonly id: Id;
128
+ readonly path: Path;
129
+ readonly params: ParamsOutputOf<Path, ParamsSchema>;
130
+ readonly paramsInput: ParamsInputOf<Path, ParamsSchema>;
131
+ readonly search: SearchOutputOf<Search>;
132
+ readonly searchInput: SearchInputOf<Search>;
133
+ readonly provided: Provided;
134
+ readonly error: ParamsErrorOf<ParamsSchema> | SearchErrorOf<Search> | RedirectError | NotFoundError;
135
+ readonly services: ParamsServicesOf<ParamsSchema> | SearchServicesOf<Search> | Requires;
136
+ };
137
+ }
138
+ export declare namespace Route {
139
+ type Any = Route<string, any, AnyParamsSchema, AnySearchDefinition, any, any>;
140
+ type Id<R extends Any> = R["~types"]["id"];
141
+ type Path<R extends Any> = R["~types"]["path"];
142
+ type Params<R extends Any> = R["~types"]["params"];
143
+ type ParamsInput<R extends Any> = R["~types"]["paramsInput"];
144
+ type Search<R extends Any> = R["~types"]["search"];
145
+ type SearchInput<R extends Any> = R["~types"]["searchInput"];
146
+ type Provided<R extends Any> = R["~types"]["provided"];
147
+ type Error<R extends Any> = R["~types"]["error"];
148
+ type Services<R extends Any> = R["~types"]["services"];
149
+ }
150
+ export declare const isRoute: (value: unknown) => value is Route.Any;
151
+ export declare const route: <const Id extends string, const Path extends string, ParamsSchema extends AnyParamsSchema = undefined, Search extends AnySearchDefinition = undefined>(id: Id, options: RouteOptions<Path, ParamsSchema, Search>) => Route<Id, Path, ParamsSchema, Search>;
152
+ type PrefixedRoute<R extends Route.Any, Prefix extends string> = R extends Route<infer Id, infer Path, infer ParamsSchema, infer Search, infer Requires, infer Provided> ? Route<Id, JoinPath<Prefix, Path>, ParamsSchema, Search, Requires, Provided> : never;
153
+ type WithMiddleware<R extends Route.Any, M extends AnyMiddleware> = R extends Route<infer Id, infer Path, infer ParamsSchema, infer Search, infer Requires, infer Provided> ? Route<Id, Path, ParamsSchema, Search, Requires | Context.Service.Identifier<M>, [
154
+ ProvidesOf<M>
155
+ ] extends [void] ? Provided : Provided & ProvidesOf<M>> : never;
156
+ export interface RouteGroup<R extends Route.Any> extends Pipeable {
157
+ readonly [RouteGroupTypeId]: typeof RouteGroupTypeId;
158
+ readonly routes: ReadonlyArray<R>;
159
+ add<const R2 extends ReadonlyArray<Route.Any>>(...routes: R2): RouteGroup<R | R2[number]>;
160
+ merge<const Groups extends ReadonlyArray<AnyRouteGroup>>(...groups: Groups): RouteGroup<R | RoutesOf<Groups[number]>>;
161
+ prefix<const Prefix extends string>(prefix: Prefix): RouteGroup<PrefixedRoute<R, Prefix>>;
162
+ /** Attaches a middleware TAG to every route currently in the group: the
163
+ * router will require the tag's implementation layer, run it for each
164
+ * matched route before committing a navigation. */
165
+ middleware<M extends AnyMiddleware>(middleware: M): RouteGroup<WithMiddleware<R, M>>;
166
+ }
167
+ export type AnyRouteGroup = RouteGroup<Route.Any>;
168
+ export type RoutesOf<Group> = Group extends RouteGroup<infer R> ? R : never;
169
+ export declare const group: <const Routes extends ReadonlyArray<Route.Any>>(...routes: Routes) => RouteGroup<Routes[number]>;
170
+ export declare const makeGroup: <const Routes extends ReadonlyArray<Route.Any>>(...routes: Routes) => RouteGroup<Routes[number]>;
171
+ export declare const add: <const Routes extends ReadonlyArray<Route.Any>>(...routes: Routes) => RouteGroup<Routes[number]>;
172
+ export declare const merge: <const Groups extends ReadonlyArray<AnyRouteGroup>>(...groups: Groups) => RouteGroup<RoutesOf<Groups[number]>>;
173
+ export declare const prefix: <const Prefix extends string, Group extends AnyRouteGroup>(routeGroup: Group, path: Prefix) => RouteGroup<PrefixedRoute<RoutesOf<Group>, Prefix>>;
174
+ export declare const routes: <Group extends AnyRouteGroup>(routeGroup: Group) => ReadonlyArray<RoutesOf<Group>>;
175
+ export interface ParsedLocation {
176
+ readonly pathname: string;
177
+ readonly search: RawSearch;
178
+ readonly searchString: string;
179
+ readonly hash: string;
180
+ readonly href: string;
181
+ readonly state: unknown;
182
+ }
183
+ export interface RouterHistory {
184
+ readonly location: ParsedLocation;
185
+ push(href: string, state?: unknown): void;
186
+ replace(href: string, state?: unknown): void;
187
+ subscribe(listener: (location: ParsedLocation) => void): () => void;
188
+ }
189
+ export interface RouteMatch<R extends Route.Any = Route.Any> {
190
+ readonly id: Route.Id<R>;
191
+ readonly route: R;
192
+ readonly pathname: string;
193
+ readonly params: Route.Params<R>;
194
+ readonly search: Route.Search<R>;
195
+ /** What the matched branch's middlewares provided, parents included. */
196
+ readonly provided: Route.Provided<R>;
197
+ readonly staticData: SearchRecord;
198
+ readonly meta: ReadonlyArray<SearchRecord>;
199
+ readonly links: ReadonlyArray<SearchRecord>;
200
+ readonly status: "success" | "pending" | "error";
201
+ readonly error?: unknown;
202
+ }
203
+ export interface RouterState<R extends Route.Any = Route.Any> {
204
+ readonly status: "idle" | "pending" | "success" | "error" | "not-found";
205
+ readonly location: ParsedLocation;
206
+ readonly resolvedLocation: ParsedLocation;
207
+ readonly matches: ReadonlyArray<RouteMatch<R>>;
208
+ readonly pendingLocation?: ParsedLocation;
209
+ readonly error?: unknown;
210
+ }
211
+ export interface RouterOptions {
212
+ readonly basepath?: string;
213
+ readonly parseSearch?: (search: string) => RawSearch;
214
+ readonly stringifySearch?: (search: SearchRecord) => string;
215
+ }
216
+ /** What the {@link History} service holds: a factory rather than a ready
217
+ * history, because a history builds `ParsedLocation`s and therefore needs
218
+ * the owning router's `parseSearch`. Each router calls it once, so two
219
+ * routers under one layer get independent histories. */
220
+ export interface HistoryFactory {
221
+ readonly make: (options: {
222
+ readonly parseSearch: (search: string) => RawSearch;
223
+ }) => RouterHistory;
224
+ }
225
+ declare const History_base: Context.ServiceClass<History, "@unitflow/router/History", HistoryFactory>;
226
+ /**
227
+ * The history capability, provided as a LAYER — `Router.make` declares
228
+ * routes only, the environment decides how locations are read and written:
229
+ *
230
+ * ```ts
231
+ * AppRouter.layer.pipe(Layer.provideMerge(Router.browserHistoryLayer))
232
+ * // tests:
233
+ * AppRouter.layer.pipe(Layer.provideMerge(Router.memoryHistoryLayer({ initialEntries: ["/"] })))
234
+ * ```
235
+ */
236
+ export declare class History extends History_base {
237
+ }
238
+ export declare const browserHistoryLayer: Layer.Layer<History>;
239
+ export declare const hashHistoryLayer: Layer.Layer<History>;
240
+ export declare const memoryHistoryLayer: (options?: {
241
+ readonly initialEntries?: ReadonlyArray<string>;
242
+ }) => Layer.Layer<History>;
243
+ export interface ActiveOptions {
244
+ readonly exact?: boolean;
245
+ readonly includeHash?: boolean;
246
+ readonly includeSearch?: boolean;
247
+ }
248
+ export type Blocker = (options: {
249
+ readonly from: ParsedLocation;
250
+ readonly to: ParsedLocation;
251
+ }) => boolean | Promise<boolean>;
252
+ /** The synchronous, read-only surface backing `outputs.api` — used
253
+ * internally (`buildLocation`/`buildHref`/`matchRoute` free functions, and
254
+ * the React binding's need for a value it can read outside an Effect).
255
+ * Every action (navigate/blockers) lives only on `inputs` as an event —
256
+ * this type intentionally has no method for any of them. */
257
+ export interface RouterController<Group extends AnyRouteGroup = AnyRouteGroup> {
258
+ readonly group: Group;
259
+ readonly routes: ReadonlyArray<RoutesOf<Group>>;
260
+ readonly options: RouterOptions;
261
+ readonly history: RouterHistory;
262
+ readonly buildLocation: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To>) => ParsedLocation;
263
+ readonly buildHref: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To>) => string;
264
+ readonly buildLocationEffect: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To>) => Effect.Effect<ParsedLocation, unknown, RouterServicesForGroup<Group> | Registry>;
265
+ readonly buildHrefEffect: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To>) => Effect.Effect<string, unknown, RouterServicesForGroup<Group> | Registry>;
266
+ readonly matchRoute: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To> & ActiveOptions) => boolean;
267
+ }
268
+ export type AnyRouterController = RouterController<any>;
269
+ /** A navigation payload with no free `To` parameter (event payloads, stored
270
+ * redirect options): distributes over the router's paths so `to` acts as the
271
+ * union discriminant — `params`/`search` are then checked against exactly
272
+ * the targeted route, not a merged shape where an empty-params member would
273
+ * structurally accept anything. */
274
+ export type NavigatePayload<M extends AnyRouter> = RoutePath<M> extends infer To ? To extends RoutePath<M> ? NavigateOptions<M, To> : never : never;
275
+ export interface RouterShape<Group extends AnyRouteGroup> extends Model.Shape {
276
+ readonly inputs: {
277
+ readonly navigate: Event.Event<NavigateOptions<RouterController<Group>, RoutePath<RouterController<Group>>>>;
278
+ readonly addBlocker: Event.Event<Blocker>;
279
+ readonly removeBlocker: Event.Event<Blocker>;
280
+ };
281
+ readonly outputs: {
282
+ readonly state: Store.Store<RouterState<RoutesOf<Group>>>;
283
+ readonly location: Store.Combined<ParsedLocation>;
284
+ readonly matches: Store.Combined<ReadonlyArray<RouteMatch<RoutesOf<Group>>>>;
285
+ readonly api: Store.Store<RouterController<Group>>;
286
+ };
287
+ readonly ui: {
288
+ readonly state: Store.Store<RouterState<RoutesOf<Group>>>;
289
+ readonly location: Store.Combined<ParsedLocation>;
290
+ readonly matches: Store.Combined<ReadonlyArray<RouteMatch<RoutesOf<Group>>>>;
291
+ readonly navigate: Event.Event<NavigateOptions<RouterController<Group>, RoutePath<RouterController<Group>>>>;
292
+ readonly api: Store.Store<RouterController<Group>>;
293
+ };
294
+ }
295
+ type RouterServicesForGroup<Group extends AnyRouteGroup> = RoutesOf<Group> extends infer R ? R extends Route.Any ? Route.Services<R> : never : never;
296
+ /** The ports one route's unit exposes: occupancy and the decoded
297
+ * params/search — `false`/`Option.none()` while the route is not on screen.
298
+ * The engine's raw `RouteMatch` record stays internal to the router. */
299
+ export interface RouteUnitShape<R extends Route.Any> extends Model.Shape {
300
+ readonly inputs: Record<never, never>;
301
+ readonly outputs: {
302
+ readonly opened: Store.Combined<boolean>;
303
+ readonly params: Store.Combined<Option.Option<Route.Params<R>>>;
304
+ readonly search: Store.Combined<Option.Option<Route.Search<R>>>;
305
+ readonly provided: Store.Combined<Option.Option<Route.Provided<R>>>;
306
+ };
307
+ readonly ui: {
308
+ readonly opened: Store.Combined<boolean>;
309
+ readonly params: Store.Combined<Option.Option<Route.Params<R>>>;
310
+ readonly search: Store.Combined<Option.Option<Route.Search<R>>>;
311
+ readonly provided: Store.Combined<Option.Option<Route.Provided<R>>>;
312
+ };
313
+ }
314
+ export type RouteIds<Group extends AnyRouteGroup> = Route.Id<RoutesOf<Group>>;
315
+ /** The per-key shape map of {@link RouteModel}: each route id maps to the
316
+ * unit shape of THAT route, so `Model.get(router.routes, "user")` comes back
317
+ * with `params`/`search` typed by the "user" route's schemas. */
318
+ export type RouteShapes<Group extends AnyRouteGroup> = {
319
+ readonly [Id in RouteIds<Group>]: RouteUnitShape<Extract<RoutesOf<Group>, {
320
+ readonly id: Id;
321
+ }>>;
322
+ };
323
+ /** The page-model map handed to `router.pages(...)`: keys are the router's
324
+ * route ids (a typo will not compile), values are the page models. Declared
325
+ * AFTER the models — never on the route — because a route referencing its
326
+ * model while the model reads `router.routes` is a type-inference cycle. */
327
+ export type PageMap<Group extends AnyRouteGroup> = {
328
+ readonly [Id in RouteIds<Group>]?: Model.AnyService;
329
+ };
330
+ type PageServicesOfMap<Pages> = {
331
+ [K in keyof Pages]-?: Pages[K] extends Model.AnyService ? Context.Service.Identifier<Pages[K]> : never;
332
+ }[keyof Pages];
333
+ /** The shape of a pages model: the router's own unit plus one unit per
334
+ * mapped page model. */
335
+ export interface PagesShape<Pages> extends Model.Shape {
336
+ readonly inputs: Record<never, never>;
337
+ readonly outputs: Record<never, never>;
338
+ readonly ui: {
339
+ /** The router's own unit. Typed opaquely ON PURPOSE: naming the precise
340
+ * ports here closes a resolution cycle (PagesShape -> RouterShape ->
341
+ * NavigateOptions -> AnyRouter -> RouterModel). RouterView re-types it
342
+ * internally from the router value it already holds. */
343
+ readonly router: Model.UnitPorts;
344
+ } & {
345
+ readonly [K in keyof Pages as Pages[K] extends Model.AnyService ? K & string : never]: Pages[K] extends Model.AnyService ? Model.PortsOf<Pages[K]> & Model.UnitPorts : never;
346
+ };
347
+ }
348
+ /** The singleton `router.pages(map)` returns: leases the router and every
349
+ * mapped page model, republishing their units through `ui`. Owning them
350
+ * HERE (not inside route units) keeps construction acyclic — page models
351
+ * may freely read `router.routes` units. */
352
+ export interface PagesModel<Id extends string = string, Group extends AnyRouteGroup = AnyRouteGroup, Pages extends PageMap<Group> = PageMap<Group>> extends Model.ServiceClass<PagesModel<Id, Group, Pages>, `${Id}/pages`, void, PagesShape<Pages>, never, RouterModel<Id, Group> | PageServicesOfMap<Pages> | Registry> {
353
+ /** The router value this pages model was created from — RouterView binds
354
+ * its inner view through it. Typed opaquely (the precise type would close
355
+ * the ToOptions resolution cycle); RouterView re-types it internally. */
356
+ readonly router: Model.AnyService;
357
+ }
358
+ export type AnyPagesModel = PagesModel<any, any, any>;
359
+ /** The keyed model behind `router.routes`: one unit per route id, derived
360
+ * from the router's `outputs.matches`. */
361
+ export interface RouteModel<Id extends string = string, Group extends AnyRouteGroup = AnyRouteGroup> extends Model.ServiceClass<RouteModel<Id, Group>, `${Id}/routes`, RouteIds<Group>, RouteUnitShape<RoutesOf<Group>>, never, RouterModel<Id, Group> | Registry> {
362
+ readonly modelShapes: RouteShapes<Group>;
363
+ }
364
+ export interface RouterModel<Id extends string = string, Group extends AnyRouteGroup = AnyRouteGroup> extends Model.ServiceClass<RouterModel<Id, Group>, Id, void, RouterShape<Group>, never, RouterServicesForGroup<Group> | History | Registry> {
365
+ readonly group: Group;
366
+ readonly options: RouterOptions;
367
+ readonly routerType: {
368
+ readonly id: Id;
369
+ readonly group: Group;
370
+ };
371
+ }
372
+ export type AnyRouter = RouterModel<any, any>;
373
+ export type RegisteredRouter = Register extends {
374
+ readonly router: infer R extends AnyRouter;
375
+ } ? R : AnyRouter;
376
+ export type RouterGroupOf<TRouter> = TRouter extends RouterModel<any, infer Group> ? Group : TRouter extends RouterController<infer Group> ? Group : never;
377
+ export type RouterRoutes<TRouter> = RoutesOf<RouterGroupOf<TRouter>>;
378
+ export type RoutePath<TRouter> = RouterRoutes<TRouter> extends infer R ? R extends Route.Any ? Route.Path<R> : never : never;
379
+ export type RouteByPath<TRouter, Path> = Extract<RouterRoutes<TRouter>, {
380
+ readonly path: Path;
381
+ }>;
382
+ export type MatchByPath<TRouter, Path> = RouteMatch<RouteByPath<TRouter, Path>>;
383
+ export type MatchUnion<TRouter> = RouterRoutes<TRouter> extends infer R ? R extends Route.Any ? RouteMatch<R> : never : never;
384
+ export type RouterControllerOf<M extends AnyRouter> = RouterController<RouterGroupOf<M>>;
385
+ export type RouterIdOf<TRouter> = TRouter extends RouterModel<infer Id, any> ? Id : never;
386
+ type PathParamsFor<TRouter, To> = Route.ParamsInput<RouteByPath<TRouter, To>>;
387
+ type SearchInputFor<TRouter, To> = Route.SearchInput<RouteByPath<TRouter, To>>;
388
+ type IsAny<T> = 0 extends 1 & T ? true : false;
389
+ type PathParamOptions<Params> = IsAny<Params> extends true ? {
390
+ readonly params?: Params | true;
391
+ } : keyof Params extends never ? {
392
+ readonly params?: Params | true;
393
+ } : {
394
+ readonly params: Params | true;
395
+ };
396
+ type SearchParamOptions<Search> = IsAny<Search> extends true ? {
397
+ readonly search?: Search | true | ((current: RawSearch) => Search);
398
+ } : keyof Search extends never ? {
399
+ readonly search?: Search | true | ((current: RawSearch) => Search);
400
+ } : RequiredKeys<Search> extends never ? {
401
+ readonly search?: Search | true | ((current: RawSearch) => Search);
402
+ } : {
403
+ readonly search: Search | true | ((current: RawSearch) => Search);
404
+ };
405
+ export type ToOptions<TRouter extends AnyRouter | AnyRouterController, To extends RoutePath<TRouter>> = {
406
+ readonly to: To;
407
+ readonly hash?: string | true;
408
+ readonly state?: unknown;
409
+ } & PathParamOptions<PathParamsFor<TRouter, To>> & SearchParamOptions<SearchInputFor<TRouter, To>>;
410
+ export type NavigateOptions<TRouter extends AnyRouter | AnyRouterController, To extends RoutePath<TRouter>> = ToOptions<TRouter, To> & {
411
+ readonly replace?: boolean;
412
+ readonly resetScroll?: boolean;
413
+ readonly viewTransition?: boolean;
414
+ readonly ignoreBlocker?: boolean;
415
+ readonly reloadDocument?: boolean;
416
+ readonly mask?: ToOptions<TRouter, RoutePath<TRouter>>;
417
+ };
418
+ declare const RedirectError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
419
+ readonly _tag: "RedirectError";
420
+ } & Readonly<A>;
421
+ /** A middleware/codec verdict, NOT a crash: it travels the typed error
422
+ * channel purely as the short-circuit — `navigate` catches it and follows
423
+ * the redirect before anything commits. */
424
+ export declare class RedirectError extends RedirectError_base<{
425
+ readonly options: NavigatePayload<RegisteredRouter>;
426
+ }> {
427
+ }
428
+ declare const NotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
429
+ readonly _tag: "NotFoundError";
430
+ } & Readonly<A>;
431
+ export declare class NotFoundError extends NotFoundError_base<{
432
+ readonly routeId?: string;
433
+ }> {
434
+ }
435
+ export declare const isRedirectError: (value: unknown) => value is RedirectError;
436
+ export declare const isNotFoundError: (value: unknown) => value is NotFoundError;
437
+ /** Location helpers attached to the router value itself
438
+ * (`AppRouter.buildHref({...})`). A separate interface intersected onto
439
+ * {@link RouterModel} at `make` — declared inside RouterModel these method
440
+ * signatures close a resolution cycle (param -> ToOptions -> AnyRouter ->
441
+ * RouterModel -> param) that the ServiceClass heritage forces TypeScript to
442
+ * evaluate eagerly. */
443
+ export interface RouterTargets<Id extends string, Group extends AnyRouteGroup> {
444
+ /** Builds a location for a route target without navigating. */
445
+ readonly buildLocation: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To>) => Effect.Effect<ParsedLocation, unknown, RouterModel<Id, Group> | Registry | RouterServicesForGroup<Group>>;
446
+ /** Builds an href string for a route target without navigating. */
447
+ readonly buildHref: <const To extends RoutePath<RouterController<Group>>>(options: ToOptions<RouterController<Group>, To>) => Effect.Effect<string, unknown, RouterModel<Id, Group> | Registry | RouterServicesForGroup<Group>>;
448
+ }
449
+ export declare const make: <const Id extends string, const Group extends AnyRouteGroup>(id: Id, routeGroup: Group, options?: RouterOptions) => {
450
+ readonly NavigationModel: RouterModel<Id, Group> & RouterTargets<Id, Group>;
451
+ readonly RouteModel: RouteModel<Id, Group>;
452
+ };
453
+ /** INTERNAL (used by RouterView): the pages model — one singleton owning
454
+ * the router and every mapped page model, the view tree's root. */
455
+ export declare const makePages: <M extends AnyRouter, const Pages extends PageMap<RouterGroupOf<M>>>(model: M, pageMap: Pages) => PagesModel<RouterIdOf<M>, RouterGroupOf<M>, Pages>;
456
+ export declare const createMemoryHistory: (options?: {
457
+ readonly initialEntries?: ReadonlyArray<string>;
458
+ readonly parseSearch?: (search: string) => RawSearch;
459
+ }) => RouterHistory;
460
+ export declare const createBrowserHistory: (options?: {
461
+ readonly parseSearch?: (search: string) => RawSearch;
462
+ }) => RouterHistory;
463
+ export declare const createHashHistory: (options?: {
464
+ readonly parseSearch?: (search: string) => RawSearch;
465
+ }) => RouterHistory;
466
+ export declare const defaultParseSearch: (searchString: string) => RawSearch;
467
+ export declare const defaultStringifySearch: (searchRecord: SearchRecord) => string;
468
+ export {};
469
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAiB,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,QAAA,MAAM,WAAW,eAAuC,CAAC;AACzD,QAAA,MAAM,gBAAgB,eAA4C,CAAC;AAUnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAC3E,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAC3E,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC7F,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7D,KAAK,YAAY,CAAC,CAAC,IAAI;KACpB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;CACpD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,KAAK,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAExC,KAAK,aAAa,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,SAAS,IAAI,MAAM,IAAI,GAAG,GAC1E;IAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM;CAAE,GACjC,OAAO,SAAS,IAAI,MAAM,IAAI,EAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,GAAG,MAAM;CAAE,GAChC,OAAO,SAAS,IAAI,MAAM,IAAI,EAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,SAAS,EAAE,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM;CAAE,GAC7D,WAAW,CAAC;AAEpB,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/B,KAAK,cAAc,CAAC,IAAI,SAAS,MAAM,IAAI,IAAI,SAAS,GAAG,MAAM,OAAO,IAAI,MAAM,IAAI,EAAE,GACpF,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,GACzD,aAAa,CAAC,IAAI,CAAC,CAAC;AAExB,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,IAAI,MAAM,SAAS,IAAI,GAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAClC,cAAc,CAAC,IAAI,SAAS,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAEhE,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,EAAE,GAC7D,aAAa,CAAC,IAAI,CAAC,GACnB,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,GACxB,aAAa,CAAC,IAAI,CAAC,GACnB,CAAC,CAAC;AAER,MAAM,MAAM,QAAQ,CAAC,MAAM,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAAI,MAAM,SAAS,GAAG,GACjF,IAAI,SAAS,GAAG,GACd,GAAG,GACH,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,GAC3B,IAAI,SAAS,GAAG,GACd,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,GAC3B,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AAEzD,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAE,SAAQ,QAAQ;IACrF,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9D,KAAK,eAAe,GAAG,cAAc,GAAG,SAAS,CAAC;AAClD,KAAK,mBAAmB,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC;AACvE,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAClF,KAAK,cAAc,CAAC,IAAI,SAAS,MAAM,EAAE,YAAY,IAAI,YAAY,SAAS,cAAc,GACxF,YAAY,CAAC,YAAY,CAAC,GAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,YAAY,IAAI,YAAY,SAAS,cAAc,GACvF,YAAY,CAAC,YAAY,CAAC,GAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,aAAa,CAAC,YAAY,IAAI,YAAY,SAAS,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AACpG,KAAK,gBAAgB,CAAC,YAAY,IAAI,YAAY,SAAS,cAAc,GACrE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,GACzF,KAAK,CAAC;AACV,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACjE,CAAC,GACD,CAAC,SAAS,cAAc,GACtB,YAAY,CAAC,CAAC,CAAC,GACf,WAAW,CAAC;AAClB,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAClE,CAAC,GACD,CAAC,SAAS,cAAc,GACtB,YAAY,CAAC,CAAC,CAAC,GACf,WAAW,CAAC;AAClB,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GACjE,CAAC,GACD,CAAC,SAAS,cAAc,GACtB,MAAM,CAAC,WAAW,GAClB,KAAK,CAAC;AACZ,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GACpE,CAAC,GACD,CAAC,SAAS,cAAc,GACtB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,GACnE,KAAK,CAAC;AAEZ,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EACrF,QAAQ,CAAC,GAAG,EAAE,SAAS,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EACrD,UAAU;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAA;CAAE,KAC1D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAQhC,CAAC;AAEH,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,YAAY,EACtB,EAAE,EACF,EAAE,EAEF,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAClC,UAAU,YAAY,KACrB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CACsD,CAAC;AAElG,MAAM,WAAW,YAAY,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM;IAC/D,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,YAAY,CAC3B,IAAI,SAAS,MAAM,EACnB,YAAY,SAAS,eAAe,EACpC,MAAM,SAAS,mBAAmB;IAElC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,CACrB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KACrB,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,CACd,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,KACpF,aAAa,CAAC,YAAY,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,CACf,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,KACpF,aAAa,CAAC,YAAY,CAAC,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;cAEc;AACd,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEvE;;;;;;8CAM8C;AAC9C,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,IAAI;IAChD,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAAC,CAAC;CACtF;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe,CAAC,IAAI,EAAE,EAAE,SAAS,MAAM,EAAE,QAAQ,GAAG,IAAI,CACvE,SAAQ,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnE,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC/B;;kEAE8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK,EACvB,OAAO,EAAE,CACP,OAAO,EAAE,iBAAiB,KACvB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC,CAAC,KAC3D,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,UAAU,GACpB,IAAI,QACJ,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,MAC/B,QAAQ,GAAG,IAAI,OAAK,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAwBtD,CAAC;AAEJ,MAAM,WAAW,KAAK,CACpB,EAAE,SAAS,MAAM,EACjB,IAAI,SAAS,MAAM,EACnB,YAAY,SAAS,eAAe,EACpC,MAAM,SAAS,mBAAmB,EAClC,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,WAAW,CACtB,SAAQ,QAAQ;IAChB,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IAC3C,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACpD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACxC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,aAAa,CAAC;QACpG,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;KACzF,CAAC;CACH;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrF,KAAY,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,KAAY,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,KAAY,MAAM,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,KAAY,WAAW,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACpE,KAAY,MAAM,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,KAAY,WAAW,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACpE,KAAY,QAAQ,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9D,KAAY,KAAK,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;IACxD,KAAY,QAAQ,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAAK,CAAC,GACa,CAAC;AAEtE,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,EAAE,SAAS,MAAM,EACvB,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,YAAY,SAAS,eAAe,GAAG,SAAS,EAChD,MAAM,SAAS,mBAAmB,GAAG,SAAS,EAE9C,IAAI,EAAE,EACN,SAAS,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAChD,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAQrC,CAAC;AAEH,KAAK,aAAa,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,CAC9E,MAAM,EAAE,EACR,MAAM,IAAI,EACV,MAAM,YAAY,EAClB,MAAM,MAAM,EACZ,MAAM,QAAQ,EACd,MAAM,QAAQ,CACf,GACG,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAC3E,KAAK,CAAC;AAeV,KAAK,cAAc,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,KAAK,CACjF,MAAM,EAAE,EACR,MAAM,IAAI,EACV,MAAM,YAAY,EAClB,MAAM,MAAM,EACZ,MAAM,QAAQ,EACd,MAAM,QAAQ,CACf,GACG,KAAK,CACH,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EACxC;IAAC,UAAU,CAAC,CAAC,CAAC;CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CACrE,GACD,KAAK,CAAC;AAEV,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAE,SAAQ,QAAQ;IAC/D,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,aAAa,CAAC,EACrD,GAAG,MAAM,EAAE,MAAM,GAChB,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1F;;uDAEmD;IACnD,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACtF;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,MAAM,QAAQ,CAAC,KAAK,IAAI,KAAK,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAsB5E,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EACjE,GAAG,QAAQ,MAAM,KAChB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAIxB,CAAC;AAEL,eAAO,MAAM,SAAS,SARM,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,aACtD,MAAM,KAChB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAME,CAAC;AAE/B,eAAO,MAAM,GAAG,GAAI,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAC/D,GAAG,QAAQ,MAAM,KAChB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAqB,CAAC;AAElD,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,aAAa,CAAC,EACrE,GAAG,QAAQ,MAAM,KAChB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CACyD,CAAC;AAEhG,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,KAAK,SAAS,aAAa,EAC7E,YAAY,KAAK,EACjB,MAAM,MAAM,KACX,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CACsC,CAAC;AAE3F,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,aAAa,EAAE,YAAY,KAAK,KAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrC,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;IACzD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;IACxE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,cAAc,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC;CAC7D;AAED;;;wDAGwD;AACxD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;QACvB,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;KACrD,KAAK,aAAa,CAAC;CACrB;;AAED;;;;;;;;;GASG;AACH,qBAAa,OAAQ,SAAQ,YAE5B;CAAG;AAEJ,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAGpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAGjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,UAAU;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACjD,KAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAWpB,CAAC;AAEJ,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;CAC7B,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjC;;;;4DAI4D;AAC5D,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,aAAa,GAAG,aAAa;IAC3E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAC1E,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAC5C,cAAc,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EACtE,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAC5C,MAAM,CAAC;IACZ,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAChF,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAC5C,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;IACtF,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAC5E,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9E,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EACvE,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,aAAa,KAC5D,OAAO,CAAC;CACd;AAED,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAExD;;;;mCAImC;AACnC,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,GAC5E,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,GACrB,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,GACtB,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,aAAa,CAAE,SAAQ,KAAK,CAAC,KAAK;IAC3E,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7G,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC9C,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClD,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;KACpD,CAAC;IACF,QAAQ,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClD,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7G,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;KACpD,CAAC;CACH;AAED,KAAK,sBAAsB,CAAC,KAAK,SAAS,aAAa,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,GACtF,CAAC,SAAS,KAAK,CAAC,GAAG,GACjB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GACjB,KAAK,GACP,KAAK,CAAC;AAEV;;wEAEwE;AACxE,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAE,SAAQ,KAAK,CAAC,KAAK;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrE,CAAC;IACF,QAAQ,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrE,CAAC;CACH;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,aAAa,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9E;;iEAEiE;AACjE,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,aAAa,IAAI;IACrD,QAAQ,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;CAChG,CAAC;AAEF;;;4EAG4E;AAC5E,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,aAAa,IAAI;IACjD,QAAQ,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU;CACpD,CAAC;AAEF,KAAK,iBAAiB,CAAC,KAAK,IAAI;KAC7B,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,GACnD,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACpC,KAAK;CACV,CAAC,MAAM,KAAK,CAAC,CAAC;AAEf;wBACwB;AACxB,MAAM,WAAW,UAAU,CAAC,KAAK,CAAE,SAAQ,KAAK,CAAC,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE;QACX;;;gEAGwD;QACxD,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;KAClC,GAAG;QAGF,QAAQ,EAAE,CAAC,IAAI,MAAM,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,GAC3D,CAAC,GAAG,MAAM,GACV,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,GACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,GACzC,KAAK;KACV,CAAC;CACH;AAED;;;4CAG4C;AAC5C,MAAM,WAAW,UAAU,CACzB,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,KAAK,SAAS,aAAa,GAAG,aAAa,EAC3C,KAAK,SAAS,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAC7C,SAAQ,KAAK,CAAC,YAAY,CACxB,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAC5B,GAAG,EAAE,QAAQ,EACb,IAAI,EACJ,UAAU,CAAC,KAAK,CAAC,EACjB,KAAK,EACL,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAC7D;IACD;;6EAEyE;IACzE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC;CACnC;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtD;0CAC0C;AAC1C,MAAM,WAAW,UAAU,CACzB,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,KAAK,SAAS,aAAa,GAAG,aAAa,CAC3C,SAAQ,KAAK,CAAC,YAAY,CACxB,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,EACrB,GAAG,EAAE,SAAS,EACd,QAAQ,CAAC,KAAK,CAAC,EACf,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC/B,KAAK,EACL,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,CAClC;IACD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW,CAC1B,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,KAAK,SAAS,aAAa,GAAG,aAAa,CAC3C,SAAQ,KAAK,CAAC,YAAY,CACxB,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EACtB,EAAE,EACF,IAAI,EACJ,WAAW,CAAC,KAAK,CAAC,EAClB,KAAK,EACL,sBAAsB,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,CACnD;IACD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;QAChB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;KACvB,CAAC;CACH;AAKD,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,SAAS,CAAA;CAAE,GAC1F,CAAC,GACD,SAAS,CAAC;AACd,MAAM,MAAM,aAAa,CAAC,OAAO,IAC/B,OAAO,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GACzC,KAAK,GACL,OAAO,SAAS,gBAAgB,CAAC,MAAM,KAAK,CAAC,GAC3C,KAAK,GACL,KAAK,CAAC;AACd,MAAM,MAAM,YAAY,CAAC,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,GAClE,CAAC,SAAS,KAAK,CAAC,GAAG,GACjB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GACb,KAAK,GACP,KAAK,CAAC;AACV,MAAM,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AACjG,MAAM,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAChF,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,GACnE,CAAC,SAAS,KAAK,CAAC,GAAG,GACjB,UAAU,CAAC,CAAC,CAAC,GACb,KAAK,GACP,KAAK,CAAC;AACV,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,SAAS,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,MAAM,UAAU,CAAC,OAAO,IAAI,OAAO,SAAS,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAE1F,KAAK,aAAa,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9E,KAAK,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAK/E,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAE/C,KAAK,gBAAgB,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,GACtD;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnC,MAAM,MAAM,SAAS,KAAK,GACxB;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEzC,KAAK,kBAAkB,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,GACxD;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAA;CAAE,GACtE,MAAM,MAAM,SAAS,KAAK,GACxB;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAA;CAAE,GACtE,YAAY,CAAC,MAAM,CAAC,SAAS,KAAK,GAChC;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAA;CAAE,CAAC;AAE9E,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,SAAS,GAAG,mBAAmB,EAAE,EAAE,SAAS,SAAS,CAAC,OAAO,CAAC,IAAI;IACtG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAC9C,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAElD,MAAM,MAAM,eAAe,CACzB,OAAO,SAAS,SAAS,GAAG,mBAAmB,EAC/C,EAAE,SAAS,SAAS,CAAC,OAAO,CAAC,IAC3B,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CACxD,CAAC;;;;AAEF;;2CAE2C;AAC3C,qBAAa,aAAc,SAAQ,mBAAkC;IAKnE,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;CACrD,CAAC;CAAG;;;;AAEL,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;CAAG;AAEL,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAC1B,CAAC;AACjC,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAC1B,CAAC;AAWjC;;;;;uBAKuB;AACvB,MAAM,WAAW,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,SAAS,aAAa;IAC3E,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAC1E,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAC5C,MAAM,CAAC,MAAM,CAChB,cAAc,EACd,OAAO,EACP,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAClE,CAAC;IACF,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EACtE,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAC5C,MAAM,CAAC,MAAM,CAChB,MAAM,EACN,OAAO,EACP,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAClE,CAAC;CACH;AAED,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,KAAK,SAAS,aAAa,EAC7E,IAAI,EAAE,EACN,YAAY,KAAK,EACjB,UAAS,aAAkB,KAC1B;IACD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5E,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAqE5C,CAAC;AAEF;mEACmE;AACnE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,SAAS,EAAE,KAAK,CAAC,KAAK,SAAS,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC1F,OAAO,CAAC,EACR,SAAS,KAAK,KACb,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAuBnD,CAAC;AA0fF,eAAO,MAAM,mBAAmB,GAAI,UAAU;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;CACtD,KAAG,aA+BH,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,UAAU;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;CACtD,KAAG,aA2CH,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,UAAU;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;CACtD,KAAG,aAuCH,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,cAAc,MAAM,KAAG,SAUzD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,cAAc,YAAY,KAAG,MAanE,CAAC"}