mingpan 0.1.1

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 (231) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -0
  3. package/dist/core/bazi/BaziCore.d.ts +112 -0
  4. package/dist/core/bazi/BaziCore.d.ts.map +1 -0
  5. package/dist/core/bazi/BaziCore.js +606 -0
  6. package/dist/core/bazi/BaziCore.js.map +1 -0
  7. package/dist/core/bazi/SolarTermCalculator.d.ts +46 -0
  8. package/dist/core/bazi/SolarTermCalculator.d.ts.map +1 -0
  9. package/dist/core/bazi/SolarTermCalculator.js +452 -0
  10. package/dist/core/bazi/SolarTermCalculator.js.map +1 -0
  11. package/dist/core/bazi/TrueSolarTime.d.ts +64 -0
  12. package/dist/core/bazi/TrueSolarTime.d.ts.map +1 -0
  13. package/dist/core/bazi/TrueSolarTime.js +210 -0
  14. package/dist/core/bazi/TrueSolarTime.js.map +1 -0
  15. package/dist/core/bazi/ephemerisData.d.ts +10 -0
  16. package/dist/core/bazi/ephemerisData.d.ts.map +1 -0
  17. package/dist/core/bazi/ephemerisData.js +88 -0
  18. package/dist/core/bazi/ephemerisData.js.map +1 -0
  19. package/dist/core/bazi/index.d.ts +8 -0
  20. package/dist/core/bazi/index.d.ts.map +1 -0
  21. package/dist/core/bazi/index.js +30 -0
  22. package/dist/core/bazi/index.js.map +1 -0
  23. package/dist/core/bazi/types.d.ts +116 -0
  24. package/dist/core/bazi/types.d.ts.map +1 -0
  25. package/dist/core/bazi/types.js +7 -0
  26. package/dist/core/bazi/types.js.map +1 -0
  27. package/dist/core/calendar/SolarTermsCalculator.d.ts +33 -0
  28. package/dist/core/calendar/SolarTermsCalculator.d.ts.map +1 -0
  29. package/dist/core/calendar/SolarTermsCalculator.js +111 -0
  30. package/dist/core/calendar/SolarTermsCalculator.js.map +1 -0
  31. package/dist/core/calendar/astronomicalCalendar.d.ts +74 -0
  32. package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -0
  33. package/dist/core/calendar/astronomicalCalendar.js +276 -0
  34. package/dist/core/calendar/astronomicalCalendar.js.map +1 -0
  35. package/dist/core/calendar/calendar.d.ts +81 -0
  36. package/dist/core/calendar/calendar.d.ts.map +1 -0
  37. package/dist/core/calendar/calendar.js +223 -0
  38. package/dist/core/calendar/calendar.js.map +1 -0
  39. package/dist/core/calendar/constants.d.ts +151 -0
  40. package/dist/core/calendar/constants.d.ts.map +1 -0
  41. package/dist/core/calendar/constants.js +97 -0
  42. package/dist/core/calendar/constants.js.map +1 -0
  43. package/dist/core/calendar/julian.d.ts +54 -0
  44. package/dist/core/calendar/julian.d.ts.map +1 -0
  45. package/dist/core/calendar/julian.js +142 -0
  46. package/dist/core/calendar/julian.js.map +1 -0
  47. package/dist/core/calendar/lunarCalendar.d.ts +79 -0
  48. package/dist/core/calendar/lunarCalendar.d.ts.map +1 -0
  49. package/dist/core/calendar/lunarCalendar.js +164 -0
  50. package/dist/core/calendar/lunarCalendar.js.map +1 -0
  51. package/dist/core/calendar/solarTerms.d.ts +105 -0
  52. package/dist/core/calendar/solarTerms.d.ts.map +1 -0
  53. package/dist/core/calendar/solarTerms.js +487 -0
  54. package/dist/core/calendar/solarTerms.js.map +1 -0
  55. package/dist/core/constants/bazi.d.ts +138 -0
  56. package/dist/core/constants/bazi.d.ts.map +1 -0
  57. package/dist/core/constants/bazi.js +332 -0
  58. package/dist/core/constants/bazi.js.map +1 -0
  59. package/dist/core/constants/index.d.ts +6 -0
  60. package/dist/core/constants/index.d.ts.map +1 -0
  61. package/dist/core/constants/index.js +37 -0
  62. package/dist/core/constants/index.js.map +1 -0
  63. package/dist/core/constants/positions.d.ts +27 -0
  64. package/dist/core/constants/positions.d.ts.map +1 -0
  65. package/dist/core/constants/positions.js +39 -0
  66. package/dist/core/constants/positions.js.map +1 -0
  67. package/dist/core/ziwei/BrightnessSystem.d.ts +53 -0
  68. package/dist/core/ziwei/BrightnessSystem.d.ts.map +1 -0
  69. package/dist/core/ziwei/BrightnessSystem.js +278 -0
  70. package/dist/core/ziwei/BrightnessSystem.js.map +1 -0
  71. package/dist/core/ziwei/IztroAdapter.d.ts +78 -0
  72. package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -0
  73. package/dist/core/ziwei/IztroAdapter.js +314 -0
  74. package/dist/core/ziwei/IztroAdapter.js.map +1 -0
  75. package/dist/core/ziwei/MutagenCore.d.ts +81 -0
  76. package/dist/core/ziwei/MutagenCore.d.ts.map +1 -0
  77. package/dist/core/ziwei/MutagenCore.js +246 -0
  78. package/dist/core/ziwei/MutagenCore.js.map +1 -0
  79. package/dist/index.d.ts +13 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +1101 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/output/fortuneTextRenderer.d.ts +63 -0
  84. package/dist/output/fortuneTextRenderer.d.ts.map +1 -0
  85. package/dist/output/fortuneTextRenderer.js +384 -0
  86. package/dist/output/fortuneTextRenderer.js.map +1 -0
  87. package/dist/output/listTextRenderer.d.ts +298 -0
  88. package/dist/output/listTextRenderer.d.ts.map +1 -0
  89. package/dist/output/listTextRenderer.js +942 -0
  90. package/dist/output/listTextRenderer.js.map +1 -0
  91. package/dist/services/bazi/BaziService.d.ts +83 -0
  92. package/dist/services/bazi/BaziService.d.ts.map +1 -0
  93. package/dist/services/bazi/BaziService.js +635 -0
  94. package/dist/services/bazi/BaziService.js.map +1 -0
  95. package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts +31 -0
  96. package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts.map +1 -0
  97. package/dist/services/bazi/analyzers/ClimateAnalyzer.js +194 -0
  98. package/dist/services/bazi/analyzers/ClimateAnalyzer.js.map +1 -0
  99. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +16 -0
  100. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +1 -0
  101. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +60 -0
  102. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +1 -0
  103. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +33 -0
  104. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +1 -0
  105. package/dist/services/bazi/analyzers/NaYinAnalyzer.js +209 -0
  106. package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +1 -0
  107. package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts +159 -0
  108. package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts.map +1 -0
  109. package/dist/services/bazi/analyzers/PatternAnalyzer.js +1150 -0
  110. package/dist/services/bazi/analyzers/PatternAnalyzer.js.map +1 -0
  111. package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts +114 -0
  112. package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts.map +1 -0
  113. package/dist/services/bazi/analyzers/RelationsAnalyzer.js +704 -0
  114. package/dist/services/bazi/analyzers/RelationsAnalyzer.js.map +1 -0
  115. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +236 -0
  116. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +1 -0
  117. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +2079 -0
  118. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +1 -0
  119. package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts +181 -0
  120. package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts.map +1 -0
  121. package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1119 -0
  122. package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -0
  123. package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts +78 -0
  124. package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts.map +1 -0
  125. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +383 -0
  126. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -0
  127. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +46 -0
  128. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +1 -0
  129. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +260 -0
  130. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +1 -0
  131. package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts +70 -0
  132. package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts.map +1 -0
  133. package/dist/services/bazi/analyzers/YongShenAnalyzer.js +858 -0
  134. package/dist/services/bazi/analyzers/YongShenAnalyzer.js.map +1 -0
  135. package/dist/services/bazi/calculators/DaYunCalculator.d.ts +71 -0
  136. package/dist/services/bazi/calculators/DaYunCalculator.d.ts.map +1 -0
  137. package/dist/services/bazi/calculators/DaYunCalculator.js +496 -0
  138. package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -0
  139. package/dist/services/bazi/calculators/LiuNianCalculator.d.ts +88 -0
  140. package/dist/services/bazi/calculators/LiuNianCalculator.d.ts.map +1 -0
  141. package/dist/services/bazi/calculators/LiuNianCalculator.js +546 -0
  142. package/dist/services/bazi/calculators/LiuNianCalculator.js.map +1 -0
  143. package/dist/services/bazi/calculators/LiuRiCalculator.d.ts +66 -0
  144. package/dist/services/bazi/calculators/LiuRiCalculator.d.ts.map +1 -0
  145. package/dist/services/bazi/calculators/LiuRiCalculator.js +497 -0
  146. package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -0
  147. package/dist/services/bazi/calculators/LiuYueCalculator.d.ts +50 -0
  148. package/dist/services/bazi/calculators/LiuYueCalculator.d.ts.map +1 -0
  149. package/dist/services/bazi/calculators/LiuYueCalculator.js +338 -0
  150. package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -0
  151. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts +123 -0
  152. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -0
  153. package/dist/services/bazi/calculators/LuckCycleCalculator.js +414 -0
  154. package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -0
  155. package/dist/services/bazi/index.d.ts +21 -0
  156. package/dist/services/bazi/index.d.ts.map +1 -0
  157. package/dist/services/bazi/index.js +83 -0
  158. package/dist/services/bazi/index.js.map +1 -0
  159. package/dist/services/bazi/types.d.ts +597 -0
  160. package/dist/services/bazi/types.d.ts.map +1 -0
  161. package/dist/services/bazi/types.js +123 -0
  162. package/dist/services/bazi/types.js.map +1 -0
  163. package/dist/services/ziwei/ZiweiService.d.ts +86 -0
  164. package/dist/services/ziwei/ZiweiService.d.ts.map +1 -0
  165. package/dist/services/ziwei/ZiweiService.js +343 -0
  166. package/dist/services/ziwei/ZiweiService.js.map +1 -0
  167. package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts +38 -0
  168. package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts.map +1 -0
  169. package/dist/services/ziwei/calculators/BrightnessCalculator.js +142 -0
  170. package/dist/services/ziwei/calculators/BrightnessCalculator.js.map +1 -0
  171. package/dist/services/ziwei/calculators/DailyCalculator.d.ts +27 -0
  172. package/dist/services/ziwei/calculators/DailyCalculator.d.ts.map +1 -0
  173. package/dist/services/ziwei/calculators/DailyCalculator.js +55 -0
  174. package/dist/services/ziwei/calculators/DailyCalculator.js.map +1 -0
  175. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts +46 -0
  176. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -0
  177. package/dist/services/ziwei/calculators/DecadeCalculator.js +181 -0
  178. package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -0
  179. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts +28 -0
  180. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts.map +1 -0
  181. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js +84 -0
  182. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js.map +1 -0
  183. package/dist/services/ziwei/calculators/HourlyCalculator.d.ts +41 -0
  184. package/dist/services/ziwei/calculators/HourlyCalculator.d.ts.map +1 -0
  185. package/dist/services/ziwei/calculators/HourlyCalculator.js +139 -0
  186. package/dist/services/ziwei/calculators/HourlyCalculator.js.map +1 -0
  187. package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts +30 -0
  188. package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts.map +1 -0
  189. package/dist/services/ziwei/calculators/MinorLimitCalculator.js +90 -0
  190. package/dist/services/ziwei/calculators/MinorLimitCalculator.js.map +1 -0
  191. package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts +39 -0
  192. package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts.map +1 -0
  193. package/dist/services/ziwei/calculators/MonthlyCalculator.js +128 -0
  194. package/dist/services/ziwei/calculators/MonthlyCalculator.js.map +1 -0
  195. package/dist/services/ziwei/calculators/MutagenCalculator.d.ts +20 -0
  196. package/dist/services/ziwei/calculators/MutagenCalculator.d.ts.map +1 -0
  197. package/dist/services/ziwei/calculators/MutagenCalculator.js +121 -0
  198. package/dist/services/ziwei/calculators/MutagenCalculator.js.map +1 -0
  199. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts +35 -0
  200. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts.map +1 -0
  201. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js +55 -0
  202. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js.map +1 -0
  203. package/dist/services/ziwei/calculators/YearlyCalculator.d.ts +35 -0
  204. package/dist/services/ziwei/calculators/YearlyCalculator.d.ts.map +1 -0
  205. package/dist/services/ziwei/calculators/YearlyCalculator.js +119 -0
  206. package/dist/services/ziwei/calculators/YearlyCalculator.js.map +1 -0
  207. package/dist/services/ziwei/index.d.ts +15 -0
  208. package/dist/services/ziwei/index.d.ts.map +1 -0
  209. package/dist/services/ziwei/index.js +48 -0
  210. package/dist/services/ziwei/index.js.map +1 -0
  211. package/dist/services/ziwei/transformers/PalaceTransformer.d.ts +62 -0
  212. package/dist/services/ziwei/transformers/PalaceTransformer.d.ts.map +1 -0
  213. package/dist/services/ziwei/transformers/PalaceTransformer.js +153 -0
  214. package/dist/services/ziwei/transformers/PalaceTransformer.js.map +1 -0
  215. package/dist/services/ziwei/types.d.ts +185 -0
  216. package/dist/services/ziwei/types.d.ts.map +1 -0
  217. package/dist/services/ziwei/types.js +54 -0
  218. package/dist/services/ziwei/types.js.map +1 -0
  219. package/dist/shared/logger.d.ts +51 -0
  220. package/dist/shared/logger.d.ts.map +1 -0
  221. package/dist/shared/logger.js +136 -0
  222. package/dist/shared/logger.js.map +1 -0
  223. package/dist/shared/types.d.ts +91 -0
  224. package/dist/shared/types.d.ts.map +1 -0
  225. package/dist/shared/types.js +7 -0
  226. package/dist/shared/types.js.map +1 -0
  227. package/dist/utils/ageCalculator.d.ts +30 -0
  228. package/dist/utils/ageCalculator.d.ts.map +1 -0
  229. package/dist/utils/ageCalculator.js +51 -0
  230. package/dist/utils/ageCalculator.js.map +1 -0
  231. package/package.json +54 -0
