@nahisaho/musubix-core 1.0.4 → 1.0.6

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.
@@ -331,46 +331,140 @@ export function registerDesignCommand(program) {
331
331
  function generateC4Model(content, level) {
332
332
  const elements = [];
333
333
  const relationships = [];
334
- // Extract entities from content
335
- const systemMatches = content.match(/\b(?:system|service|application|component|module)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
336
- const actorMatches = content.match(/\b(?:user|admin|client|actor)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
337
334
  const seenIds = new Set();
338
- for (const match of actorMatches) {
339
- const name = match.split(/\s+/).pop()?.replace(/["']/g, '') || 'Unknown';
340
- const id = `person-${name.toLowerCase()}`;
341
- if (!seenIds.has(id)) {
342
- seenIds.add(id);
335
+ // Check if this is an EARS requirements document
336
+ const isEarsDoc = content.includes('EARS') || content.includes('SHALL') || content.includes('REQ-');
337
+ if (isEarsDoc) {
338
+ // Extract components from EARS requirements
339
+ const contentLower = content.toLowerCase();
340
+ // Add user/actor if mentioned
341
+ if (contentLower.includes('user') || contentLower.includes('ユーザー')) {
343
342
  elements.push({
344
- id,
345
- name,
346
- description: `${name} user/actor`,
343
+ id: 'user',
344
+ name: 'User',
345
+ description: 'System user who interacts with the application',
347
346
  type: 'person',
348
347
  });
349
348
  }
350
- }
351
- for (const match of systemMatches) {
352
- const words = match.split(/\s+/);
353
- const type = words[0].toLowerCase();
354
- const name = words.pop()?.replace(/["']/g, '') || 'Unknown';
355
- const id = `${type}-${name.toLowerCase()}`;
356
- if (!seenIds.has(id)) {
357
- seenIds.add(id);
349
+ // Infer system components from EARS requirements
350
+ const componentInferences = [
351
+ { keywords: ['task', 'タスク'], name: 'TaskService', desc: 'Manages task lifecycle and operations' },
352
+ { keywords: ['notification', 'notify', 'alert', '通知'], name: 'NotificationService', desc: 'Handles user notifications and alerts' },
353
+ { keywords: ['persist', 'store', 'save', 'storage', '保存', '永続'], name: 'DataRepository', desc: 'Handles data persistence and storage' },
354
+ { keywords: ['authenticate', 'auth', 'login', '認証'], name: 'AuthService', desc: 'Manages authentication and authorization' },
355
+ { keywords: ['priority', '優先'], name: 'PriorityManager', desc: 'Manages item prioritization' },
356
+ { keywords: ['deadline', 'schedule', '期限', 'スケジュール'], name: 'ScheduleService', desc: 'Manages scheduling and deadlines' },
357
+ { keywords: ['archive', 'アーカイブ'], name: 'ArchiveService', desc: 'Handles completed item archiving' },
358
+ { keywords: ['validation', 'validate', 'confirm', '確認'], name: 'ValidationService', desc: 'Validates user input and actions' },
359
+ ];
360
+ for (const inference of componentInferences) {
361
+ if (inference.keywords.some(kw => contentLower.includes(kw))) {
362
+ const id = inference.name.toLowerCase().replace(/service|manager|repository/gi, '');
363
+ if (!seenIds.has(id)) {
364
+ seenIds.add(id);
365
+ elements.push({
366
+ id,
367
+ name: inference.name,
368
+ description: inference.desc,
369
+ type: level === 'context' ? 'software_system' : level === 'container' ? 'container' : 'component',
370
+ technology: 'TypeScript',
371
+ });
372
+ }
373
+ }
374
+ }
375
+ // If no specific components found, create a generic main service
376
+ if (elements.filter(e => e.type !== 'person').length === 0) {
358
377
  elements.push({
359
- id,
360
- name,
361
- description: `${name} ${type}`,
362
- type: level === 'context' ? 'software_system' : level === 'container' ? 'container' : 'component',
378
+ id: 'main-service',
379
+ name: 'MainService',
380
+ description: 'Core application service',
381
+ type: level === 'context' ? 'software_system' : 'component',
382
+ technology: 'TypeScript',
363
383
  });
364
384
  }
385
+ // Generate relationships based on common patterns
386
+ const persons = elements.filter(e => e.type === 'person');
387
+ const services = elements.filter(e => e.type !== 'person');
388
+ // Users interact with services
389
+ for (const person of persons) {
390
+ for (const service of services) {
391
+ if (service.name.includes('Service') || service.name.includes('Manager')) {
392
+ relationships.push({
393
+ source: person.id,
394
+ target: service.id,
395
+ description: 'uses',
396
+ });
397
+ }
398
+ }
399
+ }
400
+ // Services interact with repository
401
+ const repository = services.find(s => s.name.includes('Repository'));
402
+ if (repository) {
403
+ for (const service of services) {
404
+ if (service.id !== repository.id && !service.name.includes('Notification')) {
405
+ relationships.push({
406
+ source: service.id,
407
+ target: repository.id,
408
+ description: 'stores data in',
409
+ });
410
+ }
411
+ }
412
+ }
413
+ // Notification service receives events from other services
414
+ const notificationService = services.find(s => s.name.includes('Notification'));
415
+ if (notificationService) {
416
+ for (const service of services) {
417
+ if (service.id !== notificationService.id && service.name.includes('Service')) {
418
+ relationships.push({
419
+ source: service.id,
420
+ target: notificationService.id,
421
+ description: 'sends notifications via',
422
+ });
423
+ }
424
+ }
425
+ }
365
426
  }
366
- // Generate relationships
367
- const elementIds = elements.map(e => e.id);
368
- for (let i = 0; i < elementIds.length - 1; i++) {
369
- relationships.push({
370
- source: elementIds[i],
371
- target: elementIds[i + 1],
372
- description: 'interacts with',
373
- });
427
+ else {
428
+ // Original logic for non-EARS documents
429
+ const systemMatches = content.match(/\b(?:system|service|application|component|module)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
430
+ const actorMatches = content.match(/\b(?:user|admin|client|actor)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
431
+ for (const match of actorMatches) {
432
+ const name = match.split(/\s+/).pop()?.replace(/["']/g, '') || 'Unknown';
433
+ const id = `person-${name.toLowerCase()}`;
434
+ if (!seenIds.has(id)) {
435
+ seenIds.add(id);
436
+ elements.push({
437
+ id,
438
+ name,
439
+ description: `${name} user/actor`,
440
+ type: 'person',
441
+ });
442
+ }
443
+ }
444
+ for (const match of systemMatches) {
445
+ const words = match.split(/\s+/);
446
+ const type = words[0].toLowerCase();
447
+ const name = words.pop()?.replace(/["']/g, '') || 'Unknown';
448
+ const id = `${type}-${name.toLowerCase()}`;
449
+ if (!seenIds.has(id)) {
450
+ seenIds.add(id);
451
+ elements.push({
452
+ id,
453
+ name,
454
+ description: `${name} ${type}`,
455
+ type: level === 'context' ? 'software_system' : level === 'container' ? 'container' : 'component',
456
+ });
457
+ }
458
+ }
459
+ // Generate relationships for non-EARS documents
460
+ const elementIds = elements.map(e => e.id);
461
+ for (let i = 0; i < elementIds.length - 1; i++) {
462
+ relationships.push({
463
+ source: elementIds[i],
464
+ target: elementIds[i + 1],
465
+ description: 'interacts with',
466
+ });
467
+ }
374
468
  }
375
469
  return {
376
470
  level,
@@ -1 +1 @@
1
- {"version":3,"file":"design.js","sourceRoot":"","sources":["../../../src/cli/commands/design.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../../../src/cli/commands/design.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAyHtE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,CAAC,EAAE,iCAAiC;IACpC,CAAC,EAAE,uBAAuB;IAC1B,CAAC,EAAE,+BAA+B;IAClC,CAAC,EAAE,iCAAiC;IACpC,CAAC,EAAE,gCAAgC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAkC;IACpD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,8EAA8E;QACtF,aAAa,EAAE,CAAC,kCAAkC,EAAE,2DAA2D,CAAC;QAChH,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,2BAA2B,EAAE,gCAAgC,CAAC;YACzE,QAAQ,EAAE,CAAC,iDAAiD,CAAC;SAC9D;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,sCAAsC;QAC9C,aAAa,EAAE,CAAC,gCAAgC,EAAE,8BAA8B,CAAC;QACjF,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,oCAAoC,EAAE,mBAAmB,CAAC;YACrE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;SACvD;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,iDAAiD;QACzD,aAAa,EAAE,CAAC,iDAAiD,EAAE,mCAAmC,CAAC;QACvG,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;YACvD,QAAQ,EAAE,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SAChE;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,6DAA6D;QACrE,aAAa,EAAE,CAAC,sCAAsC,EAAE,kCAAkC,CAAC;QAC3F,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,mCAAmC,EAAE,mCAAmC,CAAC;YACpF,QAAQ,EAAE,CAAC,6BAA6B,EAAE,qCAAqC,CAAC;SACjF;KACF;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,oEAAoE;QAC5E,aAAa,EAAE,CAAC,gDAAgD,EAAE,8CAA8C,CAAC;QACjH,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;YAC5D,QAAQ,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;SAC3D;KACF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kCAAkC,CAAC,CAAC;IAEnD,kBAAkB;IAClB,MAAM;SACH,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,qBAAqB,EAAE,aAAa,CAAC;SAC5C,MAAM,CAAC,uBAAuB,EAAE,eAAe,EAAE,UAAU,CAAC;SAC5D,MAAM,CAAC,qBAAqB,EAAE,UAAU,EAAE,WAAW,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,YAAoB,EAAE,OAAsB,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEjD,yCAAyC;YACzC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAmB;gBAC7B,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;gBACb,QAAQ;gBACR,YAAY;gBACZ,OAAO,EAAE,aAAa,OAAO,CAAC,KAAK,IAAI,WAAW,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,WAAW;aACnG,CAAC;YAEF,SAAS;YACT,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEtD,IAAI,aAAqB,CAAC;gBAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjC,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACzC,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;oBACxD,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACxE,CAAC;gBAED,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAED,wDAAwD;gBACxD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBAEnC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACvE,yBAAyB,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;gBAEnE,qBAAqB;gBACrB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAC1F,MAAM,SAAS,CAAC,UAAU,EAAE,4BAA4B,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjF,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACnC,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,+BAAgC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,kBAAkB;IAClB,MAAM;SACH,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,EAAE,KAAK,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,QAA+B,EAAE,EAAE;QACjE,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,4CAA4C;YAC5C,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC1B,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,OAAO,CAAC;YACpB,CAAC;YAED,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,eAAe,GAAG,8BAA8B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE1E,MAAM,MAAM,GAA2B;gBACrC,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE,yBAAyB;oBACnC,UAAU,EAAE,CAAC,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,eAAe;gBACf,OAAO,EAAE,YAAY,QAAQ,CAAC,MAAM,sBAAsB;aAC3D,CAAC;YAEF,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,+BAAgC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,kBAAkB;IAClB,MAAM;SACH,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6B,EAAE,EAAE;QAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAElD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;YAE9E,MAAM,MAAM,GAA2B;gBACrC,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBACnD,eAAe,EAAE,UAAU;gBAC3B,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC;oBAC9B,CAAC,CAAC,6BAA6B;oBAC/B,CAAC,CAAC,WAAW,UAAU,CAAC,MAAM,mBAAmB;aACpD,CAAC;YAEF,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;gBACtE,CAAC,CAAC,QAAQ,CAAC,OAAO;gBAClB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,wBAAyB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,YAAY;IACZ,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,EAAE,WAAW,CAAC;SACzF,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,EAAE,SAAS,CAAC;SAC9E,MAAM,CAAC,qBAAqB,EAAE,aAAa,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAsB,EAAE,EAAE;QACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAElD,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;YAErE,IAAI,OAAe,CAAC;YACpB,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,aAAa;IACb,MAAM;SACH,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,YAAY,EAAE,UAAU,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAA+D,EAAE,EAAE;QAClG,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;YACvE,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5C,sBAAsB;YACtB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,KAAK,GAAa,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB;YACrB,CAAC;YACD,MAAM,UAAU,GAAG,KAAK;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;iBAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAElD,MAAM,GAAG,GAAgB;gBACvB,EAAE,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBAChD,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,EAAG,OAAO,CAAC,MAAgC,IAAI,UAAU;gBAC/D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,sBAAsB;gBAClD,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,CAAC,qDAAqD,CAAC;gBACrE,mBAAmB,EAAE,EAAE;aACxB,CAAC;YAEF,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YACrE,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAEhD,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;YACrE,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,KAAc;IACtD,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,aAAa,GAAqB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,iDAAiD;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpG,IAAI,SAAS,EAAE,CAAC;QACd,4CAA4C;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3C,8BAA8B;QAC9B,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,gDAAgD;gBAC7D,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,MAAM,mBAAmB,GAAG;YAC1B,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,uCAAuC,EAAE;YACjG,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,uCAAuC,EAAE;YACnI,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sCAAsC,EAAE;YACvI,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,0CAA0C,EAAE;YAC5H,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,6BAA6B,EAAE;YAC9F,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,kCAAkC,EAAE;YACzH,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,kCAAkC,EAAE;YACpG,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kCAAkC,EAAE;SAC/H,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;YAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,QAAQ,CAAC,IAAI,CAAC;wBACZ,EAAE;wBACF,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,WAAW,EAAE,SAAS,CAAC,IAAI;wBAC3B,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;wBACjG,UAAU,EAAE,YAAY;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW;gBAC3D,UAAU,EAAE,YAAY;aACzB,CAAC,CAAC;QACL,CAAC;QAED,kDAAkD;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE3D,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzE,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE,MAAM,CAAC,EAAE;wBACjB,MAAM,EAAE,OAAO,CAAC,EAAE;wBAClB,WAAW,EAAE,MAAM;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC3E,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE,OAAO,CAAC,EAAE;wBAClB,MAAM,EAAE,UAAU,CAAC,EAAE;wBACrB,WAAW,EAAE,gBAAgB;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QAChF,IAAI,mBAAmB,EAAE,CAAC;YACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,EAAE,KAAK,mBAAmB,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9E,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE,OAAO,CAAC,EAAE;wBAClB,MAAM,EAAE,mBAAmB,CAAC,EAAE;wBAC9B,WAAW,EAAE,yBAAyB;qBACvC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,IAAI,EAAE,CAAC;QAC9H,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,IAAI,EAAE,CAAC;QAEzG,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;YACzE,MAAM,EAAE,GAAG,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE;oBACF,IAAI;oBACJ,WAAW,EAAE,GAAG,IAAI,aAAa;oBACjC,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;YAC5D,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE;oBACF,IAAI;oBACJ,WAAW,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;oBAC9B,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;iBAClG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;gBACzB,WAAW,EAAE,gBAAgB;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;QAClE,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3C,+BAA+B;IAC/B,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5G,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1G,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5G,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxH,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChH,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAe,EAAE,KAAc;IAC3D,MAAM,YAAY,GAA0D,EAAE,CAAC;IAE/E,0BAA0B;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAE1D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC;gBAChB,WAAW,EAAE,GAAG;gBAChB,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,eAAuB,EAAE,QAAyB;IACxF,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,eAAe,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,oCAAoC;IACpC,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5G,eAAe,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,aAAqB,EAAE,MAAe;IAI5D,MAAM,UAAU,GAA8C,EAAE,CAAC;IACjE,MAAM,IAAI,GAA+C,EAAE,CAAC;IAE5D,8BAA8B;IAC9B,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAEjD,qCAAqC;IACrC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QACjF,IAAI,MAAM,EAAE,CAAC;YACX,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,GAAG;gBACd,OAAO,EAAE,oCAAoC;gBAC7C,OAAO,EAAE,0CAA0C;gBACnD,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAEhE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC;gBACR,WAAW,EAAE,QAAQ;gBACrB,OAAO,EAAE,sCAAsC;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,OAAO,GAAG,eAAe,KAAK,CAAC,KAAK,uBAAuB,CAAC;IAEhE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACjG,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,OAAO,IAAI,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,OAAO,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC;IACvE,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtC,OAAO,IAAI,KAAK,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC;IACvE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,GAAG,aAAa,CAAC;IAC5B,OAAO,IAAI,SAAS,KAAK,CAAC,KAAK,MAAM,CAAC;IAEtC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,UAAU,OAAO,CAAC,IAAI,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,cAAc,OAAO,CAAC,IAAI,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,IAAI,IAAI,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtC,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,IAAI,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,WAAW,CAAC;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,KAAc,EACd,QAAyB,EACzB,YAAmE;IAEnE,IAAI,MAAM,GAAG,uBAAuB,CAAC;IACrC,MAAM,IAAI,SAAS,KAAK,CAAC,KAAK,MAAM,CAAC;IAErC,MAAM,IAAI,kBAAkB,CAAC;IAC7B,MAAM,IAAI,sCAAsC,CAAC;IACjD,MAAM,IAAI,sCAAsC,CAAC;IACjD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,WAAW,MAAM,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,yBAAyB,CAAC;IACpC,MAAM,IAAI,qCAAqC,CAAC;IAChD,MAAM,IAAI,qCAAqC,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,MAAM,CAAC;IACvE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,0BAA0B,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,IAAI,CAAC;YAClC,MAAM,IAAI,mBAAmB,OAAO,CAAC,QAAQ,IAAI,CAAC;YAClD,MAAM,IAAI,iBAAiB,OAAO,CAAC,MAAM,MAAM,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,uBAAuB,CAAC;QAClC,MAAM,IAAI,oCAAoC,CAAC;QAC/C,MAAM,IAAI,oCAAoC,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,KAAK,CAAC,WAAW,MAAM,KAAK,CAAC,aAAa,MAAM,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAmB;IAC9C,OAAO,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK;;cAE1B,MAAM,CAAC,IAAI;gBACT,MAAM,CAAC,MAAM;;;;EAI3B,MAAM,CAAC,OAAO;;;;EAId,MAAM,CAAC,QAAQ;;;;EAIf,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIjD,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;CAC5G,CAAC;AACF,CAAC;AAyCD;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,KAAc,EACd,QAAyB,EACzB,YAAmE;IAEnE,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,4BAA4B;IAC5B,MAAM,aAAa,GAAG;QACpB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE;QAChE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,6CAA6C,EAAE;QAC3E,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE;QACjE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE;QAChE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE;KAC/D,CAAC;IAEF,iCAAiC;IACjC,WAAW,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,uEAAuE;SACpF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,oCAAoC;IACpC,WAAW,EAAE,CAAC;IACd,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAE9H,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,gDAAgD;YACzD,UAAU,EAAE,kDAAkD;SAC/D,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,+BAA+B;IAC/B,WAAW,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,2CAA2C;YACpD,UAAU,EAAE,gDAAgD;SAC7D,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,wDAAwD;IACxD,WAAW,EAAE,CAAC;IACd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,wCAAwC;YACjD,UAAU,EAAE,mEAAmE;SAChF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,+BAA+B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACjG,CAAC,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,WAAW,EAAE,CAAC;IACd,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,uCAAuC;YAChD,UAAU,EAAE,uDAAuD;SACpE,CAAC,CAAC;QACH,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/B,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG,iEAAiE,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,qCAAqC;IACrC,WAAW,EAAE,CAAC;IACd,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAC1D,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACnB,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;YAC/B,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG,oDAAoD,CAAC;YAC/E,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,yBAAyB,SAAS,kDAAkD;gBAC5G,UAAU,EAAE,qDAAqD;aAClE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM;QAAE,YAAY,EAAE,CAAC;IAE3C,sCAAsC;IACtC,WAAW,EAAE,CAAC;IACd,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,WAAW,GAAG,KAAK,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,OAAO,EAAE,4EAA4E;aACtF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,WAAW;QAAE,YAAY,EAAE,CAAC;IAEhC,qCAAqC;IACrC,WAAW,EAAE,CAAC;IACd,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,WAAW,GAAG,IAAI,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,yCAAyC,MAAM,QAAQ,MAAM,EAAE;oBACxE,UAAU,EAAE,0DAA0D;iBACvE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,WAAW;QAAE,YAAY,EAAE,CAAC;IAEjC,2BAA2B;IAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE3E,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,eAAe,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,eAAe,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,eAAe,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChD,eAAe,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1C,eAAe,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnF,OAAO;QACL,MAAM,EAAE,UAAU,KAAK,CAAC;QACxB,KAAK;QACL,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,eAAe;QACf,sBAAsB,EAAE;YACtB,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC/B,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;YACjC,SAAS,EAAE,KAAK,IAAI,EAAE;SACvB;QACD,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,MAA0B,EAAE,KAAc;IAC3E,IAAI,KAAK;QAAE,OAAO;IAElB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,YAAY,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,UAAU,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,iBAAiB;IACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3G,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3G,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACjH,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,WAAW;IACX,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CAAC,MAA0B;IAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,GAAG,GAAG;;;UAGF,GAAG;;;;;;iBAMI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;gBACxC,MAAM,CAAC,KAAK;wBACJ,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW;;;;;;uBAM1C,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB;4BACrE,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB;yBACtF,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB;;;;;;oCAMhE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;0BACxF,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;kCACtE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;oCAC5E,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;mCAC/E,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;;;;CAIhH,CAAC;IAEA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,GAAG,IAAI,wBAAwB,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAEjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,IAAI,mBAAmB,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,GAAG,IAAI,QAAQ,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;gBAC9C,IAAI,CAAC,CAAC,OAAO;oBAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC;gBACpD,IAAI,CAAC,CAAC,UAAU;oBAAE,GAAG,IAAI,UAAU,CAAC,CAAC,UAAU,IAAI,CAAC;YACtD,CAAC;YACD,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,IAAI,qBAAqB,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,GAAG,IAAI,QAAQ,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;gBAC9C,IAAI,CAAC,CAAC,OAAO;oBAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC;gBACpD,IAAI,CAAC,CAAC,UAAU;oBAAE,GAAG,IAAI,UAAU,CAAC,CAAC,UAAU,IAAI,CAAC;YACtD,CAAC;YACD,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,IAAI,iBAAiB,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,GAAG,IAAI,QAAQ,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;YAChD,CAAC;YACD,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG,IAAI;;CAER,CAAC;IACA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QACzC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,GAAG,IAAI;;;;mBAIU,GAAG;CACrB,CAAC;IAEA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8I1D;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4F/C;AAwED;;GAEG;AACH,iBAAe,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA6BnE;AAuDD;;GAEG;AACH,iBAAS,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAwBjF;AA2FD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,wBAAwB,GACzB,CAAC"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqJ1D;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4F/C;AA8QD;;GAEG;AACH,iBAAe,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA6BnE;AAuDD;;GAEG;AACH,iBAAS,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAwBjF;AA2FD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,wBAAwB,GACzB,CAAC"}
@@ -89,7 +89,7 @@ export function registerTestCommand(program) {
89
89
  // test generate
90
90
  test
91
91
  .command('generate <file>')
92
- .description('Generate tests for source file')
92
+ .description('Generate tests for source file or requirements document')
93
93
  .option('-o, --output <file>', 'Output file')
94
94
  .option('-f, --framework <name>', 'Test framework', 'vitest')
95
95
  .option('-s, --style <style>', 'Test style (unit|integration|e2e)', 'unit')
@@ -100,8 +100,15 @@ export function registerTestCommand(program) {
100
100
  const content = await readFile(filePath, 'utf-8');
101
101
  const framework = options.framework ?? 'vitest';
102
102
  const style = options.style ?? 'unit';
103
- // Parse source file and generate tests
104
- const tests = generateTestsForFile(filePath, content, framework, style);
103
+ // Check if this is an EARS requirements document
104
+ const isEarsDoc = content.includes('EARS') || content.includes('SHALL') || content.includes('REQ-');
105
+ let tests;
106
+ if (isEarsDoc) {
107
+ tests = generateTestsFromRequirements(filePath, content, framework, style);
108
+ }
109
+ else {
110
+ tests = generateTestsForFile(filePath, content, framework, style);
111
+ }
105
112
  // Determine output path
106
113
  let outputPath;
107
114
  if (options.output) {
@@ -110,7 +117,7 @@ export function registerTestCommand(program) {
110
117
  else {
111
118
  const dir = dirname(filePath);
112
119
  const name = basename(filePath, extname(filePath));
113
- const ext = framework === 'pytest' ? '.py' : extname(filePath);
120
+ const ext = framework === 'pytest' ? '.py' : '.ts';
114
121
  outputPath = resolve(dir, '__tests__', `${name}.test${ext}`);
115
122
  }
116
123
  await mkdir(dirname(outputPath), { recursive: true });
@@ -291,6 +298,170 @@ function generateTestsForFile(filePath, content, framework, style) {
291
298
  }
292
299
  return [{ content: lines.join('\n'), testCount }];
293
300
  }
301
+ /**
302
+ * Extract EARS requirements from content
303
+ */
304
+ function extractEarsRequirements(content) {
305
+ const requirements = [];
306
+ // Match EARS requirements from table
307
+ // Format: | REQ-XX-001 | pattern | P0 | description |
308
+ const tableMatches = content.matchAll(/\|\s*(REQ-[\w-]+)\s*\|\s*(\w+)\s*\|\s*(P\d)\s*\|\s*([^|]+)\|/g);
309
+ for (const match of tableMatches) {
310
+ requirements.push({
311
+ id: match[1],
312
+ pattern: match[2].toLowerCase(),
313
+ priority: match[3],
314
+ description: match[4].trim(),
315
+ });
316
+ }
317
+ // Also extract from detailed sections
318
+ // Format: ### REQ-XX-001 (Pattern - P0)
319
+ // > The system SHALL...
320
+ const detailMatches = content.matchAll(/###\s*(REQ-[\w-]+)(?:\s*\((\w+)(?:\s*-\s*(P\d))?\))?[\s\S]*?>\s*(.+?)(?=\n\n|\n###|$)/g);
321
+ for (const match of detailMatches) {
322
+ const existing = requirements.find(r => r.id === match[1]);
323
+ if (!existing) {
324
+ requirements.push({
325
+ id: match[1],
326
+ pattern: (match[2] || 'ubiquitous').toLowerCase(),
327
+ priority: match[3] || 'P1',
328
+ description: match[4].trim(),
329
+ });
330
+ }
331
+ }
332
+ return requirements;
333
+ }
334
+ /**
335
+ * Generate tests from EARS requirements
336
+ */
337
+ function generateTestsFromRequirements(filePath, content, framework, _style) {
338
+ const template = TEST_TEMPLATES[framework] || TEST_TEMPLATES.vitest;
339
+ const filename = basename(filePath, extname(filePath));
340
+ const requirements = extractEarsRequirements(content);
341
+ if (requirements.length === 0) {
342
+ return [{ content: `// No EARS requirements found in ${filename}`, testCount: 0 }];
343
+ }
344
+ const lines = [];
345
+ let testCount = 0;
346
+ // Header
347
+ lines.push(template.header(filename));
348
+ lines.push('');
349
+ lines.push(`/**`);
350
+ lines.push(` * EARS Requirements Test Suite`);
351
+ lines.push(` * Generated from: ${basename(filePath)}`);
352
+ lines.push(` * Total Requirements: ${requirements.length}`);
353
+ lines.push(` */`);
354
+ lines.push('');
355
+ // Group requirements by pattern
356
+ const byPattern = {};
357
+ for (const req of requirements) {
358
+ if (!byPattern[req.pattern]) {
359
+ byPattern[req.pattern] = [];
360
+ }
361
+ byPattern[req.pattern].push(req);
362
+ }
363
+ // Generate tests for each pattern type
364
+ for (const [pattern, reqs] of Object.entries(byPattern)) {
365
+ const patternName = pattern.charAt(0).toUpperCase() + pattern.slice(1);
366
+ lines.push(template.describe(`${patternName} Requirements`));
367
+ lines.push('');
368
+ for (const req of reqs) {
369
+ // Extract key verbs and objects from description
370
+ const descShort = req.description.length > 60
371
+ ? req.description.substring(0, 60) + '...'
372
+ : req.description;
373
+ lines.push(` // ${req.id}: ${descShort}`);
374
+ lines.push(` ${template.describe(req.id)}`);
375
+ // Generate pattern-specific tests
376
+ switch (req.pattern) {
377
+ case 'ubiquitous':
378
+ // SHALL tests - always true requirements
379
+ lines.push(template.it(`should satisfy: ${req.id}`));
380
+ lines.push(` // Requirement: ${req.description}`);
381
+ lines.push(` // TODO: Implement test for ubiquitous requirement`);
382
+ lines.push(` expect(true).toBe(true); // Placeholder`);
383
+ lines.push(' });');
384
+ testCount++;
385
+ break;
386
+ case 'event-driven':
387
+ // WHEN tests - triggered by events
388
+ lines.push(template.it(`should respond when event triggers (${req.id})`));
389
+ lines.push(` // Requirement: ${req.description}`);
390
+ lines.push(` // Pattern: WHEN [trigger] THEN [response]`);
391
+ lines.push(` // TODO: Implement event trigger and verify response`);
392
+ lines.push(` const triggered = false; // Simulate event`);
393
+ lines.push(` expect(triggered).toBe(false); // Should become true after implementation`);
394
+ lines.push(' });');
395
+ testCount++;
396
+ break;
397
+ case 'state-driven':
398
+ // WHILE tests - state-based requirements
399
+ lines.push(template.it(`should maintain behavior while in state (${req.id})`));
400
+ lines.push(` // Requirement: ${req.description}`);
401
+ lines.push(` // Pattern: WHILE [state] MAINTAIN [behavior]`);
402
+ lines.push(` // TODO: Set up state and verify behavior is maintained`);
403
+ lines.push(` const state = 'active';`);
404
+ lines.push(` expect(state).toBe('active'); // Verify state`);
405
+ lines.push(' });');
406
+ testCount++;
407
+ break;
408
+ case 'unwanted':
409
+ // SHALL NOT tests - negative requirements
410
+ lines.push(template.it(`should NOT allow prohibited behavior (${req.id})`));
411
+ lines.push(` // Requirement: ${req.description}`);
412
+ lines.push(` // Pattern: SHALL NOT [prohibited behavior]`);
413
+ lines.push(` // TODO: Attempt prohibited action and verify it's blocked`);
414
+ lines.push(` const prohibited = () => { /* action */ };`);
415
+ lines.push(` // expect(prohibited).toThrow(); // Should throw or return error`);
416
+ lines.push(` expect(true).toBe(true); // Placeholder - implement actual check`);
417
+ lines.push(' });');
418
+ testCount++;
419
+ break;
420
+ case 'optional':
421
+ // IF-THEN tests - conditional requirements
422
+ lines.push(template.it(`should conditionally execute (${req.id})`));
423
+ lines.push(` // Requirement: ${req.description}`);
424
+ lines.push(` // Pattern: IF [condition] THEN [action]`);
425
+ lines.push(` // TODO: Test with condition true and false`);
426
+ lines.push(` const condition = true;`);
427
+ lines.push(` if (condition) {`);
428
+ lines.push(` expect(true).toBe(true); // Action should occur`);
429
+ lines.push(` }`);
430
+ lines.push(' });');
431
+ testCount++;
432
+ break;
433
+ default:
434
+ lines.push(template.it(`should implement ${req.id}`));
435
+ lines.push(` // Requirement: ${req.description}`);
436
+ lines.push(` expect(true).toBe(true); // TODO: Implement`);
437
+ lines.push(' });');
438
+ testCount++;
439
+ }
440
+ // Add priority-based test for P0 requirements
441
+ if (req.priority === 'P0') {
442
+ lines.push(template.it(`[P0 Critical] should be fully implemented (${req.id})`));
443
+ lines.push(` // This is a P0 (critical) requirement - must be implemented`);
444
+ lines.push(` // TODO: Add comprehensive test coverage`);
445
+ lines.push(` expect(true).toBe(true); // Placeholder`);
446
+ lines.push(' });');
447
+ testCount++;
448
+ }
449
+ lines.push(' });'); // Close inner describe
450
+ lines.push('');
451
+ }
452
+ lines.push(template.close); // Close pattern describe
453
+ lines.push('');
454
+ }
455
+ // Add traceability summary
456
+ lines.push('/**');
457
+ lines.push(' * Traceability Matrix');
458
+ lines.push(' * ');
459
+ for (const req of requirements) {
460
+ lines.push(` * ${req.id} -> TST-${req.id.replace('REQ-', '')}`);
461
+ }
462
+ lines.push(' */');
463
+ return [{ content: lines.join('\n'), testCount }];
464
+ }
294
465
  /**
295
466
  * Extract exports from content
296
467
  */