chrono-node 2.4.1 → 2.5.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 (430) hide show
  1. package/.idea/chrono.iml +13 -0
  2. package/.idea/compiler.xml +7 -0
  3. package/.idea/dictionaries/wanasit.xml +8 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/jsLibraryMappings.xml +6 -0
  6. package/.idea/jsLinters/eslint.xml +6 -0
  7. package/.idea/misc.xml +6 -0
  8. package/.idea/modules.xml +8 -0
  9. package/.idea/prettier.xml +6 -0
  10. package/.idea/vcs.xml +6 -0
  11. package/.idea/workspace.xml +327 -0
  12. package/README.md +1 -1
  13. package/benchmark/results/chrono.chart.html +111 -0
  14. package/coverage/clover.xml +4771 -0
  15. package/coverage/coverage-final.json +147 -0
  16. package/coverage/lcov-report/base.css +224 -0
  17. package/coverage/lcov-report/block-navigation.js +87 -0
  18. package/coverage/lcov-report/favicon.png +0 -0
  19. package/coverage/lcov-report/index.html +686 -0
  20. package/coverage/lcov-report/prettify.css +1 -0
  21. package/coverage/lcov-report/prettify.js +2 -0
  22. package/coverage/lcov-report/results.ts.html +701 -0
  23. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  24. package/coverage/lcov-report/sorter.js +196 -0
  25. package/coverage/lcov-report/src/calculation/index.html +131 -0
  26. package/coverage/lcov-report/src/calculation/mergingCalculation.ts.html +319 -0
  27. package/coverage/lcov-report/src/calculation/weeks.ts.html +199 -0
  28. package/coverage/lcov-report/src/calculation/yearCalculation.ts.html +194 -0
  29. package/coverage/lcov-report/src/calculation/years.ts.html +199 -0
  30. package/coverage/lcov-report/src/chrono.js.html +368 -0
  31. package/coverage/lcov-report/src/chrono.ts.html +649 -0
  32. package/coverage/lcov-report/src/common/abstractRefiners.ts.html +286 -0
  33. package/coverage/lcov-report/src/common/calculation/index.html +116 -0
  34. package/coverage/lcov-report/src/common/calculation/weekdays.ts.html +352 -0
  35. package/coverage/lcov-report/src/common/casualReferences.ts.html +499 -0
  36. package/coverage/lcov-report/src/common/index.html +131 -0
  37. package/coverage/lcov-report/src/common/parsers/AbstractParserWithWordBoundary.ts.html +214 -0
  38. package/coverage/lcov-report/src/common/parsers/AbstractTimeExpressionParser.ts.html +1384 -0
  39. package/coverage/lcov-report/src/common/parsers/ISOFormatParser.ts.html +340 -0
  40. package/coverage/lcov-report/src/common/parsers/SlashDateFormatParser.ts.html +385 -0
  41. package/coverage/lcov-report/src/common/parsers/index.html +161 -0
  42. package/coverage/lcov-report/src/common/refiners/AbstractMergeDateRangeRefiner.ts.html +268 -0
  43. package/coverage/lcov-report/src/common/refiners/AbstractMergeDateTimeRefiner.ts.html +172 -0
  44. package/coverage/lcov-report/src/common/refiners/ExtractTimezoneAbbrRefiner.ts.html +883 -0
  45. package/coverage/lcov-report/src/common/refiners/ExtractTimezoneOffsetRefiner.ts.html +226 -0
  46. package/coverage/lcov-report/src/common/refiners/ForwardDateRefiner.ts.html +334 -0
  47. package/coverage/lcov-report/src/common/refiners/MergeWeekdayComponentRefiner.ts.html +187 -0
  48. package/coverage/lcov-report/src/common/refiners/OverlapRemovalRefiner.ts.html +199 -0
  49. package/coverage/lcov-report/src/common/refiners/UnlikelyFormatFilter.ts.html +265 -0
  50. package/coverage/lcov-report/src/common/refiners/index.html +221 -0
  51. package/coverage/lcov-report/src/configurations.ts.html +154 -0
  52. package/coverage/lcov-report/src/debugging.ts.html +154 -0
  53. package/coverage/lcov-report/src/index.html +191 -0
  54. package/coverage/lcov-report/src/index.ts.html +520 -0
  55. package/coverage/lcov-report/src/locales/de/constants.ts.html +664 -0
  56. package/coverage/lcov-report/src/locales/de/index.html +131 -0
  57. package/coverage/lcov-report/src/locales/de/index.ts.html +238 -0
  58. package/coverage/lcov-report/src/locales/de/parsers/DECasualDateParser.ts.html +325 -0
  59. package/coverage/lcov-report/src/locales/de/parsers/DECasualTimeParser.ts.html +325 -0
  60. package/coverage/lcov-report/src/locales/de/parsers/DEMonthNameLittleEndianParser.ts.html +268 -0
  61. package/coverage/lcov-report/src/locales/de/parsers/DESpecificTimeExpressionParser.ts.html +535 -0
  62. package/coverage/lcov-report/src/locales/de/parsers/DETimeExpressionParser.ts.html +151 -0
  63. package/coverage/lcov-report/src/locales/de/parsers/DETimeUnitRelativeFormatParser.ts.html +211 -0
  64. package/coverage/lcov-report/src/locales/de/parsers/DEWeekdayParser.ts.html +232 -0
  65. package/coverage/lcov-report/src/locales/de/parsers/index.html +206 -0
  66. package/coverage/lcov-report/src/locales/de/refiners/DEMergeDateRangeRefiner.ts.html +130 -0
  67. package/coverage/lcov-report/src/locales/de/refiners/DEMergeDateTimeRefiner.ts.html +115 -0
  68. package/coverage/lcov-report/src/locales/de/refiners/index.html +131 -0
  69. package/coverage/lcov-report/src/locales/en/constants.ts.html +859 -0
  70. package/coverage/lcov-report/src/locales/en/index.html +131 -0
  71. package/coverage/lcov-report/src/locales/en/index.ts.html +382 -0
  72. package/coverage/lcov-report/src/locales/en/parsers/ENCasualDateParser.ts.html +244 -0
  73. package/coverage/lcov-report/src/locales/en/parsers/ENCasualTimeParser.ts.html +169 -0
  74. package/coverage/lcov-report/src/locales/en/parsers/ENCasualYearMonthDayParser.ts.html +232 -0
  75. package/coverage/lcov-report/src/locales/en/parsers/ENDeadlineFormatParser.ts.html +311 -0
  76. package/coverage/lcov-report/src/locales/en/parsers/ENISOFormatParser.ts.html +317 -0
  77. package/coverage/lcov-report/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts.html +292 -0
  78. package/coverage/lcov-report/src/locales/en/parsers/ENMonthNameMiddleEndianParser.ts.html +319 -0
  79. package/coverage/lcov-report/src/locales/en/parsers/ENMonthNameParser.ts.html +271 -0
  80. package/coverage/lcov-report/src/locales/en/parsers/ENRelativeDateFormatParser.ts.html +292 -0
  81. package/coverage/lcov-report/src/locales/en/parsers/ENSlashDateFormatParser.ts.html +443 -0
  82. package/coverage/lcov-report/src/locales/en/parsers/ENSlashDateFormatStartWithYearParser.ts.html +221 -0
  83. package/coverage/lcov-report/src/locales/en/parsers/ENSlashMonthFormatParser.ts.html +163 -0
  84. package/coverage/lcov-report/src/locales/en/parsers/ENTimeExpressionParser.ts.html +250 -0
  85. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts.html +160 -0
  86. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts.html +166 -0
  87. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitDeadlineFormatParser.ts.html +149 -0
  88. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts.html +166 -0
  89. package/coverage/lcov-report/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts.html +163 -0
  90. package/coverage/lcov-report/src/locales/en/parsers/ENWeekdayParser.ts.html +229 -0
  91. package/coverage/lcov-report/src/locales/en/parsers/index.html +311 -0
  92. package/coverage/lcov-report/src/locales/en/refiners/ENMergeDateRangeRefiner.ts.html +136 -0
  93. package/coverage/lcov-report/src/locales/en/refiners/ENMergeDateTimeRefiner.ts.html +124 -0
  94. package/coverage/lcov-report/src/locales/en/refiners/ENMergeRelativeDateRefiner.ts.html +259 -0
  95. package/coverage/lcov-report/src/locales/en/refiners/index.html +146 -0
  96. package/coverage/lcov-report/src/locales/es/constants.ts.html +340 -0
  97. package/coverage/lcov-report/src/locales/es/index.html +131 -0
  98. package/coverage/lcov-report/src/locales/es/index.ts.html +256 -0
  99. package/coverage/lcov-report/src/locales/es/parsers/ESCasualDateParser.ts.html +178 -0
  100. package/coverage/lcov-report/src/locales/es/parsers/ESCasualTimeParser.ts.html +226 -0
  101. package/coverage/lcov-report/src/locales/es/parsers/ESMonthNameLittleEndianParser.ts.html +265 -0
  102. package/coverage/lcov-report/src/locales/es/parsers/ESTimeExpressionParser.ts.html +145 -0
  103. package/coverage/lcov-report/src/locales/es/parsers/ESWeekdayParser.ts.html +235 -0
  104. package/coverage/lcov-report/src/locales/es/parsers/index.html +176 -0
  105. package/coverage/lcov-report/src/locales/es/refiners/ESMergeDateRangeRefiner.ts.html +130 -0
  106. package/coverage/lcov-report/src/locales/es/refiners/ESMergeDateTimeRefiner.ts.html +115 -0
  107. package/coverage/lcov-report/src/locales/es/refiners/index.html +131 -0
  108. package/coverage/lcov-report/src/locales/fr/constants.ts.html +637 -0
  109. package/coverage/lcov-report/src/locales/fr/index.html +131 -0
  110. package/coverage/lcov-report/src/locales/fr/index.ts.html +280 -0
  111. package/coverage/lcov-report/src/locales/fr/parsers/FRCasualDateParser.ts.html +223 -0
  112. package/coverage/lcov-report/src/locales/fr/parsers/FRCasualTimeParser.ts.html +232 -0
  113. package/coverage/lcov-report/src/locales/fr/parsers/FRMonthNameLittleEndianParser.ts.html +277 -0
  114. package/coverage/lcov-report/src/locales/fr/parsers/FRSpecificTimeExpressionParser.ts.html +484 -0
  115. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeExpressionParser.ts.html +151 -0
  116. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts.html +151 -0
  117. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts.html +214 -0
  118. package/coverage/lcov-report/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts.html +130 -0
  119. package/coverage/lcov-report/src/locales/fr/parsers/FRWeekdayParser.ts.html +223 -0
  120. package/coverage/lcov-report/src/locales/fr/parsers/index.html +236 -0
  121. package/coverage/lcov-report/src/locales/fr/refiners/FRMergeDateRangeRefiner.ts.html +130 -0
  122. package/coverage/lcov-report/src/locales/fr/refiners/FRMergeDateTimeRefiner.ts.html +115 -0
  123. package/coverage/lcov-report/src/locales/fr/refiners/index.html +131 -0
  124. package/coverage/lcov-report/src/locales/ja/constants.ts.html +157 -0
  125. package/coverage/lcov-report/src/locales/ja/index.html +131 -0
  126. package/coverage/lcov-report/src/locales/ja/index.ts.html +214 -0
  127. package/coverage/lcov-report/src/locales/ja/parsers/JPCasualDateParser.ts.html +217 -0
  128. package/coverage/lcov-report/src/locales/ja/parsers/JPStandardParser.ts.html +247 -0
  129. package/coverage/lcov-report/src/locales/ja/parsers/index.html +131 -0
  130. package/coverage/lcov-report/src/locales/ja/refiners/JPMergeDateRangeRefiner.ts.html +124 -0
  131. package/coverage/lcov-report/src/locales/ja/refiners/index.html +116 -0
  132. package/coverage/lcov-report/src/locales/nl/constants.ts.html +796 -0
  133. package/coverage/lcov-report/src/locales/nl/index.html +131 -0
  134. package/coverage/lcov-report/src/locales/nl/index.ts.html +304 -0
  135. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualDateParser.ts.html +181 -0
  136. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualDateTimeParser.ts.html +310 -0
  137. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualTimeParser.ts.html +265 -0
  138. package/coverage/lcov-report/src/locales/nl/parsers/NLCasualYearMonthDayParser.ts.html +232 -0
  139. package/coverage/lcov-report/src/locales/nl/parsers/NLMonthNameMiddleEndianParser.ts.html +349 -0
  140. package/coverage/lcov-report/src/locales/nl/parsers/NLMonthNameParser.ts.html +235 -0
  141. package/coverage/lcov-report/src/locales/nl/parsers/NLRelativeDateFormatParser.ts.html +295 -0
  142. package/coverage/lcov-report/src/locales/nl/parsers/NLSlashMonthFormatParser.ts.html +163 -0
  143. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeExpressionParser.ts.html +163 -0
  144. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts.html +163 -0
  145. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts.html +166 -0
  146. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts.html +166 -0
  147. package/coverage/lcov-report/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts.html +130 -0
  148. package/coverage/lcov-report/src/locales/nl/parsers/NLWeekdayParser.ts.html +223 -0
  149. package/coverage/lcov-report/src/locales/nl/parsers/index.html +311 -0
  150. package/coverage/lcov-report/src/locales/nl/refiners/NLMergeDateRangeRefiner.ts.html +136 -0
  151. package/coverage/lcov-report/src/locales/nl/refiners/NLMergeDateTimeRefiner.ts.html +124 -0
  152. package/coverage/lcov-report/src/locales/nl/refiners/index.html +131 -0
  153. package/coverage/lcov-report/src/locales/pt/constants.ts.html +343 -0
  154. package/coverage/lcov-report/src/locales/pt/index.html +131 -0
  155. package/coverage/lcov-report/src/locales/pt/index.ts.html +256 -0
  156. package/coverage/lcov-report/src/locales/pt/parsers/PTCasualDateParser.ts.html +181 -0
  157. package/coverage/lcov-report/src/locales/pt/parsers/PTCasualTimeParser.ts.html +226 -0
  158. package/coverage/lcov-report/src/locales/pt/parsers/PTMonthNameLittleEndianParser.ts.html +265 -0
  159. package/coverage/lcov-report/src/locales/pt/parsers/PTTimeExpressionParser.ts.html +145 -0
  160. package/coverage/lcov-report/src/locales/pt/parsers/PTWeekdayParser.ts.html +235 -0
  161. package/coverage/lcov-report/src/locales/pt/parsers/index.html +176 -0
  162. package/coverage/lcov-report/src/locales/pt/refiners/PTMergeDateRangeRefiner.ts.html +130 -0
  163. package/coverage/lcov-report/src/locales/pt/refiners/PTMergeDateTimeRefiner.ts.html +115 -0
  164. package/coverage/lcov-report/src/locales/pt/refiners/index.html +131 -0
  165. package/coverage/lcov-report/src/locales/ru/constants.ts.html +1111 -0
  166. package/coverage/lcov-report/src/locales/ru/index.html +131 -0
  167. package/coverage/lcov-report/src/locales/ru/index.ts.html +337 -0
  168. package/coverage/lcov-report/src/locales/ru/parsers/RUCasualDateParser.ts.html +217 -0
  169. package/coverage/lcov-report/src/locales/ru/parsers/RUCasualTimeParser.ts.html +253 -0
  170. package/coverage/lcov-report/src/locales/ru/parsers/RUMonthNameLittleEndianParser.ts.html +301 -0
  171. package/coverage/lcov-report/src/locales/ru/parsers/RUMonthNameParser.ts.html +268 -0
  172. package/coverage/lcov-report/src/locales/ru/parsers/RURelativeDateFormatParser.ts.html +310 -0
  173. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeExpressionParser.ts.html +277 -0
  174. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts.html +157 -0
  175. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts.html +187 -0
  176. package/coverage/lcov-report/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts.html +157 -0
  177. package/coverage/lcov-report/src/locales/ru/parsers/RUWeekdayParser.ts.html +256 -0
  178. package/coverage/lcov-report/src/locales/ru/parsers/index.html +251 -0
  179. package/coverage/lcov-report/src/locales/ru/refiners/RUMergeDateRangeRefiner.ts.html +124 -0
  180. package/coverage/lcov-report/src/locales/ru/refiners/RUMergeDateTimeRefiner.ts.html +124 -0
  181. package/coverage/lcov-report/src/locales/ru/refiners/index.html +131 -0
  182. package/coverage/lcov-report/src/locales/zh/hans/constants.ts.html +241 -0
  183. package/coverage/lcov-report/src/locales/zh/hans/index.html +131 -0
  184. package/coverage/lcov-report/src/locales/zh/hans/index.ts.html +271 -0
  185. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansCasualDateParser.ts.html +469 -0
  186. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansDateParser.ts.html +310 -0
  187. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.ts.html +328 -0
  188. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.ts.html +292 -0
  189. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts.html +1357 -0
  190. package/coverage/lcov-report/src/locales/zh/hans/parsers/ZHHansWeekdayParser.ts.html +223 -0
  191. package/coverage/lcov-report/src/locales/zh/hans/parsers/index.html +191 -0
  192. package/coverage/lcov-report/src/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.ts.html +106 -0
  193. package/coverage/lcov-report/src/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.ts.html +106 -0
  194. package/coverage/lcov-report/src/locales/zh/hans/refiners/index.html +131 -0
  195. package/coverage/lcov-report/src/locales/zh/hant/constants.ts.html +244 -0
  196. package/coverage/lcov-report/src/locales/zh/hant/index.html +131 -0
  197. package/coverage/lcov-report/src/locales/zh/hant/index.ts.html +274 -0
  198. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantCasualDateParser.ts.html +469 -0
  199. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantDateParser.ts.html +289 -0
  200. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.ts.html +328 -0
  201. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.ts.html +292 -0
  202. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts.html +1357 -0
  203. package/coverage/lcov-report/src/locales/zh/hant/parsers/ZHHantWeekdayParser.ts.html +223 -0
  204. package/coverage/lcov-report/src/locales/zh/hant/parsers/index.html +191 -0
  205. package/coverage/lcov-report/src/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.ts.html +106 -0
  206. package/coverage/lcov-report/src/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.ts.html +106 -0
  207. package/coverage/lcov-report/src/locales/zh/hant/refiners/index.html +131 -0
  208. package/coverage/lcov-report/src/locales/zh/index.html +116 -0
  209. package/coverage/lcov-report/src/locales/zh/index.ts.html +91 -0
  210. package/coverage/lcov-report/src/options.js.html +1085 -0
  211. package/coverage/lcov-report/src/parsers/de/DECasualDateParser.js.html +368 -0
  212. package/coverage/lcov-report/src/parsers/de/DEDeadlineFormatParser.js.html +374 -0
  213. package/coverage/lcov-report/src/parsers/de/DEMonthNameLittleEndianParser.js.html +347 -0
  214. package/coverage/lcov-report/src/parsers/de/DEMonthNameParser.js.html +329 -0
  215. package/coverage/lcov-report/src/parsers/de/DESlashDateFormatParser.js.html +398 -0
  216. package/coverage/lcov-report/src/parsers/de/DETimeAgoFormatParser.js.html +401 -0
  217. package/coverage/lcov-report/src/parsers/de/DETimeExpressionParser.js.html +836 -0
  218. package/coverage/lcov-report/src/parsers/de/DEWeekdayParser.js.html +338 -0
  219. package/coverage/lcov-report/src/parsers/de/index.html +216 -0
  220. package/coverage/lcov-report/src/parsers/en/ENCasualDateParser.js.html +275 -0
  221. package/coverage/lcov-report/src/parsers/en/ENCasualTimeParser.js.html +242 -0
  222. package/coverage/lcov-report/src/parsers/en/ENDeadlineFormatParser.js.html +359 -0
  223. package/coverage/lcov-report/src/parsers/en/ENISOFormatParser.js.html +389 -0
  224. package/coverage/lcov-report/src/parsers/en/ENMonthNameLittleEndianParser.js.html +416 -0
  225. package/coverage/lcov-report/src/parsers/en/ENMonthNameMiddleEndianParser.js.html +437 -0
  226. package/coverage/lcov-report/src/parsers/en/ENMonthNameParser.js.html +320 -0
  227. package/coverage/lcov-report/src/parsers/en/ENRelativeDateFormatParser.js.html +518 -0
  228. package/coverage/lcov-report/src/parsers/en/ENSlashDateFormatParser.js.html +479 -0
  229. package/coverage/lcov-report/src/parsers/en/ENSlashDateFormatStartWithYearParser.js.html +245 -0
  230. package/coverage/lcov-report/src/parsers/en/ENSlashMonthFormatParser.js.html +221 -0
  231. package/coverage/lcov-report/src/parsers/en/ENTimeAgoFormatParser.js.html +287 -0
  232. package/coverage/lcov-report/src/parsers/en/ENTimeExpressionParser.js.html +869 -0
  233. package/coverage/lcov-report/src/parsers/en/ENTimeLaterFormatParser.js.html +305 -0
  234. package/coverage/lcov-report/src/parsers/en/ENWeekdayParser.js.html +356 -0
  235. package/coverage/lcov-report/src/parsers/en/index.html +321 -0
  236. package/coverage/lcov-report/src/parsers/es/ESCasualDateParser.js.html +452 -0
  237. package/coverage/lcov-report/src/parsers/es/ESDeadlineFormatParser.js.html +260 -0
  238. package/coverage/lcov-report/src/parsers/es/ESMonthNameLittleEndianParser.js.html +338 -0
  239. package/coverage/lcov-report/src/parsers/es/ESSlashDateFormatParser.js.html +419 -0
  240. package/coverage/lcov-report/src/parsers/es/ESTimeAgoFormatParser.js.html +341 -0
  241. package/coverage/lcov-report/src/parsers/es/ESTimeExpressionParser.js.html +782 -0
  242. package/coverage/lcov-report/src/parsers/es/ESWeekdayParser.js.html +260 -0
  243. package/coverage/lcov-report/src/parsers/es/index.html +201 -0
  244. package/coverage/lcov-report/src/parsers/fr/FRCasualDateParser.js.html +311 -0
  245. package/coverage/lcov-report/src/parsers/fr/FRDeadlineFormatParser.js.html +359 -0
  246. package/coverage/lcov-report/src/parsers/fr/FRMonthNameLittleEndianParser.js.html +338 -0
  247. package/coverage/lcov-report/src/parsers/fr/FRRelativeDateFormatParser.js.html +545 -0
  248. package/coverage/lcov-report/src/parsers/fr/FRSlashDateFormatParser.js.html +437 -0
  249. package/coverage/lcov-report/src/parsers/fr/FRTimeAgoFormatParser.js.html +341 -0
  250. package/coverage/lcov-report/src/parsers/fr/FRTimeExpressionParser.js.html +803 -0
  251. package/coverage/lcov-report/src/parsers/fr/FRWeekdayParser.js.html +257 -0
  252. package/coverage/lcov-report/src/parsers/fr/index.html +216 -0
  253. package/coverage/lcov-report/src/parsers/index.html +111 -0
  254. package/coverage/lcov-report/src/parsers/ja/JPCasualDateParser.js.html +245 -0
  255. package/coverage/lcov-report/src/parsers/ja/JPStandardParser.js.html +293 -0
  256. package/coverage/lcov-report/src/parsers/ja/index.html +126 -0
  257. package/coverage/lcov-report/src/parsers/nl/NLCasualDateParser.js.html +395 -0
  258. package/coverage/lcov-report/src/parsers/nl/NLCasualTimeParser.js.html +278 -0
  259. package/coverage/lcov-report/src/parsers/nl/NLMonthNameLittleEndianParser.js.html +383 -0
  260. package/coverage/lcov-report/src/parsers/nl/NLMonthNameParser.js.html +320 -0
  261. package/coverage/lcov-report/src/parsers/nl/NLSlashDateFormatParser.js.html +389 -0
  262. package/coverage/lcov-report/src/parsers/nl/NLTimeExpressionParser.js.html +836 -0
  263. package/coverage/lcov-report/src/parsers/nl/NLWeekdayParser.js.html +377 -0
  264. package/coverage/lcov-report/src/parsers/nl/index.html +201 -0
  265. package/coverage/lcov-report/src/parsers/parser.js.html +500 -0
  266. package/coverage/lcov-report/src/parsers/pt/PTCasualDateParser.js.html +449 -0
  267. package/coverage/lcov-report/src/parsers/pt/PTDeadlineFormatParser.js.html +263 -0
  268. package/coverage/lcov-report/src/parsers/pt/PTMonthNameLittleEndianParser.js.html +338 -0
  269. package/coverage/lcov-report/src/parsers/pt/PTSlashDateFormatParser.js.html +419 -0
  270. package/coverage/lcov-report/src/parsers/pt/PTTimeAgoFormatParser.js.html +341 -0
  271. package/coverage/lcov-report/src/parsers/pt/PTTimeExpressionParser.js.html +782 -0
  272. package/coverage/lcov-report/src/parsers/pt/PTWeekdayParser.js.html +260 -0
  273. package/coverage/lcov-report/src/parsers/pt/index.html +201 -0
  274. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantCasualDateParser.js.html +494 -0
  275. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantDateParser.js.html +281 -0
  276. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantDeadlineFormatParser.js.html +353 -0
  277. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantTimeExpressionParser.js.html +1346 -0
  278. package/coverage/lcov-report/src/parsers/zh-Hant/ZHHantWeekdayParser.js.html +239 -0
  279. package/coverage/lcov-report/src/parsers/zh-Hant/index.html +171 -0
  280. package/coverage/lcov-report/src/refiners/ExtractTimezoneAbbrRefiner.js.html +245 -0
  281. package/coverage/lcov-report/src/refiners/ExtractTimezoneOffsetRefiner.js.html +218 -0
  282. package/coverage/lcov-report/src/refiners/ForwardDateRefiner.js.html +239 -0
  283. package/coverage/lcov-report/src/refiners/OverlapRemovalRefiner.js.html +200 -0
  284. package/coverage/lcov-report/src/refiners/UnlikelyFormatFilter.js.html +131 -0
  285. package/coverage/lcov-report/src/refiners/de/DEMergeDateRangeRefiner.js.html +116 -0
  286. package/coverage/lcov-report/src/refiners/de/DEMergeDateTimeRefiner.js.html +377 -0
  287. package/coverage/lcov-report/src/refiners/de/index.html +126 -0
  288. package/coverage/lcov-report/src/refiners/en/ENMergeDateRangeRefiner.js.html +416 -0
  289. package/coverage/lcov-report/src/refiners/en/ENMergeDateTimeRefiner.js.html +533 -0
  290. package/coverage/lcov-report/src/refiners/en/ENPrioritizeSpecificDateRefiner.js.html +422 -0
  291. package/coverage/lcov-report/src/refiners/en/index.html +141 -0
  292. package/coverage/lcov-report/src/refiners/fr/FRMergeDateRangeRefiner.js.html +374 -0
  293. package/coverage/lcov-report/src/refiners/fr/FRMergeDateTimeRefiner.js.html +395 -0
  294. package/coverage/lcov-report/src/refiners/fr/index.html +126 -0
  295. package/coverage/lcov-report/src/refiners/index.html +186 -0
  296. package/coverage/lcov-report/src/refiners/ja/JPMergeDateRangeRefiner.js.html +113 -0
  297. package/coverage/lcov-report/src/refiners/ja/index.html +111 -0
  298. package/coverage/lcov-report/src/refiners/nl/NLMergeDateRangeRefiner.js.html +116 -0
  299. package/coverage/lcov-report/src/refiners/nl/NLMergeDateTimeRefiner.js.html +362 -0
  300. package/coverage/lcov-report/src/refiners/nl/index.html +126 -0
  301. package/coverage/lcov-report/src/refiners/refiner.js.html +239 -0
  302. package/coverage/lcov-report/src/result.js.html +545 -0
  303. package/coverage/lcov-report/src/results.ts.html +916 -0
  304. package/coverage/lcov-report/src/timezone.ts.html +700 -0
  305. package/coverage/lcov-report/src/utils/DE.js.html +308 -0
  306. package/coverage/lcov-report/src/utils/EN.js.html +596 -0
  307. package/coverage/lcov-report/src/utils/ES.js.html +254 -0
  308. package/coverage/lcov-report/src/utils/FR.js.html +302 -0
  309. package/coverage/lcov-report/src/utils/JP.js.html +215 -0
  310. package/coverage/lcov-report/src/utils/NL.js.html +620 -0
  311. package/coverage/lcov-report/src/utils/PT.js.html +263 -0
  312. package/coverage/lcov-report/src/utils/ParserWithWordEndingDetection.ts.html +176 -0
  313. package/coverage/lcov-report/src/utils/ZH-Hant.js.html +236 -0
  314. package/coverage/lcov-report/src/utils/dayjs.ts.html +223 -0
  315. package/coverage/lcov-report/src/utils/index.html +146 -0
  316. package/coverage/lcov-report/src/utils/pattern.ts.html +175 -0
  317. package/coverage/lcov-report/src/utils/timeunits.ts.html +199 -0
  318. package/coverage/lcov-report/test/index.html +116 -0
  319. package/coverage/lcov-report/test/test_util.js.html +299 -0
  320. package/coverage/lcov-report/test/test_util.ts.html +490 -0
  321. package/coverage/lcov.info +8049 -0
  322. package/dist/common/casualReferences.d.ts +1 -0
  323. package/dist/common/casualReferences.js +23 -2
  324. package/dist/common/casualReferences.js.map +1 -1
  325. package/dist/common/parsers/SlashDateFormatParser.js +5 -3
  326. package/dist/common/parsers/SlashDateFormatParser.js.map +1 -1
  327. package/dist/common/refiners/AbstractMergeDateTimeRefiner.d.ts +1 -1
  328. package/dist/common/refiners/AbstractMergeDateTimeRefiner.js +2 -2
  329. package/dist/common/refiners/AbstractMergeDateTimeRefiner.js.map +1 -1
  330. package/dist/common/refiners/ForwardDateRefiner.js +12 -0
  331. package/dist/common/refiners/ForwardDateRefiner.js.map +1 -1
  332. package/dist/index.d.ts +2 -1
  333. package/dist/index.js +3 -1
  334. package/dist/index.js.map +1 -1
  335. package/dist/locales/en/constants.js +6 -0
  336. package/dist/locales/en/constants.js.map +1 -1
  337. package/dist/locales/en/parsers/ENCasualTimeParser.js +27 -26
  338. package/dist/locales/en/parsers/ENCasualTimeParser.js.map +1 -1
  339. package/dist/locales/es/constants.d.ts +8 -0
  340. package/dist/locales/es/constants.js +84 -0
  341. package/dist/locales/es/constants.js.map +1 -0
  342. package/dist/locales/es/index.d.ts +8 -0
  343. package/dist/locales/es/index.js +46 -0
  344. package/dist/locales/es/index.js.map +1 -0
  345. package/dist/locales/es/parsers/ESCasualDateParser.d.ts +7 -0
  346. package/dist/locales/es/parsers/ESCasualDateParser.js +45 -0
  347. package/dist/locales/es/parsers/ESCasualDateParser.js.map +1 -0
  348. package/dist/locales/es/parsers/ESCasualTimeParser.d.ts +6 -0
  349. package/dist/locales/es/parsers/ESCasualTimeParser.js +46 -0
  350. package/dist/locales/es/parsers/ESCasualTimeParser.js.map +1 -0
  351. package/dist/locales/es/parsers/ESMonthNameLittleEndianParser.d.ts +7 -0
  352. package/dist/locales/es/parsers/ESMonthNameLittleEndianParser.js +49 -0
  353. package/dist/locales/es/parsers/ESMonthNameLittleEndianParser.js.map +1 -0
  354. package/dist/locales/es/parsers/ESTimeExpressionParser.d.ts +5 -0
  355. package/dist/locales/es/parsers/ESTimeExpressionParser.js +13 -0
  356. package/dist/locales/es/parsers/ESTimeExpressionParser.js.map +1 -0
  357. package/dist/locales/es/parsers/ESWeekdayParser.d.ts +7 -0
  358. package/dist/locales/es/parsers/ESWeekdayParser.js +44 -0
  359. package/dist/locales/es/parsers/ESWeekdayParser.js.map +1 -0
  360. package/dist/locales/es/refiners/ESMergeDateRangeRefiner.d.ts +4 -0
  361. package/dist/locales/es/refiners/ESMergeDateRangeRefiner.js +13 -0
  362. package/dist/locales/es/refiners/ESMergeDateRangeRefiner.js.map +1 -0
  363. package/dist/locales/es/refiners/ESMergeDateTimeRefiner.d.ts +4 -0
  364. package/dist/locales/es/refiners/ESMergeDateTimeRefiner.js +13 -0
  365. package/dist/locales/es/refiners/ESMergeDateTimeRefiner.js.map +1 -0
  366. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +1 -1
  367. package/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
  368. package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +26 -26
  369. package/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
  370. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +26 -26
  371. package/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
  372. package/dist/utils/dayjs.d.ts +2 -0
  373. package/dist/utils/dayjs.js +13 -1
  374. package/dist/utils/dayjs.js.map +1 -1
  375. package/docs/assets/css/main.css +2660 -0
  376. package/docs/assets/images/icons.png +0 -0
  377. package/docs/assets/images/icons@2x.png +0 -0
  378. package/docs/assets/images/widgets.png +0 -0
  379. package/docs/assets/images/widgets@2x.png +0 -0
  380. package/docs/assets/js/main.js +248 -0
  381. package/docs/assets/js/search.js +1 -0
  382. package/docs/classes/chrono.html +377 -0
  383. package/docs/enums/meridiem.html +191 -0
  384. package/docs/index.html +329 -0
  385. package/docs/interfaces/parsedcomponents.html +270 -0
  386. package/docs/interfaces/parsedresult.html +283 -0
  387. package/docs/interfaces/parser.html +240 -0
  388. package/docs/interfaces/parsingoption.html +218 -0
  389. package/docs/interfaces/refiner.html +218 -0
  390. package/docs/modules/de.html +298 -0
  391. package/docs/modules/en.html +361 -0
  392. package/docs/modules/fr.html +248 -0
  393. package/docs/modules/ja.html +248 -0
  394. package/docs/modules/nl.html +275 -0
  395. package/docs/modules/pt.html +248 -0
  396. package/package.json +1 -1
  397. package/src/common/casualReferences.ts +31 -2
  398. package/src/common/parsers/SlashDateFormatParser.ts +7 -6
  399. package/src/common/refiners/AbstractMergeDateTimeRefiner.ts +1 -1
  400. package/src/common/refiners/ForwardDateRefiner.ts +13 -0
  401. package/src/index.ts +2 -1
  402. package/src/locales/en/constants.ts +6 -0
  403. package/src/locales/en/parsers/ENCasualTimeParser.ts +9 -31
  404. package/src/locales/es/constants.ts +85 -0
  405. package/src/locales/es/index.ts +57 -0
  406. package/src/locales/es/parsers/ESCasualDateParser.ts +31 -0
  407. package/src/locales/es/parsers/ESCasualTimeParser.ts +47 -0
  408. package/src/locales/es/parsers/ESMonthNameLittleEndianParser.ts +60 -0
  409. package/src/locales/es/parsers/ESTimeExpressionParser.ts +20 -0
  410. package/src/locales/es/parsers/ESWeekdayParser.ts +50 -0
  411. package/src/locales/es/refiners/ESMergeDateRangeRefiner.ts +15 -0
  412. package/src/locales/es/refiners/ESMergeDateTimeRefiner.ts +10 -0
  413. package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +1 -1
  414. package/src/locales/ru/refiners/RUMergeDateTimeRefiner.ts +1 -1
  415. package/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts +26 -26
  416. package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +26 -26
  417. package/src/utils/dayjs.ts +12 -0
  418. package/test/en/en_casual.test.ts +34 -4
  419. package/test/en/en_slash.test.ts +12 -11
  420. package/test/en/en_time_exp.test.ts +53 -0
  421. package/test/en/en_time_units_ago.test.ts +17 -0
  422. package/test/en/en_time_units_later.test.ts +30 -0
  423. package/test/en/negative_cases.test.ts +11 -0
  424. package/test/es/es_casual.test.ts +175 -0
  425. package/test/es/es_month_name_little_endian.test.ts +217 -0
  426. package/test/es/es_slash.test.ts +26 -0
  427. package/test/es/es_time_exp.test.ts +175 -0
  428. package/test/ru/ru_time_units_casual_relative.test.ts +12 -0
  429. package/test/zh/zh_hans_time_exp.test.ts +15 -0
  430. package/test/zh/zh_hant_time_exp.test.ts +14 -0
