@abyss-project/monitor 12.1.0 → 12.2.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/middlewares/logger-endpoint.middleware.js.map +1 -1
- package/dist/middlewares/rate-limit/identifier-resolver.d.ts +1 -0
- package/dist/middlewares/rate-limit/identifier-resolver.js +3 -2
- package/dist/middlewares/rate-limit/identifier-resolver.js.map +1 -1
- package/dist/middlewares/rate-limit/rate-limit.lua.d.ts +1 -1
- package/dist/middlewares/rate-limit/rate-limit.lua.js +4 -6
- package/dist/middlewares/rate-limit/rate-limit.lua.js.map +1 -1
- package/dist/middlewares/rate-limit/rate-limit.middleware.js +36 -4
- package/dist/middlewares/rate-limit/rate-limit.middleware.js.map +1 -1
- package/dist/types/interface/rate-limit.d.ts +12 -3
- package/dist/types/interface/rate-limit.js +2 -1
- package/dist/types/interface/rate-limit.js.map +1 -1
- package/dist/utils/header-pattern.d.ts +2 -1
- package/dist/utils/header-pattern.js +4 -2
- package/dist/utils/header-pattern.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-endpoint.middleware.js","sourceRoot":"","sources":["../../src/middlewares/logger-endpoint.middleware.ts"],"names":[],"mappings":";;;AACA,mCAA8B;AAE9B,6DAAyD;AACzD,oCAAgF;AAChF,wDAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"logger-endpoint.middleware.js","sourceRoot":"","sources":["../../src/middlewares/logger-endpoint.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hashCredential = hashCredential;
|
|
3
4
|
exports.resolveIdentifiers = resolveIdentifiers;
|
|
4
5
|
const node_require_1 = require("../../utils/node-require");
|
|
5
|
-
function
|
|
6
|
+
function hashCredential(value) {
|
|
6
7
|
const { createHash } = (0, node_require_1.nodeRequire)('crypto');
|
|
7
8
|
return createHash('sha256').update(value).digest('hex').slice(0, 16);
|
|
8
9
|
}
|
|
@@ -12,7 +13,7 @@ function resolveIdentifiers(req, res) {
|
|
|
12
13
|
return { kind: 'admin' };
|
|
13
14
|
const apiKey = req.header?.('abyss-api-key');
|
|
14
15
|
if (apiKey)
|
|
15
|
-
return { kind: 'apikey', apiKeyId:
|
|
16
|
+
return { kind: 'apikey', apiKeyId: hashCredential(apiKey) };
|
|
16
17
|
if (locals.currentUser?.id) {
|
|
17
18
|
if (locals.organization?.id) {
|
|
18
19
|
return { kind: 'userOrg', userId: locals.currentUser.id, orgId: locals.organization.id };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifier-resolver.js","sourceRoot":"","sources":["../../../src/middlewares/rate-limit/identifier-resolver.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"identifier-resolver.js","sourceRoot":"","sources":["../../../src/middlewares/rate-limit/identifier-resolver.ts"],"names":[],"mappings":";;AAcA,wCAMC;AAED,gDAoBC;AAzCD,2DAAuD;AAavD,SAAgB,cAAc,CAAC,KAAa;IAI1C,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,0BAAW,EAA0B,QAAQ,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,kBAAkB,CAAC,GAAY,EAAE,GAAa;IAC5D,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAI/B,CAAC;IAEF,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAExE,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QAC3F,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const RATE_LIMIT_LUA = "\nlocal function load_bucket(key, capacity, refill, now)\n local data = redis.call('HMGET', key, 'tokens', 'ts')\n local tokens = tonumber(data[1])\n local ts = tonumber(data[2])\n if tokens == nil then tokens = capacity end\n if ts == nil then ts = now end\n local elapsed = (now - ts) / 1000.0\n if elapsed < 0 then elapsed = 0 end\n tokens = math.min(capacity, tokens + elapsed * refill)\n return tokens\nend\n\nlocal function save_bucket(key, tokens, capacity, refill, now)\n redis.call('HSET', key, 'tokens', tokens, 'ts', now)\n local ttl = math.ceil(capacity / refill) * 2\n redis.call('EXPIRE', key, ttl)\nend\n\nlocal function reset_sec(tokens, capacity, refill, cost)\n if tokens >= cost then return 0 end\n return math.ceil((cost - tokens) / refill)\nend\n\nlocal primary_cap = tonumber(ARGV[1])\nlocal primary_rate = tonumber(ARGV[2])\nlocal secondary_cap = tonumber(ARGV[3])\nlocal secondary_rate = tonumber(ARGV[4])\nlocal now = tonumber(ARGV[5])\nlocal cost = tonumber(ARGV[6])\n\nlocal primary_tokens = load_bucket(KEYS[1], primary_cap, primary_rate, now)\nlocal secondary_tokens = 0\nlocal has_secondary = KEYS[2] ~= nil and KEYS[2] ~= ''\nif has_secondary then\n secondary_tokens = load_bucket(KEYS[2], secondary_cap, secondary_rate, now)\nend\n\nlocal allowed = 1\nif primary_tokens < cost then allowed = 0 end\nif has_secondary and secondary_tokens < cost then allowed = 0 end\n\nif allowed == 1 then\n primary_tokens = primary_tokens - cost\n save_bucket(KEYS[1], primary_tokens, primary_cap, primary_rate, now)\n if has_secondary then\n secondary_tokens = secondary_tokens - cost\n save_bucket(KEYS[2], secondary_tokens, secondary_cap, secondary_rate, now)\n end\
|
|
1
|
+
export declare const RATE_LIMIT_LUA = "\nlocal function load_bucket(key, capacity, refill, now)\n local data = redis.call('HMGET', key, 'tokens', 'ts')\n local tokens = tonumber(data[1])\n local ts = tonumber(data[2])\n if tokens == nil then tokens = capacity end\n if ts == nil then ts = now end\n local elapsed = (now - ts) / 1000.0\n if elapsed < 0 then elapsed = 0 end\n tokens = math.min(capacity, tokens + elapsed * refill)\n return tokens\nend\n\nlocal function save_bucket(key, tokens, capacity, refill, now)\n redis.call('HSET', key, 'tokens', tokens, 'ts', now)\n local ttl = math.ceil(capacity / refill) * 2\n redis.call('EXPIRE', key, ttl)\nend\n\nlocal function reset_sec(tokens, capacity, refill, cost)\n if tokens >= cost then return 0 end\n return math.ceil((cost - tokens) / refill)\nend\n\nlocal primary_cap = tonumber(ARGV[1])\nlocal primary_rate = tonumber(ARGV[2])\nlocal secondary_cap = tonumber(ARGV[3])\nlocal secondary_rate = tonumber(ARGV[4])\nlocal now = tonumber(ARGV[5])\nlocal cost = tonumber(ARGV[6])\n\nlocal primary_tokens = load_bucket(KEYS[1], primary_cap, primary_rate, now)\nlocal secondary_tokens = 0\nlocal has_secondary = KEYS[2] ~= nil and KEYS[2] ~= ''\nif has_secondary then\n secondary_tokens = load_bucket(KEYS[2], secondary_cap, secondary_rate, now)\nend\n\nlocal allowed = 1\nif primary_tokens < cost then allowed = 0 end\nif has_secondary and secondary_tokens < cost then allowed = 0 end\n\nif allowed == 1 then\n primary_tokens = primary_tokens - cost\n save_bucket(KEYS[1], primary_tokens, primary_cap, primary_rate, now)\n if has_secondary then\n secondary_tokens = secondary_tokens - cost\n save_bucket(KEYS[2], secondary_tokens, secondary_cap, secondary_rate, now)\n end\nend\n-- A refusal writes nothing: load_bucket recomputes the refill from the stored ts, so persisting\n-- the unchanged state would add nothing, and an absent key already reads as a full bucket. Above\n-- all, a refused call must not create a key: invented tokens stopped by a per-IP backstop would\n-- otherwise each leave a token bucket behind (ADR-0176).\n\nlocal primary_reset = reset_sec(primary_tokens, primary_cap, primary_rate, cost)\nlocal secondary_reset = 0\nif has_secondary then\n secondary_reset = reset_sec(secondary_tokens, secondary_cap, secondary_rate, cost)\nend\n\nreturn {\n allowed,\n math.floor(primary_tokens),\n primary_cap,\n primary_reset,\n math.floor(secondary_tokens),\n secondary_cap,\n secondary_reset,\n}\n";
|
|
@@ -50,13 +50,11 @@ if allowed == 1 then
|
|
|
50
50
|
secondary_tokens = secondary_tokens - cost
|
|
51
51
|
save_bucket(KEYS[2], secondary_tokens, secondary_cap, secondary_rate, now)
|
|
52
52
|
end
|
|
53
|
-
else
|
|
54
|
-
-- Refresh ts so refill math stays correct on next call without consuming tokens.
|
|
55
|
-
save_bucket(KEYS[1], primary_tokens, primary_cap, primary_rate, now)
|
|
56
|
-
if has_secondary then
|
|
57
|
-
save_bucket(KEYS[2], secondary_tokens, secondary_cap, secondary_rate, now)
|
|
58
|
-
end
|
|
59
53
|
end
|
|
54
|
+
-- A refusal writes nothing: load_bucket recomputes the refill from the stored ts, so persisting
|
|
55
|
+
-- the unchanged state would add nothing, and an absent key already reads as a full bucket. Above
|
|
56
|
+
-- all, a refused call must not create a key: invented tokens stopped by a per-IP backstop would
|
|
57
|
+
-- otherwise each leave a token bucket behind (ADR-0176).
|
|
60
58
|
|
|
61
59
|
local primary_reset = reset_sec(primary_tokens, primary_cap, primary_rate, cost)
|
|
62
60
|
local secondary_reset = 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.lua.js","sourceRoot":"","sources":["../../../src/middlewares/rate-limit/rate-limit.lua.ts"],"names":[],"mappings":";;;AAca,QAAA,cAAc,GAAG
|
|
1
|
+
{"version":3,"file":"rate-limit.lua.js","sourceRoot":"","sources":["../../../src/middlewares/rate-limit/rate-limit.lua.ts"],"names":[],"mappings":";;;AAca,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsE7B,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createRouteRateLimiter = createRouteRateLimiter;
|
|
4
4
|
const identifier_resolver_1 = require("./identifier-resolver");
|
|
5
5
|
const parse_window_1 = require("./parse-window");
|
|
6
|
+
const rate_limit_1 = require("../../types/interface/rate-limit");
|
|
6
7
|
function buildKey(prefix, scope, id) {
|
|
7
8
|
return `rl:${prefix}:${scope}:${id}`;
|
|
8
9
|
}
|
|
@@ -69,6 +70,27 @@ function buildBuckets(identifier, config, override) {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
}
|
|
73
|
+
function queryToken(req) {
|
|
74
|
+
const value = req.query?.[rate_limit_1.RATE_LIMIT_TOKEN_QUERY_PARAM];
|
|
75
|
+
return typeof value === 'string' && value !== '' ? value : undefined;
|
|
76
|
+
}
|
|
77
|
+
function buildTokenBuckets(token, ip, config, override) {
|
|
78
|
+
const tokenEff = applyOverride(config.apikey, override);
|
|
79
|
+
return {
|
|
80
|
+
primary: {
|
|
81
|
+
scope: 'token',
|
|
82
|
+
key: buildKey(config.redisPrefix, 'token', (0, identifier_resolver_1.hashCredential)(token)),
|
|
83
|
+
max: tokenEff.max,
|
|
84
|
+
windowSec: tokenEff.windowSec,
|
|
85
|
+
},
|
|
86
|
+
secondary: {
|
|
87
|
+
scope: 'ip',
|
|
88
|
+
key: `rl:${config.redisPrefix}:token-ip:${ip}`,
|
|
89
|
+
max: override.ipBackstop.max,
|
|
90
|
+
windowSec: (0, parse_window_1.parseWindow)(override.ipBackstop.window),
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
72
94
|
function setSuccessHeaders(res, bucket, remaining, resetSec) {
|
|
73
95
|
res.setHeader('RateLimit-Limit', bucket.max);
|
|
74
96
|
res.setHeader('RateLimit-Remaining', remaining);
|
|
@@ -89,11 +111,21 @@ function createRouteRateLimiter(routeOptions, ctx) {
|
|
|
89
111
|
}
|
|
90
112
|
const override = routeOptions;
|
|
91
113
|
const cost = override?.cost ?? 1;
|
|
92
|
-
let
|
|
93
|
-
if (override?.scope === '
|
|
94
|
-
|
|
114
|
+
let buckets;
|
|
115
|
+
if (override?.scope === 'token') {
|
|
116
|
+
const ip = req.ip ?? '0.0.0.0';
|
|
117
|
+
const token = queryToken(req);
|
|
118
|
+
buckets = token
|
|
119
|
+
? buildTokenBuckets(token, ip, config, override)
|
|
120
|
+
: buildBuckets({ kind: 'ip', ip }, config, undefined);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
let effectiveIdentifier = identifier;
|
|
124
|
+
if (override?.scope === 'ip') {
|
|
125
|
+
effectiveIdentifier = { kind: 'ip', ip: req.ip ?? '0.0.0.0' };
|
|
126
|
+
}
|
|
127
|
+
buckets = buildBuckets(effectiveIdentifier, config, override);
|
|
95
128
|
}
|
|
96
|
-
const buckets = buildBuckets(effectiveIdentifier, config, override);
|
|
97
129
|
if (!buckets.primary) {
|
|
98
130
|
next();
|
|
99
131
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.middleware.js","sourceRoot":"","sources":["../../../src/middlewares/rate-limit/rate-limit.middleware.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rate-limit.middleware.js","sourceRoot":"","sources":["../../../src/middlewares/rate-limit/rate-limit.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Logger } from '../../models';
|
|
2
2
|
import type { RateLimitWindow } from '../../middlewares/rate-limit/parse-window';
|
|
3
|
-
export type RateLimitScope = 'admin' | 'apikey' | 'user' | 'org' | 'ip';
|
|
3
|
+
export type RateLimitScope = 'admin' | 'apikey' | 'user' | 'org' | 'ip' | 'token';
|
|
4
4
|
export interface RateLimitBucketConfig {
|
|
5
5
|
max: number;
|
|
6
6
|
window: RateLimitWindow;
|
|
@@ -13,12 +13,20 @@ export interface RateLimitConfig {
|
|
|
13
13
|
apikey: RateLimitBucketConfig;
|
|
14
14
|
ip: RateLimitBucketConfig;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
scope?: Exclude<RateLimitScope, 'admin'>;
|
|
16
|
+
interface RateLimitOverride {
|
|
18
17
|
max?: number;
|
|
19
18
|
window?: RateLimitWindow;
|
|
20
19
|
cost?: number;
|
|
21
20
|
}
|
|
21
|
+
export interface RateLimitIdentityScopeOptions extends RateLimitOverride {
|
|
22
|
+
scope?: Exclude<RateLimitScope, 'admin' | 'token'>;
|
|
23
|
+
}
|
|
24
|
+
export interface RateLimitTokenScopeOptions extends RateLimitOverride {
|
|
25
|
+
scope: 'token';
|
|
26
|
+
ipBackstop: RateLimitBucketConfig;
|
|
27
|
+
}
|
|
28
|
+
export type RateLimitDecoratorOptions = RateLimitIdentityScopeOptions | RateLimitTokenScopeOptions;
|
|
29
|
+
export declare const RATE_LIMIT_TOKEN_QUERY_PARAM = "token";
|
|
22
30
|
export interface RateLimitMiddlewareOptions {
|
|
23
31
|
config: RateLimitConfig;
|
|
24
32
|
logger?: Logger;
|
|
@@ -41,3 +49,4 @@ export interface RateLimitConsumeResult {
|
|
|
41
49
|
resetSeconds: number;
|
|
42
50
|
}
|
|
43
51
|
export declare const DEFAULT_RATE_LIMITS: Omit<RateLimitConfig, 'enabled' | 'redisPrefix'>;
|
|
52
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_RATE_LIMITS = void 0;
|
|
3
|
+
exports.DEFAULT_RATE_LIMITS = exports.RATE_LIMIT_TOKEN_QUERY_PARAM = void 0;
|
|
4
|
+
exports.RATE_LIMIT_TOKEN_QUERY_PARAM = 'token';
|
|
4
5
|
exports.DEFAULT_RATE_LIMITS = {
|
|
5
6
|
user: { max: 120, window: '1m' },
|
|
6
7
|
org: { max: 1200, window: '1m' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/types/interface/rate-limit.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/types/interface/rate-limit.ts"],"names":[],"mappings":";;;AA4Ca,QAAA,4BAA4B,GAAG,OAAO,CAAC;AA0BvC,QAAA,mBAAmB,GAAqD;IACnF,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAChC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAChC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAClC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;CAC9B,CAAC"}
|
|
@@ -2,4 +2,5 @@ export declare const DEFAULT_HEADER_ALLOWLIST: readonly string[];
|
|
|
2
2
|
export declare const NEVER_CAPTURE_HEADERS: ReadonlySet<string>;
|
|
3
3
|
export declare function headerMatches(name: string, patterns: readonly string[]): boolean;
|
|
4
4
|
export declare function shouldCaptureHeader(name: string, allowlist: readonly string[]): boolean;
|
|
5
|
-
export
|
|
5
|
+
export type CapturableHeaderValue = string | number | readonly (string | number)[];
|
|
6
|
+
export declare function filterCapturedHeaders(source: Record<string, CapturableHeaderValue | undefined>, config: boolean | string[] | undefined): Record<string, string> | null;
|
|
@@ -39,6 +39,9 @@ function shouldCaptureHeader(name, allowlist) {
|
|
|
39
39
|
return false;
|
|
40
40
|
return headerMatches(lower, allowlist);
|
|
41
41
|
}
|
|
42
|
+
function headerValueToString(value) {
|
|
43
|
+
return Array.isArray(value) ? value.map(String).join(', ') : String(value);
|
|
44
|
+
}
|
|
42
45
|
function filterCapturedHeaders(source, config) {
|
|
43
46
|
if (config === false || config === undefined)
|
|
44
47
|
return null;
|
|
@@ -49,8 +52,7 @@ function filterCapturedHeaders(source, config) {
|
|
|
49
52
|
continue;
|
|
50
53
|
if (!shouldCaptureHeader(rawName, allowlist))
|
|
51
54
|
continue;
|
|
52
|
-
|
|
53
|
-
out[rawName.toLowerCase()] = value;
|
|
55
|
+
out[rawName.toLowerCase()] = headerValueToString(rawValue);
|
|
54
56
|
}
|
|
55
57
|
return out;
|
|
56
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-pattern.js","sourceRoot":"","sources":["../../src/utils/header-pattern.ts"],"names":[],"mappings":";;;AAuBA,sCAOC;AAED,kDAIC;
|
|
1
|
+
{"version":3,"file":"header-pattern.js","sourceRoot":"","sources":["../../src/utils/header-pattern.ts"],"names":[],"mappings":";;;AAuBA,sCAOC;AAED,kDAIC;AAaD,sDAgBC;AAjEY,QAAA,wBAAwB,GAAsB;IACzD,aAAa;IACb,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,SAAS;CACV,CAAC;AAEW,QAAA,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,eAAe;IACf,qBAAqB;IACrB,cAAc;IAEd,mBAAmB;CACpB,CAAC,CAAC;AAEH,SAAgB,aAAa,CAAC,IAAY,EAAE,QAA2B;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,KAAK,KAAK,GAAG,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,SAA4B;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,6BAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,OAAO,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AASD,SAAS,mBAAmB,CAAC,KAA4B;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,qBAAqB,CACnC,MAAyD,EACzD,MAAsC;IAEtC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE1D,MAAM,SAAS,GACb,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAwB,CAAC,CAAC,CAAC,CAAC,GAAG,gCAAwB,EAAE,GAAG,MAAM,CAAC,CAAC;IAExF,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;YAAE,SAAS;QACvD,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|