@@ -0,0 +1,487 @@
1
+ "use strict";
2
+ /**
3
+ * 统一的节气计算模块
4
+ * 整合了原calendar/solarTerms.ts和bazi/astronomy/solarTerm.ts的功能
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PreciseSolarTermCalculator = exports.SOLAR_TERMS = exports.SOLAR_TERMS_NAMES = void 0;
8
+ exports.calculateSolarTerms = calculateSolarTerms;
9
+ exports.findSolarTerm = findSolarTerm;
10
+ exports.getSolarTermMonthFromDate = getSolarTermMonthFromDate;
11
+ exports.getSolarTermMonthByDate = getSolarTermMonthFromDate;
12
+ exports.getSolarTermMonth = getSolarTermMonth;
13
+ exports.getAccurateLichunDate = getAccurateLichunDate;
14
+ const julian_1 = require("./julian");
15
+ const lunar_javascript_1 = require("lunar-javascript");
16
+ /**
17
+ * 24节气名称
18
+ */
19
+ exports.SOLAR_TERMS_NAMES = [
20
+ '小寒', '大寒', '立春', '雨水', '惊蛰', '春分',
21
+ '清明', '谷雨', '立夏', '小满', '芒种', '夏至',
22
+ '小暑', '大暑', '立秋', '处暑', '白露', '秋分',
23
+ '寒露', '霜降', '立冬', '小雪', '大雪', '冬至'
24
+ ];
25
+ // 节气数据定义
26
+ exports.SOLAR_TERMS = exports.SOLAR_TERMS_NAMES;
27
+ /**
28
+ * 精确的节气计算器类
29
+ */
30
+ class PreciseSolarTermCalculator {
31
+ // 基准数据:2000年各节气的儒略日
32
+ static SOLAR_TERM_BASE_2000 = [
33
+ 2451547.65, // 小寒
34
+ 2451562.95, // 大寒
35
+ 2451578.31, // 立春
36
+ 2451593.63, // 雨水
37
+ 2451609.00, // 惊蛰
38
+ 2451624.39, // 春分
39
+ 2451639.83, // 清明
40
+ 2451655.28, // 谷雨
41
+ 2451670.76, // 立夏
42
+ 2451686.26, // 小满
43
+ 2451701.77, // 芒种
44
+ 2451717.31, // 夏至
45
+ 2451732.86, // 小暑
46
+ 2451748.42, // 大暑
47
+ 2451764.00, // 立秋
48
+ 2451779.60, // 处暑
49
+ 2451795.22, // 白露
50
+ 2451810.86, // 秋分
51
+ 2451826.52, // 寒露
52
+ 2451842.21, // 霜降
53
+ 2451857.93, // 立冬
54
+ 2451873.68, // 小雪
55
+ 2451889.46, // 大雪
56
+ 2451905.28 // 冬至
57
+ ];
58
+ // 每年的平均增量(天)
59
+ static YEAR_INCREMENT = 365.2422;
60
+ // 章动和岁差修正系数
61
+ static PRECESSION_RATE = 0.0000137; // 每年的岁差
62
+ /**
63
+ * 获取指定日期的节气信息
64
+ */
65
+ static getSolarTermInfo(date) {
66
+ const year = date.getFullYear();
67
+ const solarTerms = this.calculateYearSolarTerms(year);
68
+ let currentIndex = -1;
69
+ for (let i = 23; i >= 0; i--) {
70
+ if (date >= solarTerms[i].date) {
71
+ currentIndex = i;
72
+ break;
73
+ }
74
+ }
75
+ // 如果在第一个节气之前,使用上一年的最后一个节气
76
+ if (currentIndex === -1) {
77
+ const prevYearTerms = this.calculateYearSolarTerms(year - 1);
78
+ currentIndex = 23;
79
+ return {
80
+ currentSolarTerm: exports.SOLAR_TERMS_NAMES[23],
81
+ nextSolarTerm: exports.SOLAR_TERMS_NAMES[0],
82
+ currentSolarTermDate: prevYearTerms[23].date,
83
+ nextSolarTermDate: solarTerms[0].date,
84
+ isAfterLichun: false
85
+ };
86
+ }
87
+ const nextIndex = (currentIndex + 1) % 24;
88
+ const nextTerms = nextIndex === 0 ?
89
+ this.calculateYearSolarTerms(year + 1) :
90
+ solarTerms;
91
+ return {
92
+ currentSolarTerm: exports.SOLAR_TERMS_NAMES[currentIndex],
93
+ nextSolarTerm: exports.SOLAR_TERMS_NAMES[nextIndex],
94
+ currentSolarTermDate: solarTerms[currentIndex].date,
95
+ nextSolarTermDate: nextTerms[nextIndex].date,
96
+ isAfterLichun: currentIndex >= 2 || (currentIndex < 2 && date >= solarTerms[2].date)
97
+ };
98
+ }
99
+ /**
100
+ * 计算某年所有节气
101
+ * 使用 lunar-javascript 的 getJieQiTable() 获取精确的节气日期
102
+ */
103
+ static calculateYearSolarTerms(year) {
104
+ const terms = [];
105
+ // 使用 lunar-javascript 的 getJieQiTable 获取完整节气表
106
+ // 该方法返回包含该年前后所有节气的精确时间
107
+ const jieQiTable = this.getJieQiTableFromLunar(year);
108
+ // 节气名称按照本文件定义的顺序
109
+ for (const termName of exports.SOLAR_TERMS_NAMES) {
110
+ const termData = jieQiTable.get(termName);
111
+ if (termData) {
112
+ terms.push({ name: termName, date: termData });
113
+ }
114
+ else {
115
+ // Fallback: 使用原有算法
116
+ const termIndex = exports.SOLAR_TERMS_NAMES.indexOf(termName);
117
+ terms.push({ name: termName, date: this.calculateSingleTermFallback(year, termIndex) });
118
+ }
119
+ }
120
+ // 按日期排序确保顺序正确
121
+ terms.sort((a, b) => a.date.getTime() - b.date.getTime());
122
+ return terms;
123
+ }
124
+ /**
125
+ * 使用 lunar-javascript 获取某年所有节气的精确日期
126
+ * 通过 Lunar.getJieQiTable() 方法获取
127
+ */
128
+ static getJieQiTableFromLunar(year) {
129
+ const result = new Map();
130
+ // 英文名称到中文名称的映射
131
+ // jieQiTable 中部分节气使用英文拼音名(如下一年的节气)
132
+ const englishToChineseMap = {
133
+ 'XIAO_HAN': '小寒',
134
+ 'DA_HAN': '大寒',
135
+ 'LI_CHUN': '立春',
136
+ 'YU_SHUI': '雨水',
137
+ 'JING_ZHE': '惊蛰',
138
+ 'CHUN_FEN': '春分',
139
+ 'QING_MING': '清明',
140
+ 'GU_YU': '谷雨',
141
+ 'LI_XIA': '立夏',
142
+ 'XIAO_MAN': '小满',
143
+ 'MANG_ZHONG': '芒种',
144
+ 'XIA_ZHI': '夏至',
145
+ 'XIAO_SHU': '小暑',
146
+ 'DA_SHU': '大暑',
147
+ 'LI_QIU': '立秋',
148
+ 'CHU_SHU': '处暑',
149
+ 'BAI_LU': '白露',
150
+ 'QIU_FEN': '秋分',
151
+ 'HAN_LU': '寒露',
152
+ 'SHUANG_JIANG': '霜降',
153
+ 'LI_DONG': '立冬',
154
+ 'XIAO_XUE': '小雪',
155
+ 'DA_XUE': '大雪',
156
+ 'DONG_ZHI': '冬至',
157
+ };
158
+ // 获取某一天的农历对象,然后获取完整节气表
159
+ // 使用年中的某一天来确保获取该年的节气数据
160
+ const solar = lunar_javascript_1.Solar.fromYmd(year, 6, 15);
161
+ const lunar = solar.getLunar();
162
+ const jieQiTable = lunar.getJieQiTable();
163
+ if (jieQiTable) {
164
+ // 首先收集所有节气数据,按年份分类
165
+ const termsByYear = new Map();
166
+ for (const [termName, termValue] of Object.entries(jieQiTable)) {
167
+ const p = termValue?._p;
168
+ if (p && p.year && p.month && p.day) {
169
+ // 转换英文名称为中文
170
+ let chineseName = termName;
171
+ if (englishToChineseMap[termName]) {
172
+ chineseName = englishToChineseMap[termName];
173
+ }
174
+ else if (!/^[\u4e00-\u9fa5]+$/.test(termName)) {
175
+ // 忽略其他非中文名称
176
+ continue;
177
+ }
178
+ const date = new Date(p.year, p.month - 1, p.day, p.hour || 0, p.minute || 0, p.second || 0);
179
+ const key = `${chineseName}_${p.year}`;
180
+ if (!termsByYear.has(chineseName)) {
181
+ termsByYear.set(chineseName, []);
182
+ }
183
+ termsByYear.get(chineseName).push({ name: chineseName, date, year: p.year });
184
+ }
185
+ }
186
+ // 对于每个节气,选择正确年份的数据
187
+ for (const [termName, entries] of termsByYear) {
188
+ // 优先选择目标年份的数据
189
+ let selected = entries.find(e => e.year === year);
190
+ // 特殊处理跨年节气(小寒、大寒可能在次年1月)
191
+ if (!selected && (termName === '小寒' || termName === '大寒')) {
192
+ selected = entries.find(e => e.year === year + 1);
193
+ }
194
+ // 如果没有找到,选择最接近目标年份的数据
195
+ if (!selected && entries.length > 0) {
196
+ selected = entries.sort((a, b) => Math.abs(a.year - year) - Math.abs(b.year - year))[0];
197
+ }
198
+ if (selected) {
199
+ result.set(termName, selected.date);
200
+ }
201
+ }
202
+ }
203
+ return result;
204
+ }
205
+ /**
206
+ * 通过检测月干支变化来定位节气(JIE)的精确日期
207
+ * lunar-javascript 的月干支会在节气当天变化
208
+ */
209
+ static findJieTermDatesByGanZhiChange(year) {
210
+ const result = new Map();
211
+ // 节气名称及其对应的月支变化
212
+ // 当月干支从一个值变为另一个值时,就是节气当天
213
+ const jieToMonthBranch = {
214
+ '小寒': '丑', // 子月->丑月
215
+ '立春': '寅', // 丑月->寅月
216
+ '惊蛰': '卯', // 寅月->卯月
217
+ '清明': '辰', // 卯月->辰月
218
+ '立夏': '巳', // 辰月->巳月
219
+ '芒种': '午', // 巳月->午月
220
+ '小暑': '未', // 午月->未月
221
+ '立秋': '申', // 未月->申月
222
+ '白露': '酉', // 申月->酉月
223
+ '寒露': '戌', // 酉月->戌月
224
+ '立冬': '亥', // 戌月->亥月
225
+ '大雪': '子', // 亥月->子月
226
+ };
227
+ // 遍历一年中的每一天,检测月干支变化
228
+ const startDate = new Date(year, 0, 1); // 1月1日
229
+ const endDate = new Date(year + 1, 0, 31); // 次年1月31日
230
+ let prevMonthGanZhi = '';
231
+ const currentDate = new Date(startDate);
232
+ while (currentDate <= endDate) {
233
+ try {
234
+ const solar = lunar_javascript_1.Solar.fromYmd(currentDate.getFullYear(), currentDate.getMonth() + 1, currentDate.getDate());
235
+ const lunar = solar.getLunar();
236
+ const monthGanZhi = lunar.getMonthInGanZhi();
237
+ if (prevMonthGanZhi && monthGanZhi !== prevMonthGanZhi) {
238
+ // 月干支发生变化,这是节气当天
239
+ const newBranch = monthGanZhi.substring(1); // 取地支
240
+ // 找到对应的节气
241
+ for (const [jieName, branch] of Object.entries(jieToMonthBranch)) {
242
+ if (branch === newBranch) {
243
+ // 检查年份是否匹配(小寒和大雪可能跨年)
244
+ const isCurrentYear = currentDate.getFullYear() === year;
245
+ const isJanNextYear = currentDate.getFullYear() === year + 1 && currentDate.getMonth() === 0;
246
+ const isDecCurrentYear = currentDate.getFullYear() === year && currentDate.getMonth() === 11;
247
+ if ((jieName === '小寒' && isJanNextYear) ||
248
+ (jieName === '大雪' && isDecCurrentYear) ||
249
+ (jieName !== '小寒' && jieName !== '大雪' && isCurrentYear)) {
250
+ result.set(jieName, new Date(currentDate));
251
+ }
252
+ else if (jieName === '小寒' && currentDate.getFullYear() === year && currentDate.getMonth() === 0) {
253
+ // 当年1月的小寒
254
+ result.set(jieName, new Date(currentDate));
255
+ }
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ prevMonthGanZhi = monthGanZhi;
261
+ }
262
+ catch (e) {
263
+ // 忽略无效日期
264
+ }
265
+ currentDate.setDate(currentDate.getDate() + 1);
266
+ }
267
+ return result;
268
+ }
269
+ /**
270
+ * 使用原有算法计算单个节气的日期(作为 fallback)
271
+ */
272
+ static calculateSingleTermFallback(year, termIndex) {
273
+ const yearDiff = year - 2000;
274
+ // 基础儒略日
275
+ let jd = this.SOLAR_TERM_BASE_2000[termIndex];
276
+ // 年份修正
277
+ jd += yearDiff * this.YEAR_INCREMENT;
278
+ // 岁差修正
279
+ jd += yearDiff * yearDiff * this.PRECESSION_RATE;
280
+ // 章动修正(简化版)
281
+ const T = yearDiff / 100;
282
+ const nutation = 0.0001 * Math.sin(125.04 - 1934.136 * T);
283
+ jd += nutation;
284
+ // 转换为公历日期
285
+ const gregorian = (0, julian_1.julianDayToGregorian)(jd);
286
+ return new Date(gregorian.year, gregorian.month - 1, gregorian.day, gregorian.hour, gregorian.minute, gregorian.second);
287
+ }
288
+ }
289
+ exports.PreciseSolarTermCalculator = PreciseSolarTermCalculator;
290
+ /**
291
+ * 计算某年24节气的精确时间
292
+ * @param year 年份
293
+ * @returns 24节气时间数组
294
+ */
295
+ function calculateSolarTerms(year) {
296
+ const terms = PreciseSolarTermCalculator.calculateYearSolarTerms(year);
297
+ return terms.map(t => t.date);
298
+ }
299
+ /**
300
+ * 计算某个节气的儒略日
301
+ * @param year 年份
302
+ * @param termIndex 节气索引 (0-23)
303
+ * @returns 儒略日
304
+ */
305
+ function calculateSolarTermJD(year, termIndex) {
306
+ // 基准年份和角度
307
+ const baseYear = 2000;
308
+ const yearDiff = year - baseYear;
309
+ // 每个节气对应的太阳黄经度数 (从小寒开始,每15度一个节气)
310
+ const baseLongitude = 285 + termIndex * 15; // 小寒对应285度
311
+ const longitude = baseLongitude % 360;
312
+ // 概略计算:基于平均值
313
+ const dayOfYear = getSolarTermApproxDay(termIndex, year);
314
+ const baseJD = (0, julian_1.gregorianToJulianDay)(year, 1, 1) + dayOfYear - 1;
315
+ // 使用迭代法精确计算
316
+ let jd = baseJD;
317
+ for (let i = 0; i < 10; i++) {
318
+ const actualLongitude = getSolarLongitude(jd);
319
+ const diff = normalizeLongitude(longitude - actualLongitude);
320
+ if (Math.abs(diff) < 0.0001)
321
+ break;
322
+ // 太阳每天移动约1度
323
+ jd += diff / 1.0;
324
+ }
325
+ return jd;
326
+ }
327
+ /**
328
+ * 获取节气在一年中的大概日期
329
+ * @param termIndex 节气索引
330
+ * @param year 年份
331
+ * @returns 年内第几天
332
+ */
333
+ function getSolarTermApproxDay(termIndex, year) {
334
+ // 基础天数(基于现代天文数据)
335
+ const baseDays = [
336
+ 5, 20, // 小寒、大寒
337
+ 4, 19, // 立春、雨水
338
+ 6, 21, // 惊蛰、春分
339
+ 5, 20, // 清明、谷雨
340
+ 6, 21, // 立夏、小满
341
+ 6, 22, // 芒种、夏至
342
+ 7, 23, // 小暑、大暑
343
+ 8, 23, // 立秋、处暑
344
+ 8, 23, // 白露、秋分
345
+ 8, 24, // 寒露、霜降
346
+ 8, 22, // 立冬、小雪
347
+ 7, 22 // 大雪、冬至
348
+ ];
349
+ const monthStart = Math.floor(termIndex / 2);
350
+ const dayInMonth = baseDays[termIndex];
351
+ let dayOfYear = dayInMonth;
352
+ for (let m = 0; m < monthStart; m++) {
353
+ dayOfYear += getDaysInMonth(year, m + 1);
354
+ }
355
+ return dayOfYear;
356
+ }
357
+ /**
358
+ * 计算太阳黄经
359
+ * @param jd 儒略日
360
+ * @returns 太阳黄经度数
361
+ */
362
+ function getSolarLongitude(jd) {
363
+ // 简化的太阳黄经计算(实际应使用VSOP87等高精度算法)
364
+ const t = (jd - 2451545.0) / 36525.0; // 儒略世纪数
365
+ // 平均近点角
366
+ const M = 357.5291 + 35999.0503 * t - 0.0001559 * t * t - 0.00000048 * t * t * t;
367
+ // 太阳的平均黄经
368
+ const L0 = 280.46645 + 36000.76983 * t + 0.0003032 * t * t;
369
+ // 黄经改正
370
+ const C = (1.9146 - 0.004817 * t - 0.000014 * t * t) * Math.sin(toRadians(M))
371
+ + (0.019993 - 0.000101 * t) * Math.sin(toRadians(2 * M))
372
+ + 0.000290 * Math.sin(toRadians(3 * M));
373
+ // 真黄经
374
+ const longitude = L0 + C;
375
+ return normalizeLongitude(longitude);
376
+ }
377
+ /**
378
+ * 角度转弧度
379
+ */
380
+ function toRadians(degrees) {
381
+ return degrees * Math.PI / 180;
382
+ }
383
+ /**
384
+ * 规范化角度到0-360度
385
+ */
386
+ function normalizeLongitude(longitude) {
387
+ while (longitude < 0)
388
+ longitude += 360;
389
+ while (longitude >= 360)
390
+ longitude -= 360;
391
+ return longitude;
392
+ }
393
+ /**
394
+ * 获取某月的天数
395
+ */
396
+ function getDaysInMonth(year, month) {
397
+ return new Date(year, month, 0).getDate();
398
+ }
399
+ /**
400
+ * 查找某日期对应的节气
401
+ * @param date 日期
402
+ * @returns 节气信息
403
+ */
404
+ function findSolarTerm(date) {
405
+ const year = date.getFullYear();
406
+ const terms = calculateSolarTerms(year);
407
+ // 添加前一年最后一个节气和后一年第一个节气
408
+ const prevYearTerms = calculateSolarTerms(year - 1);
409
+ const nextYearTerms = calculateSolarTerms(year + 1);
410
+ const allTerms = [
411
+ ...prevYearTerms.slice(-1).map((d, i) => ({ date: d, index: 23, name: exports.SOLAR_TERMS_NAMES[23] })),
412
+ ...terms.map((d, i) => ({ date: d, index: i, name: exports.SOLAR_TERMS_NAMES[i] })),
413
+ ...nextYearTerms.slice(0, 1).map((d, i) => ({ date: d, index: 0, name: exports.SOLAR_TERMS_NAMES[0] }))
414
+ ];
415
+ let current = null;
416
+ let next = null;
417
+ let previous = null;
418
+ for (let i = 0; i < allTerms.length; i++) {
419
+ const term = allTerms[i];
420
+ if (term.date <= date) {
421
+ previous = current;
422
+ current = term;
423
+ }
424
+ else {
425
+ next = term;
426
+ break;
427
+ }
428
+ }
429
+ return { current, next, previous };
430
+ }
431
+ /**
432
+ * 获取某日期所在的节气月份
433
+ * @param date 日期
434
+ * @returns 节气月份信息
435
+ */
436
+ function getSolarTermMonthFromDate(date) {
437
+ const termInfo = findSolarTerm(date);
438
+ if (!termInfo.current) {
439
+ throw new Error('无法确定节气月份');
440
+ }
441
+ // 节气月以立春为起点
442
+ const monthIndex = Math.floor((termInfo.current.index + 22) / 2) % 12;
443
+ const monthNames = [
444
+ '正月', '二月', '三月', '四月', '五月', '六月',
445
+ '七月', '八月', '九月', '十月', '十一月', '十二月'
446
+ ];
447
+ const startTermIndex = monthIndex * 2 + 2; // 立春开始
448
+ const endTermIndex = (startTermIndex + 1) % 24;
449
+ return {
450
+ monthIndex,
451
+ monthName: monthNames[monthIndex],
452
+ startTerm: exports.SOLAR_TERMS_NAMES[startTermIndex % 24],
453
+ endTerm: exports.SOLAR_TERMS_NAMES[endTermIndex]
454
+ };
455
+ }
456
+ /**
457
+ * 根据年月日获取节气月份(用于八字计算)
458
+ * @param year 年
459
+ * @param month 月
460
+ * @param day 日
461
+ * @returns 节气月份索引 (0-11)
462
+ */
463
+ function getSolarTermMonth(year, month, day) {
464
+ const date = new Date(year, month - 1, day);
465
+ const termInfo = PreciseSolarTermCalculator.getSolarTermInfo(date);
466
+ // 根据当前节气确定月份
467
+ const termIndex = exports.SOLAR_TERMS_NAMES.indexOf(termInfo.currentSolarTerm);
468
+ // 节气月份从寅月(立春)开始
469
+ // 小寒、大寒属于丑月(11)
470
+ // 立春、雨水属于寅月(0)
471
+ // 以此类推
472
+ if (termIndex < 2) {
473
+ // 小寒、大寒属于上一年的丑月
474
+ return 11;
475
+ }
476
+ return Math.floor((termIndex - 2) / 2);
477
+ }
478
+ /**
479
+ * 获取某年立春的准确日期
480
+ * @param year 年份
481
+ * @returns 立春日期
482
+ */
483
+ function getAccurateLichunDate(year) {
484
+ const solarTerms = PreciseSolarTermCalculator.calculateYearSolarTerms(year);
485
+ return solarTerms[2].date; // 立春是第3个节气(索引2)
486
+ }
487
+ //# sourceMappingURL=solarTerms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solarTerms.js","sourceRoot":"","sources":["../../../src/core/calendar/solarTerms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * BaZi Constants
3
+ * Core constants for BaZi calculations
4
+ */
5
+ export declare const HEAVENLY_STEMS: {
6
+ name: string;
7
+ element: string;
8
+ yinYang: string;
9
+ }[];
10
+ export declare const HEAVENLY_STEMS_ARRAY: string[];
11
+ export declare const EARTHLY_BRANCHES: {
12
+ name: string;
13
+ element: string;
14
+ zodiac: string;
15
+ }[];
16
+ export declare const EARTHLY_BRANCHES_ARRAY: string[];
17
+ export declare const FIVE_ELEMENTS: {
18
+ name: string;
19
+ color: string;
20
+ }[];
21
+ export declare const FIVE_ELEMENTS_ARRAY: string[];
22
+ export type FiveElement = '木' | '火' | '土' | '金' | '水';
23
+ export declare const STEM_ELEMENTS: Record<string, string>;
24
+ export declare const BRANCH_ELEMENTS: Record<string, string>;
25
+ export declare const HIDDEN_STEMS: Record<string, Array<{
26
+ stem: string;
27
+ power: number;
28
+ }>>;
29
+ export declare const BRANCH_HIDDEN_STEMS: Record<string, {
30
+ stem: string;
31
+ power: number;
32
+ }[]>;
33
+ export declare const TEN_GODS: Record<string, Record<string, string>>;
34
+ export declare const NA_YIN: Record<string, string>;
35
+ export declare const BRANCH_RELATIONS: {
36
+ harmony: {
37
+ 子: string[];
38
+ 寅: string[];
39
+ 卯: string[];
40
+ 辰: string[];
41
+ 巳: string[];
42
+ 午: string[];
43
+ };
44
+ clash: {
45
+ 子: string[];
46
+ 丑: string[];
47
+ 寅: string[];
48
+ 卯: string[];
49
+ 辰: string[];
50
+ 巳: string[];
51
+ };
52
+ punishment: {
53
+ 子: string[];
54
+ 丑: string[];
55
+ 寅: string[];
56
+ 卯: string[];
57
+ 辰: string[];
58
+ 巳: string[];
59
+ 午: string[];
60
+ 未: string[];
61
+ 申: string[];
62
+ 酉: string[];
63
+ 戌: string[];
64
+ 亥: string[];
65
+ };
66
+ harm: {
67
+ 子: string[];
68
+ 丑: string[];
69
+ 寅: string[];
70
+ 卯: string[];
71
+ 巳: string[];
72
+ 午: string[];
73
+ 未: string[];
74
+ 申: string[];
75
+ 酉: string[];
76
+ 戌: string[];
77
+ 亥: string[];
78
+ };
79
+ threeHarmony: string[][];
80
+ };
81
+ export declare const YIN_YANG: Record<string, 'yin' | 'yang'>;
82
+ export declare const STEM_YIN_YANG: Record<string, "yang" | "yin">;
83
+ export declare const SHEN_SHA_DEFINITIONS: {
84
+ tianyi: {
85
+ name: string;
86
+ type: string;
87
+ rules: {
88
+ 甲: string[];
89
+ 乙: string[];
90
+ 丙: string[];
91
+ 丁: string[];
92
+ 戊: string[];
93
+ 己: string[];
94
+ 庚: string[];
95
+ 辛: string[];
96
+ 壬: string[];
97
+ 癸: string[];
98
+ };
99
+ };
100
+ };
101
+ export declare const SOLAR_TERMS: string[];
102
+ export declare const SOLAR_TERM_TO_ZHI: Record<string, string>;
103
+ export declare const TWELVE_GROWTH_STAGES: string[];
104
+ export declare const GROWTH_STAGE_MAPPING: Record<string, Record<string, string>>;
105
+ export declare const TEN_GODS_ARRAY: string[];
106
+ export declare const TEN_GODS_SHORT: Record<string, string>;
107
+ export declare const MONTHLY_STRENGTH: Record<string, Record<string, number>>;
108
+ export declare const FIVE_ELEMENTS_RELATIONS: {
109
+ generating: {
110
+ 木: string;
111
+ 火: string;
112
+ 土: string;
113
+ 金: string;
114
+ 水: string;
115
+ };
116
+ controlling: {
117
+ 木: string;
118
+ 土: string;
119
+ 水: string;
120
+ 火: string;
121
+ 金: string;
122
+ };
123
+ generateBy: {
124
+ 木: string;
125
+ 火: string;
126
+ 土: string;
127
+ 金: string;
128
+ 水: string;
129
+ };
130
+ restrictBy: {
131
+ 木: string;
132
+ 火: string;
133
+ 土: string;
134
+ 金: string;
135
+ 水: string;
136
+ };
137
+ };
138
+ //# sourceMappingURL=bazi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazi.d.ts","sourceRoot":"","sources":["../../../src/core/constants/bazi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,cAAc;;;;GAW1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAqD,CAAC;AAGvF,eAAO,MAAM,gBAAgB;;;;GAa5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAA+D,CAAC;AAGnG,eAAO,MAAM,aAAa;;;GAMzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAA4B,CAAC;AAG7D,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAGtD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CAa7E,CAAC;AAGF,eAAO,MAAM,mBAAmB;UAhBuB,MAAM;WAAS,MAAM;IAgB7B,CAAC;AAGhD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3D,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+BzC,CAAC;AAGF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuD5B,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAYnD,CAAC;AAGF,eAAO,MAAM,aAAa,gCAAW,CAAC;AAGtC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;CAkBhC,CAAC;AAGF,eAAO,MAAM,WAAW,UAKvB,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAapD,CAAC;AAGF,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBvE,CAAC;AAGF,eAAO,MAAM,cAAc,UAE1B,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAajD,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAanE,CAAC;AAGF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnC,CAAC"}