beatsaber-bot-core 0.2.0-dev.5 → 0.2.0-dev.7

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,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.blRequest = void 0;
4
- const get = (...args) => fetch(args).then((res) => res.json());
4
+ const utils_1 = require("../../utils");
5
5
  const blRequest = (cfg) => {
6
6
  let host = 'https://api.beatleader.xyz';
7
7
  if (host.endsWith('/')) {
@@ -14,11 +14,11 @@ const blRequest = (cfg) => {
14
14
  return host + path;
15
15
  };
16
16
  const getPlayerScore = async (req) => {
17
- const res = await get(url(`/score/${req.leaderboardContext}/${req.playerID}/${req.hash}/${req.diff}/${req.mode}`));
17
+ const res = await (0, utils_1.fetchWithCache)(url(`/score/${req.leaderboardContext}/${req.playerID}/${req.hash}/${req.diff}/${req.mode}`));
18
18
  return res;
19
19
  };
20
20
  const getTokenInfo = async (accessToken) => {
21
- return get(url(`/oauth2/identity`), {
21
+ return (0, utils_1.fetchWithCache)(url(`/oauth2/identity`), {
22
22
  headers: {
23
23
  Authorization: `Bearer ${accessToken}`,
24
24
  },
@@ -43,16 +43,16 @@ const blRequest = (cfg) => {
43
43
  return res;
44
44
  };
45
45
  const getPlayerInfo = async (accountId) => {
46
- return get(url(`/player/${accountId}`));
46
+ return (0, utils_1.fetchWithCache)(url(`/player/${accountId}`));
47
47
  };
48
48
  const getPlayerScores = async (accountId) => {
49
- return get(url(`/player/${accountId}/scores?count=24&sortBy=pp`));
49
+ return (0, utils_1.fetchWithCache)(url(`/player/${accountId}/scores?count=24&sortBy=pp`));
50
50
  };
51
51
  const getPlayerPinnedScores = async (accountId) => {
52
- return get(url(`/player/${accountId}/pinnedScores`));
52
+ return (0, utils_1.fetchWithCache)(url(`/player/${accountId}/pinnedScores`));
53
53
  };
54
54
  const getBeatScore = async (scoreId) => {
55
- return get(url(`/score/${scoreId}`));
55
+ return (0, utils_1.fetchWithCache)(url(`/score/${scoreId}`));
56
56
  };
57
57
  return {
58
58
  getPlayerScore,
@@ -1 +1 @@
1
- {"version":3,"file":"blRequset.js","sourceRoot":"","sources":["../../../src/api/base/blRequset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blRequset.js","sourceRoot":"","sources":["../../../src/api/base/blRequset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { LRUCache } from 'lru-cache';
2
+ export declare const cache: LRUCache<{}, {}, unknown>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cache = void 0;
4
+ const lru_cache_1 = require("lru-cache");
5
+ const options = {
6
+ max: 500,
7
+ // for use with tracking overall storage size
8
+ maxSize: 5000,
9
+ // sizeCalculation: (value, key) => {
10
+ // return 1
11
+ // },
12
+ // for use when you need to clean up something when objects
13
+ // are evicted from the cache
14
+ // dispose: (value, key) => {},
15
+ // how long to live in ms
16
+ ttl: 1000 * 60 * 5,
17
+ // return stale items before removing from cache?
18
+ allowStale: false,
19
+ updateAgeOnGet: true,
20
+ updateAgeOnHas: true,
21
+ // // async method to use for cache.fetch(), for
22
+ // // stale-while-revalidate type of behavior
23
+ // fetchMethod: async (
24
+ // key,
25
+ // staleValue,
26
+ // { options, signal, context }
27
+ // ) => {},
28
+ };
29
+ exports.cache = new lru_cache_1.LRUCache(options);
30
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AAEpC,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,GAAG;IAER,6CAA6C;IAC7C,OAAO,EAAE,IAAI;IACb,qCAAqC;IACrC,aAAa;IACb,KAAK;IAEL,2DAA2D;IAC3D,6BAA6B;IAC7B,+BAA+B;IAE/B,yBAAyB;IACzB,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;IAElB,iDAAiD;IAEjD,UAAU,EAAE,KAAK;IAEjB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IAEpB,gDAAgD;IAChD,6CAA6C;IAC7C,uBAAuB;IACvB,SAAS;IACT,gBAAgB;IAChB,iCAAiC;IACjC,WAAW;CACZ,CAAA;AAEY,QAAA,KAAK,GAAG,IAAI,oBAAQ,CAAC,OAAO,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './cache';
2
+ export declare const fetchWithCache: <T>(...args: any[]) => Promise<T>;
3
+ export declare const handleWSEventWithCache: (fnThat: any, fn: any, ttl: any, eventIdSelector: any, eventParser: any) => (event: any) => Promise<void>;
4
+ export declare const sleep: (millsec?: number) => Promise<void>;
5
+ export declare const convertDiff: (diff: string | null) => any;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.convertDiff = exports.sleep = exports.handleWSEventWithCache = exports.fetchWithCache = void 0;
18
+ const cache_1 = require("../utils/cache");
19
+ const lru_cache_1 = require("lru-cache");
20
+ __exportStar(require("./cache"), exports);
21
+ const fetchWithCache = async (...args) => {
22
+ const res = cache_1.cache.get(args);
23
+ if (res) {
24
+ return res;
25
+ }
26
+ const result = await fetch(args).then((res) => res.json());
27
+ cache_1.cache.set(args, result);
28
+ return result;
29
+ };
30
+ exports.fetchWithCache = fetchWithCache;
31
+ // export const fetch = async (...args) => {}
32
+ const handleWSEventWithCache = (fnThat, fn, ttl, eventIdSelector, eventParser) => {
33
+ const WSCache = new lru_cache_1.LRUCache({
34
+ max: 500,
35
+ size: 50,
36
+ sizeCalculation: (value, key) => {
37
+ return 1;
38
+ },
39
+ // for use with tracking overall storage size
40
+ maxSize: 5000,
41
+ allowStale: false,
42
+ updateAgeOnGet: false,
43
+ noUpdateTTL: true,
44
+ ttl: ttl,
45
+ });
46
+ return async function (event) {
47
+ const data = eventParser(event);
48
+ const key = eventIdSelector(data);
49
+ if (WSCache.get(key)) {
50
+ // console.log(`${key} hit cache, skip it, remainingTTL: `, WSCache.getRemainingTTL(key))
51
+ return;
52
+ }
53
+ WSCache.set(key, true);
54
+ await fn.apply(fnThat, [data]);
55
+ };
56
+ };
57
+ exports.handleWSEventWithCache = handleWSEventWithCache;
58
+ const sleep = async (millsec = 5000) => {
59
+ await new Promise((resolve, reject) => {
60
+ setTimeout(resolve, millsec);
61
+ });
62
+ };
63
+ exports.sleep = sleep;
64
+ const diffMap = {
65
+ E: 'Easy',
66
+ N: 'Normal',
67
+ H: 'Hard',
68
+ EX: 'Expert',
69
+ EP: 'ExpertPlus',
70
+ 'EX+': 'ExpertPlus',
71
+ };
72
+ const convertDiff = (diff) => {
73
+ if (!diff) {
74
+ return diff;
75
+ }
76
+ return diffMap[diff.toUpperCase()];
77
+ };
78
+ exports.convertDiff = convertDiff;
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAAqC;AACrC,yCAAoC;AAEpC,0CAAuB;AAEhB,MAAM,cAAc,GAAG,KAAK,EAAK,GAAG,IAAI,EAAc,EAAE;IAC7D,MAAM,GAAG,GAAG,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAQ,CAAA;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAO,CAAC,CAAA;IACtE,aAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvB,OAAO,MAAW,CAAA;AACpB,CAAC,CAAA;AARY,QAAA,cAAc,kBAQ1B;AAED,6CAA6C;AAEtC,MAAM,sBAAsB,GAAG,CACpC,MAAM,EACN,EAAE,EACF,GAAG,EACH,eAAe,EACf,WAAW,EACX,EAAE;IACF,MAAM,OAAO,GAAG,IAAI,oBAAQ,CAAC;QAC3B,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,EAAE;QACR,eAAe,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,CAAA;QACV,CAAC;QACD,6CAA6C;QAC7C,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,WAAW,EAAE,IAAI;QACjB,GAAG,EAAE,GAAG;KACT,CAAC,CAAA;IAEF,OAAO,KAAK,WAAW,KAAU;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,yFAAyF;YACzF,OAAM;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACtB,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAChC,CAAC,CAAA;AACH,CAAC,CAAA;AA/BY,QAAA,sBAAsB,0BA+BlC;AAEM,MAAM,KAAK,GAAG,KAAK,EAAE,UAAkB,IAAI,EAAE,EAAE;IACpD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAJY,QAAA,KAAK,SAIjB;AAED,MAAM,OAAO,GAAG;IACd,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;CACpB,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,WAAW,eAKvB"}
@@ -3,6 +3,7 @@ import { Logger } from '../interface/logger';
3
3
  import { RenderService } from '../img-render';
4
4
  import { Config } from '../config';
5
5
  import { DB } from '../interface/db';
6
+ import { BeatSaverWSEvent } from '../api/interfaces/beatsaver';
6
7
  import { BotService, Session } from '../interface';
7
8
  export declare class BeatSaverWSHandler<T> implements WSHandler {
8
9
  private readonly logger;
@@ -14,5 +15,6 @@ export declare class BeatSaverWSHandler<T> implements WSHandler {
14
15
  constructor(db: DB<T>, render: RenderService, logger: Logger, config: Config, botService: BotService<T, Session<T>>);
15
16
  onOpen(): void;
16
17
  onClose(): void;
17
- onEvent(event: any): Promise<void>;
18
+ BSWSHandler(data: BeatSaverWSEvent): Promise<void>;
19
+ onEvent: (event: any) => Promise<void>;
18
20
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BeatSaverWSHandler = void 0;
4
+ const utils_1 = require("../utils");
4
5
  class BeatSaverWSHandler {
5
6
  logger;
6
7
  render;
@@ -21,8 +22,7 @@ class BeatSaverWSHandler {
21
22
  onClose() {
22
23
  this.logger.info('BeatsaverWS closed');
23
24
  }
24
- async onEvent(event) {
25
- const data = JSON.parse(event.toString());
25
+ async BSWSHandler(data) {
26
26
  // this.logger.info('Beatsaver message received', data.type, data?.msg?.id)
27
27
  if (data.type === 'MAP_UPDATE') {
28
28
  const bsmap = data.msg;
@@ -33,10 +33,7 @@ class BeatSaverWSHandler {
33
33
  return;
34
34
  }
35
35
  const userId = bsmap.uploader.id;
36
- const subscriptions = await this.db.getAllSubScriptionByUIDAndPlatform.apply(this.db, [
37
- userId,
38
- 'beatsaver',
39
- ]);
36
+ const subscriptions = await this.db.getAllSubScriptionByUIDAndPlatform(userId, 'beatsaver');
40
37
  const restSub = subscriptions.filter((it) => it.subscribe.type == 'beatsaver-map' && it.subscribe.enable == true);
41
38
  // cacheService
42
39
  if (restSub.length === 0)
@@ -54,6 +51,7 @@ class BeatSaverWSHandler {
54
51
  }
55
52
  }
56
53
  }
54
+ onEvent = (0, utils_1.handleWSEventWithCache)(this, this.BSWSHandler, 1000 * 60 * 15, (data) => `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`, (event) => JSON.parse(event.toString()));
57
55
  }
58
56
  exports.BeatSaverWSHandler = BeatSaverWSHandler;
59
57
  //# sourceMappingURL=beatsaver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"beatsaver.js","sourceRoot":"","sources":["../../src/ws/beatsaver.ts"],"names":[],"mappings":";;;AAQA,MAAa,kBAAkB;IACZ,MAAM,CAAQ;IACvB,MAAM,CAAe;IACrB,UAAU,CAA2B;IAC7C,KAAK,GAAW,6BAA6B,CAAA;IACrC,EAAE,CAAO;IACjB,MAAM,CAAQ;IACd,YACE,EAAS,EACT,MAAqB,EACrB,MAAc,EACd,MAAc,EACd,UAAqC;QAErC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAU;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAqB,CAAA;QAC7D,2EAA2E;QAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC;gBAC1D,OAAM;YACR,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;YAChC,MAAM,aAAa,GACjB,MAAM,IAAI,CAAC,EAAE,CAAC,kCAAkC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC9D,MAAM;gBACN,WAAW;aACZ,CAAC,CAAA;YACJ,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,eAAe,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CACtE,CAAA;YACD,eAAe;YACf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CACrD,IAAI,CAAC,YAAY,CAClB,CAAA;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,SAAQ;gBACV,CAAC;gBACD,MAAM,OAAO,CAAC,IAAI,CAChB,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ,KAAK,CAAC,QAAQ,CAAC,IAAI,eAAe,KAAK,CAAC,IAAI,GAAG,CACzF,CAAA;gBACD,yBAAyB;gBACzB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;gBAC/B,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AArED,gDAqEC"}
1
+ {"version":3,"file":"beatsaver.js","sourceRoot":"","sources":["../../src/ws/beatsaver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beatsaber-bot-core",
3
3
  "description": "一个用于新版 Steam 家庭的库存监控 Bot 插件",
4
- "version": "0.2.0-dev.5",
4
+ "version": "0.2.0-dev.7",
5
5
  "types": "lib/index.d.ts",
6
6
  "files": [
7
7
  "lib"
@@ -56,6 +56,7 @@
56
56
  "chart.js": "^4.4.3",
57
57
  "country-flag-icons": "^1.5.11",
58
58
  "dayjs": "^1.11.3",
59
+ "lru-cache": "^11.0.1",
59
60
  "lucide-react": "^0.379.0",
60
61
  "react": "^18.3.1",
61
62
  "react-dom": "^18.3.1"
package/lib/utils.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare const sleep: (millsec?: number) => Promise<void>;
2
- export declare const convertDiff: (diff: string | null) => any;
package/lib/utils.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertDiff = exports.sleep = void 0;
4
- const sleep = async (millsec = 5000) => {
5
- await new Promise((resolve, reject) => {
6
- setTimeout(resolve, millsec);
7
- });
8
- };
9
- exports.sleep = sleep;
10
- const diffMap = {
11
- E: 'Easy',
12
- N: 'Normal',
13
- H: 'Hard',
14
- EX: 'Expert',
15
- EP: 'ExpertPlus',
16
- 'EX+': 'ExpertPlus',
17
- };
18
- const convertDiff = (diff) => {
19
- if (!diff) {
20
- return diff;
21
- }
22
- return diffMap[diff.toUpperCase()];
23
- };
24
- exports.convertDiff = convertDiff;
25
- //# sourceMappingURL=utils.js.map
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,KAAK,EAAE,UAAkB,IAAI,EAAE,EAAE;IACpD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAJY,QAAA,KAAK,SAIjB;AAED,MAAM,OAAO,GAAG;IACd,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;CACpB,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,WAAW,eAKvB"}