@@ -0,0 +1,1384 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/common/parsers/AbstractTimeExpressionParser.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/common/parsers</a> AbstractTimeExpressionParser.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">91% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>182/200</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">85.41% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>82/96</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>15/15</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">92.78% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>180/194</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-yes">80x</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-yes">84x</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-yes">76x</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-yes">80x</span>
544
+ <span class="cline-any cline-yes">80x</span>
545
+ <span class="cline-any cline-yes">80x</span>
546
+ <span class="cline-any cline-yes">80x</span>
547
+ <span class="cline-any cline-yes">80x</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-yes">80x</span>
550
+ <span class="cline-any cline-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-yes">1201x</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
558
+ <span class="cline-any cline-neutral">&nbsp;</span>
559
+ <span class="cline-any cline-yes">73x</span>
560
+ <span class="cline-any cline-neutral">&nbsp;</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-yes">73x</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-yes">374x</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-yes">1290x</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
+ <span class="cline-any cline-yes">1251x</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-yes">1585x</span>
580
+ <span class="cline-any cline-yes">1585x</span>
581
+ <span class="cline-any cline-yes">295x</span>
582
+ <span class="cline-any cline-yes">295x</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-yes">1290x</span>
586
+ <span class="cline-any cline-yes">1290x</span>
587
+ <span class="cline-any cline-yes">1290x</span>
588
+ <span class="cline-any cline-yes">1290x</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-yes">1290x</span>
591
+ <span class="cline-any cline-yes">1290x</span>
592
+ <span class="cline-any cline-yes">1290x</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-yes">1290x</span>
596
+ <span class="cline-any cline-yes">16x</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-yes">1274x</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-yes">1164x</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-yes">110x</span>
608
+ <span class="cline-any cline-yes">110x</span>
609
+ <span class="cline-any cline-yes">102x</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-yes">110x</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-yes">1500x</span>
621
+ <span class="cline-any cline-yes">1500x</span>
622
+ <span class="cline-any cline-yes">1500x</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-yes">1500x</span>
626
+ <span class="cline-any cline-yes">1500x</span>
627
+ <span class="cline-any cline-yes">277x</span>
628
+ <span class="cline-any cline-yes">24x</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-yes">253x</span>
632
+ <span class="cline-any cline-yes">253x</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-yes">1476x</span>
636
+ <span class="cline-any cline-yes">147x</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-yes">1329x</span>
641
+ <span class="cline-any cline-yes">167x</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-yes">21x</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-yes">146x</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-yes">1308x</span>
650
+ <span class="cline-any cline-yes">15x</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-yes">1293x</span>
654
+ <span class="cline-any cline-yes">373x</span>
655
+ <span class="cline-any cline-neutral">&nbsp;</span>
656
+ <span class="cline-any cline-neutral">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-yes">1293x</span>
659
+ <span class="cline-any cline-yes">104x</span>
660
+ <span class="cline-any cline-yes">101x</span>
661
+ <span class="cline-any cline-yes">101x</span>
662
+ <span class="cline-any cline-yes">37x</span>
663
+ <span class="cline-any cline-yes">37x</span>
664
+ <span class="cline-any cline-no">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-yes">101x</span>
669
+ <span class="cline-any cline-yes">64x</span>
670
+ <span class="cline-any cline-yes">64x</span>
671
+ <span class="cline-any cline-yes">59x</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-yes">1290x</span>
677
+ <span class="cline-any cline-yes">1290x</span>
678
+ <span class="cline-any cline-neutral">&nbsp;</span>
679
+ <span class="cline-any cline-yes">1290x</span>
680
+ <span class="cline-any cline-yes">471x</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-yes">819x</span>
683
+ <span class="cline-any cline-yes">748x</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-yes">71x</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-yes">1290x</span>
691
+ <span class="cline-any cline-yes">2x</span>
692
+ <span class="cline-any cline-yes">2x</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-yes">2x</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-yes">1290x</span>
699
+ <span class="cline-any cline-yes">35x</span>
700
+ <span class="cline-any cline-yes">35x</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-yes">35x</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-yes">1290x</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-neutral">&nbsp;</span>
713
+ <span class="cline-any cline-yes">110x</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-yes">110x</span>
717
+ <span class="cline-any cline-no">&nbsp;</span>
718
+ <span class="cline-any cline-no">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-no">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-yes">110x</span>
725
+ <span class="cline-any cline-yes">3x</span>
726
+ <span class="cline-any cline-yes">3x</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-yes">3x</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-yes">110x</span>
732
+ <span class="cline-any cline-yes">110x</span>
733
+ <span class="cline-any cline-yes">110x</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">110x</span>
737
+ <span class="cline-any cline-yes">32x</span>
738
+ <span class="cline-any cline-yes">78x</span>
739
+ <span class="cline-any cline-yes">12x</span>
740
+ <span class="cline-any cline-yes">12x</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-yes">110x</span>
744
+ <span class="cline-any cline-yes">8x</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">102x</span>
748
+ <span class="cline-any cline-yes">43x</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-yes">102x</span>
753
+ <span class="cline-any cline-yes">31x</span>
754
+ <span class="cline-any cline-no">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-yes">31x</span>
758
+ <span class="cline-any cline-yes">31x</span>
759
+ <span class="cline-any cline-yes">11x</span>
760
+ <span class="cline-any cline-yes">11x</span>
761
+ <span class="cline-any cline-no">&nbsp;</span>
762
+ <span class="cline-any cline-no">&nbsp;</span>
763
+ <span class="cline-any cline-no">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-yes">31x</span>
769
+ <span class="cline-any cline-yes">20x</span>
770
+ <span class="cline-any cline-yes">20x</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-yes">31x</span>
774
+ <span class="cline-any cline-yes">18x</span>
775
+ <span class="cline-any cline-yes">7x</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-yes">7x</span>
778
+ <span class="cline-any cline-yes">1x</span>
779
+ <span class="cline-any cline-neutral">&nbsp;</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-yes">11x</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-yes">11x</span>
784
+ <span class="cline-any cline-yes">10x</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-yes">102x</span>
791
+ <span class="cline-any cline-yes">102x</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-yes">102x</span>
794
+ <span class="cline-any cline-yes">72x</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-yes">30x</span>
797
+ <span class="cline-any cline-yes">30x</span>
798
+ <span class="cline-any cline-yes">9x</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
800
+ <span class="cline-any cline-yes">4x</span>
801
+ <span class="cline-any cline-yes">5x</span>
802
+ <span class="cline-any cline-yes">5x</span>
803
+ <span class="cline-any cline-yes">5x</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-yes">21x</span>
806
+ <span class="cline-any cline-no">&nbsp;</span>
807
+ <span class="cline-any cline-yes">21x</span>
808
+ <span class="cline-any cline-yes">21x</span>
809
+ <span class="cline-any cline-neutral">&nbsp;</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-yes">102x</span>
813
+ <span class="cline-any cline-yes">10x</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-yes">102x</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-yes">1164x</span>
822
+ <span class="cline-any cline-yes">428x</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
826
+ <span class="cline-any cline-yes">736x</span>
827
+ <span class="cline-any cline-yes">193x</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-yes">543x</span>
832
+ <span class="cline-any cline-yes">3x</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-neutral">&nbsp;</span>
836
+ <span class="cline-any cline-yes">540x</span>
837
+ <span class="cline-any cline-yes">540x</span>
838
+ <span class="cline-any cline-yes">33x</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-yes">33x</span>
842
+ <span class="cline-any cline-yes">2x</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-yes">31x</span>
847
+ <span class="cline-any cline-no">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-yes">31x</span>
852
+ <span class="cline-any cline-yes">31x</span>
853
+ <span class="cline-any cline-yes">7x</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-yes">531x</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-yes">110x</span>
862
+ <span class="cline-any cline-yes">26x</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-yes">84x</span>
867
+ <span class="cline-any cline-yes">84x</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-yes">6x</span>
870
+ <span class="cline-any cline-yes">4x</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-yes">2x</span>
874
+ <span class="cline-any cline-yes">2x</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-yes">2x</span>
877
+ <span class="cline-any cline-yes">2x</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-no">&nbsp;</span>
882
+ <span class="cline-any cline-no">&nbsp;</span>
883
+ <span class="cline-any cline-no">&nbsp;</span>
884
+ <span class="cline-any cline-no">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-yes">78x</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-yes">1201x</span>
892
+ <span class="cline-any cline-yes">1201x</span>
893
+ <span class="cline-any cline-yes">1201x</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-yes">1251x</span>
897
+ <span class="cline-any cline-yes">1251x</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-yes">1251x</span>
900
+ <span class="cline-any cline-yes">1167x</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-yes">84x</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-yes">84x</span>
910
+ <span class="cline-any cline-yes">84x</span>
911
+ <span class="cline-any cline-yes">84x</span>
912
+ <span class="cline-any cline-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-yes">1201x</span>
915
+ <span class="cline-any cline-yes">1201x</span>
916
+ <span class="cline-any cline-yes">1201x</span>
917
+ <span class="cline-any cline-neutral">&nbsp;</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-yes">1290x</span>
920
+ <span class="cline-any cline-yes">1290x</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-yes">1290x</span>
923
+ <span class="cline-any cline-yes">1214x</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-yes">76x</span>
927
+ <span class="cline-any cline-yes">76x</span>
928
+ <span class="cline-any cline-yes">76x</span>
929
+ <span class="cline-any cline-yes">76x</span>
930
+ <span class="cline-any cline-neutral">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Parser, ParsingContext } from "../../chrono";
933
+ import { ParsingComponents, ParsingResult } from "../../results";
934
+ import { Meridiem } from "../../index";
935
+ &nbsp;
936
+ // prettier-ignore
937
+ function primaryTimePattern(leftBoundary: string, primaryPrefix: string, primarySuffix: string, flags: string) {
938
+ return new RegExp(
939
+ `${leftBoundary}` +
940
+ `${primaryPrefix}` +
941
+ `(\\d{1,4})` +
942
+ `(?:` +
943
+ `(?:\\.|:|:)` +
944
+ `(\\d{1,2})` +
945
+ `(?:` +
946
+ `(?::|:)` +
947
+ `(\\d{2})` +
948
+ `(?:\\.(\\d{1,6}))?` +
949
+ `)?` +
950
+ `)?` +
951
+ `(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?` +
952
+ `${primarySuffix}`,
953
+ flags
954
+ );
955
+ }
956
+ &nbsp;
957
+ // prettier-ignore
958
+ function followingTimePatten(followingPhase: string, followingSuffix: string) {
959
+ return new RegExp(
960
+ `^(${followingPhase})` +
961
+ `(\\d{1,4})` +
962
+ `(?:` +
963
+ `(?:\\.|\\:|\\:)` +
964
+ `(\\d{1,2})` +
965
+ `(?:` +
966
+ `(?:\\.|\\:|\\:)` +
967
+ `(\\d{1,2})(?:\\.(\\d{1,6}))?` +
968
+ `)?` +
969
+ `)?` +
970
+ `(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?` +
971
+ `${followingSuffix}`,
972
+ "i"
973
+ );
974
+ }
975
+ &nbsp;
976
+ const HOUR_GROUP = 2;
977
+ const MINUTE_GROUP = 3;
978
+ const SECOND_GROUP = 4;
979
+ const MILLI_SECOND_GROUP = 5;
980
+ const AM_PM_HOUR_GROUP = 6;
981
+ &nbsp;
982
+ export abstract class AbstractTimeExpressionParser implements Parser {
983
+ abstract primaryPrefix(): string;
984
+ abstract followingPhase(): string;
985
+ strictMode: boolean;
986
+ &nbsp;
987
+ constructor(strictMode = false) {
988
+ this.strictMode = strictMode;
989
+ }
990
+ &nbsp;
991
+ patternFlags(): string {
992
+ return "i";
993
+ }
994
+ &nbsp;
995
+ primaryPatternLeftBoundary(): string {
996
+ return `(^|\\s|T|\\b)`;
997
+ }
998
+ &nbsp;
999
+ primarySuffix(): string {
1000
+ return `(?=\\W|$)`;
1001
+ }
1002
+ &nbsp;
1003
+ followingSuffix(): string {
1004
+ return `(?=\\W|$)`;
1005
+ }
1006
+ &nbsp;
1007
+ pattern(context: ParsingContext): RegExp {
1008
+ return this.getPrimaryTimePatternThroughCache();
1009
+ }
1010
+ &nbsp;
1011
+ extract(context: ParsingContext, match: RegExpMatchArray): ParsingResult {
1012
+ const startComponents = this.extractPrimaryTimeComponents(context, match);
1013
+ if (!startComponents) {
1014
+ match.index += match[0].length; // Skip over potential overlapping pattern
1015
+ return null;
1016
+ }
1017
+ &nbsp;
1018
+ const index = match.index + match[1].length;
1019
+ const text = match[0].substring(match[1].length);
1020
+ const result = context.createParsingResult(index, text, startComponents);
1021
+ match.index += match[0].length; // Skip over potential overlapping pattern
1022
+ &nbsp;
1023
+ const remainingText = context.text.substring(match.index);
1024
+ const followingPattern = this.getFollowingTimePatternThroughCache();
1025
+ const followingMatch = followingPattern.exec(remainingText);
1026
+ &nbsp;
1027
+ // Pattern "456-12", "2022-12" should not be time without proper context
1028
+ if (text.match(/^\d{3,4}/) &amp;&amp; followingMatch &amp;&amp; followingMatch[0].match(/^\s*([+-])\s*\d{2,4}$/)) {
1029
+ return null;
1030
+ }
1031
+ &nbsp;
1032
+ if (
1033
+ !followingMatch ||
1034
+ // Pattern "YY.YY -XXXX" is more like timezone offset
1035
+ followingMatch[0].match(/^\s*([+-])\s*\d{3,4}$/)
1036
+ ) {
1037
+ return this.checkAndReturnWithoutFollowingPattern(result);
1038
+ }
1039
+ &nbsp;
1040
+ result.end = this.extractFollowingTimeComponents(context, followingMatch, result);
1041
+ if (result.end) {
1042
+ result.text += followingMatch[0];
1043
+ }
1044
+ &nbsp;
1045
+ return this.checkAndReturnWithFollowingPattern(result);
1046
+ }
1047
+ &nbsp;
1048
+ extractPrimaryTimeComponents(
1049
+ context: ParsingContext,
1050
+ match: RegExpMatchArray,
1051
+ strict = false
1052
+ ): null | ParsingComponents {
1053
+ const components = context.createParsingComponents();
1054
+ let minute = 0;
1055
+ let meridiem = null;
1056
+ &nbsp;
1057
+ // ----- Hours
1058
+ let hour = parseInt(match[HOUR_GROUP]);
1059
+ if (hour &gt; 100) {
1060
+ if (this.strictMode || match[MINUTE_GROUP] != null) {
1061
+ return null;
1062
+ }
1063
+ &nbsp;
1064
+ minute = hour % 100;
1065
+ hour = Math.floor(hour / 100);
1066
+ }
1067
+ &nbsp;
1068
+ if (hour &gt; 24) {
1069
+ return null;
1070
+ }
1071
+ &nbsp;
1072
+ // ----- Minutes
1073
+ if (match[MINUTE_GROUP] != null) {
1074
+ if (match[MINUTE_GROUP].length == 1 &amp;&amp; !match[AM_PM_HOUR_GROUP]) {
1075
+ // Skip single digit minute e.g. "at 1.1 xx"
1076
+ return null;
1077
+ }
1078
+ &nbsp;
1079
+ minute = parseInt(match[MINUTE_GROUP]);
1080
+ }
1081
+ &nbsp;
1082
+ if (minute &gt;= 60) {
1083
+ return null;
1084
+ }
1085
+ &nbsp;
1086
+ if (hour &gt; 12) {
1087
+ meridiem = Meridiem.PM;
1088
+ }
1089
+ &nbsp;
1090
+ // ----- AM &amp; PM
1091
+ if (match[AM_PM_HOUR_GROUP] != null) {
1092
+ if (hour &gt; 12) return null;
1093
+ const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();
1094
+ if (ampm == "a") {
1095
+ meridiem = Meridiem.AM;
1096
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hour == 12) {
1097
+ <span class="cstat-no" title="statement not covered" > hour = 0;</span>
1098
+ }
1099
+ }
1100
+ &nbsp;
1101
+ if (ampm == "p") {
1102
+ meridiem = Meridiem.PM;
1103
+ if (hour != 12) {
1104
+ hour += 12;
1105
+ }
1106
+ }
1107
+ }
1108
+ &nbsp;
1109
+ components.assign("hour", hour);
1110
+ components.assign("minute", minute);
1111
+ &nbsp;
1112
+ if (meridiem !== null) {
1113
+ components.assign("meridiem", meridiem);
1114
+ } else {
1115
+ if (hour &lt; 12) {
1116
+ components.imply("meridiem", Meridiem.AM);
1117
+ } else {
1118
+ components.imply("meridiem", Meridiem.PM);
1119
+ }
1120
+ }
1121
+ &nbsp;
1122
+ // ----- Millisecond
1123
+ if (match[MILLI_SECOND_GROUP] != null) {
1124
+ const millisecond = parseInt(match[MILLI_SECOND_GROUP].substring(0, 3));
1125
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (millisecond &gt;= 1000) <span class="cstat-no" title="statement not covered" >return null;</span>
1126
+ &nbsp;
1127
+ components.assign("millisecond", millisecond);
1128
+ }
1129
+ &nbsp;
1130
+ // ----- Second
1131
+ if (match[SECOND_GROUP] != null) {
1132
+ const second = parseInt(match[SECOND_GROUP]);
1133
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (second &gt;= 60) <span class="cstat-no" title="statement not covered" >return null;</span>
1134
+ &nbsp;
1135
+ components.assign("second", second);
1136
+ }
1137
+ &nbsp;
1138
+ return components;
1139
+ }
1140
+ &nbsp;
1141
+ extractFollowingTimeComponents(
1142
+ context: ParsingContext,
1143
+ match: RegExpMatchArray,
1144
+ result: ParsingResult
1145
+ ): null | ParsingComponents {
1146
+ const components = context.createParsingComponents();
1147
+ &nbsp;
1148
+ // ----- Millisecond
1149
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (match[MILLI_SECOND_GROUP] != null) {
1150
+ const millisecond = <span class="cstat-no" title="statement not covered" >parseInt(match[MILLI_SECOND_GROUP].substring(0, 3));</span>
1151
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (millisecond &gt;= 1000) <span class="cstat-no" title="statement not covered" >return null;</span></span>
1152
+ &nbsp;
1153
+ <span class="cstat-no" title="statement not covered" > components.assign("millisecond", millisecond);</span>
1154
+ }
1155
+ &nbsp;
1156
+ // ----- Second
1157
+ if (match[SECOND_GROUP] != null) {
1158
+ const second = parseInt(match[SECOND_GROUP]);
1159
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (second &gt;= 60) <span class="cstat-no" title="statement not covered" >return null;</span>
1160
+ &nbsp;
1161
+ components.assign("second", second);
1162
+ }
1163
+ &nbsp;
1164
+ let hour = parseInt(match[HOUR_GROUP]);
1165
+ let minute = 0;
1166
+ let meridiem = -1;
1167
+ &nbsp;
1168
+ // ----- Minute
1169
+ if (match[MINUTE_GROUP] != null) {
1170
+ minute = parseInt(match[MINUTE_GROUP]);
1171
+ } else if (hour &gt; 100) {
1172
+ minute = hour % 100;
1173
+ hour = Math.floor(hour / 100);
1174
+ }
1175
+ &nbsp;
1176
+ if (minute &gt;= 60 || hour &gt; 24) {
1177
+ return null;
1178
+ }
1179
+ &nbsp;
1180
+ if (hour &gt;= 12) {
1181
+ meridiem = Meridiem.PM;
1182
+ }
1183
+ &nbsp;
1184
+ // ----- AM &amp; PM
1185
+ if (match[AM_PM_HOUR_GROUP] != null) {
1186
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hour &gt; 12) {
1187
+ <span class="cstat-no" title="statement not covered" > return null;</span>
1188
+ }
1189
+ &nbsp;
1190
+ const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();
1191
+ if (ampm == "a") {
1192
+ meridiem = Meridiem.AM;
1193
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hour == 12) {
1194
+ <span class="cstat-no" title="statement not covered" > hour = 0;</span>
1195
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!components.isCertain("day")) {</span>
1196
+ <span class="cstat-no" title="statement not covered" > components.imply("day", components.get("day") + 1);</span>
1197
+ }
1198
+ }
1199
+ }
1200
+ &nbsp;
1201
+ if (ampm == "p") {
1202
+ meridiem = Meridiem.PM;
1203
+ if (hour != 12) hour += 12;
1204
+ }
1205
+ &nbsp;
1206
+ if (!result.start.isCertain("meridiem")) {
1207
+ if (meridiem == Meridiem.AM) {
1208
+ result.start.imply("meridiem", Meridiem.AM);
1209
+ &nbsp;
1210
+ if (result.start.get("hour") == 12) {
1211
+ result.start.assign("hour", 0);
1212
+ }
1213
+ } else {
1214
+ result.start.imply("meridiem", Meridiem.PM);
1215
+ &nbsp;
1216
+ if (result.start.get("hour") != 12) {
1217
+ result.start.assign("hour", result.start.get("hour") + 12);
1218
+ }
1219
+ }
1220
+ }
1221
+ }
1222
+ &nbsp;
1223
+ components.assign("hour", hour);
1224
+ components.assign("minute", minute);
1225
+ &nbsp;
1226
+ if (meridiem &gt;= 0) {
1227
+ components.assign("meridiem", meridiem);
1228
+ } else {
1229
+ const startAtPM = result.start.isCertain("meridiem") &amp;&amp; result.start.get("hour") &gt; 12;
1230
+ if (startAtPM) {
1231
+ if (result.start.get("hour") - 12 &gt; hour) {
1232
+ // 10pm - 1 (am)
1233
+ components.imply("meridiem", Meridiem.AM);
1234
+ } else if (hour &lt;= 12) {
1235
+ components.assign("hour", hour + 12);
1236
+ components.assign("meridiem", Meridiem.PM);
1237
+ }
1238
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (hour &gt; 12) {
1239
+ <span class="cstat-no" title="statement not covered" > components.imply("meridiem", Meridiem.PM);</span>
1240
+ } else if (hour &lt;= 12) {
1241
+ components.imply("meridiem", Meridiem.AM);
1242
+ }
1243
+ }
1244
+ &nbsp;
1245
+ if (components.date().getTime() &lt; result.start.date().getTime()) {
1246
+ components.imply("day", components.get("day") + 1);
1247
+ }
1248
+ &nbsp;
1249
+ return components;
1250
+ }
1251
+ &nbsp;
1252
+ private checkAndReturnWithoutFollowingPattern(result) {
1253
+ // Single digit (e.g "1") should not be counted as time expression (without proper context)
1254
+ if (result.text.match(/^\d$/)) {
1255
+ return null;
1256
+ }
1257
+ &nbsp;
1258
+ // Three or more digit (e.g. "203", "2014") should not be counted as time expression (without proper context)
1259
+ if (result.text.match(/^\d\d\d+$/)) {
1260
+ return null;
1261
+ }
1262
+ &nbsp;
1263
+ // Instead of "am/pm", it ends with "a" or "p" (e.g "1a", "123p"), this seems unlikely
1264
+ if (result.text.match(/\d[apAP]$/)) {
1265
+ return null;
1266
+ }
1267
+ &nbsp;
1268
+ // If it ends only with numbers or dots
1269
+ const endingWithNumbers = result.text.match(/[^\d:.](\d[\d.]+)$/);
1270
+ if (endingWithNumbers) {
1271
+ const endingNumbers: string = endingWithNumbers[1];
1272
+ &nbsp;
1273
+ // In strict mode (e.g. "at 1" or "at 1.2"), this should not be accepted
1274
+ if (this.strictMode) {
1275
+ return null;
1276
+ }
1277
+ &nbsp;
1278
+ // If it ends only with dot single digit, e.g. "at 1.2"
1279
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (endingNumbers.includes(".") &amp;&amp; !endingNumbers.match(/\d(\.\d{2})+$/)) {
1280
+ <span class="cstat-no" title="statement not covered" > return null;</span>
1281
+ }
1282
+ &nbsp;
1283
+ // If it ends only with numbers above 24, e.g. "at 25"
1284
+ const endingNumberVal = parseInt(endingNumbers);
1285
+ if (endingNumberVal &gt; 24) {
1286
+ return null;
1287
+ }
1288
+ }
1289
+ &nbsp;
1290
+ return result;
1291
+ }
1292
+ &nbsp;
1293
+ private checkAndReturnWithFollowingPattern(result) {
1294
+ if (result.text.match(/^\d+-\d+$/)) {
1295
+ return null;
1296
+ }
1297
+ &nbsp;
1298
+ // If it ends only with numbers or dots
1299
+ const endingWithNumbers = result.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);
1300
+ if (endingWithNumbers) {
1301
+ // In strict mode (e.g. "at 1-3" or "at 1.2 - 2.3"), this should not be accepted
1302
+ if (this.strictMode) {
1303
+ return null;
1304
+ }
1305
+ &nbsp;
1306
+ const startingNumbers: string = endingWithNumbers[1];
1307
+ const endingNumbers: string = endingWithNumbers[2];
1308
+ // If it ends only with dot single digit, e.g. "at 1.2"
1309
+ if (endingNumbers.includes(".") &amp;&amp; !endingNumbers.match(/\d(\.\d{2})+$/)) {
1310
+ return null;
1311
+ }
1312
+ &nbsp;
1313
+ // If it ends only with numbers above 24, e.g. "at 25"
1314
+ const endingNumberVal = <span class="cstat-no" title="statement not covered" >parseInt(endingNumbers);</span>
1315
+ const startingNumberVal = <span class="cstat-no" title="statement not covered" >parseInt(startingNumbers);</span>
1316
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (endingNumberVal &gt; 24 || startingNumberVal &gt; 24) {</span>
1317
+ <span class="cstat-no" title="statement not covered" > return null;</span>
1318
+ }
1319
+ }
1320
+ &nbsp;
1321
+ return result;
1322
+ }
1323
+ &nbsp;
1324
+ private cachedPrimaryPrefix = null;
1325
+ private cachedPrimarySuffix = null;
1326
+ private cachedPrimaryTimePattern = null;
1327
+ &nbsp;
1328
+ getPrimaryTimePatternThroughCache() {
1329
+ const primaryPrefix = this.primaryPrefix();
1330
+ const primarySuffix = this.primarySuffix();
1331
+ &nbsp;
1332
+ if (this.cachedPrimaryPrefix === primaryPrefix &amp;&amp; this.cachedPrimarySuffix === primarySuffix) {
1333
+ return this.cachedPrimaryTimePattern;
1334
+ }
1335
+ &nbsp;
1336
+ this.cachedPrimaryTimePattern = primaryTimePattern(
1337
+ this.primaryPatternLeftBoundary(),
1338
+ primaryPrefix,
1339
+ primarySuffix,
1340
+ this.patternFlags()
1341
+ );
1342
+ this.cachedPrimaryPrefix = primaryPrefix;
1343
+ this.cachedPrimarySuffix = primarySuffix;
1344
+ return this.cachedPrimaryTimePattern;
1345
+ }
1346
+ &nbsp;
1347
+ private cachedFollowingPhase = null;
1348
+ private cachedFollowingSuffix = null;
1349
+ private cachedFollowingTimePatten = null;
1350
+ &nbsp;
1351
+ getFollowingTimePatternThroughCache() {
1352
+ const followingPhase = this.followingPhase();
1353
+ const followingSuffix = this.followingSuffix();
1354
+ &nbsp;
1355
+ if (this.cachedFollowingPhase === followingPhase &amp;&amp; this.cachedFollowingSuffix === followingSuffix) {
1356
+ return this.cachedFollowingTimePatten;
1357
+ }
1358
+ &nbsp;
1359
+ this.cachedFollowingTimePatten = followingTimePatten(followingPhase, followingSuffix);
1360
+ this.cachedFollowingPhase = followingPhase;
1361
+ this.cachedFollowingSuffix = followingSuffix;
1362
+ return this.cachedFollowingTimePatten;
1363
+ }
1364
+ }
1365
+ &nbsp;</pre></td></tr></table></pre>
1366
+
1367
+ <div class='push'></div><!-- for sticky footer -->
1368
+ </div><!-- /wrapper -->
1369
+ <div class='footer quiet pad2 space-top1 center small'>
1370
+ Code coverage generated by
1371
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1372
+ at 2022-12-25T05:11:28.430Z
1373
+ </div>
1374
+ <script src="../../../prettify.js"></script>
1375
+ <script>
1376
+ window.onload = function () {
1377
+ prettyPrint();
1378
+ };
1379
+ </script>
1380
+ <script src="../../../sorter.js"></script>
1381
+ <script src="../../../block-navigation.js"></script>
1382
+ </body>
1383
+ </html>
1384
+