@curless/hotel-storefront 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.d.ts CHANGED
@@ -16,7 +16,7 @@ export declare const PROTOCOL_VERSION = "2025-06-18";
16
16
  * number. Found by reading the boot banner of a container that had just been
17
17
  * deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
18
18
  */
19
- export declare const VERSION = "0.12.0";
19
+ export declare const VERSION = "0.14.0";
20
20
  /**
21
21
  * The card's resource URI.
22
22
  *
@@ -25,7 +25,7 @@ export declare const VERSION = "0.12.0";
25
25
  * connector went storefront-v35 → v40 in a single day of UI work for exactly
26
26
  * this reason.
27
27
  */
28
- export declare const CARD_URI = "ui://curless/hotel/booking-v20.html";
28
+ export declare const CARD_URI = "ui://curless/hotel/booking-v22.html";
29
29
  /**
30
30
  * ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
31
31
  * host recognises this resource as a card at all; the plausible near-miss made
@@ -41,10 +41,10 @@ export declare const CARD_MIME = "text/html;profile=mcp-app";
41
41
  */
42
42
  export declare const UI_META: {
43
43
  readonly ui: {
44
- readonly resourceUri: "ui://curless/hotel/booking-v20.html";
44
+ readonly resourceUri: "ui://curless/hotel/booking-v22.html";
45
45
  };
46
- readonly 'ui/resourceUri': "ui://curless/hotel/booking-v20.html";
47
- readonly 'openai/outputTemplate': "ui://curless/hotel/booking-v20.html";
46
+ readonly 'ui/resourceUri': "ui://curless/hotel/booking-v22.html";
47
+ readonly 'openai/outputTemplate': "ui://curless/hotel/booking-v22.html";
48
48
  readonly 'openai/widgetAccessible': true;
49
49
  };
50
50
  /**
@@ -63,14 +63,14 @@ export declare const widgetMeta: (imageDomains: string[]) => {
63
63
  csp: {
64
64
  resourceDomains: string[];
65
65
  };
66
- resourceUri: "ui://curless/hotel/booking-v20.html";
66
+ resourceUri: "ui://curless/hotel/booking-v22.html";
67
67
  };
68
68
  'openai/widgetCSP': {
69
69
  connect_domains: never[];
70
70
  resource_domains: string[];
71
71
  };
72
- 'ui/resourceUri': "ui://curless/hotel/booking-v20.html";
73
- 'openai/outputTemplate': "ui://curless/hotel/booking-v20.html";
72
+ 'ui/resourceUri': "ui://curless/hotel/booking-v22.html";
73
+ 'openai/outputTemplate': "ui://curless/hotel/booking-v22.html";
74
74
  'openai/widgetAccessible': true;
75
75
  };
76
76
  /** The trip snapshot that rides beside every answer, for the card's header. */
package/dist/server.js CHANGED
@@ -29,7 +29,7 @@ export const PROTOCOL_VERSION = '2025-06-18';
29
29
  * number. Found by reading the boot banner of a container that had just been
30
30
  * deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
31
31
  */
32
- export const VERSION = '0.12.0';
32
+ export const VERSION = '0.14.0';
33
33
  /**
34
34
  * The card's resource URI.
35
35
  *
@@ -38,7 +38,7 @@ export const VERSION = '0.12.0';
38
38
  * connector went storefront-v35 → v40 in a single day of UI work for exactly
39
39
  * this reason.
40
40
  */
