@bobfrankston/winpos 2.0.48 → 2.0.50
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/index.js +15 -8
- package/package.json +5 -4
- package/screens.js +4 -2
- package/ffi-wrapper.d.ts.map +0 -1
- package/ffi-wrapper.js.map +0 -1
- package/ffi-wrapper.ts +0 -216
- package/index.d.ts.map +0 -1
- package/index.js.map +0 -1
- package/index.ts +0 -751
- package/screens.d.ts.map +0 -1
- package/screens.js.map +0 -1
- package/screens.ts +0 -101
- package/tabs.d.ts.map +0 -1
- package/tabs.js.map +0 -1
- package/tabs.ts +0 -133
- package/tsconfig.json +0 -29
- package/windows.d.ts.map +0 -1
- package/windows.js.map +0 -1
- package/windows.ts +0 -200
package/index.js
CHANGED
|
@@ -9,13 +9,14 @@ import { enumerateWindows, findWindowsByPattern, loadIgnorePatterns, WindowState
|
|
|
9
9
|
import { enumerateTabs, mightHaveTabs, TAB_ENUMERATION_NOTE } from './tabs.js';
|
|
10
10
|
import { join, resolve, isAbsolute } from 'path';
|
|
11
11
|
import { readFileSync, writeFileSync, existsSync } from 'fs';
|
|
12
|
+
import { parse as parseJsonc, printParseErrorCode } from 'jsonc-parser';
|
|
12
13
|
import * as packageJson from './package.json' with { type: 'json' };
|
|
13
14
|
// Re-export public API for library usage
|
|
14
15
|
export { WindowState, enumerateScreens, sortScreens, enumerateWindows, findWindowsByPattern, getWindowState, setWindowState, isMinimized, isMaximized, isNormal, minimizeWindow, maximizeWindow, restoreWindow, enumerateTabs, mightHaveTabs, TAB_ENUMERATION_NOTE, user32 };
|
|
15
16
|
// WindowConfig and ConfigFile types are exported from interface definitions above
|
|
16
17
|
// Note: screenPosToPos is exported separately below (after the function definition)
|
|
17
18
|
/**
|
|
18
|
-
* Load window config from JSON file
|
|
19
|
+
* Load window config from JSON or JSONC file (comments + trailing commas allowed)
|
|
19
20
|
*/
|
|
20
21
|
function loadConfigFile(filePath) {
|
|
21
22
|
const cwd = process.cwd();
|
|
@@ -27,7 +28,13 @@ function loadConfigFile(filePath) {
|
|
|
27
28
|
throw new Error(`Config file not found: ${absPath}`);
|
|
28
29
|
}
|
|
29
30
|
const content = readFileSync(absPath, 'utf-8');
|
|
30
|
-
|
|
31
|
+
const errors = [];
|
|
32
|
+
const parsed = parseJsonc(content, errors, { allowTrailingComma: true });
|
|
33
|
+
if (errors.length > 0) {
|
|
34
|
+
const msg = errors.map(e => `${printParseErrorCode(e.error)} at offset ${e.offset}`).join('; ');
|
|
35
|
+
throw new Error(`Parse error in ${absPath}: ${msg}`);
|
|
36
|
+
}
|
|
37
|
+
return parsed;
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
40
|
* Save window config to JSON file
|
|
@@ -109,8 +116,8 @@ function parseArgs(args) {
|
|
|
109
116
|
let i = 0;
|
|
110
117
|
while (i < args.length) {
|
|
111
118
|
const arg = args[i];
|
|
112
|
-
// Check for .json file as first non-flag arg (auto-load)
|
|
113
|
-
if (!arg.startsWith('-') &&
|
|
119
|
+
// Check for .json/.jsonc file as first non-flag arg (auto-load)
|
|
120
|
+
if (!arg.startsWith('-') && /\.jsonc?$/i.test(arg) && !opts.loadFile) {
|
|
114
121
|
opts.loadFile = arg;
|
|
115
122
|
i++;
|
|
116
123
|
continue;
|
|
@@ -448,8 +455,8 @@ function usage(msg = '') {
|
|
|
448
455
|
console.log(' winpos [options] <title> -pos x,y[,screen] [-size w,h]');
|
|
449
456
|
console.log(' winpos [options] -title <name> -pos x,y[,screen] [-size w,h]');
|
|
450
457
|
console.log(' winpos <title> min | -min');
|
|
451
|
-
console.log(' winpos <config.json>');
|
|
452
|
-
console.log(' winpos -load <config.json> [-save <output.json>]');
|
|
458
|
+
console.log(' winpos <config.json|config.jsonc>');
|
|
459
|
+
console.log(' winpos -load <config.json|config.jsonc> [-save <output.json>]');
|
|
453
460
|
console.log();
|
|
454
461
|
console.log('Options:');
|
|
455
462
|
console.log(' -d Debug mode');
|
|
@@ -461,8 +468,8 @@ function usage(msg = '') {
|
|
|
461
468
|
console.log(' -size w,h Window size (width,height)');
|
|
462
469
|
console.log(' -min Minimize window');
|
|
463
470
|
console.log(' -max Maximize window');
|
|
464
|
-
console.log(' -load file Load config from JSON file');
|
|
465
|
-
console.log(' -save file Save config to JSON file (merges if file exists)');
|
|
471
|
+
console.log(' -load file Load config from JSON/JSONC file (comments + trailing commas OK)');
|
|
472
|
+
console.log(' -save file Save config to JSON file (merges if file exists; comments not preserved)');
|
|
466
473
|
console.log();
|
|
467
474
|
console.log('Position/size values can be pixels or percentages (e.g. 50%)');
|
|
468
475
|
console.log('Title can be regex (/pattern/) or prefix (title*)');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/winpos",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.50",
|
|
4
4
|
"description": "TypeScript implementation of winpos - Windows window positioning utility",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"watch": "tsc -w",
|
|
14
14
|
"prerelease:local": "git add -A && (git diff-index --quiet HEAD || git commit -m \"Pre-release commit\")",
|
|
15
15
|
"preversion": "npm run build && git add -A",
|
|
16
|
-
"postversion": "git push && git push --tags",
|
|
17
16
|
"release": "npm run prerelease:local && npm version patch && npm publish --quiet",
|
|
18
|
-
"installer": "npm run release && npm install -g @bobfrankston/winpos"
|
|
17
|
+
"installer": "npm run release && npm install -g @bobfrankston/winpos",
|
|
18
|
+
"postversion": "git push && git push --tags"
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"windows",
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@types/node": "^
|
|
32
|
+
"@types/node": "^25.3.0"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"jsonc-parser": "^3.3.1",
|
|
35
36
|
"koffi": "^2.9.2"
|
|
36
37
|
},
|
|
37
38
|
"engines": {
|
package/screens.js
CHANGED
|
@@ -72,10 +72,12 @@ export function enumerateScreens() {
|
|
|
72
72
|
}
|
|
73
73
|
return screens;
|
|
74
74
|
}
|
|
75
|
+
// Tops within this many pixels are treated as the same row (DPI/rounding noise).
|
|
76
|
+
const ROW_TOLERANCE = 100;
|
|
75
77
|
export function sortScreens(screens) {
|
|
76
|
-
// Sort by top (descending), then by left (ascending)
|
|
78
|
+
// Sort by top (descending), then by left (ascending), with tolerance for rounding
|
|
77
79
|
return screens.sort((a, b) => {
|
|
78
|
-
if (a.bounds.Top
|
|
80
|
+
if (Math.abs(a.bounds.Top - b.bounds.Top) <= ROW_TOLERANCE)
|
|
79
81
|
return a.bounds.Left - b.bounds.Left;
|
|
80
82
|
return b.bounds.Top - a.bounds.Top;
|
|
81
83
|
});
|
package/ffi-wrapper.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ffi-wrapper.d.ts","sourceRoot":"","sources":["ffi-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,KAAK,SAA6B,CAAC;AAGzC,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAGD,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9F,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACtE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACpD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7G,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9D,mBAAmB,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAChJ,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;CAC7D;AAmKD,QAAA,MAAM,MAAM,YAAwB,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC"}
|
package/ffi-wrapper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ffi-wrapper.js","sourceRoot":"","sources":["ffi-wrapper.ts"],"names":[],"mappings":"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"}
|
package/ffi-wrapper.ts
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FFI Wrapper - Runtime-agnostic FFI for Node.js and Bun
|
|
3
|
-
* Provides a unified interface for calling Windows API functions
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// @ts-ignore - Bun global may not exist
|
|
7
|
-
const isBun = typeof Bun !== 'undefined';
|
|
8
|
-
|
|
9
|
-
// Windows API Types
|
|
10
|
-
export interface RECT {
|
|
11
|
-
Left: number;
|
|
12
|
-
Top: number;
|
|
13
|
-
Right: number;
|
|
14
|
-
Bottom: number;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Window state constants
|
|
18
|
-
export const SW_HIDE = 0;
|
|
19
|
-
export const SW_SHOWNORMAL = 1;
|
|
20
|
-
export const SW_SHOWMINIMIZED = 2;
|
|
21
|
-
export const SW_SHOWMAXIMIZED = 3;
|
|
22
|
-
export const SW_MAXIMIZE = 3;
|
|
23
|
-
export const SW_SHOWNOACTIVATE = 4;
|
|
24
|
-
export const SW_SHOW = 5;
|
|
25
|
-
export const SW_MINIMIZE = 6;
|
|
26
|
-
export const SW_SHOWMINNOACTIVE = 7;
|
|
27
|
-
export const SW_SHOWNA = 8;
|
|
28
|
-
export const SW_RESTORE = 9;
|
|
29
|
-
|
|
30
|
-
export interface MONITORINFO {
|
|
31
|
-
cbSize: number;
|
|
32
|
-
rcMonitor: RECT;
|
|
33
|
-
rcWork: RECT;
|
|
34
|
-
dwFlags: number;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export const MONITORINFOF_PRIMARY = 1;
|
|
38
|
-
|
|
39
|
-
export interface WindowsAPI {
|
|
40
|
-
EnumWindows: (callback: (hwnd: bigint, lParam: bigint) => boolean, lParam: bigint) => boolean;
|
|
41
|
-
GetWindowTextW: (hwnd: bigint, text: any, maxCount: number) => number;
|
|
42
|
-
GetWindowRect: (hwnd: bigint, rect: any) => boolean;
|
|
43
|
-
MoveWindow: (hwnd: bigint, x: number, y: number, width: number, height: number, repaint: boolean) => boolean;
|
|
44
|
-
SetForegroundWindow: (hwnd: bigint) => boolean;
|
|
45
|
-
ShowWindow: (hwnd: bigint, nCmdShow: number) => boolean;
|
|
46
|
-
IsZoomed: (hwnd: bigint) => boolean;
|
|
47
|
-
IsIconic: (hwnd: bigint) => boolean;
|
|
48
|
-
GetWindowPlacement: (hwnd: bigint, placement: any) => boolean;
|
|
49
|
-
EnumDisplayMonitors: (callback: (hMonitor: bigint, hdcMonitor: bigint, lprcMonitor: any, dwData: bigint) => boolean, dwData: bigint) => boolean;
|
|
50
|
-
GetMonitorInfoW: (hMonitor: bigint, lpmi: any) => boolean;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async function initializeFFI(): Promise<WindowsAPI> {
|
|
54
|
-
if (isBun) {
|
|
55
|
-
// @ts-ignore - bun:ffi is only available in Bun
|
|
56
|
-
const { dlopen, FFIType } = await import('bun:ffi');
|
|
57
|
-
|
|
58
|
-
const { symbols } = dlopen('user32.dll', {
|
|
59
|
-
EnumWindows: {
|
|
60
|
-
args: [FFIType.ptr, FFIType.u64],
|
|
61
|
-
returns: FFIType.bool,
|
|
62
|
-
},
|
|
63
|
-
GetWindowTextW: {
|
|
64
|
-
args: [FFIType.ptr, FFIType.ptr, FFIType.i32],
|
|
65
|
-
returns: FFIType.i32,
|
|
66
|
-
},
|
|
67
|
-
GetWindowRect: {
|
|
68
|
-
args: [FFIType.ptr, FFIType.ptr],
|
|
69
|
-
returns: FFIType.bool,
|
|
70
|
-
},
|
|
71
|
-
MoveWindow: {
|
|
72
|
-
args: [FFIType.ptr, FFIType.i32, FFIType.i32, FFIType.i32, FFIType.i32, FFIType.bool],
|
|
73
|
-
returns: FFIType.bool,
|
|
74
|
-
},
|
|
75
|
-
SetForegroundWindow: {
|
|
76
|
-
args: [FFIType.ptr],
|
|
77
|
-
returns: FFIType.bool,
|
|
78
|
-
},
|
|
79
|
-
ShowWindow: {
|
|
80
|
-
args: [FFIType.ptr, FFIType.i32],
|
|
81
|
-
returns: FFIType.bool,
|
|
82
|
-
},
|
|
83
|
-
IsZoomed: {
|
|
84
|
-
args: [FFIType.ptr],
|
|
85
|
-
returns: FFIType.bool,
|
|
86
|
-
},
|
|
87
|
-
IsIconic: {
|
|
88
|
-
args: [FFIType.ptr],
|
|
89
|
-
returns: FFIType.bool,
|
|
90
|
-
},
|
|
91
|
-
GetWindowPlacement: {
|
|
92
|
-
args: [FFIType.ptr, FFIType.ptr],
|
|
93
|
-
returns: FFIType.bool,
|
|
94
|
-
},
|
|
95
|
-
EnumDisplayMonitors: {
|
|
96
|
-
args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.u64],
|
|
97
|
-
returns: FFIType.bool,
|
|
98
|
-
},
|
|
99
|
-
GetMonitorInfoW: {
|
|
100
|
-
args: [FFIType.ptr, FFIType.ptr],
|
|
101
|
-
returns: FFIType.bool,
|
|
102
|
-
},
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
return symbols as any;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Node.js with koffi (following sqlunified pattern)
|
|
109
|
-
const koffi = (await import('koffi')).default;
|
|
110
|
-
const lib = koffi.load('user32.dll');
|
|
111
|
-
|
|
112
|
-
// Define callback type for EnumWindows
|
|
113
|
-
const EnumWindowsProc = koffi.proto('bool __stdcall EnumWindowsProc(void *hwnd, void *lParam)');
|
|
114
|
-
|
|
115
|
-
// Define RECT structure
|
|
116
|
-
const RECT_Struct = koffi.struct('RECT', {
|
|
117
|
-
Left: 'int',
|
|
118
|
-
Top: 'int',
|
|
119
|
-
Right: 'int',
|
|
120
|
-
Bottom: 'int',
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
// Define all user32 functions
|
|
124
|
-
const EnumWindows = lib.func('bool __stdcall EnumWindows(EnumWindowsProc *enumProc, void *lParam)');
|
|
125
|
-
const GetWindowTextW = lib.func('int __stdcall GetWindowTextW(void *hWnd, uint16_t *lpString, int nMaxCount)');
|
|
126
|
-
const GetWindowRect = lib.func('bool __stdcall GetWindowRect(void *hWnd, RECT *lpRect)');
|
|
127
|
-
const MoveWindow = lib.func('bool __stdcall MoveWindow(void *hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint)');
|
|
128
|
-
const SetForegroundWindow = lib.func('bool __stdcall SetForegroundWindow(void *hWnd)');
|
|
129
|
-
const ShowWindow = lib.func('bool __stdcall ShowWindow(void *hWnd, int nCmdShow)');
|
|
130
|
-
const IsZoomed = lib.func('bool __stdcall IsZoomed(void *hWnd)');
|
|
131
|
-
const IsIconic = lib.func('bool __stdcall IsIconic(void *hWnd)');
|
|
132
|
-
const GetWindowPlacement = lib.func('bool __stdcall GetWindowPlacement(void *hWnd, void *lpwndpl)');
|
|
133
|
-
|
|
134
|
-
// Monitor enumeration functions
|
|
135
|
-
const MonitorEnumProc = koffi.proto('bool __stdcall MonitorEnumProc(void *hMonitor, void *hdcMonitor, RECT *lprcMonitor, void *dwData)');
|
|
136
|
-
const EnumDisplayMonitors = lib.func('bool __stdcall EnumDisplayMonitors(void *hdc, RECT *lprcClip, MonitorEnumProc *lpfnEnum, void *dwData)');
|
|
137
|
-
const GetMonitorInfoW = lib.func('bool __stdcall GetMonitorInfoW(void *hMonitor, void *lpmi)');
|
|
138
|
-
|
|
139
|
-
// Keep references to registered callbacks to prevent garbage collection
|
|
140
|
-
// These must persist for the entire duration of the native callback invocation
|
|
141
|
-
const __callbackRefs: any[] = [];
|
|
142
|
-
|
|
143
|
-
return {
|
|
144
|
-
EnumWindows: (callback: (hwnd: bigint, lParam: bigint) => boolean, lParam: bigint) => {
|
|
145
|
-
const cbRef = koffi.register(callback, koffi.pointer(EnumWindowsProc));
|
|
146
|
-
__callbackRefs.push(cbRef);
|
|
147
|
-
const result = EnumWindows(cbRef, lParam as any);
|
|
148
|
-
// Clean up old references periodically
|
|
149
|
-
if (__callbackRefs.length > 100) {
|
|
150
|
-
__callbackRefs.length = 0;
|
|
151
|
-
}
|
|
152
|
-
return result;
|
|
153
|
-
},
|
|
154
|
-
GetWindowTextW,
|
|
155
|
-
GetWindowRect: (hwnd: bigint, rect: any) => {
|
|
156
|
-
// Use Buffer for RECT structure (4 ints = 16 bytes)
|
|
157
|
-
const rectBuf = Buffer.alloc(16);
|
|
158
|
-
const result = GetWindowRect(hwnd as any, rectBuf);
|
|
159
|
-
if (result) {
|
|
160
|
-
rect.Left = rectBuf.readInt32LE(0);
|
|
161
|
-
rect.Top = rectBuf.readInt32LE(4);
|
|
162
|
-
rect.Right = rectBuf.readInt32LE(8);
|
|
163
|
-
rect.Bottom = rectBuf.readInt32LE(12);
|
|
164
|
-
}
|
|
165
|
-
return result;
|
|
166
|
-
},
|
|
167
|
-
MoveWindow,
|
|
168
|
-
SetForegroundWindow,
|
|
169
|
-
ShowWindow,
|
|
170
|
-
IsZoomed,
|
|
171
|
-
IsIconic,
|
|
172
|
-
GetWindowPlacement,
|
|
173
|
-
EnumDisplayMonitors: (callback: (hMonitor: bigint, hdcMonitor: bigint, lprcMonitor: any, dwData: bigint) => boolean, dwData: bigint) => {
|
|
174
|
-
const cbRef = koffi.register(callback, koffi.pointer(MonitorEnumProc));
|
|
175
|
-
__callbackRefs.push(cbRef);
|
|
176
|
-
const result = EnumDisplayMonitors(null, null, cbRef, null);
|
|
177
|
-
// Clean up old references periodically
|
|
178
|
-
if (__callbackRefs.length > 100) {
|
|
179
|
-
__callbackRefs.length = 0;
|
|
180
|
-
}
|
|
181
|
-
return result;
|
|
182
|
-
},
|
|
183
|
-
GetMonitorInfoW: (hMonitor: bigint, lpmi: any) => {
|
|
184
|
-
// MONITORINFO structure:
|
|
185
|
-
// DWORD cbSize (4 bytes)
|
|
186
|
-
// RECT rcMonitor (16 bytes)
|
|
187
|
-
// RECT rcWork (16 bytes)
|
|
188
|
-
// DWORD dwFlags (4 bytes)
|
|
189
|
-
// Total: 40 bytes
|
|
190
|
-
const buffer = Buffer.alloc(40);
|
|
191
|
-
buffer.writeUInt32LE(40, 0); // cbSize
|
|
192
|
-
const result = GetMonitorInfoW(hMonitor as any, buffer);
|
|
193
|
-
if (result) {
|
|
194
|
-
lpmi.cbSize = buffer.readUInt32LE(0);
|
|
195
|
-
lpmi.rcMonitor = {
|
|
196
|
-
Left: buffer.readInt32LE(4),
|
|
197
|
-
Top: buffer.readInt32LE(8),
|
|
198
|
-
Right: buffer.readInt32LE(12),
|
|
199
|
-
Bottom: buffer.readInt32LE(16),
|
|
200
|
-
};
|
|
201
|
-
lpmi.rcWork = {
|
|
202
|
-
Left: buffer.readInt32LE(20),
|
|
203
|
-
Top: buffer.readInt32LE(24),
|
|
204
|
-
Right: buffer.readInt32LE(28),
|
|
205
|
-
Bottom: buffer.readInt32LE(32),
|
|
206
|
-
};
|
|
207
|
-
lpmi.dwFlags = buffer.readUInt32LE(36);
|
|
208
|
-
}
|
|
209
|
-
return result;
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const user32 = await initializeFFI();
|
|
215
|
-
|
|
216
|
-
export { user32, isBun };
|
package/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EAEpB,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,cAAc,EACd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAMxF,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC;AAkBvD,OAAO,EACH,IAAI,EACJ,UAAU,EACV,UAAU,EACV,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,MAAM,EACT,CAAC;AAqSF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBlG;AAmND,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAmIjC"}
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAQ,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AACzE,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAElB,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,cAAc,EACd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAW,aAAa,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,IAAI,EAAW,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AA6BpE,yCAAyC;AACzC,OAAO,EAIH,WAAW,EAEX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,MAAM,EACT,CAAC;AACF,kFAAkF;AAElF,oFAAoF;AAEpF;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzE,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,eAAe,QAAQ,cAAc,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,MAAoB,EAAE,QAAiB,KAAK;IAClF,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEnF,IAAI,WAAuB,CAAC;IAE5B,IAAI,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,2DAA2D;YAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,WAAW,GAAG,QAAQ,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,gCAAgC;YAChC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChC,WAAW,GAAG,MAAM,CAAC,CAAC,uBAAuB;YACjD,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,WAAW,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAmB;IAC/C,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,MAAM,GAAiB;QACzB,IAAI,EAAE,IAAI,CAAC,WAAW;KACzB,CAAC;IAEF,uDAAuD;IACvD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B;IACvE,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACxC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAc;IAC7B,MAAM,IAAI,GAAkB;QACxB,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,EAAE;KACrB,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,yDAAyD;QACzD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,CAAC,EAAE,CAAC;YACJ,SAAS;QACb,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,GAAG;oBACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,MAAM;gBACV,KAAK,GAAG;oBACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACV,KAAK,SAAS,CAAC;gBACf,KAAK,GAAG;oBACJ,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACV,KAAK,KAAK;oBACN,CAAC,EAAE,CAAC;oBACJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACjC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACnB,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC7C,CAAC;oBACL,CAAC;oBACD,MAAM;gBACV,KAAK,MAAM;oBACP,CAAC,EAAE,CAAC;oBACJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACjC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,CAAC;oBACD,MAAM;gBACV,KAAK,MAAM;oBACP,CAAC,EAAE,CAAC;oBACJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;oBACD,MAAM;gBACV,KAAK,MAAM;oBACP,oGAAoG;oBACpG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtD,CAAC,EAAE,CAAC;wBACJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,mCAAmC;oBAC3D,CAAC;oBACD,MAAM;gBACV,KAAK,OAAO;oBACR,CAAC,EAAE,CAAC;oBACJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/B,CAAC;oBACD,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,MAAM;gBACV,KAAK,MAAM,CAAC;gBACZ,KAAK,GAAG;oBACJ,OAAO,IAAI,CAAC,CAAC,6BAA6B;gBAC9C;oBACI,uDAAuD;oBACvD,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;oBAC1C,CAAC;oBACD,MAAM;YACd,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,CAAC,EAAE,CAAC;IACR,CAAC;IAED,2FAA2F;IAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;IAClH,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,qEAAqE;QACrE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAoB,EAAE,WAAyB;IACtE,6BAA6B;IAC7B,IAAI,OAAe,CAAC;IACpB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnD,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,UAAU;gBAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACnE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACX,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,UAAU;gBAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACnE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACX,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO;IAExB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3C,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,gBAAgB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACzE,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3E,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;IAE3E,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC;YAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC;YAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAEtD,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;QACpH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAED,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,gCAAgC;AACxD,IAAI,OAAO,GAAiB,EAAE,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS,EAAE,WAAmB;IACpE,yCAAyC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,OAAO,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzB,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,OAAO;QACH,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI;QAClB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG;KACpB,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,aAAqB;IACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAChC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE5B,uEAAuE;IACvE,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IAE3F,IAAI,cAAc,EAAE,CAAC;QACjB,IAAI,GAAG;YACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,WAAW,GAAG,CAAC,CAAC;QAEtD,IAAI,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAEvD,8CAA8C;QAC9C,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,GAAG;gBACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YAEvD,IAAI,UAAU;gBACV,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YAEvD,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,IAAI,CAAC,CAAC;QAE/D,OAAO;IACX,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1C,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnD,KAAK,CAAC,0BAA0B,WAAW,2BAA2B,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IAC9D,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;IAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,IAAI,GAAG;QACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,GAAG,CAAC,CAAC;IAElD,IAAI,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEvD,8CAA8C;IAC9C,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,GAAG;YACH,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,eAAe,WAAW,GAAG,CAAC,CAAC;QAE7F,IAAI,KAAK,KAAK,CAAC;YACX,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACjD,IAAI,MAAM,KAAK,CAAC;YACZ,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAElD,IAAI,UAAU;YACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC,CAAC;QAE7H,sFAAsF;QACtF,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAgB;IACxC,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;YAC9D,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjE,OAAO,CAAC,CAAC;QACb,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE5D;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACnC,IAAI,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnD,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,WAAW,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,iBAA0B,KAAK;IACnD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,gJAAgJ;QAChJ,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrI,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhG,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;IACnG,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpC,+CAA+C;QAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAEpD,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE9F,MAAM,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;IAC/M,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,KAAK,CAAC,MAAc,EAAE;IAC3B,IAAI,GAAG;QACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,mGAAmG,CAAC,CAAC;IACjH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzO,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAc;IAC9B,qBAAqB;IACrB,IAAI,CAAC;QACD,OAAO,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,qCAAqC;IAClD,CAAC;IAED,6DAA6D;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC7D,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEhC,mCAAmC;IACnC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,kBAAkB;IAClB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;IACjB,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;IAE/B,IAAI,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC5C,IAAI,UAAU;QAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnF,2BAA2B;IAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iCAAiC;IACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAExD,2DAA2D;YAC3D,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChF,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,SAAS,EAAE,CAAC;oBACZ,8CAA8C;oBAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC9D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;oBAC7B,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,oBAAoB;YACpB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBACxB,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,kCAAkC;YAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,0CAA0C;gBAC3F,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACnF,MAAM,WAAW,GAAe,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC5E,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO;QACX,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,yDAAyD;IACzD,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACrE,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACT,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEnC,oBAAoB;YACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/C,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;QACD,OAAO;IACX,CAAC;IAED,+EAA+E;IAC/E,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO;IACX,CAAC;IAED,mDAAmD;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;IAEpC,IAAI,GAAG;QACH,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7C,cAAc,EAAE,CAAC;QACjB,OAAO;IACX,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO;IACX,CAAC;IAED,gDAAgD;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;QACtG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO;IACX,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO;IACX,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,yCAAyC;AACzC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|