cotomy 0.1.60 → 0.1.62

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,468 @@
1
+ import dayjs from 'dayjs';
2
+ import { StatusCodes } from "http-status-codes";
3
+ import { CotomyDebugFeature, CotomyDebugSettings } from './debug';
4
+ import { CotomyElement } from "./view";
5
+ export class CotomyApiException extends Error {
6
+ constructor(status, message, response, bodyText = "") {
7
+ super(message);
8
+ this.status = status;
9
+ this.message = message;
10
+ this.response = response;
11
+ this.bodyText = bodyText;
12
+ this.name = "CotomyApiException";
13
+ }
14
+ }
15
+ export class CotomyHttpClientError extends CotomyApiException {
16
+ constructor(status, message, response, body = "") {
17
+ super(status, message, response, body);
18
+ this.name = "CotomyHttpClientError";
19
+ }
20
+ }
21
+ export class CotomyUnauthorizedException extends CotomyHttpClientError {
22
+ constructor(status, message, response, body = "") {
23
+ super(status, message, response, body);
24
+ this.name = "CotomyUnauthorizedException";
25
+ }
26
+ }
27
+ export class CotomyForbiddenException extends CotomyHttpClientError {
28
+ constructor(status, message, response, body = "") {
29
+ super(status, message, response, body);
30
+ this.name = "CotomyForbiddenException";
31
+ }
32
+ }
33
+ export class CotomyNotFoundException extends CotomyHttpClientError {
34
+ constructor(status, message, response, body = "") {
35
+ super(status, message, response, body);
36
+ this.name = "CotomyNotFoundException";
37
+ }
38
+ }
39
+ export class CotomyConflictException extends CotomyHttpClientError {
40
+ constructor(status, message, response, body = "") {
41
+ super(status, message, response, body);
42
+ this.name = "CotomyConflictException";
43
+ }
44
+ }
45
+ export class CotomyRequestInvalidException extends CotomyHttpClientError {
46
+ constructor(status, message, response, body = "") {
47
+ super(status, message, response, body);
48
+ this.name = "CotomyRequestInvalidException";
49
+ }
50
+ }
51
+ export class CotomyTooManyRequestsException extends CotomyHttpClientError {
52
+ constructor(status, message, response, body = "") {
53
+ super(status, message, response, body);
54
+ this.name = "CotomyTooManyRequestsException";
55
+ }
56
+ }
57
+ export class CotomyHttpServerError extends CotomyApiException {
58
+ constructor(status, message, response, body = "") {
59
+ super(status, message, response, body);
60
+ this.name = "CotomyHttpServerError";
61
+ }
62
+ }
63
+ export class CotomyResponseJsonParseException extends Error {
64
+ constructor(message = "Failed to parse JSON response.") {
65
+ super(message);
66
+ this.name = "CotomyResponseJsonParseException";
67
+ }
68
+ }
69
+ export class CotomyInvalidFormDataBodyException extends Error {
70
+ constructor(message = "Body must be an instance of FormData.") {
71
+ super(message);
72
+ this.name = "CotomyInvalidFormDataBodyException";
73
+ }
74
+ }
75
+ class Methods {
76
+ }
77
+ Methods.GET = 'GET';
78
+ Methods.POST = 'POST';
79
+ Methods.PUT = 'PUT';
80
+ Methods.PATCH = 'PATCH';
81
+ Methods.DELETE = 'DELETE';
82
+ Methods.HEAD = 'HEAD';
83
+ Methods.OPTIONS = 'OPTIONS';
84
+ Methods.TRACE = 'TRACE';
85
+ Methods.CONNECT = 'CONNECT';
86
+ class ResponseMessages {
87
+ static getMessage(status) {
88
+ return this._responseMessages[status] || `Unexpected error: ${status}`;
89
+ }
90
+ }
91
+ ResponseMessages._responseMessages = {
92
+ [StatusCodes.BAD_REQUEST]: "There is an error in the input. Please check and try again.",
93
+ [StatusCodes.UNAUTHORIZED]: "You are not authenticated. Please log in again.",
94
+ [StatusCodes.FORBIDDEN]: "You do not have permission to use this feature. If necessary, please contact the administrator.",
95
+ [StatusCodes.NOT_FOUND]: "The specified information could not be found. It may have been deleted. Please start over or contact the administrator.",
96
+ [StatusCodes.METHOD_NOT_ALLOWED]: "This operation is currently prohibited on the server.",
97
+ [StatusCodes.NOT_ACCEPTABLE]: "The request cannot be accepted. Processing has been stopped.",
98
+ [StatusCodes.PROXY_AUTHENTICATION_REQUIRED]: "Proxy authentication is required for internet access.",
99
+ [StatusCodes.REQUEST_TIMEOUT]: "The request timed out. Please try again.",
100
+ [StatusCodes.CONFLICT]: "The identifier you are trying to register already exists. Please check the content and try again.",
101
+ [StatusCodes.PAYMENT_REQUIRED]: "Payment is required for this operation. Please check.",
102
+ [StatusCodes.GONE]: "The requested resource is no longer available.",
103
+ [StatusCodes.LENGTH_REQUIRED]: "The Content-Length header field is required for the request.",
104
+ [StatusCodes.PRECONDITION_FAILED]: "The request failed because the precondition was not met.",
105
+ [StatusCodes.UNSUPPORTED_MEDIA_TYPE]: "The requested media type is not supported.",
106
+ [StatusCodes.EXPECTATION_FAILED]: "The server cannot meet the Expect header of the request.",
107
+ [StatusCodes.MISDIRECTED_REQUEST]: "The server cannot appropriately process this request.",
108
+ [StatusCodes.UNPROCESSABLE_ENTITY]: "There is an error in the request content.",
109
+ [StatusCodes.LOCKED]: "The requested resource is locked.",
110
+ [StatusCodes.FAILED_DEPENDENCY]: "The request failed due to dependency on a previous failed request.",
111
+ [StatusCodes.UPGRADE_REQUIRED]: "A protocol upgrade is required to perform this operation.",
112
+ [StatusCodes.PRECONDITION_REQUIRED]: "This request requires a precondition.",
113
+ [StatusCodes.TOO_MANY_REQUESTS]: "Too many requests have been sent in a short time. Please wait and try again.",
114
+ [StatusCodes.REQUEST_HEADER_FIELDS_TOO_LARGE]: "The request headers are too large.",
115
+ [StatusCodes.INTERNAL_SERVER_ERROR]: "An unexpected error occurred. Please try again later.",
116
+ [StatusCodes.BAD_GATEWAY]: "The server is currently overloaded. Please wait and try again later.",
117
+ [StatusCodes.SERVICE_UNAVAILABLE]: "The service is temporarily unavailable. Please try again later.",
118
+ [StatusCodes.GATEWAY_TIMEOUT]: "The communication timed out. Please try again.",
119
+ [StatusCodes.HTTP_VERSION_NOT_SUPPORTED]: "The current communication method is not supported.",
120
+ [StatusCodes.NOT_IMPLEMENTED]: "The server does not support the requested functionality.",
121
+ [StatusCodes.INSUFFICIENT_STORAGE]: "The server has insufficient storage.",
122
+ [StatusCodes.NETWORK_AUTHENTICATION_REQUIRED]: "Network authentication is required.",
123
+ 413: "The payload of the request is too large. Please check the size.",
124
+ 414: "The request URI is too long.",
125
+ 416: "The requested range is invalid.",
126
+ 508: "The server detected a loop.",
127
+ 510: "The request does not include the required extensions.",
128
+ };
129
+ export class CotomyApiResponse {
130
+ constructor(_response) {
131
+ this._response = _response;
132
+ this._object = null;
133
+ this._text = null;
134
+ }
135
+ get available() {
136
+ return !!this._response;
137
+ }
138
+ get empty() {
139
+ return !this._response || this._response.status === 0;
140
+ }
141
+ get ok() {
142
+ return this._response?.ok ?? false;
143
+ }
144
+ get status() {
145
+ return this._response?.status ?? 0;
146
+ }
147
+ get statusText() {
148
+ return this._response?.statusText ?? '';
149
+ }
150
+ get headers() {
151
+ return this._response?.headers ?? new Headers();
152
+ }
153
+ async textAsync() {
154
+ if (!this._response)
155
+ return "";
156
+ return this._text ?? (this._text = await this._response?.text());
157
+ }
158
+ async _ensureJsonParsedAsync(defaultValue) {
159
+ if (this._response && this._object === null) {
160
+ try {
161
+ const text = await this.textAsync();
162
+ if (!text) {
163
+ this._object = defaultValue;
164
+ }
165
+ else {
166
+ this._object = JSON.parse(text);
167
+ }
168
+ }
169
+ catch (error) {
170
+ throw new CotomyResponseJsonParseException(`Failed to parse JSON response: ${error instanceof Error ? error.message : String(error)}`);
171
+ }
172
+ }
173
+ return this._object ?? defaultValue;
174
+ }
175
+ async objectAsync(defaultValue = {}) {
176
+ return await this._ensureJsonParsedAsync(defaultValue);
177
+ }
178
+ async arrayAsync(defaultValue = []) {
179
+ const parsed = await this._ensureJsonParsedAsync(defaultValue);
180
+ return Array.isArray(parsed) ? parsed : defaultValue;
181
+ }
182
+ }
183
+ export class CotomyBracketBindNameGenerator {
184
+ create(name, parent) {
185
+ return parent ? `${parent}[${name}]` : name;
186
+ }
187
+ }
188
+ export class CotomyDotBindNameGenerator {
189
+ create(name, parent) {
190
+ return parent ? `${parent}.${name}` : name;
191
+ }
192
+ }
193
+ export class CotomyViewRenderer {
194
+ constructor(element, bindNameGenerator) {
195
+ this.element = element;
196
+ this.bindNameGenerator = bindNameGenerator;
197
+ this._renderers = {};
198
+ this._builded = false;
199
+ }
200
+ get locale() {
201
+ const languages = (navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language]).filter(Boolean);
202
+ let locale = this.element.attribute("data-cotomy-locale")
203
+ || this.element.closest("[data-cotomy-locale]")?.attribute("data-cotomy-locale")
204
+ || languages[0]
205
+ || 'en-US';
206
+ return locale.includes("-") ? locale.split("-")[0] : locale;
207
+ }
208
+ renderer(type, callback) {
209
+ this._renderers[type] = callback;
210
+ return this;
211
+ }
212
+ get initialized() {
213
+ return this._builded;
214
+ }
215
+ initialize() {
216
+ if (!this.initialized) {
217
+ this.renderer("mail", (element, value) => {
218
+ if (value) {
219
+ new CotomyElement(`<a href="mailto:${value}">${value}</a>`).appendTo(element);
220
+ }
221
+ });
222
+ this.renderer("tel", (element, value) => {
223
+ if (value) {
224
+ new CotomyElement(`<a href="tel:${value}">${value}</a>`).appendTo(element);
225
+ }
226
+ });
227
+ this.renderer("url", (element, value) => {
228
+ if (value) {
229
+ new CotomyElement(`<a href="${value}" target="_blank">${value}</a>`).appendTo(element);
230
+ }
231
+ });
232
+ this.renderer("number", (element, value) => {
233
+ if (value !== undefined && value !== null) {
234
+ const currency = element.attribute("data-cotomy-currency")
235
+ || element.closest("[data-cotomy-currency]")?.attribute("data-cotomy-currency");
236
+ element.text = currency
237
+ ? new Intl.NumberFormat(this.locale, { style: "currency", currency: currency }).format(value)
238
+ : new Intl.NumberFormat(this.locale).format(value);
239
+ }
240
+ });
241
+ this.renderer("utc", (element, value) => {
242
+ if (value) {
243
+ const hasOffset = /[+-]\d{2}:\d{2}$/.test(value);
244
+ const date = hasOffset ? new Date(value) : new Date(`${value}Z`);
245
+ if (!isNaN(date.getTime())) {
246
+ const format = element.attribute("data-cotomy-format") ?? "YYYY/MM/DD HH:mm";
247
+ element.text = dayjs(date).format(format);
248
+ }
249
+ }
250
+ });
251
+ this._builded = true;
252
+ }
253
+ return this;
254
+ }
255
+ async applyObjectAsync(target, propertyName = undefined) {
256
+ if (!propertyName) {
257
+ this.element.find("[data-cotomy-bind]").forEach(e => e.clear());
258
+ }
259
+ for (const [key, value] of Object.entries(await target)) {
260
+ const pname = this.bindNameGenerator.create(key, propertyName);
261
+ if (Array.isArray(value))
262
+ continue;
263
+ if (value && typeof value === "object") {
264
+ await this.applyObjectAsync(value, pname);
265
+ continue;
266
+ }
267
+ this.element.find(`[data-cotomy-bind="${pname}" i]`).forEach(element => {
268
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Bind)) {
269
+ console.debug(`Binding data to element [data-cotomy-bind="${pname}"]:`, value);
270
+ }
271
+ const type = element.attribute("data-cotomy-bindtype")?.toLowerCase();
272
+ if (type && this._renderers[type]) {
273
+ this._renderers[type](element, value);
274
+ }
275
+ else {
276
+ element.text = String(value ?? "");
277
+ }
278
+ });
279
+ }
280
+ }
281
+ async applyAsync(respose) {
282
+ if (!this.initialized) {
283
+ this.initialize();
284
+ }
285
+ if (!respose.available) {
286
+ throw new Error("Response is not available.");
287
+ }
288
+ await this.applyObjectAsync(await respose.objectAsync());
289
+ return this;
290
+ }
291
+ }
292
+ export class CotomyApi {
293
+ constructor(_options = {
294
+ baseUrl: null, headers: null, credentials: null, redirect: null,
295
+ cache: null, referrerPolicy: null, mode: null, keepalive: true,
296
+ integrity: '',
297
+ }) {
298
+ this._options = _options;
299
+ this._abortController = new AbortController();
300
+ }
301
+ get baseUrl() {
302
+ return this._options.baseUrl || '';
303
+ }
304
+ get headers() {
305
+ return this._options.headers || {};
306
+ }
307
+ get credentials() {
308
+ return this._options.credentials || 'same-origin';
309
+ }
310
+ get redirect() {
311
+ return this._options.redirect || 'follow';
312
+ }
313
+ get cache() {
314
+ return this._options.cache || 'no-cache';
315
+ }
316
+ get referrerPolicy() {
317
+ return this._options.referrerPolicy || 'no-referrer';
318
+ }
319
+ get mode() {
320
+ return this._options.mode || 'cors';
321
+ }
322
+ get keepalive() {
323
+ return this._options.keepalive || true;
324
+ }
325
+ get integrity() {
326
+ return this._options.integrity || '';
327
+ }
328
+ get abortController() {
329
+ return this._abortController;
330
+ }
331
+ async requestAsync(method, path, body, signal, responseType) {
332
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {
333
+ console.debug(`API request: ${method} ${path}`, { body, headers: this.headers });
334
+ }
335
+ const bodyTransformers = {
336
+ "application/json": (body) => JSON.stringify(body),
337
+ "application/x-www-form-urlencoded": (body) => {
338
+ if (body instanceof globalThis.FormData) {
339
+ let params = new URLSearchParams();
340
+ body.forEach((value, key) => {
341
+ params.append(key, String(value));
342
+ });
343
+ return params.toString();
344
+ }
345
+ else {
346
+ return new URLSearchParams(body).toString();
347
+ }
348
+ },
349
+ "multipart/form-data": (body) => {
350
+ if (body instanceof globalThis.FormData) {
351
+ return body;
352
+ }
353
+ const formData = new globalThis.FormData();
354
+ for (const [key, value] of Object.entries(body)) {
355
+ formData.append(key, String(value));
356
+ }
357
+ return formData;
358
+ }
359
+ };
360
+ const url = /^[a-zA-Z]/.test(path) ? path
361
+ : `${(this.baseUrl || '').replace(/\/$/, '')}/${path.replace(/^\//, '')}`;
362
+ const headers = new Headers(this.headers);
363
+ if (headers.has('Content-Type') && headers.get("Content-Type") === "multipart/form-data") {
364
+ headers.delete('Content-Type');
365
+ }
366
+ const ct = headers.get('Content-Type') || "multipart/form-data";
367
+ if (ct === 'multipart/form-data' && body && !(body instanceof globalThis.FormData)) {
368
+ if (typeof body !== 'object' || Array.isArray(body)) {
369
+ throw new CotomyInvalidFormDataBodyException('Body must be FormData or a plain object when using multipart/form-data.');
370
+ }
371
+ }
372
+ const responseClass = responseType ?? CotomyApiResponse;
373
+ const response = new responseClass(await fetch(url, {
374
+ method,
375
+ headers,
376
+ credentials: this.credentials,
377
+ body: body ? (bodyTransformers[ct] ? bodyTransformers[ct](body) : body) : undefined,
378
+ signal: signal ?? this._abortController.signal,
379
+ redirect: this.redirect,
380
+ cache: this.cache,
381
+ referrerPolicy: this.referrerPolicy,
382
+ mode: this.mode,
383
+ keepalive: this.keepalive,
384
+ integrity: this.integrity,
385
+ }));
386
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {
387
+ console.debug(`response body: ${response.status} ${response.statusText}`, await response.textAsync());
388
+ }
389
+ if (response.status >= 400 && response.status < 600) {
390
+ const errorBody = await response.textAsync().catch(() => 'No response body available');
391
+ const errorMessage = response.statusText || ResponseMessages.getMessage(response.status) || `Unexpected error: ${response.status}`;
392
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {
393
+ console.error(`API request failed: ${errorMessage}`, response, errorBody);
394
+ }
395
+ switch (response.status) {
396
+ case StatusCodes.BAD_REQUEST:
397
+ case StatusCodes.UNPROCESSABLE_ENTITY:
398
+ throw new CotomyRequestInvalidException(response.status, errorMessage, response, errorBody);
399
+ case StatusCodes.UNAUTHORIZED:
400
+ throw new CotomyUnauthorizedException(response.status, errorMessage, response, errorBody);
401
+ case StatusCodes.FORBIDDEN:
402
+ throw new CotomyForbiddenException(response.status, errorMessage, response, errorBody);
403
+ case StatusCodes.NOT_FOUND:
404
+ throw new CotomyNotFoundException(response.status, errorMessage, response, errorBody);
405
+ case StatusCodes.CONFLICT:
406
+ case StatusCodes.GONE:
407
+ throw new CotomyConflictException(response.status, errorMessage, response, errorBody);
408
+ case StatusCodes.TOO_MANY_REQUESTS:
409
+ throw new CotomyTooManyRequestsException(response.status, errorMessage, response, errorBody);
410
+ default:
411
+ if (response.status < 500) {
412
+ throw new CotomyHttpClientError(response.status, errorMessage, response, errorBody);
413
+ }
414
+ else {
415
+ throw new CotomyHttpServerError(response.status, errorMessage, response, errorBody);
416
+ }
417
+ }
418
+ }
419
+ return response;
420
+ }
421
+ async getAsync(path, parameters) {
422
+ let queryString = '';
423
+ if (parameters instanceof globalThis.FormData) {
424
+ let params = new URLSearchParams();
425
+ parameters.forEach((value, key) => {
426
+ params.append(key, String(value));
427
+ });
428
+ queryString = params.toString();
429
+ }
430
+ else if (parameters) {
431
+ queryString = new URLSearchParams(Object.fromEntries(Object.entries(parameters).map(([key, value]) => [key, String(value)]))).toString();
432
+ }
433
+ const fullUrl = queryString ? `${path}?${queryString}` : path;
434
+ if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {
435
+ console.debug(`GET request to: ${fullUrl}`);
436
+ }
437
+ return this.requestAsync(Methods.GET, fullUrl);
438
+ }
439
+ async postAsync(path, body) {
440
+ return this.requestAsync(Methods.POST, path, body);
441
+ }
442
+ async putAsync(path, body) {
443
+ return this.requestAsync(Methods.PUT, path, body);
444
+ }
445
+ async patchAsync(path, body) {
446
+ return this.requestAsync(Methods.PATCH, path, body);
447
+ }
448
+ async deleteAsync(path) {
449
+ return this.requestAsync(Methods.DELETE, path);
450
+ }
451
+ async headAsync(path) {
452
+ return this.requestAsync(Methods.HEAD, path);
453
+ }
454
+ async optionsAsync(path) {
455
+ return this.requestAsync(Methods.OPTIONS, path);
456
+ }
457
+ async traceAsync(path) {
458
+ return this.requestAsync(Methods.TRACE, path);
459
+ }
460
+ async connectAsync(path) {
461
+ return this.requestAsync(Methods.CONNECT, path);
462
+ }
463
+ async submitAsync(form) {
464
+ return form.method.toUpperCase() === Methods.GET ? this.getAsync(form.action, form.body)
465
+ : this.requestAsync(form.method.toUpperCase(), form.action, form.body);
466
+ }
467
+ }
468
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export var CotomyDebugFeature;
2
+ (function (CotomyDebugFeature) {
3
+ CotomyDebugFeature["Api"] = "api";
4
+ CotomyDebugFeature["Fill"] = "fill";
5
+ CotomyDebugFeature["Bind"] = "bind";
6
+ CotomyDebugFeature["FormData"] = "formdata";
7
+ CotomyDebugFeature["Html"] = "html";
8
+ CotomyDebugFeature["Page"] = "page";
9
+ CotomyDebugFeature["FormLoad"] = "formload";
10
+ })(CotomyDebugFeature || (CotomyDebugFeature = {}));
11
+ export class CotomyDebugSettings {
12
+ static isEnabled(key) {
13
+ const global = localStorage.getItem(this.PREFIX);
14
+ if (key) {
15
+ const specific = localStorage.getItem(`${this.PREFIX}:${String(key)}`);
16
+ return specific === "true" || global === "true";
17
+ }
18
+ return global === "true";
19
+ }
20
+ static enable(key) {
21
+ localStorage.setItem(`${this.PREFIX}:${String(key)}`, "true");
22
+ }
23
+ static disable(key) {
24
+ localStorage.setItem(`${this.PREFIX}:${String(key)}`, "false");
25
+ }
26
+ static enableAll() {
27
+ localStorage.setItem(this.PREFIX, "true");
28
+ }
29
+ static disableAll() {
30
+ localStorage.setItem(this.PREFIX, "false");
31
+ }
32
+ static clear(key) {
33
+ if (key) {
34
+ localStorage.removeItem(`${this.PREFIX}:${String(key)}`);
35
+ }
36
+ else {
37
+ localStorage.removeItem(this.PREFIX);
38
+ }
39
+ }
40
+ }
41
+ CotomyDebugSettings.PREFIX = "cotomy:debug";
42
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/debug.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC1B,iCAAW,CAAA;IACX,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,2CAAqB,CAAA;IACrB,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,2CAAqB,CAAA;AACzB,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAED,MAAM,OAAO,mBAAmB;IAGrB,MAAM,CAAC,SAAS,CAAC,GAAiC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,OAAO,QAAQ,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,KAAK,MAAM,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAgC;QACjD,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,GAAgC;QAClD,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,SAAS;QACnB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM,CAAC,UAAU;QACpB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAiC;QACjD,IAAI,GAAG,EAAE,CAAC;YACN,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;;AAjCuB,0BAAM,GAAG,cAAc,CAAC"}