amaran-light-cli 1.1.4 → 1.4.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.
Files changed (116) hide show
  1. package/CHANGELOG.md +44 -9
  2. package/README.md +32 -5
  3. package/dist/__tests__/autoCct.test.js +89 -20
  4. package/dist/__tests__/autoCct.test.js.map +1 -1
  5. package/dist/__tests__/autostart.test.js +87 -41
  6. package/dist/__tests__/autostart.test.js.map +1 -1
  7. package/dist/__tests__/cctUtil.test.js +26 -27
  8. package/dist/__tests__/cctUtil.test.js.map +1 -1
  9. package/dist/__tests__/cli.smoke.test.js +18 -13
  10. package/dist/__tests__/cli.smoke.test.js.map +1 -1
  11. package/dist/__tests__/intensityApi.test.js +4 -9
  12. package/dist/__tests__/intensityApi.test.js.map +1 -1
  13. package/dist/__tests__/lightControl.test.js +79 -68
  14. package/dist/__tests__/lightControl.test.js.map +1 -1
  15. package/dist/__tests__/setupTests.js +9 -8
  16. package/dist/__tests__/setupTests.js.map +1 -1
  17. package/dist/__tests__/simulateSchedule.test.d.ts +2 -0
  18. package/dist/__tests__/simulateSchedule.test.d.ts.map +1 -0
  19. package/dist/__tests__/simulateSchedule.test.js +87 -0
  20. package/dist/__tests__/simulateSchedule.test.js.map +1 -0
  21. package/dist/autostart.js +19 -60
  22. package/dist/autostart.js.map +1 -1
  23. package/dist/cctUtil.d.ts.map +1 -1
  24. package/dist/cctUtil.js +106 -107
  25. package/dist/cctUtil.js.map +1 -1
  26. package/dist/cli.d.ts +2 -2
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +52 -247
  29. package/dist/cli.js.map +1 -1
  30. package/dist/commands/__tests__/integration.test.d.ts +2 -0
  31. package/dist/commands/__tests__/integration.test.d.ts.map +1 -0
  32. package/dist/commands/__tests__/integration.test.js +279 -0
  33. package/dist/commands/__tests__/integration.test.js.map +1 -0
  34. package/dist/commands/autoCct.d.ts +1 -1
  35. package/dist/commands/autoCct.d.ts.map +1 -1
  36. package/dist/commands/autoCct.js +74 -76
  37. package/dist/commands/autoCct.js.map +1 -1
  38. package/dist/commands/cct.d.ts +1 -1
  39. package/dist/commands/cct.d.ts.map +1 -1
  40. package/dist/commands/cct.js +17 -23
  41. package/dist/commands/cct.js.map +1 -1
  42. package/dist/commands/color.d.ts +1 -1
  43. package/dist/commands/color.d.ts.map +1 -1
  44. package/dist/commands/color.js +9 -15
  45. package/dist/commands/color.js.map +1 -1
  46. package/dist/commands/config.d.ts +1 -1
  47. package/dist/commands/config.d.ts.map +1 -1
  48. package/dist/commands/config.js +64 -66
  49. package/dist/commands/config.js.map +1 -1
  50. package/dist/commands/discover.d.ts +1 -1
  51. package/dist/commands/discover.d.ts.map +1 -1
  52. package/dist/commands/discover.js +8 -14
  53. package/dist/commands/discover.js.map +1 -1
  54. package/dist/commands/graphSchedule.d.ts +5 -0
  55. package/dist/commands/graphSchedule.d.ts.map +1 -0
  56. package/dist/commands/graphSchedule.js +293 -0
  57. package/dist/commands/graphSchedule.js.map +1 -0
  58. package/dist/commands/hsi.d.ts +1 -1
  59. package/dist/commands/hsi.d.ts.map +1 -1
  60. package/dist/commands/hsi.js +11 -17
  61. package/dist/commands/hsi.js.map +1 -1
  62. package/dist/commands/intensity.d.ts +1 -1
  63. package/dist/commands/intensity.d.ts.map +1 -1
  64. package/dist/commands/intensity.js +9 -15
  65. package/dist/commands/intensity.js.map +1 -1
  66. package/dist/commands/list.d.ts +1 -1
  67. package/dist/commands/list.d.ts.map +1 -1
  68. package/dist/commands/list.js +6 -12
  69. package/dist/commands/list.js.map +1 -1
  70. package/dist/commands/power.d.ts +1 -1
  71. package/dist/commands/power.d.ts.map +1 -1
  72. package/dist/commands/power.js +18 -24
  73. package/dist/commands/power.js.map +1 -1
  74. package/dist/commands/printSchedule.d.ts +5 -0
  75. package/dist/commands/printSchedule.d.ts.map +1 -0
  76. package/dist/commands/{schedule.js → printSchedule.js} +113 -116
  77. package/dist/commands/printSchedule.js.map +1 -0
  78. package/dist/commands/service.d.ts +1 -1
  79. package/dist/commands/service.d.ts.map +1 -1
  80. package/dist/commands/service.js +54 -88
  81. package/dist/commands/service.js.map +1 -1
  82. package/dist/commands/simulateSchedule.d.ts +1 -1
  83. package/dist/commands/simulateSchedule.d.ts.map +1 -1
  84. package/dist/commands/simulateSchedule.js +50 -70
  85. package/dist/commands/simulateSchedule.js.map +1 -1
  86. package/dist/commands/status.d.ts +1 -1
  87. package/dist/commands/status.d.ts.map +1 -1
  88. package/dist/commands/status.js +8 -14
  89. package/dist/commands/status.js.map +1 -1
  90. package/dist/commands.d.ts +1 -1
  91. package/dist/commands.d.ts.map +1 -1
  92. package/dist/commands.js +52 -54
  93. package/dist/commands.js.map +1 -1
  94. package/dist/constants.d.ts +13 -14
  95. package/dist/constants.d.ts.map +1 -1
  96. package/dist/constants.js +21 -27
  97. package/dist/constants.js.map +1 -1
  98. package/dist/discovery.js +8 -15
  99. package/dist/discovery.js.map +1 -1
  100. package/dist/geoipUtil.js +3 -9
  101. package/dist/geoipUtil.js.map +1 -1
  102. package/dist/lightControl.js +18 -20
  103. package/dist/lightControl.js.map +1 -1
  104. package/dist/test/MockLightServer.d.ts +13 -0
  105. package/dist/test/MockLightServer.d.ts.map +1 -0
  106. package/dist/test/MockLightServer.js +140 -0
  107. package/dist/test/MockLightServer.js.map +1 -0
  108. package/dist/types.d.ts +2 -1
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/types.js +1 -2
  111. package/package.json +17 -15
  112. package/scripts/release.js +8 -4
  113. package/scripts/test.sh +2 -2
  114. package/dist/commands/schedule.d.ts +0 -5
  115. package/dist/commands/schedule.d.ts.map +0 -1
  116. package/dist/commands/schedule.js.map +0 -1