41
- export const CARD_URI = 'ui://curless/hotel/booking-v20.html';
41
+ export const CARD_URI = 'ui://curless/hotel/booking-v22.html';
42
42
  /**
43
43
  * ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
44
44
  * host recognises this resource as a card at all; the plausible near-miss made
@@ -1 +1 @@
1
- {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAY3D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,aAAa,KAAG,MAiExD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,OAAO,SAAS,CAAC,EAAE,EACnB,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,YAAW,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;KAexC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAgBnE,CAAC"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAY3D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,aAAa,KAAG,MAuExD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,OAAO,SAAS,CAAC,EAAE,EACnB,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,YAAW,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;KAexC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAkBnE,CAAC"}
package/dist/surface.js CHANGED
@@ -56,6 +56,9 @@ export const buildInstructions = (brand) => {
56
56
  // number is the guest's to give; filled in from an account or a profile it
57
57
  // would hand somebody else's tier and point balance to whoever is typing.
58
58
  `${v.brand} loyalty members get a lower rate. ${t.signIn} takes a membership number and the SURNAME on it - both from the guest, in this conversation, never from an account or a profile you know from elsewhere. There is no password: this connector has nowhere to put one, so if a guest offers one, tell them it is not needed and do not repeat it back. ${t.signOut} ends it. A rate shown as a member rate is always the discount the tier actually carries, and the public rate is shown beside it.`,
59
+ // ⚠️ MEMORY IS THE GUEST'S TO ASK FOR, and it lives on the membership.
60
+ `A signed-in member can have their room preferences remembered for next time - a bed type, a floor, a quiet, connecting or accessible room. Pass \`rememberRequests\` on ${t.requestBooking} only when they asked for that. Saved preferences come back with ${t.signIn} and are ticked on the booking form: mention them, and ask before booking with them. ${t.forgetPreferences} forgets them when the guest asks.`,
61
+ `An add-on can also go on a booking already made, come off it, or change: ${t.listExtras} with \`booking\` lists that ${v.noun}'s add-ons with what the booking holds, and ${t.previewChange} with \`extra\` and \`quantity\` shows what it would cost - the same preview-then-confirm as any other change.`,
59
62
  `${t.requestBooking} needs the guest's own name and email. Ask for them - do not use a name or email you know from anywhere else, such as their account or profile, unless they have typed it in this conversation.`,
60
63
  // ⚠️ PREVIEW, THEN CANCEL. The tool enforces this; the instruction is why.
61
64
  `Moving a booking is the same two steps as cancelling one. ${t.previewChange} shows the stay it holds now, the stay it would hold and the difference between them - the new nights are priced at what those nights cost today, so a change can cost more than the booking did. Show that and get a yes before ${t.changeBooking} with \`confirmed\`. A rate the hotel will not move, and a change it has no rooms for, are refused there in the hotel's own words; a different HOTEL is a cancellation and a new booking, with whatever fee the old one carries, and calling it a change would hide that fee.`,
@@ -77,7 +80,10 @@ export const buildInstructions = (brand) => {
77
80
  `An itinerary is a PLAN. Name the ${v.noun} on every day the guest sleeps there: consecutive days at one ${v.noun} are one stay of that many nights, and the day they leave needs none. ${t.itinerary} marks each stay as booked, in the trip, or only planned, and says how many of each; say so too, and never describe a planned stay as booked. Putting something in the trip is ${t.addToTrip}, and ${t.requestBooking} is what asks for the rooms.`,
78
81
  // ⚠️ ONE BOOKING PER STAY. Said to the model so it does not tell a guest
79
82
  // that cancelling "the booking" cancels the whole trip.
80
- `A trip of more than one stay is requested together and held as one booking per stay, each with its own confirmation code - each hotel holds its own nights. It is all or nothing: if one stay cannot be held, nothing is, and the answer says which. A change or a cancellation is made to one booking, by its code, and leaves the others as they are.`,
83
+ 'A trip of more than one stay is requested together and held as one booking per stay, each with its own confirmation code - each hotel holds its own nights. It is all or nothing: if one stay cannot be held, nothing is, and the answer says which. A change or a cancellation is made to one booking, by its code, and leaves the others as they are.',
84
+ // ⚠️ TWO CURRENCIES, TWO TOTALS - said here because the model is the one
85
+ // who would otherwise add them up in a sentence.
86
+ `A trip can hold ${v.nounPlural} that charge in different currencies. It is then priced one currency at a time: each has its own taxes and total, and nothing converts one into another - so never add them together, never convert one, and never call one ${v.noun} cheaper than another across currencies.`,
81
87
  `Questions about cancellation terms, check-in and check-out, children, pets, deposits or accessibility: call ${t.policies} with that topic and answer from what the ${v.noun} has published. If it does not say, tell the guest that and give the ${v.noun}'s link; do not fill in what hotels usually do.`,
82
88
  `Availability is what the ${v.noun} says it has. Report a low room count as a fact if the guest asks; do not turn it into a reason to hurry.`,
83
89
  FENCE_RULE,
@@ -129,6 +135,8 @@ export const tripToolNames = (brand) => new Set([
129
135
  brand.tools.listBookings,
130
136
  brand.tools.previewChange,
131
137
  brand.tools.changeBooking,
138
+ // Its add-ons for a booking already made.
139
+ brand.tools.listExtras,
132
140
  // It reads the trip to mark what is in it, so a call from the card has to
133
141
  // be able to name which trip.
134
142
  brand.tools.itinerary,
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -89,6 +89,10 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
89
89
  readonly inputSchema: {
90
90
  readonly type: "object";
91
91
  readonly properties: {
92
+ readonly booking: {
93
+ readonly type: "string";
94
+ readonly description: `A booking's confirmation code. The answer is then that booking's ${string}, its add-ons for those nights and how many of each the booking holds; preview_${string}booking_change changes them`;
95
+ };
92
96
  readonly checkIn: {
93
97
  readonly type: "string";
94
98
  readonly description: `${string}, as YYYY-MM-DD`;
@@ -106,7 +110,6 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
106
110
  readonly description: `The ${string}'s name or id`;
107
111
  };
108
112
  };
109
- readonly required: readonly ["hotel"];
110
113
  };
111
114
  }, {
112
115
  readonly name: `add_to_${string}trip`;
@@ -225,6 +228,10 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
225
228
  readonly type: "string";
226
229
  readonly description: "Anything else for the desk, in the guest's own words, up to 200 characters";
227
230
  };
231
+ readonly rememberRequests: {
232
+ readonly type: "boolean";
233
+ readonly description: "True when the guest asked for these room preferences to be remembered for their next stays. Needs a signed-in member; what is kept is the lasting kind - a bed type, a floor, a quiet, connecting or accessible room";
234
+ };
228
235
  };
229
236
  readonly required: readonly ["name", "email"];
230
237
  };
@@ -309,7 +316,7 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
309
316
  };
310
317
  }, {
311
318
  readonly name: `preview_${string}booking_change`;
312
- readonly description: `What moving a booking to other nights, another room type or a different number of rooms would cost: the stay it holds now, the stay it would hold, and the difference between them. The new nights are priced at what those nights cost today, not at the rate the booking was made on. A rate that cannot be moved, a ${string} that has no room left for the new nights and a booking that is already gone are each said in those words. Nothing is changed.`;
319
+ readonly description: `What moving a booking to other nights, another room type or a different number of rooms - or putting an add-on on it, taking one off or changing how many - would cost: what it holds now, what it would hold, and the difference between them. The new nights are priced at what those nights cost today, not at the rate the booking was made on. A rate that cannot be moved, a ${string} that has no room left for the new nights and a booking that is already gone are each said in those words. Nothing is changed.`;
313
320
  readonly annotations: {
314
321
  readonly title: string;
315
322
  readonly readOnlyHint: true;
@@ -340,6 +347,14 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
340
347
  readonly type: "string";
341
348
  readonly description: "A different room type at the same hotel, by id or name";
342
349
  };
350
+ readonly extra: {
351
+ readonly type: "string";
352
+ readonly description: `An add-on at this ${string}, by id or name, to put on the booking, take off or change - with \`quantity\``;
353
+ };
354
+ readonly quantity: {
355
+ readonly type: "number";
356
+ readonly description: "How many of that add-on the booking should hold, 0 to 20; 0 takes it off";
357
+ };
343
358
  readonly email: {
344
359
  readonly type: "string";
345
360
  readonly description: "The email the booking was made with, when it was made elsewhere";
@@ -349,7 +364,7 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
349
364
  };
350
365
  }, {
351
366
  readonly name: `change_${string}booking`;
352
- readonly description: "Moves a booking to other nights, another room type or a different number of rooms. Called without `confirmed` it returns the same preview - the two stays and the difference - and changes nothing; it changes only when `confirmed` is true. The confirmation code stays the same.";
367
+ readonly description: "Moves a booking to other nights, another room type or a different number of rooms, or sets one of its add-ons (`extra` and `quantity`; 0 takes it off). Called without `confirmed` it returns the same preview - the two stays and the difference - and changes nothing; it changes only when `confirmed` is true. The confirmation code stays the same.";
353
368
  readonly annotations: {
354
369
  readonly title: string;
355
370
  readonly readOnlyHint: false;
@@ -380,6 +395,14 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
380
395
  readonly type: "string";
381
396
  readonly description: "A different room type at the same hotel, by id or name";
382
397
  };
398
+ readonly extra: {
399
+ readonly type: "string";
400
+ readonly description: `An add-on at this ${string}, by id or name, to put on the booking, take off or change - with \`quantity\``;
401
+ };
402
+ readonly quantity: {
403
+ readonly type: "number";
404
+ readonly description: "How many of that add-on the booking should hold, 0 to 20; 0 takes it off";
405
+ };
383
406
  readonly email: {
384
407
  readonly type: "string";
385
408
  readonly description: "The email the booking was made with, when it was made elsewhere";
@@ -558,6 +581,20 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary) => readonly [{
558
581
  readonly type: "object";
559
582
  readonly properties: {};
560
583
  };
584
+ }, {
585
+ readonly name: `forget_${string}preferences`;
586
+ readonly description: `Forgets the room preferences saved on the signed-in ${string} membership - a bed type, a floor, a quiet or accessible room. Bookings already made keep what they asked for.`;
587
+ readonly annotations: {
588
+ readonly title: "Forget my saved preferences";
589
+ readonly readOnlyHint: false;
590
+ readonly destructiveHint: true;
591
+ readonly idempotentHint: true;
592
+ readonly openWorldHint: boolean;
593
+ };
594
+ readonly inputSchema: {
595
+ readonly type: "object";
596
+ readonly properties: {};
597
+ };
561
598
  }, {
562
599
  readonly name: `get_${string}${string}_policies`;
563
600
  readonly description: `What one ${string} publishes about cancellation, check-in and check-out, children and extra beds, pets, deposits and accessibility. With \`topic\` it returns that topic; without, all of them.`;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAWhD,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAQV,eAAe,EAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAkExD,eAAO,MAAM,UAAU,GAAI,GAAG,SAAS,EAAE,GAAG,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+XrD,CAAC;AAgFF,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA+KtE,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAuZ/E,eAAO,MAAM,UAAU,GACrB,MAAM,QAAQ,EACd,MAAM,MAAM,EACZ,SAAS,OAAO,EAChB,KAAK,WAAW,KACf,OAAO,CAAC,UAAU,CA84BpB,CAAC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAYhD,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAUV,eAAe,EAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAkExD,eAAO,MAAM,UAAU,GAAI,GAAG,SAAS,EAAE,GAAG,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmarD,CAAC;AAgFF,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAyLtE,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AA8gB/E,eAAO,MAAM,UAAU,GACrB,MAAM,QAAQ,EACd,MAAM,MAAM,EACZ,SAAS,OAAO,EAChB,KAAK,WAAW,KACf,OAAO,CAAC,UAAU,CAMpB,CAAC"}