@netacea/netaceaintegrationbase 2.0.17 → 2.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,86 +0,0 @@
1
- // eslint-disable-next-line complexity
2
- export function configureCookiesDomain(cookieAttr, captchaCookieAttr) {
3
- cookieAttr = removeDuplicateAttrs(cookieAttr ?? '', true);
4
- captchaCookieAttr = removeDuplicateAttrs(captchaCookieAttr ?? '', true);
5
- let finalCookieAttr = cookieAttr;
6
- let finalCaptchaCookieAttr = captchaCookieAttr;
7
- if (cookieAttr !== undefined && captchaCookieAttr !== undefined) {
8
- const domain = extractCookieAttr(cookieAttr, 'Domain');
9
- const captchaDomain = extractCookieAttr(captchaCookieAttr, 'Domain');
10
- if (domain !== undefined && captchaDomain !== undefined) {
11
- finalCaptchaCookieAttr = captchaCookieAttr.replace(captchaDomain, domain);
12
- }
13
- else if (domain !== undefined && captchaDomain === undefined) {
14
- // eslint-disable-next-line max-len
15
- finalCaptchaCookieAttr = captchaCookieAttr + (captchaCookieAttr !== '' ? `; Domain=${domain}` : `Domain=${domain}`);
16
- }
17
- else if (domain === undefined && captchaDomain !== undefined) {
18
- finalCookieAttr = cookieAttr + (cookieAttr !== '' ? `; Domain=${captchaDomain}` : `Domain=${captchaDomain}`);
19
- }
20
- }
21
- else if (cookieAttr !== undefined && captchaCookieAttr === undefined) {
22
- const domain = extractCookieAttr(cookieAttr, 'Domain');
23
- if (domain !== undefined) {
24
- finalCaptchaCookieAttr = `Domain=${domain}`;
25
- }
26
- }
27
- else if (cookieAttr === undefined && captchaCookieAttr !== undefined) {
28
- const captchaDomain = extractCookieAttr(captchaCookieAttr, 'Domain');
29
- if (captchaDomain !== undefined) {
30
- finalCookieAttr = `Domain=${captchaDomain}`;
31
- }
32
- }
33
- return {
34
- cookieAttributes: finalCookieAttr !== '' ? finalCookieAttr : undefined,
35
- captchaCookieAttributes: finalCaptchaCookieAttr !== '' ? finalCaptchaCookieAttr : undefined
36
- };
37
- }
38
- export function extractAndRemoveCookieAttr(attributes, attribute) {
39
- const attrValue = extractCookieAttr(attributes, attribute);
40
- if (attrValue !== undefined) {
41
- const attributesList = attributes
42
- .replace(/ /g, '')
43
- .replace(`${attribute}=${attrValue}`, '')
44
- .split(';')
45
- .filter(z => z.length > 0);
46
- return {
47
- extractedAttribute: attrValue,
48
- cookieAttributes: attributesList.join('; ')
49
- };
50
- }
51
- return {
52
- extractedAttribute: undefined,
53
- cookieAttributes: attributes
54
- };
55
- }
56
- export function extractCookieAttr(attributes, attribute) {
57
- const extractedAttr = attributes
58
- .split(';')
59
- .map(attr => attr.trim())
60
- .filter(attr => attr.toLowerCase().startsWith(attribute.toLowerCase()))[0];
61
- return (extractedAttr !== undefined && extractedAttr.length > 0)
62
- ? extractedAttr?.replace(`${attribute}=`, '')
63
- : undefined;
64
- }
65
- export function removeDuplicateAttrs(attributes, keepLast = false) {
66
- if (attributes === '') {
67
- return '';
68
- }
69
- const capitalizeAttrName = (attr) => attr.charAt(0).toUpperCase() + attr.slice(1);
70
- return attributes
71
- .replace(/ /g, '')
72
- .split(';')
73
- .map(capitalizeAttrName)
74
- .filter(s => s.trim() !== '')
75
- .filter((attr, i, attrs) => {
76
- const getAttrName = (attr) => attr.split('=')[0];
77
- const attrName = getAttrName(attr);
78
- const attrNames = attrs.map(getAttrName);
79
- if (keepLast) {
80
- return i === attrNames.lastIndexOf(attrName);
81
- }
82
- return i === attrNames.indexOf(attrName);
83
- })
84
- .join('; ');
85
- }
86
- //# sourceMappingURL=attributes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/lib/cookie/attributes.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- interface SetCookieCreationArgs {
2
- cookieName: string;
3
- cookieValue: string;
4
- maxAgeAttribute?: string;
5
- otherAttributes?: string;
6
- }
7
- interface SetCookieCreationArgsWithOptionalName extends Omit<SetCookieCreationArgs, 'cookieName'> {
8
- cookieName?: string;
9
- }
10
- export declare function createSetCookieString(args: SetCookieCreationArgs): string;
11
- export declare function createNetaceaSetCookieString(args: SetCookieCreationArgsWithOptionalName): string;
12
- export declare function createNetaceaCaptchaSetCookieString(args: SetCookieCreationArgsWithOptionalName): string;
13
- export {};
@@ -1,23 +0,0 @@
1
- import { removeDuplicateAttrs } from './attributes';
2
- export function createSetCookieString(args) {
3
- // prefer attributes set in otherAttributes (customer configured)
4
- const attributes = removeDuplicateAttrs([
5
- args.otherAttributes ?? '',
6
- `Max-Age=${args.maxAgeAttribute ?? 86400}`,
7
- 'Path=/'
8
- ].join('; '));
9
- return `${args.cookieName}=${args.cookieValue}; ${attributes}`;
10
- }
11
- export function createNetaceaSetCookieString(args) {
12
- return createSetCookieString({
13
- ...args,
14
- cookieName: args.cookieName ?? '_mitata'
15
- });
16
- }
17
- export function createNetaceaCaptchaSetCookieString(args) {
18
- return createSetCookieString({
19
- ...args,
20
- cookieName: args.cookieName ?? '_mitatacaptcha'
21
- });
22
- }
23
- //# sourceMappingURL=netaceaSession.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"netaceaSession.js","sourceRoot":"","sources":["../../../src/lib/cookie/netaceaSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAanD,MAAM,UAAU,qBAAqB,CAAE,IAA2B;IAChE,iEAAiE;IACjE,MAAM,UAAU,GAAG,oBAAoB,CAAC;QACtC,IAAI,CAAC,eAAe,IAAI,EAAE;QAC1B,WAAW,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE;QAC1C,QAAQ;KACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAEb,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAE,IAA2C;IACvF,OAAO,qBAAqB,CAAC;QAC3B,GAAG,IAAI;QACP,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;KACzC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAE,IAA2C;IAC9F,OAAO,qBAAqB,CAAC;QAC3B,GAAG,IAAI;QACP,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,gBAAgB;KAChD,CAAC,CAAA;AACJ,CAAC"}
@@ -1,8 +0,0 @@
1
- import * as cookieAttributes from './cookie/attributes';
2
- import * as netaceaSessionCookie from './cookie/netaceaSession';
3
- export declare const lib: {
4
- cookie: {
5
- attributes: typeof cookieAttributes;
6
- netaceaSession: typeof netaceaSessionCookie;
7
- };
8
- };
package/dist/lib/index.js DELETED
@@ -1,9 +0,0 @@
1
- import * as cookieAttributes from './cookie/attributes';
2
- import * as netaceaSessionCookie from './cookie/netaceaSession';
3
- export const lib = {
4
- cookie: {
5
- attributes: cookieAttributes,
6
- netaceaSession: netaceaSessionCookie
7
- }
8
- };
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,oBAAoB,MAAM,yBAAyB,CAAA;AAE/D,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,MAAM,EAAE;QACN,UAAU,EAAE,gBAAgB;QAC5B,cAAc,EAAE,oBAAoB;KACrC;CACF,CAAA"}
@@ -1,37 +0,0 @@
1
- import { NetaceaCookieV3 } from './NetaceaBase.types';
2
- import { NetaceaCookieV3IssueReason } from './NetaceaBase.enums';
3
- export declare const ingestIgnoredIpValue = "ignored";
4
- export interface MitataCookie {
5
- signature: string;
6
- expiry: string;
7
- userId: string;
8
- ipHash: string;
9
- mitigationType: string;
10
- match: number;
11
- mitigate: number;
12
- captcha: number;
13
- }
14
- export interface CheckCookieResponse {
15
- mitata: MitataCookie | NetaceaCookieV3 | undefined;
16
- requiresReissue: boolean;
17
- isExpired: boolean;
18
- shouldExpire: boolean;
19
- isSameIP: boolean;
20
- isPrimaryHashValid: boolean;
21
- match: number;
22
- mitigate: number;
23
- captcha: number;
24
- issueReason?: NetaceaCookieV3IssueReason;
25
- }
26
- export declare function matchMitataCookie(netaceaCookie: string | undefined): MitataCookie | undefined;
27
- export declare function generateId(length?: number, charset?: string[]): string;
28
- export declare function createMitataCookie(clientIP: string, userId: string | undefined, expiryTime: number, saltKey: string, mitCode?: string): string;
29
- export declare function hexSha256(value: string, saltKey: string): string;
30
- interface WarmupCookie {
31
- cookie: string;
32
- secretKey: string;
33
- clientIP: string;
34
- }
35
- export declare const warmupCookie: WarmupCookie;
36
- export declare function checkMitataCookie(netaceaCookie: string | undefined, clientIP: string, secretKey: string): CheckCookieResponse;
37
- export {};
@@ -1,109 +0,0 @@
1
- import { createHmac, randomBytes } from 'crypto';
2
- import { COOKIEDELIMITER } from './dictionary';
3
- import { Buffer } from 'buffer';
4
- // Using clientIP has no advantage when setting cookies in Ingest Only mode.
5
- // We therefore use a dummy value in place of the IP.
6
- // This brings its own advantage in that if the integration is switched
7
- // from INGEST to MITIGATE, then the INGEST cookie will be treated as expired
8
- // & a new MITIGATE cookie will be set
9
- export const ingestIgnoredIpValue = 'ignored';
10
- const BASE_62_CHARSET = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
11
- const mitataCookieRegExp = /^(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/(.*)_\/@#\/((\d)(\d)(\d))$/;
12
- export function matchMitataCookie(netaceaCookie) {
13
- if (netaceaCookie === undefined) {
14
- return undefined;
15
- }
16
- const matches = netaceaCookie.match(mitataCookieRegExp);
17
- if (matches !== null && matches !== undefined) {
18
- const [, signature, expiry, userId, ipHash, mitigationType, match, mitigate, captcha] = matches;
19
- return {
20
- signature,
21
- expiry,
22
- userId,
23
- ipHash,
24
- mitigationType,
25
- match: parseInt(match),
26
- mitigate: parseInt(mitigate),
27
- captcha: parseInt(captcha)
28
- };
29
- }
30
- return undefined;
31
- }
32
- export function generateId(length = 16, charset = BASE_62_CHARSET) {
33
- const randomBytesBuffer = randomBytes(length - 1);
34
- const randomString = Array.from(randomBytesBuffer)
35
- .map(byte => charset[byte % charset.length])
36
- .join('');
37
- return `c${randomString}`;
38
- }
39
- export function createMitataCookie(clientIP, userId, expiryTime, saltKey, mitCode = '000') {
40
- if (userId === undefined) {
41
- userId = generateId();
42
- }
43
- const ipHash = hexSha256(clientIP + '|' + String(expiryTime), saltKey);
44
- const originCookieValue = [
45
- expiryTime,
46
- userId,
47
- ipHash,
48
- mitCode
49
- ].join(COOKIEDELIMITER);
50
- const value = hexSha256(originCookieValue, saltKey);
51
- const cookieValue = `${value}${COOKIEDELIMITER}${originCookieValue}`;
52
- return cookieValue;
53
- }
54
- export function hexSha256(value, saltKey) {
55
- const hash = createHmac('sha256', saltKey);
56
- hash.update(value);
57
- return Buffer.from(hash.digest('hex')).toString('base64');
58
- }
59
- export const warmupCookie = {
60
- // eslint-disable-next-line max-len
61
- cookie: 'MzBkZDEwYjc0ZmIyMzQ4YmY0OTlhNTkyNjY0MDRjMjhjNmQ5Y2RlYjVkYzVkMDQyZmEzODU4MDBiN2MwNTk1OQ==_/@#/1653044256_/@#/UUID_/@#/NjEyOWIzY2JiMjE5NjcwMThlYjg5NDYzY2YyMDZlYjE0ZDg2NTRjYmMxODg5Y2I4Y2U2NGFjZDAxOTdhMGFmNA==_/@#/000',
62
- secretKey: 'EXAMPLE_SECRET_KEY',
63
- clientIP: '192.168.0.1'
64
- };
65
- export function checkMitataCookie(netaceaCookie, clientIP, secretKey) {
66
- const defaultInvalidResponse = {
67
- mitata: undefined,
68
- requiresReissue: false,
69
- isExpired: false,
70
- shouldExpire: false,
71
- isSameIP: false,
72
- isPrimaryHashValid: false,
73
- captcha: 0,
74
- match: 0,
75
- mitigate: 0
76
- };
77
- if (typeof netaceaCookie !== 'string' || netaceaCookie === '') {
78
- return defaultInvalidResponse;
79
- }
80
- const mitata = matchMitataCookie(netaceaCookie);
81
- if (mitata !== undefined) {
82
- // Check cookie signature
83
- const mitSvcStringValue = [
84
- mitata.expiry, mitata.userId, mitata.ipHash, mitata.mitigationType
85
- ].join(COOKIEDELIMITER);
86
- const currentUnixTime = Math.floor(Date.now() / 1000);
87
- const isExpired = parseInt(mitata.expiry) < currentUnixTime;
88
- // serve, fail, cookiefail
89
- const isCaptchaServe = [1, 3, 5].includes(mitata.captcha);
90
- const isHardBlocked = mitata.mitigate === 3;
91
- const shouldExpire = isCaptchaServe || isHardBlocked;
92
- const currentIPHash = hexSha256(clientIP + '|' + mitata.expiry, secretKey);
93
- const isSameIP = mitata.ipHash === currentIPHash;
94
- const valid = mitata.signature === hexSha256(mitSvcStringValue, secretKey);
95
- return {
96
- mitata,
97
- requiresReissue: isExpired || !isSameIP,
98
- isExpired,
99
- shouldExpire,
100
- isSameIP,
101
- isPrimaryHashValid: valid,
102
- match: mitata.match,
103
- mitigate: mitata.mitigate,
104
- captcha: mitata.captcha
105
- };
106
- }
107
- return defaultInvalidResponse;
108
- }
109
- //# sourceMappingURL=mitataCookie.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mitataCookie.js","sourceRoot":"","sources":["../src/mitataCookie.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { CheckCookieResponse, NetaceaCookieV3 } from './NetaceaBase.types';
2
- export declare function createNetaceaCookieV3(cookieParams: NetaceaCookieV3): string;
3
- export declare function cookieIsNetaceaV3Format(cookie: string | undefined): boolean;
4
- export declare function objectIsNetaceaCookieV3(obj: unknown): obj is NetaceaCookieV3;
5
- export declare function checkNetaceaCookieV3(netaceaCookie: string | undefined, clientIP: string): CheckCookieResponse;
6
- export declare function matchNetaceaCookieV3(netaceaCookie: string | undefined): NetaceaCookieV3 | undefined;
7
- export declare function defaultInvalidResponse(): CheckCookieResponse;
@@ -1,113 +0,0 @@
1
- import { NetaceaCookieV3IssueReason } from './NetaceaBase.enums';
2
- import { netaceaCookieV3KeyMap, netaceaCookieV3OptionalKeyMap } from './dictionary';
3
- export function createNetaceaCookieV3(cookieParams) {
4
- const paramEntries = Object.entries(cookieParams);
5
- const cookieParts = paramEntries
6
- .filter(([_, v]) => v !== undefined)
7
- .map(([key, value]) => {
8
- if (key in netaceaCookieV3OptionalKeyMap) {
9
- return `${netaceaCookieV3OptionalKeyMap[key]}=${encodeURIComponent(value)}`;
10
- }
11
- return `${netaceaCookieV3KeyMap[key]}=${encodeURIComponent(value)}`;
12
- });
13
- return cookieParts.join('&');
14
- }
15
- export function cookieIsNetaceaV3Format(cookie) {
16
- if (cookie === undefined) {
17
- return false;
18
- }
19
- return cookie.split('&')
20
- .map(part => part.split('=')[0]) // E.g. 'cip' in cip=1.2.3.4
21
- .filter(key => !Object.values(netaceaCookieV3OptionalKeyMap).includes(key)) // Filter out optional keys
22
- .every(key => Object.values(netaceaCookieV3KeyMap).includes(key));
23
- }
24
- export function objectIsNetaceaCookieV3(obj) {
25
- if (typeof obj !== 'object' || obj === null) {
26
- return false;
27
- }
28
- for (const key of Object.keys(netaceaCookieV3KeyMap)) {
29
- if (!(key in obj)) {
30
- return false;
31
- }
32
- if (obj[key] === undefined) {
33
- return false;
34
- }
35
- }
36
- return true;
37
- }
38
- export function checkNetaceaCookieV3(netaceaCookie, clientIP) {
39
- if (netaceaCookie === undefined || netaceaCookie === '') {
40
- return defaultInvalidResponse();
41
- }
42
- const netaceaCookieV3 = matchNetaceaCookieV3(netaceaCookie);
43
- if (netaceaCookieV3 !== undefined) {
44
- const currentUnixTime = Math.floor(Date.now() / 1000);
45
- const expiryTimestamp = netaceaCookieV3.issueTimestamp + netaceaCookieV3.gracePeriod;
46
- const isExpired = expiryTimestamp < currentUnixTime;
47
- const isSameIP = clientIP === netaceaCookieV3.clientIP;
48
- // serve, fail, cookiefail
49
- const isCaptchaServe = [1, 3, 5].includes(netaceaCookieV3.captcha);
50
- const isHardBlocked = netaceaCookieV3.mitigate === 3;
51
- const shouldExpire = isCaptchaServe || isHardBlocked;
52
- return {
53
- mitata: netaceaCookieV3,
54
- requiresReissue: isExpired || !isSameIP,
55
- isExpired,
56
- shouldExpire,
57
- isSameIP,
58
- isPrimaryHashValid: true,
59
- match: netaceaCookieV3.match,
60
- mitigate: netaceaCookieV3.mitigate,
61
- captcha: netaceaCookieV3.captcha,
62
- issueReason: netaceaCookieV3.issueReason
63
- };
64
- }
65
- return defaultInvalidResponse();
66
- }
67
- export function matchNetaceaCookieV3(netaceaCookie) {
68
- if (netaceaCookie === undefined || netaceaCookie === '') {
69
- return undefined;
70
- }
71
- const cookieParts = netaceaCookie.split('&');
72
- const cookieParams = {
73
- clientIP: '',
74
- userId: '',
75
- cookieId: '',
76
- gracePeriod: 0,
77
- match: 0,
78
- mitigate: 0,
79
- captcha: 0,
80
- issueTimestamp: 0,
81
- issueReason: '',
82
- checkAllPostRequests: undefined
83
- };
84
- for (const part of cookieParts) {
85
- const [key, rawValue] = part.split('=');
86
- const value = decodeURIComponent(rawValue);
87
- let fullKey = Object.keys(netaceaCookieV3KeyMap).find(k => netaceaCookieV3KeyMap[k] === key);
88
- if (fullKey === undefined) {
89
- fullKey = Object.keys(netaceaCookieV3OptionalKeyMap).find(k => netaceaCookieV3OptionalKeyMap[k] === key);
90
- }
91
- let parsedValue = value === '' ? undefined : Number(value);
92
- if (parsedValue !== undefined && isNaN(parsedValue)) {
93
- parsedValue = value;
94
- }
95
- cookieParams[fullKey] = parsedValue;
96
- }
97
- return cookieParams;
98
- }
99
- export function defaultInvalidResponse() {
100
- return {
101
- mitata: undefined,
102
- requiresReissue: false,
103
- isExpired: false,
104
- shouldExpire: false,
105
- isSameIP: false,
106
- isPrimaryHashValid: false,
107
- captcha: 0,
108
- match: 0,
109
- mitigate: 0,
110
- issueReason: NetaceaCookieV3IssueReason.NO_SESSION
111
- };
112
- }
113
- //# sourceMappingURL=netaceaCookieV3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"netaceaCookieV3.js","sourceRoot":"","sources":["../src/netaceaCookieV3.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { NetaceaMitigationType } from './NetaceaBase.enums';
2
- export declare function correctTimeout(timeout: number): number;
3
- export declare function safeParseInt(value: string | number, defaultValue?: number): number;
4
- export declare function configureMitataExpiry(mitigationType: NetaceaMitigationType, expirySeconds: number | undefined): number;
package/dist/utils.js DELETED
@@ -1,19 +0,0 @@
1
- import { NetaceaMitigationType } from './NetaceaBase.enums';
2
- const ONE_HOUR_IN_SECONDS = 60 * 60;
3
- export function correctTimeout(timeout) {
4
- return timeout <= 0 ? defaultTimeout : timeout;
5
- }
6
- export function safeParseInt(value, defaultValue = 0) {
7
- if (isNaN(value)) {
8
- return defaultValue;
9
- }
10
- return parseInt(value);
11
- }
12
- const defaultTimeout = 3000;
13
- export function configureMitataExpiry(mitigationType, expirySeconds) {
14
- if (expirySeconds === undefined) {
15
- return mitigationType === NetaceaMitigationType.INGEST ? ONE_HOUR_IN_SECONDS : 60;
16
- }
17
- return expirySeconds;
18
- }
19
- //# sourceMappingURL=utils.js.map
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,CAAA;AAEnC,MAAM,UAAU,cAAc,CAAE,OAAe;IAC7C,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,YAAY,CAAE,KAAsB,EAAE,eAAuB,CAAC;IAC5E,IAAI,KAAK,CAAC,KAAe,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC,KAAe,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,CAAA;AAE3B,MAAM,UAAU,qBAAqB,CACnC,cAAqC,EACrC,aAAiC;IAEjC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,cAAc,KAAK,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;IACnF,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC"}