@@ -1,47 +1,12 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.registerService = registerService;
40
- const node_child_process_1 = require("node:child_process");
41
- const fs = __importStar(require("node:fs"));
42
- const path = __importStar(require("node:path"));
43
- const chalk_1 = __importDefault(require("chalk"));
44
- function registerService(program, deps) {
1
+ import { spawn } from 'node:child_process';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ import { dirname } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import chalk from 'chalk';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ export function registerService(program, deps) {
45
10
  const { asyncCommand } = deps;
46
11
  const serviceCommand = program
47
12
  .command('service')
@@ -53,10 +18,11 @@ function registerService(program, deps) {
53
18
  .option('-i, --interval <seconds>', 'Interval in seconds (default: 60)', '60')
54
19
  .option('-C, --curve <curve>', 'Curve type for CCT calculation (hann, wider-middle-small, wider-middle-medium, wider-middle-large, cie-daylight, sun-altitude, perez-daylight, default: hann)', 'hann')
55
20
  .action(asyncCommand(async (options) => {
56
- const { parseCurveType } = await Promise.resolve().then(() => __importStar(require('../cctUtil')));
21
+ // dynamic import for ESM
22
+ const { parseCurveType } = await import('../cctUtil.js');
57
23
  const interval = parseInt(options.interval ?? '60', 10);
58
24
  if (Number.isNaN(interval) || interval < 10) {
59
- console.error(chalk_1.default.red('Interval must be at least 10 seconds'));
25
+ console.error(chalk.red('Interval must be at least 10 seconds'));
60
26
  process.exit(1);
61
27
  }
62
28
  // Validate curve option
@@ -66,7 +32,7 @@ function registerService(program, deps) {
66
32
  curveType = parseCurveType(options.curve);
67
33
  }
68
34
  catch (error) {
69
- console.error(chalk_1.default.red(error.message));
35
+ console.error(chalk.red(error.message));
70
36
  process.exit(1);
71
37
  }
72
38
  }
@@ -83,7 +49,7 @@ function registerService(program, deps) {
83
49
  if (globalPath && fs.existsSync(globalPath)) {
84
50
  cliPath = globalPath;
85
51
  isGlobal = true;
86
- console.log(chalk_1.default.blue(`✓ Detected global installation: ${cliPath}`));
52
+ console.log(chalk.blue(`✓ Detected global installation: ${cliPath}`));
87
53
  }
88
54
  else {
89
55
  throw new Error('Not found in PATH');
@@ -95,16 +61,16 @@ function registerService(program, deps) {
95
61
  cliPath = path.join(projectDir, 'dist', 'cli.js');
96
62
  // Check if CLI is built locally
97
63
  if (!fs.existsSync(cliPath)) {
98
- console.error(chalk_1.default.red('CLI not found. Please either:'));
99
- console.error(chalk_1.default.red(' 1. Install globally: npm install -g .'));
100
- console.error(chalk_1.default.red(' 2. Or build locally: npm run build'));
64
+ console.error(chalk.red('CLI not found. Please either:'));
65
+ console.error(chalk.red(' 1. Install globally: npm install -g .'));
66
+ console.error(chalk.red(' 2. Or build locally: npm run build'));
101
67
  process.exit(1);
102
68
  }
103
- console.log(chalk_1.default.blue(`✓ Using local development build: ${cliPath}`));
69
+ console.log(chalk.blue(`✓ Using local development build: ${cliPath}`));
104
70
  }
105
71
  const homeDir = process.env.HOME;
106
72
  if (!homeDir) {
107
- console.error(chalk_1.default.red('HOME environment variable not set'));
73
+ console.error(chalk.red('HOME environment variable not set'));
108
74
  process.exit(1);
109
75
  }
110
76
  const plistName = 'com.hmmfn.amaran.circadian-service';
@@ -148,21 +114,21 @@ function registerService(program, deps) {
148
114
  try {
149
115
  // Write plist file
150
116
  fs.writeFileSync(plistPath, plistContent);
151
- console.log(chalk_1.default.green(`✓ Created service file: ${plistPath}`));
117
+ console.log(chalk.green(`✓ Created service file: ${plistPath}`));
152
118
  // Load the service
153
119
  await runCommand('launchctl', ['load', plistPath]);
154
- console.log(chalk_1.default.green(`✓ Circadian lighting service installed and started`));
155
- console.log(chalk_1.default.blue(` Installation type: ${isGlobal ? 'Global' : 'Local development'}`));
156
- console.log(chalk_1.default.blue(` CLI path: ${cliPath}`));
157
- console.log(chalk_1.default.blue(` Running auto-cct every ${interval} seconds`));
158
- console.log(chalk_1.default.blue(` Curve type: ${curveType}`));
159
- console.log(chalk_1.default.gray(` Logs: ${path.join(logDir, 'amaran-circadian-service.log')}`));
160
- console.log(chalk_1.default.gray(` Errors: ${path.join(logDir, 'amaran-circadian-service-error.log')}`));
120
+ console.log(chalk.green(`✓ Circadian lighting service installed and started`));
121
+ console.log(chalk.blue(` Installation type: ${isGlobal ? 'Global' : 'Local development'}`));
122
+ console.log(chalk.blue(` CLI path: ${cliPath}`));
123
+ console.log(chalk.blue(` Running auto-cct every ${interval} seconds`));
124
+ console.log(chalk.blue(` Curve type: ${curveType}`));
125
+ console.log(chalk.gray(` Logs: ${path.join(logDir, 'amaran-circadian-service.log')}`));
126
+ console.log(chalk.gray(` Errors: ${path.join(logDir, 'amaran-circadian-service-error.log')}`));
161
127
  appendServiceLog(`Service installed (${isGlobal ? 'global' : 'local'}) interval=${interval}s curve=${curveType}`);
162
128
  }
163
129
  catch (error) {
164
130
  const err = error;
165
- console.error(chalk_1.default.red('Failed to install circadian lighting service:'), err.message);
131
+ console.error(chalk.red('Failed to install circadian lighting service:'), err.message);
166
132
  process.exit(1);
167
133
  }
168
134
  }));
@@ -173,7 +139,7 @@ function registerService(program, deps) {
173
139
  .action(asyncCommand(async () => {
174
140
  const homeDir = process.env.HOME;
175
141
  if (!homeDir) {
176
- console.error(chalk_1.default.red('HOME environment variable not set'));
142
+ console.error(chalk.red('HOME environment variable not set'));
177
143
  process.exit(1);
178
144
  }
179
145
  const plistName = 'com.hmmfn.amaran.circadian-service';
@@ -184,16 +150,16 @@ function registerService(program, deps) {
184
150
  await runCommand('launchctl', ['unload', plistPath]);
185
151
  // Remove the plist file
186
152
  fs.unlinkSync(plistPath);
187
- console.log(chalk_1.default.green('✓ Circadian lighting service uninstalled successfully'));
153
+ console.log(chalk.green('✓ Circadian lighting service uninstalled successfully'));
188
154
  appendServiceLog('Service uninstalled');
189
155
  }
190
156
  else {
191
- console.log(chalk_1.default.yellow('Circadian lighting service not found (already uninstalled)'));
157
+ console.log(chalk.yellow('Circadian lighting service not found (already uninstalled)'));
192
158
  }
193
159
  }
194
160
  catch (error) {
195
161
  const err = error;
196
- console.error(chalk_1.default.red('Failed to uninstall circadian lighting service:'), err.message);
162
+ console.error(chalk.red('Failed to uninstall circadian lighting service:'), err.message);
197
163
  process.exit(1);
198
164
  }
199
165
  }));
@@ -204,7 +170,7 @@ function registerService(program, deps) {
204
170
  .action(asyncCommand(async () => {
205
171
  const homeDir = process.env.HOME;
206
172
  if (!homeDir) {
207
- console.error(chalk_1.default.red('HOME environment variable not set'));
173
+ console.error(chalk.red('HOME environment variable not set'));
208
174
  process.exit(1);
209
175
  }
210
176
  const plistName = 'com.hmmfn.amaran.circadian-service';
@@ -213,15 +179,15 @@ function registerService(program, deps) {
213
179
  const errorLogPath = path.join(homeDir, 'Library', 'Logs', 'amaran-circadian-service-error.log');
214
180
  try {
215
181
  if (!fs.existsSync(plistPath)) {
216
- console.log(chalk_1.default.yellow('Circadian lighting service not installed'));
182
+ console.log(chalk.yellow('Circadian lighting service not installed'));
217
183
  return;
218
184
  }
219
185
  // Check if service is loaded
220
186
  const { stdout } = await runCommand('launchctl', ['list']);
221
187
  const isLoaded = stdout.includes(plistName);
222
- console.log(chalk_1.default.blue('Circadian Lighting Service Status:'));
223
- console.log(` Installed: ${chalk_1.default.green('✓')}`);
224
- console.log(` Running: ${isLoaded ? chalk_1.default.green('✓') : chalk_1.default.red('✗')}`);
188
+ console.log(chalk.blue('Circadian Lighting Service Status:'));
189
+ console.log(` Installed: ${chalk.green('✓')}`);
190
+ console.log(` Running: ${isLoaded ? chalk.green('✓') : chalk.red('✗')}`);
225
191
  console.log(` Config: ${plistPath}`);
226
192
  if (fs.existsSync(logPath)) {
227
193
  const logStats = fs.statSync(logPath);
@@ -230,29 +196,29 @@ function registerService(program, deps) {
230
196
  const logContent = fs.readFileSync(logPath, 'utf8');
231
197
  const lastLines = logContent.trim().split('\n').slice(-3);
232
198
  if (lastLines.length > 0 && lastLines[0]) {
233
- console.log(chalk_1.default.gray(' Recent output:'));
199
+ console.log(chalk.gray(' Recent output:'));
234
200
  for (const line of lastLines) {
235
- console.log(chalk_1.default.gray(` ${line}`));
201
+ console.log(chalk.gray(` ${line}`));
236
202
  }
237
203
  }
238
204
  }
239
205
  if (fs.existsSync(errorLogPath)) {
240
206
  const errorContent = fs.readFileSync(errorLogPath, 'utf8').trim();
241
207
  if (errorContent) {
242
- console.log(chalk_1.default.red(' Recent errors:'));
208
+ console.log(chalk.red(' Recent errors:'));
243
209
  errorContent
244
210
  .split('\n')
245
211
  .slice(-3)
246
212
  .forEach((line) => {
247
213
  if (line.trim())
248
- console.log(chalk_1.default.red(` ${line}`));
214
+ console.log(chalk.red(` ${line}`));
249
215
  });
250
216
  }
251
217
  }
252
218
  }
253
219
  catch (error) {
254
220
  const err = error;
255
- console.error(chalk_1.default.red('Failed to check circadian lighting service status:'), err.message);
221
+ console.error(chalk.red('Failed to check circadian lighting service status:'), err.message);
256
222
  }
257
223
  }));
258
224
  // Start service
@@ -263,12 +229,12 @@ function registerService(program, deps) {
263
229
  const plistName = 'com.hmmfn.amaran.circadian-service';
264
230
  try {
265
231
  await runCommand('launchctl', ['start', plistName]);
266
- console.log(chalk_1.default.green('✓ Circadian lighting service started'));
232
+ console.log(chalk.green('✓ Circadian lighting service started'));
267
233
  appendServiceLog('Service start requested');
268
234
  }
269
235
  catch (error) {
270
236
  const err = error;
271
- console.error(chalk_1.default.red('Failed to start circadian lighting service:'), err.message);
237
+ console.error(chalk.red('Failed to start circadian lighting service:'), err.message);
272
238
  }
273
239
  }));
274
240
  // Stop service
@@ -279,12 +245,12 @@ function registerService(program, deps) {
279
245
  const plistName = 'com.hmmfn.amaran.circadian-service';
280
246
  try {
281
247
  await runCommand('launchctl', ['stop', plistName]);
282
- console.log(chalk_1.default.green('✓ Circadian lighting service stopped'));
248
+ console.log(chalk.green('✓ Circadian lighting service stopped'));
283
249
  appendServiceLog('Service stop requested');
284
250
  }
285
251
  catch (error) {
286
252
  const err = error;
287
- console.error(chalk_1.default.red('Failed to stop circadian lighting service:'), err.message);
253
+ console.error(chalk.red('Failed to stop circadian lighting service:'), err.message);
288
254
  }
289
255
  }));
290
256
  // Logs command
@@ -296,19 +262,19 @@ function registerService(program, deps) {
296
262
  .action(asyncCommand(async (options) => {
297
263
  const homeDir = process.env.HOME;
298
264
  if (!homeDir) {
299
- console.error(chalk_1.default.red('HOME environment variable not set'));
265
+ console.error(chalk.red('HOME environment variable not set'));
300
266
  process.exit(1);
301
267
  }
302
268
  const logFile = options.errors ? 'amaran-circadian-service-error.log' : 'amaran-circadian-service.log';
303
269
  const logPath = path.join(homeDir, 'Library', 'Logs', logFile);
304
270
  if (!fs.existsSync(logPath)) {
305
- console.log(chalk_1.default.yellow(`No ${options.errors ? 'error ' : ''}logs found`));
271
+ console.log(chalk.yellow(`No ${options.errors ? 'error ' : ''}logs found`));
306
272
  return;
307
273
  }
308
274
  try {
309
275
  if (options.follow) {
310
- console.log(chalk_1.default.blue(`Following ${logFile}... (Ctrl+C to stop)`));
311
- (0, node_child_process_1.spawn)('tail', ['-f', logPath], { stdio: 'inherit' });
276
+ console.log(chalk.blue(`Following ${logFile}... (Ctrl+C to stop)`));
277
+ spawn('tail', ['-f', logPath], { stdio: 'inherit' });
312
278
  }
313
279
  else {
314
280
  const content = fs.readFileSync(logPath, 'utf8');
@@ -317,7 +283,7 @@ function registerService(program, deps) {
317
283
  }
318
284
  catch (error) {
319
285
  const err = error;
320
- console.error(chalk_1.default.red('Failed to read logs:'), err.message);
286
+ console.error(chalk.red('Failed to read logs:'), err.message);
321
287
  }
322
288
  }));
323
289
  }
@@ -337,13 +303,13 @@ function appendServiceLog(message) {
337
303
  }
338
304
  catch (error) {
339
305
  const err = error;
340
- console.error(chalk_1.default.red('Failed to write to service log:'), err.message);
306
+ console.error(chalk.red('Failed to write to service log:'), err.message);
341
307
  }
342
308
  }
343
309
  // Helper function to run shell commands
344
310
  function runCommand(command, args) {
345
311
  return new Promise((resolve, reject) => {
346
- const child = (0, node_child_process_1.spawn)(command, args, { stdio: 'pipe' });
312
+ const child = spawn(command, args, { stdio: 'pipe' });
347
313
  let stdout = '';
348
314
  let stderr = '';
349
315
  child.stdout.on('data', (data) => {
@@ -362,5 +328,5 @@ function runCommand(command, args) {
362
328
  });
363
329
  });
364
330
  }
365
- exports.default = registerService;
331
+ export default registerService;
366
332
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAItC,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,IAAiB;IACjE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,MAAM,cAAc,GAAG,OAAO;SAC3B,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,uDAAuD,CAAC,CAAC;IAExE,kBAAkB;IAClB,cAAc;SACX,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iFAAiF,CAAC;SAC9F,MAAM,CAAC,0BAA0B,EAAE,mCAAmC,EAAE,IAAI,CAAC;SAC7E,MAAM,CACL,qBAAqB,EACrB,+JAA+J,EAC/J,MAAM,CACP;SACA,MAAM,CACL,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QAC7C,yBAAyB;QACzB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QAED,4DAA4D;QAC5D,IAAI,OAAe,CAAC;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,OAAO,GAAG,UAAU,CAAC;gBACrB,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACjD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAElD,gCAAgC;YAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,oCAAoC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,8BAA8B;QAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,YAAY,GAAG;;;;;cAKf,SAAS;;;kBAGL,QAAQ;kBACR,OAAO;;;kBAGP,SAAS;;;eAGZ,QAAQ;;;;;;cAMT,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,8BAA8B,CAAC;;cAEjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oCAAoC,CAAC;MAE/D,CAAC,QAAQ;YACP,CAAC,CAAC;cACI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW;YACpD,CAAC,CAAC,EACN;;SAEK,CAAC;QAEF,IAAI,CAAC;YACH,mBAAmB;YACnB,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC,CAAC;YAEjE,mBAAmB;YACnB,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,QAAQ,UAAU,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,oCAAoC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG,gBAAgB,CACd,sBAAsB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,cAAc,QAAQ,WAAW,SAAS,EAAE,CAChG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEJ,oBAAoB;IACpB,cAAc;SACX,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CACL,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,oCAAoC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QAEtF,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,qBAAqB;gBACrB,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrD,wBAAwB;gBACxB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;gBAClF,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEJ,iBAAiB;IACjB,cAAc;SACX,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CACL,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,oCAAoC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QACtF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC;QAEjG,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YAED,6BAA6B;YAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAE5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;YAEtC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAE9D,6BAA6B;gBAC7B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClE,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC3C,YAAY;yBACT,KAAK,CAAC,IAAI,CAAC;yBACX,KAAK,CAAC,CAAC,CAAC,CAAC;yBACT,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;4BAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzD,CAAC,CAAC,CAAC;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEJ,gBAAgB;IAChB,cAAc;SACX,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CACL,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,oCAAoC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEJ,eAAe;IACf,cAAc;SACX,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CACL,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,oCAAoC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEJ,eAAe;IACf,cAAc;SACX,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;SACjD,MAAM,CACL,YAAY,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,8BAA8B,CAAC;QACvG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,sBAAsB,CAAC,CAAC,CAAC;gBACpE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,eAAe,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Command } from 'commander';
2
- import type { CommandDeps } from '../types';
2
+ import type { CommandDeps } from '../types.js';
3
3
  export declare function registerSimulateSchedule(program: Command, deps: CommandDeps): void;
4
4
  export default registerSimulateSchedule;
5
5
  //# sourceMappingURL=simulateSchedule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulateSchedule.d.ts","sourceRoot":"","sources":["../../src/commands/simulateSchedule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAC;AAE5D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAkO3E;AAED,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"simulateSchedule.d.ts","sourceRoot":"","sources":["../../src/commands/simulateSchedule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAyP3E;AAED,eAAe,wBAAwB,CAAC"}
@@ -1,44 +1,5 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.registerSimulateSchedule = registerSimulateSchedule;
40
- const chalk_1 = __importDefault(require("chalk"));
41
- function registerSimulateSchedule(program, deps) {
1
+ import chalk from 'chalk';
2
+ export function registerSimulateSchedule(program, deps) {
42
3
  const { createController, findDevice, asyncCommand, loadConfig } = deps;
43
4
  program
44
5
  .command('simulate-schedule')
@@ -52,10 +13,11 @@ function registerSimulateSchedule(program, deps) {
52
13
  .option('--curve <curve>', 'Curve type for CCT calculation (hann, wider-middle-small, wider-middle-medium, wider-middle-large, cie-daylight, sun-altitude, perez-daylight, default: hann)', 'hann')
53
14
  .option('--duration <seconds>', 'Simulation duration to compress full day (default: 10 seconds)', '10')
54
15
  .action(asyncCommand(async (deviceQuery, options) => {
55
- const { getLocationFromIP } = await Promise.resolve().then(() => __importStar(require('../geoipUtil')));
56
- const { calculateCCT, CurveType, parseCurveType } = await Promise.resolve().then(() => __importStar(require('../cctUtil')));
57
- const { CCT_DEFAULTS, DEVICE_DEFAULTS, VALIDATION_RANGES, ERROR_MESSAGES } = await Promise.resolve().then(() => __importStar(require('../constants')));
58
- const { getTimes } = await Promise.resolve().then(() => __importStar(require('suncalc')));
16
+ const { getLocationFromIP } = await import('../geoipUtil.js');
17
+ const { calculateCCT, CurveType, parseCurveType } = await import('../cctUtil.js');
18
+ const { CCT_DEFAULTS, DEVICE_DEFAULTS, VALIDATION_RANGES, ERROR_MESSAGES } = await import('../constants.js');
19
+ const SunCalc = (await import('suncalc')).default;
20
+ const { getTimes } = SunCalc;
59
21
  let lat;
60
22
  let lon;
61
23
  let source = '';
@@ -64,7 +26,7 @@ function registerSimulateSchedule(program, deps) {
64
26
  // Validate duration (how long to compress the full day into)
65
27
  const duration = parseInt((options.duration ?? '60'), 10);
66
28
  if (Number.isNaN(duration) || duration < 1) {
67
- console.error(chalk_1.default.red(ERROR_MESSAGES.invalidDuration));
29
+ console.error(chalk.red(ERROR_MESSAGES.invalidDuration));
68
30
  process.exit(1);
69
31
  }
70
32
  // Validate curve option
@@ -74,7 +36,7 @@ function registerSimulateSchedule(program, deps) {
74
36
  curveType = parseCurveType(options.curve);
75
37
  }
76
38
  catch (error) {
77
- console.error(chalk_1.default.red(error.message));
39
+ console.error(chalk.red(error.message));
78
40
  process.exit(1);
79
41
  }
80
42
  }
@@ -86,11 +48,11 @@ function registerSimulateSchedule(program, deps) {
86
48
  lat = parseFloat(options.lat);
87
49
  lon = parseFloat(options.lon);
88
50
  if (Number.isNaN(lat) || lat < VALIDATION_RANGES.latitude.min || lat > VALIDATION_RANGES.latitude.max) {
89
- console.error(chalk_1.default.red(ERROR_MESSAGES.invalidLatitude));
51
+ console.error(chalk.red(ERROR_MESSAGES.invalidLatitude));
90
52
  process.exit(1);
91
53
  }
92
54
  if (Number.isNaN(lon) || lon < VALIDATION_RANGES.longitude.min || lon > VALIDATION_RANGES.longitude.max) {
93
- console.error(chalk_1.default.red(ERROR_MESSAGES.invalidLongitude));
55
+ console.error(chalk.red(ERROR_MESSAGES.invalidLongitude));
94
56
  process.exit(1);
95
57
  }
96
58
  source = 'manual';
@@ -109,14 +71,14 @@ function registerSimulateSchedule(program, deps) {
109
71
  const data = await res.json();
110
72
  const location = getLocationFromIP(data.ip);
111
73
  if (!location || !location.ll) {
112
- console.error(chalk_1.default.red(ERROR_MESSAGES.locationUnavailable));
74
+ console.error(chalk.red(ERROR_MESSAGES.locationUnavailable));
113
75
  process.exit(1);
114
76
  }
115
77
  [lat, lon] = location.ll;
116
78
  source = `geoip (${data.ip})`;
117
79
  }
118
80
  catch (_err) {
119
- console.error(chalk_1.default.red(ERROR_MESSAGES.locationUnavailable));
81
+ console.error(chalk.red(ERROR_MESSAGES.locationUnavailable));
120
82
  process.exit(1);
121
83
  }
122
84
  }
@@ -124,20 +86,20 @@ function registerSimulateSchedule(program, deps) {
124
86
  const controller = await createController(options.url, options.clientId, options.debug);
125
87
  const device = findDevice(controller, deviceQuery);
126
88
  if (!device) {
127
- console.error(chalk_1.default.red(ERROR_MESSAGES.deviceNotFound(deviceQuery)));
89
+ console.error(chalk.red(ERROR_MESSAGES.deviceNotFound(deviceQuery)));
128
90
  await controller.disconnect();
129
91
  process.exit(1);
130
92
  }
131
93
  const displayName = device.device_name || device.name || device.id || device.node_id;
132
94
  const nodeId = device.node_id;
133
- console.log(chalk_1.default.blue.bold('\n═══════════════════════════════════════════════════════════'));
134
- console.log(chalk_1.default.blue.bold(' CCT Schedule Simulation'));
135
- console.log(chalk_1.default.blue.bold('═══════════════════════════════════════════════════════════\n'));
136
- console.log(chalk_1.default.cyan(`Device: ${displayName} (${nodeId})`));
137
- console.log(chalk_1.default.cyan(`Location: ${lat.toFixed(4)}°, ${lon.toFixed(4)}° (${source})`));
138
- console.log(chalk_1.default.cyan(`Simulation Duration: ${duration} second(s)`));
139
- console.log(chalk_1.default.cyan(`Update Interval: ${updateInterval}ms`));
140
- console.log(chalk_1.default.cyan(`Curve: ${curveType}\n`));
95
+ console.log(chalk.blue('\n═══════════════════════════════════════════════════════════'));
96
+ console.log(chalk.blue(' CCT Schedule Simulation'));
97
+ console.log(chalk.blue('═══════════════════════════════════════════════════════════\n'));
98
+ console.log(chalk.cyan(`Device: ${displayName} (${nodeId})`));
99
+ console.log(chalk.cyan(`Location: ${lat.toFixed(4)}°, ${lon.toFixed(4)}° (${source})`));
100
+ console.log(chalk.cyan(`Simulation Duration: ${duration} second(s)`));
101
+ console.log(chalk.cyan(`Update Interval: ${updateInterval}ms`));
102
+ console.log(chalk.cyan(`Curve: ${curveType}\n`));
141
103
  // Load optional bounds from config
142
104
  const cfg = typeof loadConfig === 'function' ? (loadConfig() ?? {}) : {};
143
105
  const clamp = (v, lo, hi) => Math.min(hi, Math.max(lo, v));
@@ -157,8 +119,9 @@ function registerSimulateSchedule(program, deps) {
157
119
  const maxPctCfg = typeof maxPctRaw === 'number' ? maxPctRaw : CCT_DEFAULTS.intensityMaxPct;
158
120
  const loPct = clamp(Math.min(minPctCfg, maxPctCfg), VALIDATION_RANGES.intensity.min, VALIDATION_RANGES.intensity.max);
159
121
  const hiPct = clamp(Math.max(minPctCfg, maxPctCfg), VALIDATION_RANGES.intensity.min, VALIDATION_RANGES.intensity.max);
160
- console.log(chalk_1.default.gray(`CCT Range: ${Math.min(loK, hiK)}K - ${Math.max(loK, hiK)}K`));
161
- console.log(chalk_1.default.gray(`Intensity Range: ${loPct}% - ${hiPct}%\n`));
122
+ const intensityMultMap = cfg.intensityMultiplier;
123
+ console.log(chalk.gray(`CCT Range: ${Math.min(loK, hiK)}K - ${Math.max(loK, hiK)}K`));
124
+ console.log(chalk.gray(`Intensity Range: ${loPct}% - ${hiPct}%\n`));
162
125
  // Calculate the full day schedule (nightEnd to night)
163
126
  const today = new Date();
164
127
  const times = getTimes(today, lat, lon);
@@ -167,7 +130,7 @@ function registerSimulateSchedule(program, deps) {
167
130
  const nightEnd = times.nightEnd;
168
131
  const night = times.night;
169
132
  if (!nightEnd || !night || Number.isNaN(nightEnd.getTime()) || Number.isNaN(night.getTime())) {
170
- console.error(chalk_1.default.red(ERROR_MESSAGES.nightTimesUnavailable));
133
+ console.error(chalk.red(ERROR_MESSAGES.nightTimesUnavailable));
171
134
  await controller.disconnect();
172
135
  process.exit(1);
173
136
  }
@@ -178,7 +141,7 @@ function registerSimulateSchedule(program, deps) {
178
141
  // Calculate how many updates we'll do
179
142
  const totalUpdates = Math.floor((duration * 1000) / updateInterval);
180
143
  const timeStepMs = dayDurationMs / totalUpdates;
181
- console.log(chalk_1.default.yellow(`Simulating full day cycle in ${duration} second(s) with ${totalUpdates} updates\n`));
144
+ console.log(chalk.yellow(`Simulating full day cycle in ${duration} second(s) with ${totalUpdates} updates\n`));
182
145
  const runSimulation = async () => {
183
146
  for (let i = 0; i <= totalUpdates; i++) {
184
147
  // Calculate the simulated time for this update
@@ -190,14 +153,31 @@ function registerSimulateSchedule(program, deps) {
190
153
  intensityMaxPct: hiPct,
191
154
  }, CurveType[curveType]);
192
155
  const percent = Math.round((result.intensity / 10) * 10) / 10;
156
+ let targetIntensity = percent;
157
+ let multiplierApplied = false;
158
+ // Check for intensity multiplier
159
+ if (intensityMultMap) {
160
+ const mult = intensityMultMap[nodeId] ?? (device.id ? intensityMultMap[device.id] : undefined);
161
+ if (mult !== undefined && typeof mult === 'number') {
162
+ targetIntensity = Math.round(percent * mult);
163
+ targetIntensity = Math.max(0, Math.min(100, targetIntensity));
164
+ multiplierApplied = true;
165
+ }
166
+ }
193
167
  const progress = Math.round((i / totalUpdates) * 100);
194
168
  const timeStr = simulatedTime.toLocaleTimeString(undefined, {
195
169
  hour: '2-digit',
196
170
  minute: '2-digit',
197
171
  });
198
- console.log(chalk_1.default.white(`[${progress}% | ${timeStr}] `) +
199
- chalk_1.default.green(`Setting ${displayName} to ${result.cct}K at ${percent}%`));
200
- controller.setCCT(nodeId, result.cct, result.intensity);
172
+ if (multiplierApplied) {
173
+ console.log(chalk.gray(`[${progress}% | ${timeStr}] `) +
174
+ chalk.green(`Setting ${displayName} to ${result.cct}K at ${targetIntensity}% (multiplied)`));
175
+ }
176
+ else {
177
+ console.log(chalk.gray(`[${progress}% | ${timeStr}] `) +
178
+ chalk.green(`Setting ${displayName} to ${result.cct}K at ${targetIntensity}%`));
179
+ }
180
+ controller.setCCT(nodeId, result.cct, result.intensity * (targetIntensity / percent || 1));
201
181
  // Wait for the next update (except for the last one)
202
182
  if (i < totalUpdates) {
203
183
  await new Promise((resolve) => setTimeout(resolve, updateInterval));
@@ -206,14 +186,14 @@ function registerSimulateSchedule(program, deps) {
206
186
  };
207
187
  // Handle graceful shutdown
208
188
  process.on('SIGINT', async () => {
209
- console.log(chalk_1.default.yellow('\n\nSimulation stopped by user'));
189
+ console.log(chalk.yellow('\n\nSimulation stopped by user'));
210
190
  await controller.disconnect();
211
191
  process.exit(0);
212
192
  });
213
193
  await runSimulation();
214
- console.log(chalk_1.default.green('\nSimulation completed'));
194
+ console.log(chalk.green('\nSimulation completed'));
215
195
  await controller.disconnect();
216
196
  }));
217
197
  }
218
- exports.default = registerSimulateSchedule;
198
+ export default registerSimulateSchedule;
219
199
  //# sourceMappingURL=simulateSchedule.js.map