@oaysus/cli 0.1.1 → 0.1.2
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/lib/shared/auth.d.ts.map +1 -1
- package/dist/lib/shared/auth.js +57 -10
- package/dist/lib/shared/auth.js.map +1 -1
- package/dist/lib/shared/config.d.ts +4 -3
- package/dist/lib/shared/config.d.ts.map +1 -1
- package/dist/lib/shared/config.js +71 -4
- package/dist/lib/shared/config.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAyDlG;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BvF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAmCpE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,WAAW,GAAG,oBAAoB,CAAC,CA+E7C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMtD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAgBxD"}
|
package/dist/lib/shared/auth.js
CHANGED
|
@@ -3,7 +3,46 @@ import fs from 'fs/promises';
|
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import os from 'os';
|
|
5
5
|
import crypto from 'crypto';
|
|
6
|
-
import { SSO_BASE_URL, ADMIN_URL, CREDENTIALS_PATH, debug as log, debugError as logError } from './config.js';
|
|
6
|
+
import { SSO_BASE_URL, ADMIN_URL, CREDENTIALS_PATH, IS_LOCAL_DEV, debug as log, debugError as logError } from './config.js';
|
|
7
|
+
/**
|
|
8
|
+
* Format a friendly error message for API errors
|
|
9
|
+
*/
|
|
10
|
+
function formatApiError(error, context) {
|
|
11
|
+
if (axios.isAxiosError(error)) {
|
|
12
|
+
const status = error.response?.status;
|
|
13
|
+
const data = error.response?.data;
|
|
14
|
+
// Connection refused - server not running
|
|
15
|
+
if (error.code === 'ECONNREFUSED') {
|
|
16
|
+
const serverUrl = IS_LOCAL_DEV ? 'localhost:3003' : 'auth.oaysus.com';
|
|
17
|
+
return new Error(`Cannot connect to ${serverUrl}. ${IS_LOCAL_DEV ? 'Is your local FastAPI server running?' : 'Please check your internet connection.'}`);
|
|
18
|
+
}
|
|
19
|
+
// 500 errors - server-side issue
|
|
20
|
+
if (status === 500) {
|
|
21
|
+
const detail = data?.detail?.error || data?.error || data?.message;
|
|
22
|
+
return new Error(`Server error during ${context}. ${detail ? `Details: ${detail}` : 'Please try again or contact support.'}`);
|
|
23
|
+
}
|
|
24
|
+
// 401/403 - auth issues
|
|
25
|
+
if (status === 401 || status === 403) {
|
|
26
|
+
return new Error(data?.message || data?.error || 'Authentication failed. Please try again.');
|
|
27
|
+
}
|
|
28
|
+
// 404 - endpoint not found
|
|
29
|
+
if (status === 404) {
|
|
30
|
+
return new Error(IS_LOCAL_DEV
|
|
31
|
+
? `API endpoint not found. Make sure your local server is running the latest code.`
|
|
32
|
+
: `Service temporarily unavailable. Please try again later.`);
|
|
33
|
+
}
|
|
34
|
+
// Other errors with messages
|
|
35
|
+
const message = data?.message || data?.error || data?.detail?.error;
|
|
36
|
+
if (message) {
|
|
37
|
+
return new Error(message);
|
|
38
|
+
}
|
|
39
|
+
return new Error(`Request failed with status ${status || 'unknown'}`);
|
|
40
|
+
}
|
|
41
|
+
if (error instanceof Error) {
|
|
42
|
+
return error;
|
|
43
|
+
}
|
|
44
|
+
return new Error('An unexpected error occurred');
|
|
45
|
+
}
|
|
7
46
|
/**
|
|
8
47
|
* Request magic link for email authentication with device code
|
|
9
48
|
*/
|
|
@@ -27,13 +66,12 @@ export async function requestMagicLink(email, deviceCode) {
|
|
|
27
66
|
throw new Error(response.data.message || 'Failed to send magic link');
|
|
28
67
|
}
|
|
29
68
|
catch (error) {
|
|
69
|
+
logError('[ERROR] Magic link request failed');
|
|
30
70
|
if (axios.isAxiosError(error)) {
|
|
31
|
-
logError('[ERROR] Magic link request failed');
|
|
32
71
|
logError('[ERROR] Status:', error.response?.status);
|
|
33
72
|
logError('[ERROR] Response:', error.response?.data);
|
|
34
|
-
throw new Error(error.response?.data?.message || 'Failed to send magic link');
|
|
35
73
|
}
|
|
36
|
-
throw error;
|
|
74
|
+
throw formatApiError(error, 'magic link request');
|
|
37
75
|
}
|
|
38
76
|
}
|
|
39
77
|
/**
|
|
@@ -77,14 +115,13 @@ export async function initializeDevice() {
|
|
|
77
115
|
return response.data;
|
|
78
116
|
}
|
|
79
117
|
catch (error) {
|
|
118
|
+
logError('[ERROR] Device init failed');
|
|
119
|
+
logError('[ERROR] URL:', url);
|
|
80
120
|
if (axios.isAxiosError(error)) {
|
|
81
|
-
logError('[ERROR] Request failed');
|
|
82
|
-
logError('[ERROR] URL:', url);
|
|
83
121
|
logError('[ERROR] Status:', error.response?.status);
|
|
84
122
|
logError('[ERROR] Response:', error.response?.data);
|
|
85
|
-
logError('[ERROR] Message:', error.message);
|
|
86
123
|
}
|
|
87
|
-
throw error;
|
|
124
|
+
throw formatApiError(error, 'device initialization');
|
|
88
125
|
}
|
|
89
126
|
}
|
|
90
127
|
/**
|
|
@@ -131,6 +168,8 @@ export async function pollForAuth(deviceCode, options) {
|
|
|
131
168
|
try {
|
|
132
169
|
const response = await axios.get(`${SSO_BASE_URL}/sso/cli/device/status`, { params: { deviceCode } });
|
|
133
170
|
const data = response.data;
|
|
171
|
+
log('[DEBUG] Poll response status:', data.status);
|
|
172
|
+
log('[DEBUG] Poll response data:', JSON.stringify(data, null, 2));
|
|
134
173
|
// Device approved but needs website selection
|
|
135
174
|
if (data.status === 'approved' && data.needsWebsiteSelection && data.websites) {
|
|
136
175
|
log('[DEBUG] Device approved - needs website selection');
|
|
@@ -163,8 +202,16 @@ export async function pollForAuth(deviceCode, options) {
|
|
|
163
202
|
await new Promise(resolve => setTimeout(resolve, options.interval));
|
|
164
203
|
}
|
|
165
204
|
catch (error) {
|
|
166
|
-
if (axios.isAxiosError(error)
|
|
167
|
-
|
|
205
|
+
if (axios.isAxiosError(error)) {
|
|
206
|
+
logError('[ERROR] Poll request failed');
|
|
207
|
+
logError('[ERROR] Status:', error.response?.status);
|
|
208
|
+
logError('[ERROR] Response:', error.response?.data);
|
|
209
|
+
if (error.response?.status === 404) {
|
|
210
|
+
throw new Error('Authorization request not found or expired');
|
|
211
|
+
}
|
|
212
|
+
if (error.response?.status === 500) {
|
|
213
|
+
logError('[ERROR] Server error - check FastAPI logs');
|
|
214
|
+
}
|
|
168
215
|
}
|
|
169
216
|
if (error instanceof Error && error.message.includes('denied')) {
|
|
170
217
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,UAAU,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Centralized Configuration Module
|
|
3
3
|
*
|
|
4
4
|
* Production defaults are baked in for end users.
|
|
5
|
-
*
|
|
5
|
+
* Local development: Create .env.local in the CLI directory to override.
|
|
6
6
|
*
|
|
7
7
|
* Install: npm install -g @oaysus/cli
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
10
|
* Environment configuration
|
|
11
|
-
*
|
|
11
|
+
* Priority: .env.local > environment variables > production defaults
|
|
12
12
|
*/
|
|
13
13
|
export declare const config: {
|
|
14
14
|
readonly SSO_BASE_URL: string;
|
|
@@ -19,8 +19,9 @@ export declare const config: {
|
|
|
19
19
|
readonly DEBUG: boolean;
|
|
20
20
|
readonly CREDENTIALS_PATH: string;
|
|
21
21
|
readonly CONFIG_DIR: string;
|
|
22
|
+
readonly IS_LOCAL_DEV: boolean;
|
|
22
23
|
};
|
|
23
|
-
export declare const SSO_BASE_URL: string, ADMIN_URL: string, R2_PUBLIC_URL: string, API_STAGE: string, DEVELOPER: string | undefined, DEBUG: boolean, CREDENTIALS_PATH: string, CONFIG_DIR: string;
|
|
24
|
+
export declare const SSO_BASE_URL: string, ADMIN_URL: string, R2_PUBLIC_URL: string, API_STAGE: string, DEVELOPER: string | undefined, DEBUG: boolean, CREDENTIALS_PATH: string, CONFIG_DIR: string, IS_LOCAL_DEV: boolean;
|
|
24
25
|
/**
|
|
25
26
|
* Get current deployment environment
|
|
26
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkFH;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;CA2BT,CAAC;AAGX,eAAO,MACL,YAAY,UACZ,SAAS,UACT,aAAa,UACb,SAAS,UACT,SAAS,sBACT,KAAK,WACL,gBAAgB,UAChB,UAAU,UACV,YAAY,SACJ,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEnD,wBAAgB,cAAc,IAAI,WAAW,CAS5C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAInD"}
|
|
@@ -2,19 +2,84 @@
|
|
|
2
2
|
* Centralized Configuration Module
|
|
3
3
|
*
|
|
4
4
|
* Production defaults are baked in for end users.
|
|
5
|
-
*
|
|
5
|
+
* Local development: Create .env.local in the CLI directory to override.
|
|
6
6
|
*
|
|
7
7
|
* Install: npm install -g @oaysus/cli
|
|
8
8
|
*/
|
|
9
9
|
import os from 'os';
|
|
10
10
|
import path from 'path';
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import dotenv from 'dotenv';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
11
14
|
// Production URLs (baked in for security)
|
|
12
15
|
const PROD_SSO_URL = 'https://auth.oaysus.com';
|
|
13
16
|
const PROD_ADMIN_URL = 'https://admin.oaysus.com';
|
|
14
17
|
const PROD_R2_URL = 'https://pub-71eb20e9b97849f18a95eaa92feb648a.r2.dev';
|
|
18
|
+
/**
|
|
19
|
+
* Get current file's directory (works in both ESM and CJS)
|
|
20
|
+
*/
|
|
21
|
+
function getCurrentDir() {
|
|
22
|
+
// ESM: use import.meta.url
|
|
23
|
+
// @ts-ignore - import.meta exists in ESM
|
|
24
|
+
if (typeof import.meta !== 'undefined' && import.meta.url) {
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
return path.dirname(fileURLToPath(import.meta.url));
|
|
27
|
+
}
|
|
28
|
+
// CJS fallback
|
|
29
|
+
if (typeof __dirname !== 'undefined') {
|
|
30
|
+
return __dirname;
|
|
31
|
+
}
|
|
32
|
+
return process.cwd();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Find the CLI root directory (where package.json is)
|
|
36
|
+
*/
|
|
37
|
+
function findCliRoot() {
|
|
38
|
+
let dir = getCurrentDir();
|
|
39
|
+
// Walk up until we find package.json or hit root
|
|
40
|
+
for (let i = 0; i < 10; i++) {
|
|
41
|
+
const pkgPath = path.join(dir, 'package.json');
|
|
42
|
+
if (fs.existsSync(pkgPath)) {
|
|
43
|
+
try {
|
|
44
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
45
|
+
if (pkg.name === '@oaysus/cli' || pkg.name === 'oaysus-cli') {
|
|
46
|
+
return dir;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Continue searching
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const parent = path.dirname(dir);
|
|
54
|
+
if (parent === dir)
|
|
55
|
+
break;
|
|
56
|
+
dir = parent;
|
|
57
|
+
}
|
|
58
|
+
return process.cwd();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Load .env.local if it exists
|
|
62
|
+
* Returns true if .env.local was found and loaded
|
|
63
|
+
* Skipped during test runs to ensure predictable test behavior
|
|
64
|
+
*/
|
|
65
|
+
function loadEnvLocal() {
|
|
66
|
+
// Skip loading .env.local during tests
|
|
67
|
+
if (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID !== undefined) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const cliRoot = findCliRoot();
|
|
71
|
+
const envLocalPath = path.join(cliRoot, '.env.local');
|
|
72
|
+
if (fs.existsSync(envLocalPath)) {
|
|
73
|
+
dotenv.config({ path: envLocalPath });
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// Load .env.local if present (this sets process.env values)
|
|
79
|
+
const _hasEnvLocal = loadEnvLocal();
|
|
15
80
|
/**
|
|
16
81
|
* Environment configuration
|
|
17
|
-
*
|
|
82
|
+
* Priority: .env.local > environment variables > production defaults
|
|
18
83
|
*/
|
|
19
84
|
export const config = {
|
|
20
85
|
// Authentication server URL
|
|
@@ -24,7 +89,7 @@ export const config = {
|
|
|
24
89
|
// R2 CDN URL for component hosting
|
|
25
90
|
R2_PUBLIC_URL: process.env.NEXT_PUBLIC_R2_PUBLIC_URL || PROD_R2_URL,
|
|
26
91
|
// Deployment environment: 'prod' | 'dev' | 'local'
|
|
27
|
-
API_STAGE: process.env.NEXT_PUBLIC_API_STAGE ||
|
|
92
|
+
API_STAGE: process.env.NEXT_PUBLIC_API_STAGE || 'prod',
|
|
28
93
|
// Developer namespace for local testing (contributors only)
|
|
29
94
|
DEVELOPER: process.env.DEVELOPER,
|
|
30
95
|
// Debug mode (console logging, off by default)
|
|
@@ -33,9 +98,11 @@ export const config = {
|
|
|
33
98
|
CREDENTIALS_PATH: path.join(os.homedir(), '.oaysus', 'credentials.json'),
|
|
34
99
|
// Config directory
|
|
35
100
|
CONFIG_DIR: path.join(os.homedir(), '.oaysus'),
|
|
101
|
+
// Flag indicating if .env.local was loaded
|
|
102
|
+
IS_LOCAL_DEV: _hasEnvLocal,
|
|
36
103
|
};
|
|
37
104
|
// Export individual values for convenience
|
|
38
|
-
export const { SSO_BASE_URL, ADMIN_URL, R2_PUBLIC_URL, API_STAGE, DEVELOPER, DEBUG, CREDENTIALS_PATH, CONFIG_DIR, } = config;
|
|
105
|
+
export const { SSO_BASE_URL, ADMIN_URL, R2_PUBLIC_URL, API_STAGE, DEVELOPER, DEBUG, CREDENTIALS_PATH, CONFIG_DIR, IS_LOCAL_DEV, } = config;
|
|
39
106
|
export function getEnvironment() {
|
|
40
107
|
const stage = config.API_STAGE;
|
|
41
108
|
if (stage === 'local')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,0CAA0C;AAC1C,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAC/C,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAClD,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAE1E;;GAEG;AACH,SAAS,aAAa;IACpB,2BAA2B;IAC3B,yCAAyC;IACzC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,aAAa;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,eAAe;IACf,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW;IAClB,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;IAE1B,iDAAiD;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC5D,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY;IACnB,uCAAuC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEtD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4DAA4D;AAC5D,MAAM,YAAY,GAAG,YAAY,EAAE,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,4BAA4B;IAC5B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,YAAY;IAEpE,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,cAAc;IAErE,mCAAmC;IACnC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,WAAW;IAEnE,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,MAAM;IAEtD,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;IAEhC,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM;IAEnC,2BAA2B;IAC3B,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC;IAExE,mBAAmB;IACnB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAE9C,2CAA2C;IAC3C,YAAY,EAAE,YAAY;CAClB,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,GAAG,MAAM,CAAC;AAOX,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;IAE/B,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IAE9D,oCAAoC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAG,IAAe;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAG,IAAe;IAC3C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
|