@futdevpro/nts-dynamo 1.15.136 → 1.15.139

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 (1341) hide show
  1. package/.c8rc.json +26 -26
  2. package/.copilot/patterns.json +7 -7
  3. package/.cursor/rules/__assistant_guide.mdc +30 -30
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  7. package/.cursor/rules/_ag_frontend.mdc +39 -39
  8. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  9. package/.cursor/rules/_ag_naming.mdc +115 -115
  10. package/.cursor/rules/_ag_should-be.mdc +6 -6
  11. package/.cursor/rules/ai_development_guide.md +60 -60
  12. package/.cursor/rules/cursor-rules.md +160 -160
  13. package/.cursor/rules/default-command.mdc +464 -464
  14. package/.cursor/rules/error_code_pattern.md +39 -39
  15. package/.cursor/rules/saved rule mcp server use.md +15 -15
  16. package/.vscode/settings.json +10 -10
  17. package/HOWTO.md +15 -15
  18. package/LICENSE +21 -21
  19. package/_specifications/BACKLOG.md +92 -92
  20. package/_specifications/TODO.md +15 -15
  21. package/_specifications/agent.md +138 -138
  22. package/build/_collections/app-version-header.util.spec.d.ts +2 -0
  23. package/build/_collections/app-version-header.util.spec.d.ts.map +1 -0
  24. package/build/_collections/app-version-header.util.spec.js +82 -0
  25. package/build/_collections/app-version-header.util.spec.js.map +1 -0
  26. package/build/_collections/archive.util.spec.d.ts +2 -0
  27. package/build/_collections/archive.util.spec.d.ts.map +1 -0
  28. package/build/_collections/archive.util.spec.js +51 -0
  29. package/build/_collections/archive.util.spec.js.map +1 -0
  30. package/build/_collections/client-safe-error.util.spec.d.ts +2 -0
  31. package/build/_collections/client-safe-error.util.spec.d.ts.map +1 -0
  32. package/build/_collections/client-safe-error.util.spec.js +124 -0
  33. package/build/_collections/client-safe-error.util.spec.js.map +1 -0
  34. package/build/_collections/default-fallback-cache-max-age.const.spec.d.ts +2 -0
  35. package/build/_collections/default-fallback-cache-max-age.const.spec.d.ts.map +1 -0
  36. package/build/_collections/default-fallback-cache-max-age.const.spec.js +12 -0
  37. package/build/_collections/default-fallback-cache-max-age.const.spec.js.map +1 -0
  38. package/build/_collections/default-not-found-page.const.spec.d.ts +2 -0
  39. package/build/_collections/default-not-found-page.const.spec.d.ts.map +1 -0
  40. package/build/_collections/default-not-found-page.const.spec.js +19 -0
  41. package/build/_collections/default-not-found-page.const.spec.js.map +1 -0
  42. package/build/_collections/default-socket-path.const.spec.d.ts +2 -0
  43. package/build/_collections/default-socket-path.const.spec.d.ts.map +1 -0
  44. package/build/_collections/default-socket-path.const.spec.js +13 -0
  45. package/build/_collections/default-socket-path.const.spec.js.map +1 -0
  46. package/build/_collections/field-encryption.util.spec.d.ts +2 -0
  47. package/build/_collections/field-encryption.util.spec.d.ts.map +1 -0
  48. package/build/_collections/field-encryption.util.spec.js +156 -0
  49. package/build/_collections/field-encryption.util.spec.js.map +1 -0
  50. package/build/_collections/get-environment-settings.util.spec.d.ts +2 -0
  51. package/build/_collections/get-environment-settings.util.spec.d.ts.map +1 -0
  52. package/build/_collections/get-environment-settings.util.spec.js +165 -0
  53. package/build/_collections/get-environment-settings.util.spec.js.map +1 -0
  54. package/build/_collections/load-shed.util.spec.d.ts +2 -0
  55. package/build/_collections/load-shed.util.spec.d.ts.map +1 -0
  56. package/build/_collections/load-shed.util.spec.js +48 -0
  57. package/build/_collections/load-shed.util.spec.js.map +1 -0
  58. package/build/_collections/mongo-reconnect-guard.util.spec.d.ts +2 -0
  59. package/build/_collections/mongo-reconnect-guard.util.spec.d.ts.map +1 -0
  60. package/build/_collections/mongo-reconnect-guard.util.spec.js +46 -0
  61. package/build/_collections/mongo-reconnect-guard.util.spec.js.map +1 -0
  62. package/build/_collections/security-headers.util.spec.d.ts +2 -0
  63. package/build/_collections/security-headers.util.spec.d.ts.map +1 -0
  64. package/build/_collections/security-headers.util.spec.js +66 -0
  65. package/build/_collections/security-headers.util.spec.js.map +1 -0
  66. package/build/_collections/signed-url.util.spec.d.ts +2 -0
  67. package/build/_collections/signed-url.util.spec.d.ts.map +1 -0
  68. package/build/_collections/signed-url.util.spec.js +161 -0
  69. package/build/_collections/signed-url.util.spec.js.map +1 -0
  70. package/build/_collections/star.controller.spec.d.ts +2 -0
  71. package/build/_collections/star.controller.spec.d.ts.map +1 -0
  72. package/build/_collections/star.controller.spec.js +194 -0
  73. package/build/_collections/star.controller.spec.js.map +1 -0
  74. package/build/_collections/static-cache-control.util.spec.d.ts +2 -0
  75. package/build/_collections/static-cache-control.util.spec.d.ts.map +1 -0
  76. package/build/_collections/static-cache-control.util.spec.js +41 -0
  77. package/build/_collections/static-cache-control.util.spec.js.map +1 -0
  78. package/build/_models/control-models/api-call-params.control-model.spec.d.ts +2 -0
  79. package/build/_models/control-models/api-call-params.control-model.spec.d.ts.map +1 -0
  80. package/build/_models/control-models/api-call-params.control-model.spec.js +128 -0
  81. package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -0
  82. package/build/_models/control-models/app-ext-system-controls.control-model.spec.d.ts +2 -0
  83. package/build/_models/control-models/app-ext-system-controls.control-model.spec.d.ts.map +1 -0
  84. package/build/_models/control-models/app-ext-system-controls.control-model.spec.js +43 -0
  85. package/build/_models/control-models/app-ext-system-controls.control-model.spec.js.map +1 -0
  86. package/build/_models/control-models/app-params.control-model.spec.d.ts +2 -0
  87. package/build/_models/control-models/app-params.control-model.spec.d.ts.map +1 -0
  88. package/build/_models/control-models/app-params.control-model.spec.js +180 -0
  89. package/build/_models/control-models/app-params.control-model.spec.js.map +1 -0
  90. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts +2 -0
  91. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts.map +1 -0
  92. package/build/_models/control-models/app-system-controls.control-model.spec.js +26 -0
  93. package/build/_models/control-models/app-system-controls.control-model.spec.js.map +1 -0
  94. package/build/_models/control-models/endpoint-params.control-model.spec.d.ts +2 -0
  95. package/build/_models/control-models/endpoint-params.control-model.spec.d.ts.map +1 -0
  96. package/build/_models/control-models/endpoint-params.control-model.spec.js +569 -0
  97. package/build/_models/control-models/endpoint-params.control-model.spec.js.map +1 -0
  98. package/build/_models/control-models/http-settings.control-model.spec.d.ts +2 -0
  99. package/build/_models/control-models/http-settings.control-model.spec.d.ts.map +1 -0
  100. package/build/_models/control-models/http-settings.control-model.spec.js +71 -0
  101. package/build/_models/control-models/http-settings.control-model.spec.js.map +1 -0
  102. package/build/_models/control-models/system-control.control-model.spec.d.ts +2 -0
  103. package/build/_models/control-models/system-control.control-model.spec.d.ts.map +1 -0
  104. package/build/_models/control-models/system-control.control-model.spec.js +24 -0
  105. package/build/_models/control-models/system-control.control-model.spec.js.map +1 -0
  106. package/build/_models/interfaces/cors-settings.interface.spec.d.ts +2 -0
  107. package/build/_models/interfaces/cors-settings.interface.spec.d.ts.map +1 -0
  108. package/build/_models/interfaces/cors-settings.interface.spec.js +48 -0
  109. package/build/_models/interfaces/cors-settings.interface.spec.js.map +1 -0
  110. package/build/_models/interfaces/static-client-settings.interface.spec.d.ts +2 -0
  111. package/build/_models/interfaces/static-client-settings.interface.spec.d.ts.map +1 -0
  112. package/build/_models/interfaces/static-client-settings.interface.spec.js +28 -0
  113. package/build/_models/interfaces/static-client-settings.interface.spec.js.map +1 -0
  114. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.d.ts +2 -0
  115. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.d.ts.map +1 -0
  116. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.js +185 -0
  117. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.js.map +1 -0
  118. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.d.ts +2 -0
  119. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.d.ts.map +1 -0
  120. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.js +132 -0
  121. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.js.map +1 -0
  122. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.d.ts +2 -0
  123. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.d.ts.map +1 -0
  124. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.js +56 -0
  125. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.js.map +1 -0
  126. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.d.ts +2 -0
  127. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.d.ts.map +1 -0
  128. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.js +43 -0
  129. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.js.map +1 -0
  130. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.d.ts +2 -0
  131. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.d.ts.map +1 -0
  132. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.js +47 -0
  133. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.js.map +1 -0
  134. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.d.ts +2 -0
  135. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.d.ts.map +1 -0
  136. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.js +98 -0
  137. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.js.map +1 -0
  138. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.d.ts +2 -0
  139. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.d.ts.map +1 -0
  140. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.js +117 -0
  141. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.js.map +1 -0
  142. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.d.ts +2 -0
  143. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.d.ts.map +1 -0
  144. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.js +87 -0
  145. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.js.map +1 -0
  146. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.d.ts +2 -0
  147. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.d.ts.map +1 -0
  148. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.js +42 -0
  149. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.js.map +1 -0
  150. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.d.ts +2 -0
  151. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.d.ts.map +1 -0
  152. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.js +74 -0
  153. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.js.map +1 -0
  154. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.d.ts +2 -0
  155. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.d.ts.map +1 -0
  156. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.js +95 -0
  157. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.js.map +1 -0
  158. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.d.ts +2 -0
  159. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.d.ts.map +1 -0
  160. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.js +207 -0
  161. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.js.map +1 -0
  162. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.d.ts +2 -0
  163. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.d.ts.map +1 -0
  164. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.js +244 -0
  165. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.js.map +1 -0
  166. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.d.ts +2 -0
  167. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.d.ts.map +1 -0
  168. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.js +162 -0
  169. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.js.map +1 -0
  170. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.d.ts +2 -0
  171. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.d.ts.map +1 -0
  172. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.js +279 -0
  173. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.js.map +1 -0
  174. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.d.ts +2 -0
  175. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.d.ts.map +1 -0
  176. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.js +452 -0
  177. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.js.map +1 -0
  178. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.d.ts +2 -0
  179. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.d.ts.map +1 -0
  180. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.js +293 -0
  181. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.js.map +1 -0
  182. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.d.ts +2 -0
  183. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.d.ts.map +1 -0
  184. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.js +395 -0
  185. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.js.map +1 -0
  186. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.d.ts +2 -0
  187. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.d.ts.map +1 -0
  188. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.js +411 -0
  189. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.js.map +1 -0
  190. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.d.ts +2 -0
  191. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.d.ts.map +1 -0
  192. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.js +143 -0
  193. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.js.map +1 -0
  194. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.d.ts +2 -0
  195. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.d.ts.map +1 -0
  196. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.js +98 -0
  197. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.js.map +1 -0
  198. package/build/_modules/ai/_services/ai-embedding.service-base.spec.d.ts +2 -0
  199. package/build/_modules/ai/_services/ai-embedding.service-base.spec.d.ts.map +1 -0
  200. package/build/_modules/ai/_services/ai-embedding.service-base.spec.js +80 -0
  201. package/build/_modules/ai/_services/ai-embedding.service-base.spec.js.map +1 -0
  202. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.d.ts +2 -0
  203. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.d.ts.map +1 -0
  204. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.js +186 -0
  205. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.js.map +1 -0
  206. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.d.ts +2 -0
  207. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.d.ts.map +1 -0
  208. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.js +108 -0
  209. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.js.map +1 -0
  210. package/build/_modules/ai/_services/ai-llm.service-base.spec.d.ts +2 -0
  211. package/build/_modules/ai/_services/ai-llm.service-base.spec.d.ts.map +1 -0
  212. package/build/_modules/ai/_services/ai-llm.service-base.spec.js +185 -0
  213. package/build/_modules/ai/_services/ai-llm.service-base.spec.js.map +1 -0
  214. package/build/_modules/ai/_services/ai-provider.service-base.spec.d.ts +2 -0
  215. package/build/_modules/ai/_services/ai-provider.service-base.spec.d.ts.map +1 -0
  216. package/build/_modules/ai/_services/ai-provider.service-base.spec.js +128 -0
  217. package/build/_modules/ai/_services/ai-provider.service-base.spec.js.map +1 -0
  218. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.d.ts +2 -0
  219. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.d.ts.map +1 -0
  220. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.js +159 -0
  221. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.js.map +1 -0
  222. package/build/_modules/assistant/_collections/ass.util.spec.d.ts +2 -0
  223. package/build/_modules/assistant/_collections/ass.util.spec.d.ts.map +1 -0
  224. package/build/_modules/assistant/_collections/ass.util.spec.js +153 -0
  225. package/build/_modules/assistant/_collections/ass.util.spec.js.map +1 -0
  226. package/build/_modules/assistant/_services/ass-io.control-service.spec.d.ts +2 -0
  227. package/build/_modules/assistant/_services/ass-io.control-service.spec.d.ts.map +1 -0
  228. package/build/_modules/assistant/_services/ass-io.control-service.spec.js +99 -0
  229. package/build/_modules/assistant/_services/ass-io.control-service.spec.js.map +1 -0
  230. package/build/_modules/assistant/_services/ass-main.control-service.spec.d.ts +2 -0
  231. package/build/_modules/assistant/_services/ass-main.control-service.spec.d.ts.map +1 -0
  232. package/build/_modules/assistant/_services/ass-main.control-service.spec.js +146 -0
  233. package/build/_modules/assistant/_services/ass-main.control-service.spec.js.map +1 -0
  234. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.d.ts +2 -0
  235. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.d.ts.map +1 -0
  236. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.js +356 -0
  237. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.js.map +1 -0
  238. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.d.ts +2 -0
  239. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.d.ts.map +1 -0
  240. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.js +93 -0
  241. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.js.map +1 -0
  242. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.d.ts +2 -0
  243. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.d.ts.map +1 -0
  244. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.js +304 -0
  245. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.js.map +1 -0
  246. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.d.ts +2 -0
  247. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.d.ts.map +1 -0
  248. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.js +336 -0
  249. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.js.map +1 -0
  250. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.d.ts +2 -0
  251. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.d.ts.map +1 -0
  252. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.js +337 -0
  253. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.js.map +1 -0
  254. package/build/_modules/bot/_services/bot-commands.control-service.spec.d.ts +2 -0
  255. package/build/_modules/bot/_services/bot-commands.control-service.spec.d.ts.map +1 -0
  256. package/build/_modules/bot/_services/bot-commands.control-service.spec.js +84 -0
  257. package/build/_modules/bot/_services/bot-commands.control-service.spec.js.map +1 -0
  258. package/build/_modules/bot/_services/bot-io.control-service.spec.d.ts +2 -0
  259. package/build/_modules/bot/_services/bot-io.control-service.spec.d.ts.map +1 -0
  260. package/build/_modules/bot/_services/bot-io.control-service.spec.js +228 -0
  261. package/build/_modules/bot/_services/bot-io.control-service.spec.js.map +1 -0
  262. package/build/_modules/bot/_services/bot-main.control-service.spec.d.ts +2 -0
  263. package/build/_modules/bot/_services/bot-main.control-service.spec.d.ts.map +1 -0
  264. package/build/_modules/bot/_services/bot-main.control-service.spec.js +164 -0
  265. package/build/_modules/bot/_services/bot-main.control-service.spec.js.map +1 -0
  266. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.d.ts +2 -0
  267. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.d.ts.map +1 -0
  268. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.js +267 -0
  269. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.js.map +1 -0
  270. package/build/_modules/bot/_services/bot-routines.control-service.spec.d.ts +2 -0
  271. package/build/_modules/bot/_services/bot-routines.control-service.spec.d.ts.map +1 -0
  272. package/build/_modules/bot/_services/bot-routines.control-service.spec.js +82 -0
  273. package/build/_modules/bot/_services/bot-routines.control-service.spec.js.map +1 -0
  274. package/build/_modules/custom-data/custom-data.controller.spec.d.ts +2 -0
  275. package/build/_modules/custom-data/custom-data.controller.spec.d.ts.map +1 -0
  276. package/build/_modules/custom-data/custom-data.controller.spec.js +38 -0
  277. package/build/_modules/custom-data/custom-data.controller.spec.js.map +1 -0
  278. package/build/_modules/custom-data/custom-data.data-service.spec.d.ts +2 -0
  279. package/build/_modules/custom-data/custom-data.data-service.spec.d.ts.map +1 -0
  280. package/build/_modules/custom-data/custom-data.data-service.spec.js +45 -0
  281. package/build/_modules/custom-data/custom-data.data-service.spec.js.map +1 -0
  282. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.d.ts +2 -0
  283. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.d.ts.map +1 -0
  284. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.js +23 -0
  285. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.js.map +1 -0
  286. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.d.ts +2 -0
  287. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.d.ts.map +1 -0
  288. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.js +124 -0
  289. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.js.map +1 -0
  290. package/build/_modules/defaults/_services/default-auth.service.spec.d.ts +2 -0
  291. package/build/_modules/defaults/_services/default-auth.service.spec.d.ts.map +1 -0
  292. package/build/_modules/defaults/_services/default-auth.service.spec.js +210 -0
  293. package/build/_modules/defaults/_services/default-auth.service.spec.js.map +1 -0
  294. package/build/_modules/defaults/_services/default-socket-events.service.spec.d.ts +2 -0
  295. package/build/_modules/defaults/_services/default-socket-events.service.spec.d.ts.map +1 -0
  296. package/build/_modules/defaults/_services/default-socket-events.service.spec.js +34 -0
  297. package/build/_modules/defaults/_services/default-socket-events.service.spec.js.map +1 -0
  298. package/build/_modules/defaults/_services/default-user.data-service.spec.d.ts +2 -0
  299. package/build/_modules/defaults/_services/default-user.data-service.spec.d.ts.map +1 -0
  300. package/build/_modules/defaults/_services/default-user.data-service.spec.js +133 -0
  301. package/build/_modules/defaults/_services/default-user.data-service.spec.js.map +1 -0
  302. package/build/_modules/discord-assistant/_collections/dias.util.spec.d.ts +2 -0
  303. package/build/_modules/discord-assistant/_collections/dias.util.spec.d.ts.map +1 -0
  304. package/build/_modules/discord-assistant/_collections/dias.util.spec.js +307 -0
  305. package/build/_modules/discord-assistant/_collections/dias.util.spec.js.map +1 -0
  306. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.d.ts +2 -0
  307. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.d.ts.map +1 -0
  308. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.js +76 -0
  309. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.js.map +1 -0
  310. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.d.ts +2 -0
  311. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.d.ts.map +1 -0
  312. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.js +17 -0
  313. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.js.map +1 -0
  314. package/build/_modules/discord-assistant/_services/dias.service-base.spec.d.ts +2 -0
  315. package/build/_modules/discord-assistant/_services/dias.service-base.spec.d.ts.map +1 -0
  316. package/build/_modules/discord-assistant/_services/dias.service-base.spec.js +151 -0
  317. package/build/_modules/discord-assistant/_services/dias.service-base.spec.js.map +1 -0
  318. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.d.ts +2 -0
  319. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.d.ts.map +1 -0
  320. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.js +29 -0
  321. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.js.map +1 -0
  322. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.d.ts +2 -0
  323. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.d.ts.map +1 -0
  324. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.js +172 -0
  325. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.js.map +1 -0
  326. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.d.ts +2 -0
  327. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.d.ts.map +1 -0
  328. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.js +133 -0
  329. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.js.map +1 -0
  330. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.d.ts +2 -0
  331. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.d.ts.map +1 -0
  332. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.js +215 -0
  333. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.js.map +1 -0
  334. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.d.ts +2 -0
  335. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.d.ts.map +1 -0
  336. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.js +342 -0
  337. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.js.map +1 -0
  338. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.d.ts +2 -0
  339. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.d.ts.map +1 -0
  340. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.js +87 -0
  341. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.js.map +1 -0
  342. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.d.ts +2 -0
  343. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.d.ts.map +1 -0
  344. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.js +137 -0
  345. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.js.map +1 -0
  346. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.d.ts +2 -0
  347. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.d.ts.map +1 -0
  348. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.js +345 -0
  349. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.js.map +1 -0
  350. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.d.ts +2 -0
  351. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.d.ts.map +1 -0
  352. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.js +407 -0
  353. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.js.map +1 -0
  354. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.d.ts +2 -0
  355. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.d.ts.map +1 -0
  356. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.js +160 -0
  357. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.js.map +1 -0
  358. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.d.ts +2 -0
  359. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.d.ts.map +1 -0
  360. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.js +122 -0
  361. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.js.map +1 -0
  362. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts +2 -0
  363. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts.map +1 -0
  364. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js +388 -0
  365. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js.map +1 -0
  366. package/build/_modules/logs/file-log.service.spec.d.ts +2 -0
  367. package/build/_modules/logs/file-log.service.spec.d.ts.map +1 -0
  368. package/build/_modules/logs/file-log.service.spec.js +300 -0
  369. package/build/_modules/logs/file-log.service.spec.js.map +1 -0
  370. package/build/_modules/logs/file-logs.controller.spec.d.ts +2 -0
  371. package/build/_modules/logs/file-logs.controller.spec.d.ts.map +1 -0
  372. package/build/_modules/logs/file-logs.controller.spec.js +203 -0
  373. package/build/_modules/logs/file-logs.controller.spec.js.map +1 -0
  374. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.d.ts +2 -0
  375. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.d.ts.map +1 -0
  376. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.js +125 -0
  377. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.js.map +1 -0
  378. package/build/_modules/messaging/_collections/msg.util.spec.d.ts +2 -0
  379. package/build/_modules/messaging/_collections/msg.util.spec.d.ts.map +1 -0
  380. package/build/_modules/messaging/_collections/msg.util.spec.js +157 -0
  381. package/build/_modules/messaging/_collections/msg.util.spec.js.map +1 -0
  382. package/build/_modules/messaging/_services/msg-events.service.spec.d.ts +2 -0
  383. package/build/_modules/messaging/_services/msg-events.service.spec.d.ts.map +1 -0
  384. package/build/_modules/messaging/_services/msg-events.service.spec.js +122 -0
  385. package/build/_modules/messaging/_services/msg-events.service.spec.js.map +1 -0
  386. package/build/_modules/messaging/_services/msg-main.control-service.spec.d.ts +2 -0
  387. package/build/_modules/messaging/_services/msg-main.control-service.spec.d.ts.map +1 -0
  388. package/build/_modules/messaging/_services/msg-main.control-service.spec.js +121 -0
  389. package/build/_modules/messaging/_services/msg-main.control-service.spec.js.map +1 -0
  390. package/build/_modules/messaging/_services/msg.controller.spec.d.ts +2 -0
  391. package/build/_modules/messaging/_services/msg.controller.spec.d.ts.map +1 -0
  392. package/build/_modules/messaging/_services/msg.controller.spec.js +165 -0
  393. package/build/_modules/messaging/_services/msg.controller.spec.js.map +1 -0
  394. package/build/_modules/mock/app-params.mock.spec.d.ts +2 -0
  395. package/build/_modules/mock/app-params.mock.spec.d.ts.map +1 -0
  396. package/build/_modules/mock/app-params.mock.spec.js +19 -0
  397. package/build/_modules/mock/app-params.mock.spec.js.map +1 -0
  398. package/build/_modules/mock/auth-service.mock.spec.d.ts +2 -0
  399. package/build/_modules/mock/auth-service.mock.spec.d.ts.map +1 -0
  400. package/build/_modules/mock/auth-service.mock.spec.js +40 -0
  401. package/build/_modules/mock/auth-service.mock.spec.js.map +1 -0
  402. package/build/_modules/mock/controller.mock.spec.d.ts +2 -0
  403. package/build/_modules/mock/controller.mock.spec.d.ts.map +1 -0
  404. package/build/_modules/mock/controller.mock.spec.js +23 -0
  405. package/build/_modules/mock/controller.mock.spec.js.map +1 -0
  406. package/build/_modules/mock/data-model.mock.spec.d.ts +2 -0
  407. package/build/_modules/mock/data-model.mock.spec.d.ts.map +1 -0
  408. package/build/_modules/mock/data-model.mock.spec.js +101 -0
  409. package/build/_modules/mock/data-model.mock.spec.js.map +1 -0
  410. package/build/_modules/mock/email-service-collection.mock.spec.d.ts +2 -0
  411. package/build/_modules/mock/email-service-collection.mock.spec.d.ts.map +1 -0
  412. package/build/_modules/mock/email-service-collection.mock.spec.js +21 -0
  413. package/build/_modules/mock/email-service-collection.mock.spec.js.map +1 -0
  414. package/build/_modules/mock/email-service.mock.spec.d.ts +2 -0
  415. package/build/_modules/mock/email-service.mock.spec.d.ts.map +1 -0
  416. package/build/_modules/mock/email-service.mock.spec.js +14 -0
  417. package/build/_modules/mock/email-service.mock.spec.js.map +1 -0
  418. package/build/_modules/mock/socket-client.mock.spec.d.ts +2 -0
  419. package/build/_modules/mock/socket-client.mock.spec.d.ts.map +1 -0
  420. package/build/_modules/mock/socket-client.mock.spec.js +32 -0
  421. package/build/_modules/mock/socket-client.mock.spec.js.map +1 -0
  422. package/build/_modules/mock/socket-server.mock.spec.d.ts +2 -0
  423. package/build/_modules/mock/socket-server.mock.spec.d.ts.map +1 -0
  424. package/build/_modules/mock/socket-server.mock.spec.js +36 -0
  425. package/build/_modules/mock/socket-server.mock.spec.js.map +1 -0
  426. package/build/_modules/oauth2/_routes/oauth2.controller.spec.d.ts +2 -0
  427. package/build/_modules/oauth2/_routes/oauth2.controller.spec.d.ts.map +1 -0
  428. package/build/_modules/oauth2/_routes/oauth2.controller.spec.js +89 -0
  429. package/build/_modules/oauth2/_routes/oauth2.controller.spec.js.map +1 -0
  430. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.d.ts +2 -0
  431. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.d.ts.map +1 -0
  432. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.js +195 -0
  433. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.js.map +1 -0
  434. package/build/_modules/oauth2/_services/oauth2.control-service.spec.d.ts +2 -0
  435. package/build/_modules/oauth2/_services/oauth2.control-service.spec.d.ts.map +1 -0
  436. package/build/_modules/oauth2/_services/oauth2.control-service.spec.js +432 -0
  437. package/build/_modules/oauth2/_services/oauth2.control-service.spec.js.map +1 -0
  438. package/build/_modules/rate-limit/rate-limit.middleware.spec.d.ts +2 -0
  439. package/build/_modules/rate-limit/rate-limit.middleware.spec.d.ts.map +1 -0
  440. package/build/_modules/rate-limit/rate-limit.middleware.spec.js +277 -0
  441. package/build/_modules/rate-limit/rate-limit.middleware.spec.js.map +1 -0
  442. package/build/_modules/scheduler/scheduler.controller.spec.d.ts +2 -0
  443. package/build/_modules/scheduler/scheduler.controller.spec.d.ts.map +1 -0
  444. package/build/_modules/scheduler/scheduler.controller.spec.js +35 -0
  445. package/build/_modules/scheduler/scheduler.controller.spec.js.map +1 -0
  446. package/build/_modules/scheduler/scheduler.service.spec.d.ts +2 -0
  447. package/build/_modules/scheduler/scheduler.service.spec.d.ts.map +1 -0
  448. package/build/_modules/scheduler/scheduler.service.spec.js +123 -0
  449. package/build/_modules/scheduler/scheduler.service.spec.js.map +1 -0
  450. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.d.ts +2 -0
  451. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.d.ts.map +1 -0
  452. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.js +229 -0
  453. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.js.map +1 -0
  454. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.d.ts +2 -0
  455. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.d.ts.map +1 -0
  456. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.js +88 -0
  457. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.js.map +1 -0
  458. package/build/_modules/server/errors/errors.control-service.spec.d.ts +2 -0
  459. package/build/_modules/server/errors/errors.control-service.spec.d.ts.map +1 -0
  460. package/build/_modules/server/errors/errors.control-service.spec.js +198 -0
  461. package/build/_modules/server/errors/errors.control-service.spec.js.map +1 -0
  462. package/build/_modules/server/errors/errors.controller.spec.d.ts +2 -0
  463. package/build/_modules/server/errors/errors.controller.spec.d.ts.map +1 -0
  464. package/build/_modules/server/errors/errors.controller.spec.js +287 -0
  465. package/build/_modules/server/errors/errors.controller.spec.js.map +1 -0
  466. package/build/_modules/server/errors/errors.data-service.spec.d.ts +2 -0
  467. package/build/_modules/server/errors/errors.data-service.spec.d.ts.map +1 -0
  468. package/build/_modules/server/errors/errors.data-service.spec.js +390 -0
  469. package/build/_modules/server/errors/errors.data-service.spec.js.map +1 -0
  470. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.d.ts +2 -0
  471. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.d.ts.map +1 -0
  472. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.js +59 -0
  473. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.js.map +1 -0
  474. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.d.ts +2 -0
  475. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.d.ts.map +1 -0
  476. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.js +58 -0
  477. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.js.map +1 -0
  478. package/build/_modules/server/server-status/server-status.control-service.spec.d.ts +2 -0
  479. package/build/_modules/server/server-status/server-status.control-service.spec.d.ts.map +1 -0
  480. package/build/_modules/server/server-status/server-status.control-service.spec.js +537 -0
  481. package/build/_modules/server/server-status/server-status.control-service.spec.js.map +1 -0
  482. package/build/_modules/server/server-status/server-status.controller.spec.d.ts +2 -0
  483. package/build/_modules/server/server-status/server-status.controller.spec.d.ts.map +1 -0
  484. package/build/_modules/server/server-status/server-status.controller.spec.js +223 -0
  485. package/build/_modules/server/server-status/server-status.controller.spec.js.map +1 -0
  486. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts +2 -0
  487. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts.map +1 -0
  488. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +25 -0
  489. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -0
  490. package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
  491. package/build/_modules/socket/_models/socket-presence.control-model.js +1 -0
  492. package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
  493. package/build/_modules/socket/_models/socket-presence.control-model.spec.d.ts +2 -0
  494. package/build/_modules/socket/_models/socket-presence.control-model.spec.d.ts.map +1 -0
  495. package/build/_modules/socket/_models/socket-presence.control-model.spec.js +137 -0
  496. package/build/_modules/socket/_models/socket-presence.control-model.spec.js.map +1 -0
  497. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts +2 -0
  498. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts.map +1 -0
  499. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js +58 -0
  500. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js.map +1 -0
  501. package/build/_modules/socket/_services/socket-client.service.spec.d.ts +2 -0
  502. package/build/_modules/socket/_services/socket-client.service.spec.d.ts.map +1 -0
  503. package/build/_modules/socket/_services/socket-client.service.spec.js +12 -0
  504. package/build/_modules/socket/_services/socket-client.service.spec.js.map +1 -0
  505. package/build/_modules/socket/_services/socket-server.service.d.ts +3 -1
  506. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  507. package/build/_modules/socket/_services/socket-server.service.js +32 -50
  508. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  509. package/build/_modules/socket/_services/socket-server.service.spec.d.ts +2 -0
  510. package/build/_modules/socket/_services/socket-server.service.spec.d.ts.map +1 -0
  511. package/build/_modules/socket/_services/socket-server.service.spec.js +149 -0
  512. package/build/_modules/socket/_services/socket-server.service.spec.js.map +1 -0
  513. package/build/_modules/socket/app-extended.integration.spec.d.ts +2 -0
  514. package/build/_modules/socket/app-extended.integration.spec.d.ts.map +1 -0
  515. package/build/_modules/socket/app-extended.integration.spec.js +76 -0
  516. package/build/_modules/socket/app-extended.integration.spec.js.map +1 -0
  517. package/build/_modules/test/get-test-routing-module.util.spec.d.ts +2 -0
  518. package/build/_modules/test/get-test-routing-module.util.spec.d.ts.map +1 -0
  519. package/build/_modules/test/get-test-routing-module.util.spec.js +23 -0
  520. package/build/_modules/test/get-test-routing-module.util.spec.js.map +1 -0
  521. package/build/_modules/test/test.controller.spec.d.ts +2 -0
  522. package/build/_modules/test/test.controller.spec.d.ts.map +1 -0
  523. package/build/_modules/test/test.controller.spec.js +54 -0
  524. package/build/_modules/test/test.controller.spec.js.map +1 -0
  525. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.d.ts +2 -0
  526. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.d.ts.map +1 -0
  527. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.js +91 -0
  528. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.js.map +1 -0
  529. package/build/_modules/usage/usage.controller.spec.d.ts +2 -0
  530. package/build/_modules/usage/usage.controller.spec.d.ts.map +1 -0
  531. package/build/_modules/usage/usage.controller.spec.js +82 -0
  532. package/build/_modules/usage/usage.controller.spec.js.map +1 -0
  533. package/build/_modules/usage/usage.data-service.spec.d.ts +2 -0
  534. package/build/_modules/usage/usage.data-service.spec.d.ts.map +1 -0
  535. package/build/_modules/usage/usage.data-service.spec.js +284 -0
  536. package/build/_modules/usage/usage.data-service.spec.js.map +1 -0
  537. package/build/_services/base/api.service-base.spec.d.ts +2 -0
  538. package/build/_services/base/api.service-base.spec.d.ts.map +1 -0
  539. package/build/_services/base/api.service-base.spec.js +91 -0
  540. package/build/_services/base/api.service-base.spec.js.map +1 -0
  541. package/build/_services/base/archive-data.service.spec.d.ts +2 -0
  542. package/build/_services/base/archive-data.service.spec.d.ts.map +1 -0
  543. package/build/_services/base/archive-data.service.spec.js +149 -0
  544. package/build/_services/base/archive-data.service.spec.js.map +1 -0
  545. package/build/_services/base/data.service.spec.d.ts +2 -0
  546. package/build/_services/base/data.service.spec.d.ts.map +1 -0
  547. package/build/_services/base/data.service.spec.js +614 -0
  548. package/build/_services/base/data.service.spec.js.map +1 -0
  549. package/build/_services/base/db.service.encryption.spec.d.ts +2 -0
  550. package/build/_services/base/db.service.encryption.spec.d.ts.map +1 -0
  551. package/build/_services/base/db.service.encryption.spec.js +66 -0
  552. package/build/_services/base/db.service.encryption.spec.js.map +1 -0
  553. package/build/_services/base/db.service.spec.d.ts +2 -0
  554. package/build/_services/base/db.service.spec.d.ts.map +1 -0
  555. package/build/_services/base/db.service.spec.js +127 -0
  556. package/build/_services/base/db.service.spec.js.map +1 -0
  557. package/build/_services/base/singleton.service-base.spec.d.ts +2 -0
  558. package/build/_services/base/singleton.service-base.spec.d.ts.map +1 -0
  559. package/build/_services/base/singleton.service-base.spec.js +24 -0
  560. package/build/_services/base/singleton.service-base.spec.js.map +1 -0
  561. package/build/_services/base/singleton.service.spec.d.ts +2 -0
  562. package/build/_services/base/singleton.service.spec.d.ts.map +1 -0
  563. package/build/_services/base/singleton.service.spec.js +88 -0
  564. package/build/_services/base/singleton.service.spec.js.map +1 -0
  565. package/build/_services/core/api.service.spec.d.ts +2 -0
  566. package/build/_services/core/api.service.spec.d.ts.map +1 -0
  567. package/build/_services/core/api.service.spec.js +150 -0
  568. package/build/_services/core/api.service.spec.js.map +1 -0
  569. package/build/_services/core/auth.service.spec.d.ts +2 -0
  570. package/build/_services/core/auth.service.spec.d.ts.map +1 -0
  571. package/build/_services/core/auth.service.spec.js +129 -0
  572. package/build/_services/core/auth.service.spec.js.map +1 -0
  573. package/build/_services/core/collection-growth-monitor.service.spec.d.ts +2 -0
  574. package/build/_services/core/collection-growth-monitor.service.spec.d.ts.map +1 -0
  575. package/build/_services/core/collection-growth-monitor.service.spec.js +51 -0
  576. package/build/_services/core/collection-growth-monitor.service.spec.js.map +1 -0
  577. package/build/_services/core/diagnostics.service.spec.d.ts +2 -0
  578. package/build/_services/core/diagnostics.service.spec.d.ts.map +1 -0
  579. package/build/_services/core/diagnostics.service.spec.js +40 -0
  580. package/build/_services/core/diagnostics.service.spec.js.map +1 -0
  581. package/build/_services/core/email.service.spec.d.ts +2 -0
  582. package/build/_services/core/email.service.spec.d.ts.map +1 -0
  583. package/build/_services/core/email.service.spec.js +77 -0
  584. package/build/_services/core/email.service.spec.js.map +1 -0
  585. package/build/_services/core/event-loop-diag.service.spec.d.ts +2 -0
  586. package/build/_services/core/event-loop-diag.service.spec.d.ts.map +1 -0
  587. package/build/_services/core/event-loop-diag.service.spec.js +18 -0
  588. package/build/_services/core/event-loop-diag.service.spec.js.map +1 -0
  589. package/build/_services/core/global.service.spec.d.ts +2 -0
  590. package/build/_services/core/global.service.spec.d.ts.map +1 -0
  591. package/build/_services/core/global.service.spec.js +235 -0
  592. package/build/_services/core/global.service.spec.js.map +1 -0
  593. package/build/_services/core/memory-guard.service.spec.d.ts +2 -0
  594. package/build/_services/core/memory-guard.service.spec.d.ts.map +1 -0
  595. package/build/_services/core/memory-guard.service.spec.js +219 -0
  596. package/build/_services/core/memory-guard.service.spec.js.map +1 -0
  597. package/build/_services/core/migration-runner.service.spec.d.ts +2 -0
  598. package/build/_services/core/migration-runner.service.spec.d.ts.map +1 -0
  599. package/build/_services/core/migration-runner.service.spec.js +77 -0
  600. package/build/_services/core/migration-runner.service.spec.js.map +1 -0
  601. package/build/_services/core/request-hunter.service.spec.d.ts +2 -0
  602. package/build/_services/core/request-hunter.service.spec.d.ts.map +1 -0
  603. package/build/_services/core/request-hunter.service.spec.js +101 -0
  604. package/build/_services/core/request-hunter.service.spec.js.map +1 -0
  605. package/build/_services/core/service-collection.service.spec.d.ts +2 -0
  606. package/build/_services/core/service-collection.service.spec.d.ts.map +1 -0
  607. package/build/_services/core/service-collection.service.spec.js +39 -0
  608. package/build/_services/core/service-collection.service.spec.js.map +1 -0
  609. package/build/_services/route/controller.service.spec.d.ts +2 -0
  610. package/build/_services/route/controller.service.spec.d.ts.map +1 -0
  611. package/build/_services/route/controller.service.spec.js +48 -0
  612. package/build/_services/route/controller.service.spec.js.map +1 -0
  613. package/build/_services/route/routing-module.service.spec.d.ts +2 -0
  614. package/build/_services/route/routing-module.service.spec.d.ts.map +1 -0
  615. package/build/_services/route/routing-module.service.spec.js +81 -0
  616. package/build/_services/route/routing-module.service.spec.js.map +1 -0
  617. package/build/_services/server/app.server-retention.spec.d.ts +2 -0
  618. package/build/_services/server/app.server-retention.spec.d.ts.map +1 -0
  619. package/build/_services/server/app.server-retention.spec.js +93 -0
  620. package/build/_services/server/app.server-retention.spec.js.map +1 -0
  621. package/build/_services/shared.static-service.spec.d.ts +2 -0
  622. package/build/_services/shared.static-service.spec.d.ts.map +1 -0
  623. package/build/_services/shared.static-service.spec.js +82 -0
  624. package/build/_services/shared.static-service.spec.js.map +1 -0
  625. package/coverage/_collections/archive.util.ts.html +139 -0
  626. package/coverage/_collections/get-environment-settings.util.ts.html +229 -0
  627. package/coverage/_collections/index.html +146 -0
  628. package/coverage/_collections/star.controller.ts.html +472 -0
  629. package/coverage/_models/control-models/api-call-params.control-model.ts.html +511 -0
  630. package/coverage/_models/control-models/app-ext-system-controls.control-model.ts.html +112 -0
  631. package/coverage/_models/control-models/app-params.control-model.ts.html +475 -0
  632. package/coverage/_models/control-models/app-system-controls.control-model.ts.html +112 -0
  633. package/coverage/_models/control-models/endpoint-params.control-model.ts.html +1618 -0
  634. package/coverage/_models/control-models/http-settings.control-model.ts.html +172 -0
  635. package/coverage/_models/control-models/index.html +206 -0
  636. package/coverage/_models/control-models/system-control.control-model.ts.html +121 -0
  637. package/coverage/_modules/ai/_models/ai-input-interfaces.ts.html +436 -0
  638. package/coverage/_modules/ai/_models/index.html +116 -0
  639. package/coverage/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts.html +1993 -0
  640. package/coverage/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts.html +340 -0
  641. package/coverage/_modules/ai/_modules/document-ai/_collections/index.html +131 -0
  642. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts.html +523 -0
  643. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts.html +571 -0
  644. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts.html +382 -0
  645. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/index.html +146 -0
  646. package/coverage/_modules/ai/_modules/open-ai/_collections/index.html +131 -0
  647. package/coverage/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts.html +331 -0
  648. package/coverage/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts.html +310 -0
  649. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/index.html +161 -0
  650. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts.html +958 -0
  651. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts.html +1801 -0
  652. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts.html +1390 -0
  653. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts.html +1915 -0
  654. package/coverage/_modules/ai/_modules/open-ai/_services/index.html +146 -0
  655. package/coverage/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts.html +334 -0
  656. package/coverage/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts.html +1822 -0
  657. package/coverage/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts.html +2584 -0
  658. package/coverage/_modules/ai/_services/ai-embedding.service-base.ts.html +208 -0
  659. package/coverage/_modules/ai/_services/ai-llm-chat.service-base.ts.html +289 -0
  660. package/coverage/_modules/ai/_services/ai-llm.service-base.ts.html +1060 -0
  661. package/coverage/_modules/ai/_services/ai-provider.service-base.ts.html +172 -0
  662. package/coverage/_modules/ai/_services/index.html +161 -0
  663. package/coverage/_modules/assistant/_collections/ass.util.ts.html +235 -0
  664. package/coverage/_modules/assistant/_collections/index.html +116 -0
  665. package/coverage/_modules/assistant/_services/ass-io.control-service.ts.html +307 -0
  666. package/coverage/_modules/assistant/_services/ass-main.control-service.ts.html +406 -0
  667. package/coverage/_modules/assistant/_services/index.html +131 -0
  668. package/coverage/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts.html +112 -0
  669. package/coverage/_modules/bot/_modules/discord-bot/_models/index.html +116 -0
  670. package/coverage/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts.html +1978 -0
  671. package/coverage/_modules/bot/_modules/discord-bot/_services/index.html +116 -0
  672. package/coverage/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts.html +250 -0
  673. package/coverage/_modules/bot/_modules/dynamo-bot/_collections/index.html +116 -0
  674. package/coverage/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts.html +130 -0
  675. package/coverage/_modules/bot/_modules/dynamo-bot/_models/index.html +116 -0
  676. package/coverage/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts.html +1414 -0
  677. package/coverage/_modules/bot/_modules/dynamo-bot/_services/index.html +116 -0
  678. package/coverage/_modules/bot/_modules/slack-bot/_models/index.html +116 -0
  679. package/coverage/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts.html +112 -0
  680. package/coverage/_modules/bot/_modules/slack-bot/_services/index.html +116 -0
  681. package/coverage/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts.html +664 -0
  682. package/coverage/_modules/bot/_modules/teams-bot/_models/index.html +116 -0
  683. package/coverage/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts.html +112 -0
  684. package/coverage/_modules/bot/_modules/teams-bot/_services/index.html +116 -0
  685. package/coverage/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts.html +664 -0
  686. package/coverage/_modules/bot/_services/bot-commands.control-service.ts.html +559 -0
  687. package/coverage/_modules/bot/_services/bot-io.control-service.ts.html +1072 -0
  688. package/coverage/_modules/bot/_services/bot-main.control-service.ts.html +1552 -0
  689. package/coverage/_modules/bot/_services/bot-messaging-provider.service-base.ts.html +556 -0
  690. package/coverage/_modules/bot/_services/bot-routines.control-service.ts.html +319 -0
  691. package/coverage/_modules/bot/_services/index.html +176 -0
  692. package/coverage/_modules/custom-data/custom-data.controller.ts.html +292 -0
  693. package/coverage/_modules/custom-data/custom-data.data-service.ts.html +148 -0
  694. package/coverage/_modules/custom-data/get-custom-data-routing-module.util.ts.html +157 -0
  695. package/coverage/_modules/custom-data/index.html +146 -0
  696. package/coverage/_modules/defaults/_models/default-user.data-model.ts.html +301 -0
  697. package/coverage/_modules/defaults/_models/index.html +116 -0
  698. package/coverage/_modules/defaults/_services/default-auth.service.ts.html +616 -0
  699. package/coverage/_modules/defaults/_services/default-socket-events.service.ts.html +268 -0
  700. package/coverage/_modules/defaults/_services/default-user.data-service.ts.html +379 -0
  701. package/coverage/_modules/defaults/_services/index.html +146 -0
  702. package/coverage/_modules/discord-assistant/_collections/dias.util.ts.html +481 -0
  703. package/coverage/_modules/discord-assistant/_collections/index.html +116 -0
  704. package/coverage/_modules/discord-assistant/_models/dias-knowledge.data-model.ts.html +241 -0
  705. package/coverage/_modules/discord-assistant/_models/index.html +116 -0
  706. package/coverage/_modules/discord-assistant/_services/dias-chunk.data-service.ts.html +616 -0
  707. package/coverage/_modules/discord-assistant/_services/dias-io.control-service.ts.html +292 -0
  708. package/coverage/_modules/discord-assistant/_services/dias-main.control-service.ts.html +166 -0
  709. package/coverage/_modules/discord-assistant/_services/dias.service-base.ts.html +313 -0
  710. package/coverage/_modules/discord-assistant/_services/index.html +161 -0
  711. package/coverage/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts.html +118 -0
  712. package/coverage/_modules/discord-assistant-voiced/_services/index.html +116 -0
  713. package/coverage/_modules/discord-bot/_collections/dibo-global-settings.conts.ts.html +250 -0
  714. package/coverage/_modules/discord-bot/_collections/dibo-operations.util.ts.html +1246 -0
  715. package/coverage/_modules/discord-bot/_collections/index.html +131 -0
  716. package/coverage/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts.html +106 -0
  717. package/coverage/_modules/discord-bot/_models/index.html +116 -0
  718. package/coverage/_modules/discord-bot/_services/dibo-commands.control-service.ts.html +544 -0
  719. package/coverage/_modules/discord-bot/_services/dibo-io.control-service.ts.html +1003 -0
  720. package/coverage/_modules/discord-bot/_services/dibo-main.control-service.ts.html +1546 -0
  721. package/coverage/_modules/discord-bot/_services/dibo-routines.control-service.ts.html +376 -0
  722. package/coverage/_modules/discord-bot/_services/index.html +161 -0
  723. package/coverage/_modules/messaging/_collections/get-messaging-routing-module.util.ts.html +163 -0
  724. package/coverage/_modules/messaging/_collections/index.html +131 -0
  725. package/coverage/_modules/messaging/_collections/msg.util.ts.html +334 -0
  726. package/coverage/_modules/messaging/_services/index.html +191 -0
  727. package/coverage/_modules/messaging/_services/msg-conversation.data-service.ts.html +523 -0
  728. package/coverage/_modules/messaging/_services/msg-events.service.ts.html +886 -0
  729. package/coverage/_modules/messaging/_services/msg-integration.control-service.ts.html +622 -0
  730. package/coverage/_modules/messaging/_services/msg-main.control-service.ts.html +1738 -0
  731. package/coverage/_modules/messaging/_services/msg-message.data-service.ts.html +472 -0
  732. package/coverage/_modules/messaging/_services/msg.controller.ts.html +1195 -0
  733. package/coverage/_modules/mock/app-extended-server.mock.ts.html +688 -0
  734. package/coverage/_modules/mock/app-params.mock.ts.html +112 -0
  735. package/coverage/_modules/mock/app-server.mock.ts.html +649 -0
  736. package/coverage/_modules/mock/auth-service.mock.ts.html +169 -0
  737. package/coverage/_modules/mock/controller.mock.ts.html +133 -0
  738. package/coverage/_modules/mock/data-model.mock.ts.html +331 -0
  739. package/coverage/_modules/mock/email-service-collection.mock.ts.html +130 -0
  740. package/coverage/_modules/mock/email-service.mock.ts.html +145 -0
  741. package/coverage/_modules/mock/endpoint.mock.ts.html +358 -0
  742. package/coverage/_modules/mock/index.html +266 -0
  743. package/coverage/_modules/mock/socket-client.mock.ts.html +220 -0
  744. package/coverage/_modules/mock/socket-server.mock.ts.html +247 -0
  745. package/coverage/_modules/oauth2/_routes/index.html +116 -0
  746. package/coverage/_modules/oauth2/_routes/oauth2.controller.ts.html +379 -0
  747. package/coverage/_modules/oauth2/_services/index.html +131 -0
  748. package/coverage/_modules/oauth2/_services/oauth2.auth-service.ts.html +781 -0
  749. package/coverage/_modules/oauth2/_services/oauth2.control-service.ts.html +2044 -0
  750. package/coverage/_modules/server/errors/errors.control-service.ts.html +292 -0
  751. package/coverage/_modules/server/errors/errors.controller.ts.html +895 -0
  752. package/coverage/_modules/server/errors/errors.data-service.ts.html +1666 -0
  753. package/coverage/_modules/server/errors/index.html +146 -0
  754. package/coverage/_modules/server/server-status/index.html +161 -0
  755. package/coverage/_modules/server/server-status/server-status-snapshot.control-service.ts.html +136 -0
  756. package/coverage/_modules/server/server-status/server-status-snapshot.data-service.ts.html +196 -0
  757. package/coverage/_modules/server/server-status/server-status.control-service.ts.html +1093 -0
  758. package/coverage/_modules/server/server-status/server-status.controller.ts.html +478 -0
  759. package/coverage/_modules/socket/_models/index.html +146 -0
  760. package/coverage/_modules/socket/_models/socket-client-service-params.control-model.ts.html +151 -0
  761. package/coverage/_modules/socket/_models/socket-presence.control-model.ts.html +715 -0
  762. package/coverage/_modules/socket/_models/socket-server-service-params.control-model.ts.html +145 -0
  763. package/coverage/_modules/socket/_services/index.html +131 -0
  764. package/coverage/_modules/socket/_services/socket-client.service.ts.html +862 -0
  765. package/coverage/_modules/socket/_services/socket-server.service.ts.html +3196 -0
  766. package/coverage/_modules/socket/app-extended.server.ts.html +1954 -0
  767. package/coverage/_modules/socket/index.html +116 -0
  768. package/coverage/_modules/test/get-test-routing-module.util.ts.html +154 -0
  769. package/coverage/_modules/test/index.html +131 -0
  770. package/coverage/_modules/test/test.controller.ts.html +430 -0
  771. package/coverage/_modules/usage/get-usage-routing-module.util.ts.html +151 -0
  772. package/coverage/_modules/usage/index.html +146 -0
  773. package/coverage/_modules/usage/usage.controller.ts.html +463 -0
  774. package/coverage/_modules/usage/usage.data-service.ts.html +640 -0
  775. package/coverage/_services/base/api.service-base.ts.html +307 -0
  776. package/coverage/_services/base/archive-data.service.ts.html +727 -0
  777. package/coverage/_services/base/data.service.ts.html +7033 -0
  778. package/coverage/_services/base/db.service.ts.html +4786 -0
  779. package/coverage/_services/base/index.html +191 -0
  780. package/coverage/_services/base/singleton.service-base.ts.html +157 -0
  781. package/coverage/_services/base/singleton.service.ts.html +190 -0
  782. package/coverage/_services/core/api.service.ts.html +1900 -0
  783. package/coverage/_services/core/auth.service.ts.html +607 -0
  784. package/coverage/_services/core/email.service.ts.html +2302 -0
  785. package/coverage/_services/core/global.service.ts.html +1363 -0
  786. package/coverage/_services/core/index.html +176 -0
  787. package/coverage/_services/core/service-collection.service.ts.html +103 -0
  788. package/coverage/_services/index.html +116 -0
  789. package/coverage/_services/route/controller.service.ts.html +475 -0
  790. package/coverage/_services/route/index.html +131 -0
  791. package/coverage/_services/route/routing-module.service.ts.html +1075 -0
  792. package/coverage/_services/server/app.server.ts.html +4408 -0
  793. package/coverage/_services/server/index.html +116 -0
  794. package/coverage/_services/shared.static-service.ts.html +319 -0
  795. package/coverage/base.css +224 -0
  796. package/coverage/block-navigation.js +87 -0
  797. package/coverage/favicon.png +0 -0
  798. package/coverage/index.html +821 -0
  799. package/coverage/lcov-report/_collections/archive.util.ts.html +139 -0
  800. package/coverage/lcov-report/_collections/get-environment-settings.util.ts.html +229 -0
  801. package/coverage/lcov-report/_collections/index.html +146 -0
  802. package/coverage/lcov-report/_collections/star.controller.ts.html +472 -0
  803. package/coverage/lcov-report/_models/control-models/api-call-params.control-model.ts.html +511 -0
  804. package/coverage/lcov-report/_models/control-models/app-ext-system-controls.control-model.ts.html +112 -0
  805. package/coverage/lcov-report/_models/control-models/app-params.control-model.ts.html +475 -0
  806. package/coverage/lcov-report/_models/control-models/app-system-controls.control-model.ts.html +112 -0
  807. package/coverage/lcov-report/_models/control-models/endpoint-params.control-model.ts.html +1618 -0
  808. package/coverage/lcov-report/_models/control-models/http-settings.control-model.ts.html +172 -0
  809. package/coverage/lcov-report/_models/control-models/index.html +206 -0
  810. package/coverage/lcov-report/_models/control-models/system-control.control-model.ts.html +121 -0
  811. package/coverage/lcov-report/_modules/ai/_models/ai-input-interfaces.ts.html +436 -0
  812. package/coverage/lcov-report/_modules/ai/_models/index.html +116 -0
  813. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts.html +1993 -0
  814. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts.html +340 -0
  815. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/index.html +131 -0
  816. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts.html +523 -0
  817. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts.html +571 -0
  818. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts.html +382 -0
  819. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/index.html +146 -0
  820. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/index.html +131 -0
  821. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts.html +331 -0
  822. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts.html +310 -0
  823. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/index.html +161 -0
  824. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts.html +958 -0
  825. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts.html +1801 -0
  826. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts.html +1390 -0
  827. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts.html +1915 -0
  828. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/index.html +146 -0
  829. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts.html +334 -0
  830. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts.html +1822 -0
  831. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts.html +2584 -0
  832. package/coverage/lcov-report/_modules/ai/_services/ai-embedding.service-base.ts.html +208 -0
  833. package/coverage/lcov-report/_modules/ai/_services/ai-llm-chat.service-base.ts.html +289 -0
  834. package/coverage/lcov-report/_modules/ai/_services/ai-llm.service-base.ts.html +1060 -0
  835. package/coverage/lcov-report/_modules/ai/_services/ai-provider.service-base.ts.html +172 -0
  836. package/coverage/lcov-report/_modules/ai/_services/index.html +161 -0
  837. package/coverage/lcov-report/_modules/assistant/_collections/ass.util.ts.html +235 -0
  838. package/coverage/lcov-report/_modules/assistant/_collections/index.html +116 -0
  839. package/coverage/lcov-report/_modules/assistant/_services/ass-io.control-service.ts.html +307 -0
  840. package/coverage/lcov-report/_modules/assistant/_services/ass-main.control-service.ts.html +406 -0
  841. package/coverage/lcov-report/_modules/assistant/_services/index.html +131 -0
  842. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts.html +112 -0
  843. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_models/index.html +116 -0
  844. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts.html +1978 -0
  845. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_services/index.html +116 -0
  846. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts.html +250 -0
  847. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_collections/index.html +116 -0
  848. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts.html +130 -0
  849. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_models/index.html +116 -0
  850. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts.html +1414 -0
  851. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_services/index.html +116 -0
  852. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_models/index.html +116 -0
  853. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts.html +112 -0
  854. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_services/index.html +116 -0
  855. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts.html +664 -0
  856. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_models/index.html +116 -0
  857. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts.html +112 -0
  858. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_services/index.html +116 -0
  859. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts.html +664 -0
  860. package/coverage/lcov-report/_modules/bot/_services/bot-commands.control-service.ts.html +559 -0
  861. package/coverage/lcov-report/_modules/bot/_services/bot-io.control-service.ts.html +1072 -0
  862. package/coverage/lcov-report/_modules/bot/_services/bot-main.control-service.ts.html +1552 -0
  863. package/coverage/lcov-report/_modules/bot/_services/bot-messaging-provider.service-base.ts.html +556 -0
  864. package/coverage/lcov-report/_modules/bot/_services/bot-routines.control-service.ts.html +319 -0
  865. package/coverage/lcov-report/_modules/bot/_services/index.html +176 -0
  866. package/coverage/lcov-report/_modules/custom-data/custom-data.controller.ts.html +292 -0
  867. package/coverage/lcov-report/_modules/custom-data/custom-data.data-service.ts.html +148 -0
  868. package/coverage/lcov-report/_modules/custom-data/get-custom-data-routing-module.util.ts.html +157 -0
  869. package/coverage/lcov-report/_modules/custom-data/index.html +146 -0
  870. package/coverage/lcov-report/_modules/defaults/_models/default-user.data-model.ts.html +301 -0
  871. package/coverage/lcov-report/_modules/defaults/_models/index.html +116 -0
  872. package/coverage/lcov-report/_modules/defaults/_services/default-auth.service.ts.html +616 -0
  873. package/coverage/lcov-report/_modules/defaults/_services/default-socket-events.service.ts.html +268 -0
  874. package/coverage/lcov-report/_modules/defaults/_services/default-user.data-service.ts.html +379 -0
  875. package/coverage/lcov-report/_modules/defaults/_services/index.html +146 -0
  876. package/coverage/lcov-report/_modules/discord-assistant/_collections/dias.util.ts.html +481 -0
  877. package/coverage/lcov-report/_modules/discord-assistant/_collections/index.html +116 -0
  878. package/coverage/lcov-report/_modules/discord-assistant/_models/dias-knowledge.data-model.ts.html +241 -0
  879. package/coverage/lcov-report/_modules/discord-assistant/_models/index.html +116 -0
  880. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-chunk.data-service.ts.html +616 -0
  881. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-io.control-service.ts.html +292 -0
  882. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-main.control-service.ts.html +166 -0
  883. package/coverage/lcov-report/_modules/discord-assistant/_services/dias.service-base.ts.html +313 -0
  884. package/coverage/lcov-report/_modules/discord-assistant/_services/index.html +161 -0
  885. package/coverage/lcov-report/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts.html +118 -0
  886. package/coverage/lcov-report/_modules/discord-assistant-voiced/_services/index.html +116 -0
  887. package/coverage/lcov-report/_modules/discord-bot/_collections/dibo-global-settings.conts.ts.html +250 -0
  888. package/coverage/lcov-report/_modules/discord-bot/_collections/dibo-operations.util.ts.html +1246 -0
  889. package/coverage/lcov-report/_modules/discord-bot/_collections/index.html +131 -0
  890. package/coverage/lcov-report/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts.html +106 -0
  891. package/coverage/lcov-report/_modules/discord-bot/_models/index.html +116 -0
  892. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-commands.control-service.ts.html +544 -0
  893. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-io.control-service.ts.html +1003 -0
  894. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-main.control-service.ts.html +1546 -0
  895. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-routines.control-service.ts.html +376 -0
  896. package/coverage/lcov-report/_modules/discord-bot/_services/index.html +161 -0
  897. package/coverage/lcov-report/_modules/messaging/_collections/get-messaging-routing-module.util.ts.html +163 -0
  898. package/coverage/lcov-report/_modules/messaging/_collections/index.html +131 -0
  899. package/coverage/lcov-report/_modules/messaging/_collections/msg.util.ts.html +334 -0
  900. package/coverage/lcov-report/_modules/messaging/_services/index.html +191 -0
  901. package/coverage/lcov-report/_modules/messaging/_services/msg-conversation.data-service.ts.html +523 -0
  902. package/coverage/lcov-report/_modules/messaging/_services/msg-events.service.ts.html +886 -0
  903. package/coverage/lcov-report/_modules/messaging/_services/msg-integration.control-service.ts.html +622 -0
  904. package/coverage/lcov-report/_modules/messaging/_services/msg-main.control-service.ts.html +1738 -0
  905. package/coverage/lcov-report/_modules/messaging/_services/msg-message.data-service.ts.html +472 -0
  906. package/coverage/lcov-report/_modules/messaging/_services/msg.controller.ts.html +1195 -0
  907. package/coverage/lcov-report/_modules/mock/app-extended-server.mock.ts.html +688 -0
  908. package/coverage/lcov-report/_modules/mock/app-params.mock.ts.html +112 -0
  909. package/coverage/lcov-report/_modules/mock/app-server.mock.ts.html +649 -0
  910. package/coverage/lcov-report/_modules/mock/auth-service.mock.ts.html +169 -0
  911. package/coverage/lcov-report/_modules/mock/controller.mock.ts.html +133 -0
  912. package/coverage/lcov-report/_modules/mock/data-model.mock.ts.html +331 -0
  913. package/coverage/lcov-report/_modules/mock/email-service-collection.mock.ts.html +130 -0
  914. package/coverage/lcov-report/_modules/mock/email-service.mock.ts.html +145 -0
  915. package/coverage/lcov-report/_modules/mock/endpoint.mock.ts.html +358 -0
  916. package/coverage/lcov-report/_modules/mock/index.html +266 -0
  917. package/coverage/lcov-report/_modules/mock/socket-client.mock.ts.html +220 -0
  918. package/coverage/lcov-report/_modules/mock/socket-server.mock.ts.html +247 -0
  919. package/coverage/lcov-report/_modules/oauth2/_routes/index.html +116 -0
  920. package/coverage/lcov-report/_modules/oauth2/_routes/oauth2.controller.ts.html +379 -0
  921. package/coverage/lcov-report/_modules/oauth2/_services/index.html +131 -0
  922. package/coverage/lcov-report/_modules/oauth2/_services/oauth2.auth-service.ts.html +781 -0
  923. package/coverage/lcov-report/_modules/oauth2/_services/oauth2.control-service.ts.html +2044 -0
  924. package/coverage/lcov-report/_modules/server/errors/errors.control-service.ts.html +292 -0
  925. package/coverage/lcov-report/_modules/server/errors/errors.controller.ts.html +895 -0
  926. package/coverage/lcov-report/_modules/server/errors/errors.data-service.ts.html +1666 -0
  927. package/coverage/lcov-report/_modules/server/errors/index.html +146 -0
  928. package/coverage/lcov-report/_modules/server/server-status/index.html +161 -0
  929. package/coverage/lcov-report/_modules/server/server-status/server-status-snapshot.control-service.ts.html +136 -0
  930. package/coverage/lcov-report/_modules/server/server-status/server-status-snapshot.data-service.ts.html +196 -0
  931. package/coverage/lcov-report/_modules/server/server-status/server-status.control-service.ts.html +1093 -0
  932. package/coverage/lcov-report/_modules/server/server-status/server-status.controller.ts.html +478 -0
  933. package/coverage/lcov-report/_modules/socket/_models/index.html +146 -0
  934. package/coverage/lcov-report/_modules/socket/_models/socket-client-service-params.control-model.ts.html +151 -0
  935. package/coverage/lcov-report/_modules/socket/_models/socket-presence.control-model.ts.html +715 -0
  936. package/coverage/lcov-report/_modules/socket/_models/socket-server-service-params.control-model.ts.html +145 -0
  937. package/coverage/lcov-report/_modules/socket/_services/index.html +131 -0
  938. package/coverage/lcov-report/_modules/socket/_services/socket-client.service.ts.html +862 -0
  939. package/coverage/lcov-report/_modules/socket/_services/socket-server.service.ts.html +3196 -0
  940. package/coverage/lcov-report/_modules/socket/app-extended.server.ts.html +1954 -0
  941. package/coverage/lcov-report/_modules/socket/index.html +116 -0
  942. package/coverage/lcov-report/_modules/test/get-test-routing-module.util.ts.html +154 -0
  943. package/coverage/lcov-report/_modules/test/index.html +131 -0
  944. package/coverage/lcov-report/_modules/test/test.controller.ts.html +430 -0
  945. package/coverage/lcov-report/_modules/usage/get-usage-routing-module.util.ts.html +151 -0
  946. package/coverage/lcov-report/_modules/usage/index.html +146 -0
  947. package/coverage/lcov-report/_modules/usage/usage.controller.ts.html +463 -0
  948. package/coverage/lcov-report/_modules/usage/usage.data-service.ts.html +640 -0
  949. package/coverage/lcov-report/_services/base/api.service-base.ts.html +307 -0
  950. package/coverage/lcov-report/_services/base/archive-data.service.ts.html +727 -0
  951. package/coverage/lcov-report/_services/base/data.service.ts.html +7033 -0
  952. package/coverage/lcov-report/_services/base/db.service.ts.html +4786 -0
  953. package/coverage/lcov-report/_services/base/index.html +191 -0
  954. package/coverage/lcov-report/_services/base/singleton.service-base.ts.html +157 -0
  955. package/coverage/lcov-report/_services/base/singleton.service.ts.html +190 -0
  956. package/coverage/lcov-report/_services/core/api.service.ts.html +1900 -0
  957. package/coverage/lcov-report/_services/core/auth.service.ts.html +607 -0
  958. package/coverage/lcov-report/_services/core/email.service.ts.html +2302 -0
  959. package/coverage/lcov-report/_services/core/global.service.ts.html +1363 -0
  960. package/coverage/lcov-report/_services/core/index.html +176 -0
  961. package/coverage/lcov-report/_services/core/service-collection.service.ts.html +103 -0
  962. package/coverage/lcov-report/_services/index.html +116 -0
  963. package/coverage/lcov-report/_services/route/controller.service.ts.html +475 -0
  964. package/coverage/lcov-report/_services/route/index.html +131 -0
  965. package/coverage/lcov-report/_services/route/routing-module.service.ts.html +1075 -0
  966. package/coverage/lcov-report/_services/server/app.server.ts.html +4408 -0
  967. package/coverage/lcov-report/_services/server/index.html +116 -0
  968. package/coverage/lcov-report/_services/shared.static-service.ts.html +319 -0
  969. package/coverage/lcov-report/base.css +224 -0
  970. package/coverage/lcov-report/block-navigation.js +87 -0
  971. package/coverage/lcov-report/favicon.png +0 -0
  972. package/coverage/lcov-report/index.html +821 -0
  973. package/coverage/lcov-report/prettify.css +1 -0
  974. package/coverage/lcov-report/prettify.js +2 -0
  975. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  976. package/coverage/lcov-report/sorter.js +210 -0
  977. package/coverage/lcov.info +29957 -0
  978. package/coverage/prettify.css +1 -0
  979. package/coverage/prettify.js +2 -0
  980. package/coverage/sort-arrow-sprite.png +0 -0
  981. package/coverage/sorter.js +210 -0
  982. package/coverage/tmp/coverage-111712-1762988673351-0.json +1 -0
  983. package/coverage/tmp/coverage-112308-1762988673527-0.json +1 -0
  984. package/coverage/tmp/coverage-112324-1762988615026-0.json +1 -0
  985. package/coverage/tmp/coverage-112436-1762988615438-0.json +1 -0
  986. package/coverage/tmp/coverage-112512-1762988673477-0.json +1 -0
  987. package/eslint.config.js +3 -3
  988. package/logs/cicd-job.json +3 -0
  989. package/logs/cicd-output.log +31 -0
  990. package/logs/cicd-report.json +148 -0
  991. package/logs/cicd-status.json +70 -0
  992. package/nodemon.json +24 -24
  993. package/package.json +2 -2
  994. package/pnpm-workspace.yaml +5 -5
  995. package/scripts/run-coverage-tests.js +28 -28
  996. package/spec/support/helpers/spec-reporter-loader.js +359 -359
  997. package/spec/support/helpers/ts-node-helper.js +93 -93
  998. package/spec/support/jasmine.coverage.json +24 -24
  999. package/spec/support/jasmine.json +24 -24
  1000. package/src/_collections/archive.util.spec.ts +57 -57
  1001. package/src/_collections/archive.util.ts +18 -18
  1002. package/src/_collections/atlas-default-db-options.const.ts +9 -9
  1003. package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
  1004. package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
  1005. package/src/_collections/default-not-found-page.const.spec.ts +19 -19
  1006. package/src/_collections/default-not-found-page.const.ts +22 -22
  1007. package/src/_collections/default-socket-path.const.spec.ts +12 -12
  1008. package/src/_collections/default-socket-path.const.ts +2 -2
  1009. package/src/_collections/get-environment-settings.util.spec.ts +210 -210
  1010. package/src/_collections/get-environment-settings.util.ts +48 -48
  1011. package/src/_collections/global-settings.const.ts +126 -126
  1012. package/src/_collections/sample.env +21 -21
  1013. package/src/_collections/signed-url.util.spec.ts +198 -198
  1014. package/src/_collections/signed-url.util.ts +170 -170
  1015. package/src/_collections/star.controller.spec.ts +224 -224
  1016. package/src/_collections/star.controller.ts +129 -129
  1017. package/src/_enums/data-model-type.enum.ts +14 -14
  1018. package/src/_enums/data-service-function.enum.ts +24 -24
  1019. package/src/_enums/predefined-data-types.enum.ts +16 -16
  1020. package/src/_enums/route-security.enum.ts +12 -12
  1021. package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
  1022. package/src/_models/control-models/api-call-params.control-model.ts +142 -142
  1023. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
  1024. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  1025. package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
  1026. package/src/_models/control-models/app-params.control-model.ts +136 -136
  1027. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
  1028. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  1029. package/src/_models/control-models/endpoint-params.control-model.spec.ts +669 -669
  1030. package/src/_models/control-models/endpoint-params.control-model.ts +664 -664
  1031. package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
  1032. package/src/_models/control-models/http-settings.control-model.ts +37 -37
  1033. package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
  1034. package/src/_models/control-models/system-control.control-model.ts +12 -12
  1035. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  1036. package/src/_models/interfaces/environment-settings.interface.ts +59 -59
  1037. package/src/_models/interfaces/global-log-settings.interface.ts +171 -171
  1038. package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
  1039. package/src/_models/interfaces/global-settings.interface.ts +294 -294
  1040. package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
  1041. package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
  1042. package/src/_models/interfaces/static-client-settings.interface.ts +36 -36
  1043. package/src/_models/types/db-update.type.ts +100 -100
  1044. package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
  1045. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
  1046. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.ts +115 -115
  1047. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.ts +233 -233
  1048. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
  1049. package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
  1050. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
  1051. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
  1052. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.ts +295 -295
  1053. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +518 -518
  1054. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
  1055. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
  1056. package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
  1057. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
  1058. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
  1059. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
  1060. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.ts +68 -68
  1061. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
  1062. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
  1063. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
  1064. package/src/_modules/ai/_modules/document-ai/index.ts +30 -30
  1065. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
  1066. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
  1067. package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
  1068. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
  1069. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
  1070. package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
  1071. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
  1072. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
  1073. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
  1074. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
  1075. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
  1076. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
  1077. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
  1078. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +332 -332
  1079. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
  1080. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +634 -634
  1081. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
  1082. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
  1083. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1085 -1085
  1084. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
  1085. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
  1086. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +114 -114
  1087. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
  1088. package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
  1089. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
  1090. package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
  1091. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
  1092. package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -599
  1093. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
  1094. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
  1095. package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -197
  1096. package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +371 -371
  1097. package/src/_modules/ai/index.ts +33 -33
  1098. package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
  1099. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
  1100. package/src/_modules/assistant/_collections/ass.util.ts +50 -50
  1101. package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
  1102. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
  1103. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
  1104. package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
  1105. package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
  1106. package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
  1107. package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
  1108. package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
  1109. package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
  1110. package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
  1111. package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
  1112. package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
  1113. package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
  1114. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
  1115. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
  1116. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
  1117. package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
  1118. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
  1119. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
  1120. package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
  1121. package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
  1122. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
  1123. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
  1124. package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
  1125. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
  1126. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
  1127. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
  1128. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
  1129. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
  1130. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
  1131. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
  1132. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
  1133. package/src/_modules/custom-data/custom-data.controller.ts +67 -67
  1134. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
  1135. package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
  1136. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
  1137. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
  1138. package/src/_modules/custom-data/index.ts +9 -9
  1139. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -161
  1140. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +203 -203
  1141. package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -33
  1142. package/src/_modules/data-readers/index.ts +11 -11
  1143. package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
  1144. package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
  1145. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
  1146. package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
  1147. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
  1148. package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
  1149. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
  1150. package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
  1151. package/src/_modules/defaults/index.ts +17 -17
  1152. package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
  1153. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
  1154. package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
  1155. package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
  1156. package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
  1157. package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
  1158. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
  1159. package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
  1160. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
  1161. package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
  1162. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
  1163. package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
  1164. package/src/_modules/discord-assistant/index.ts +38 -38
  1165. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
  1166. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
  1167. package/src/_modules/discord-assistant-voiced/index.ts +36 -36
  1168. package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
  1169. package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
  1170. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
  1171. package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
  1172. package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
  1173. package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
  1174. package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
  1175. package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
  1176. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
  1177. package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
  1178. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
  1179. package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
  1180. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
  1181. package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
  1182. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
  1183. package/src/_modules/discord-bot/index.ts +36 -36
  1184. package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +35 -35
  1185. package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -59
  1186. package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
  1187. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
  1188. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
  1189. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +480 -480
  1190. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
  1191. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +214 -214
  1192. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +186 -186
  1193. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -167
  1194. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +130 -130
  1195. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +509 -509
  1196. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +323 -323
  1197. package/src/_modules/local-vector-search/index.ts +16 -16
  1198. package/src/_modules/logs/index.ts +11 -11
  1199. package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
  1200. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -142
  1201. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -120
  1202. package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +168 -168
  1203. package/src/_modules/mcp/index.ts +13 -13
  1204. package/src/_modules/messaging/README.md +354 -354
  1205. package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
  1206. package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
  1207. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
  1208. package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
  1209. package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
  1210. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
  1211. package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
  1212. package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
  1213. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
  1214. package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
  1215. package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
  1216. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
  1217. package/src/_modules/messaging/index.ts +30 -30
  1218. package/src/_modules/mock/app-extended-server.mock.ts +201 -201
  1219. package/src/_modules/mock/app-integration-test.mock.ts +51 -51
  1220. package/src/_modules/mock/app-params.mock.spec.ts +21 -21
  1221. package/src/_modules/mock/app-params.mock.ts +9 -9
  1222. package/src/_modules/mock/app-server.mock.ts +188 -188
  1223. package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
  1224. package/src/_modules/mock/auth-service.mock.ts +28 -28
  1225. package/src/_modules/mock/controller.mock.spec.ts +26 -26
  1226. package/src/_modules/mock/controller.mock.ts +16 -16
  1227. package/src/_modules/mock/data-model.mock.spec.ts +111 -111
  1228. package/src/_modules/mock/data-model.mock.ts +82 -82
  1229. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
  1230. package/src/_modules/mock/email-service-collection.mock.ts +15 -15
  1231. package/src/_modules/mock/email-service.mock.spec.ts +17 -17
  1232. package/src/_modules/mock/email-service.mock.ts +20 -20
  1233. package/src/_modules/mock/email-template.mock.html +14 -14
  1234. package/src/_modules/mock/endpoint.mock.ts +91 -91
  1235. package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
  1236. package/src/_modules/mock/socket-client.mock.ts +45 -45
  1237. package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
  1238. package/src/_modules/mock/socket-server.mock.ts +46 -46
  1239. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
  1240. package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
  1241. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
  1242. package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
  1243. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
  1244. package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
  1245. package/src/_modules/oauth2/index.ts +17 -17
  1246. package/src/_modules/scheduler/_models/scheduler-job.interface.ts +35 -35
  1247. package/src/_modules/scheduler/get-scheduler-routing-module.util.ts +33 -33
  1248. package/src/_modules/scheduler/index.ts +8 -8
  1249. package/src/_modules/scheduler/scheduler.controller.spec.ts +42 -42
  1250. package/src/_modules/scheduler/scheduler.controller.ts +69 -69
  1251. package/src/_modules/scheduler/scheduler.service.spec.ts +141 -141
  1252. package/src/_modules/scheduler/scheduler.service.ts +176 -176
  1253. package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -22
  1254. package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -81
  1255. package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +107 -107
  1256. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -306
  1257. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -295
  1258. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -118
  1259. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -105
  1260. package/src/_modules/scoped-config/index.ts +17 -17
  1261. package/src/_modules/server/errors/errors.control-service.spec.ts +238 -238
  1262. package/src/_modules/server/errors/errors.control-service.ts +100 -100
  1263. package/src/_modules/server/errors/errors.controller.ts +559 -559
  1264. package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
  1265. package/src/_modules/server/index.ts +30 -30
  1266. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
  1267. package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
  1268. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
  1269. package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
  1270. package/src/_modules/server/server-status/server-status.control-service.spec.ts +672 -672
  1271. package/src/_modules/server/server-status/server-status.control-service.ts +490 -490
  1272. package/src/_modules/server/server-status/server-status.controller.spec.ts +276 -276
  1273. package/src/_modules/server/server-status/server-status.controller.ts +336 -336
  1274. package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
  1275. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
  1276. package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
  1277. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +159 -158
  1278. package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -209
  1279. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +69 -69
  1280. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
  1281. package/src/_modules/socket/_services/socket-client.service.ts +260 -260
  1282. package/src/_modules/socket/_services/socket-server.service.spec.ts +264 -3
  1283. package/src/_modules/socket/_services/socket-server.service.ts +41 -74
  1284. package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
  1285. package/src/_modules/socket/app-extended.server.ts +648 -648
  1286. package/src/_modules/socket/index.ts +42 -42
  1287. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
  1288. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  1289. package/src/_modules/test/index.ts +11 -11
  1290. package/src/_modules/test/test.controller.spec.ts +72 -72
  1291. package/src/_modules/test/test.controller.ts +115 -115
  1292. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  1293. package/src/_modules/usage/index.ts +15 -15
  1294. package/src/_modules/usage/usage.controller.spec.ts +106 -106
  1295. package/src/_modules/usage/usage.controller.ts +140 -140
  1296. package/src/_modules/usage/usage.data-service.spec.ts +332 -332
  1297. package/src/_modules/usage/usage.data-service.ts +185 -185
  1298. package/src/_services/base/api.service-base.spec.ts +125 -125
  1299. package/src/_services/base/api.service-base.ts +74 -74
  1300. package/src/_services/base/archive-data.service.spec.ts +209 -209
  1301. package/src/_services/base/archive-data.service.ts +223 -223
  1302. package/src/_services/base/data.service.spec.ts +784 -784
  1303. package/src/_services/base/data.service.ts +2792 -2792
  1304. package/src/_services/base/db.service.spec.ts +160 -160
  1305. package/src/_services/base/db.service.ts +1698 -1698
  1306. package/src/_services/base/singleton.service-base.spec.ts +28 -28
  1307. package/src/_services/base/singleton.service-base.ts +24 -24
  1308. package/src/_services/base/singleton.service.spec.ts +114 -114
  1309. package/src/_services/base/singleton.service.ts +38 -38
  1310. package/src/_services/core/api.service.spec.ts +140 -140
  1311. package/src/_services/core/auth.service.spec.ts +159 -159
  1312. package/src/_services/core/auth.service.ts +174 -174
  1313. package/src/_services/core/email.service.spec.ts +85 -85
  1314. package/src/_services/core/email.service.ts +757 -757
  1315. package/src/_services/core/global.service.spec.ts +292 -292
  1316. package/src/_services/core/global.service.ts +487 -487
  1317. package/src/_services/core/memory-guard.service.spec.ts +245 -245
  1318. package/src/_services/core/memory-guard.service.ts +481 -481
  1319. package/src/_services/core/service-collection.service.spec.ts +46 -46
  1320. package/src/_services/core/service-collection.service.ts +6 -6
  1321. package/src/_services/route/controller.service.spec.ts +53 -53
  1322. package/src/_services/route/controller.service.ts +148 -148
  1323. package/src/_services/route/routing-module.service.spec.ts +98 -98
  1324. package/src/_services/route/routing-module.service.ts +330 -330
  1325. package/src/_services/server/app.server.ts +2012 -2012
  1326. package/src/_services/shared.static-service.spec.ts +99 -99
  1327. package/src/_services/shared.static-service.ts +78 -78
  1328. package/tsconfig.app.json +12 -12
  1329. package/tsconfig.json +42 -42
  1330. package/.dynamo/logs/cicd-pipeline/output.log +0 -2862
  1331. package/.dynamo/logs/cicd-pipeline/status.json +0 -74
  1332. package/__documentations/2026-04-28-logs-module.md +0 -49
  1333. package/__documentations/2026-05-17-oai-compatible-providers.md +0 -229
  1334. package/__documentations/2026-05-17-static-client-serving-howto.md +0 -144
  1335. package/__documentations/2026-06-01-fr041-cors-middleware.md +0 -96
  1336. package/__documentations/2026-06-01-fr047-p2p3-function-calling.md +0 -81
  1337. package/__documentations/2026-06-15-fr193-memory-guard.md +0 -73
  1338. package/__documentations/2026-08-08-fr292-app-version-header.md +0 -38
  1339. package/__documentations/2026-08-14-field-encryption-mongoose-document-spread.md +0 -124
  1340. package/__documentations/nts-integration-tests-2026-03-17.md +0 -26
  1341. package/__documentations/plans/BEDROCK-HYPERPLAN.md +0 -95
@@ -0,0 +1,2584 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for _modules/ai/_modules/open-ai/_services/oai-llm.service-base.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">_modules/ai/_modules/open-ai/_services</a> oai-llm.service-base.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/833</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/833</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 type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></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>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a>
792
+ <a name='L727'></a><a href='#L727'>727</a>
793
+ <a name='L728'></a><a href='#L728'>728</a>
794
+ <a name='L729'></a><a href='#L729'>729</a>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
900
+ <span class="cline-any cline-no">&nbsp;</span>
901
+ <span class="cline-any cline-no">&nbsp;</span>
902
+ <span class="cline-any cline-no">&nbsp;</span>
903
+ <span class="cline-any cline-no">&nbsp;</span>
904
+ <span class="cline-any cline-no">&nbsp;</span>
905
+ <span class="cline-any cline-no">&nbsp;</span>
906
+ <span class="cline-any cline-no">&nbsp;</span>
907
+ <span class="cline-any cline-no">&nbsp;</span>
908
+ <span class="cline-any cline-no">&nbsp;</span>
909
+ <span class="cline-any cline-no">&nbsp;</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
911
+ <span class="cline-any cline-no">&nbsp;</span>
912
+ <span class="cline-any cline-no">&nbsp;</span>
913
+ <span class="cline-any cline-no">&nbsp;</span>
914
+ <span class="cline-any cline-no">&nbsp;</span>
915
+ <span class="cline-any cline-no">&nbsp;</span>
916
+ <span class="cline-any cline-no">&nbsp;</span>
917
+ <span class="cline-any cline-no">&nbsp;</span>
918
+ <span class="cline-any cline-no">&nbsp;</span>
919
+ <span class="cline-any cline-no">&nbsp;</span>
920
+ <span class="cline-any cline-no">&nbsp;</span>
921
+ <span class="cline-any cline-no">&nbsp;</span>
922
+ <span class="cline-any cline-no">&nbsp;</span>
923
+ <span class="cline-any cline-no">&nbsp;</span>
924
+ <span class="cline-any cline-no">&nbsp;</span>
925
+ <span class="cline-any cline-no">&nbsp;</span>
926
+ <span class="cline-any cline-no">&nbsp;</span>
927
+ <span class="cline-any cline-no">&nbsp;</span>
928
+ <span class="cline-any cline-no">&nbsp;</span>
929
+ <span class="cline-any cline-no">&nbsp;</span>
930
+ <span class="cline-any cline-no">&nbsp;</span>
931
+ <span class="cline-any cline-no">&nbsp;</span>
932
+ <span class="cline-any cline-no">&nbsp;</span>
933
+ <span class="cline-any cline-no">&nbsp;</span>
934
+ <span class="cline-any cline-no">&nbsp;</span>
935
+ <span class="cline-any cline-no">&nbsp;</span>
936
+ <span class="cline-any cline-no">&nbsp;</span>
937
+ <span class="cline-any cline-no">&nbsp;</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
939
+ <span class="cline-any cline-no">&nbsp;</span>
940
+ <span class="cline-any cline-no">&nbsp;</span>
941
+ <span class="cline-any cline-no">&nbsp;</span>
942
+ <span class="cline-any cline-no">&nbsp;</span>
943
+ <span class="cline-any cline-no">&nbsp;</span>
944
+ <span class="cline-any cline-no">&nbsp;</span>
945
+ <span class="cline-any cline-no">&nbsp;</span>
946
+ <span class="cline-any cline-no">&nbsp;</span>
947
+ <span class="cline-any cline-no">&nbsp;</span>
948
+ <span class="cline-any cline-no">&nbsp;</span>
949
+ <span class="cline-any cline-no">&nbsp;</span>
950
+ <span class="cline-any cline-no">&nbsp;</span>
951
+ <span class="cline-any cline-no">&nbsp;</span>
952
+ <span class="cline-any cline-no">&nbsp;</span>
953
+ <span class="cline-any cline-no">&nbsp;</span>
954
+ <span class="cline-any cline-no">&nbsp;</span>
955
+ <span class="cline-any cline-no">&nbsp;</span>
956
+ <span class="cline-any cline-no">&nbsp;</span>
957
+ <span class="cline-any cline-no">&nbsp;</span>
958
+ <span class="cline-any cline-no">&nbsp;</span>
959
+ <span class="cline-any cline-no">&nbsp;</span>
960
+ <span class="cline-any cline-no">&nbsp;</span>
961
+ <span class="cline-any cline-no">&nbsp;</span>
962
+ <span class="cline-any cline-no">&nbsp;</span>
963
+ <span class="cline-any cline-no">&nbsp;</span>
964
+ <span class="cline-any cline-no">&nbsp;</span>
965
+ <span class="cline-any cline-no">&nbsp;</span>
966
+ <span class="cline-any cline-no">&nbsp;</span>
967
+ <span class="cline-any cline-no">&nbsp;</span>
968
+ <span class="cline-any cline-no">&nbsp;</span>
969
+ <span class="cline-any cline-no">&nbsp;</span>
970
+ <span class="cline-any cline-no">&nbsp;</span>
971
+ <span class="cline-any cline-no">&nbsp;</span>
972
+ <span class="cline-any cline-no">&nbsp;</span>
973
+ <span class="cline-any cline-no">&nbsp;</span>
974
+ <span class="cline-any cline-no">&nbsp;</span>
975
+ <span class="cline-any cline-no">&nbsp;</span>
976
+ <span class="cline-any cline-no">&nbsp;</span>
977
+ <span class="cline-any cline-no">&nbsp;</span>
978
+ <span class="cline-any cline-no">&nbsp;</span>
979
+ <span class="cline-any cline-no">&nbsp;</span>
980
+ <span class="cline-any cline-no">&nbsp;</span>
981
+ <span class="cline-any cline-no">&nbsp;</span>
982
+ <span class="cline-any cline-no">&nbsp;</span>
983
+ <span class="cline-any cline-no">&nbsp;</span>
984
+ <span class="cline-any cline-no">&nbsp;</span>
985
+ <span class="cline-any cline-no">&nbsp;</span>
986
+ <span class="cline-any cline-no">&nbsp;</span>
987
+ <span class="cline-any cline-no">&nbsp;</span>
988
+ <span class="cline-any cline-no">&nbsp;</span>
989
+ <span class="cline-any cline-no">&nbsp;</span>
990
+ <span class="cline-any cline-no">&nbsp;</span>
991
+ <span class="cline-any cline-no">&nbsp;</span>
992
+ <span class="cline-any cline-no">&nbsp;</span>
993
+ <span class="cline-any cline-no">&nbsp;</span>
994
+ <span class="cline-any cline-no">&nbsp;</span>
995
+ <span class="cline-any cline-no">&nbsp;</span>
996
+ <span class="cline-any cline-no">&nbsp;</span>
997
+ <span class="cline-any cline-no">&nbsp;</span>
998
+ <span class="cline-any cline-no">&nbsp;</span>
999
+ <span class="cline-any cline-no">&nbsp;</span>
1000
+ <span class="cline-any cline-no">&nbsp;</span>
1001
+ <span class="cline-any cline-no">&nbsp;</span>
1002
+ <span class="cline-any cline-no">&nbsp;</span>
1003
+ <span class="cline-any cline-no">&nbsp;</span>
1004
+ <span class="cline-any cline-no">&nbsp;</span>
1005
+ <span class="cline-any cline-no">&nbsp;</span>
1006
+ <span class="cline-any cline-no">&nbsp;</span>
1007
+ <span class="cline-any cline-no">&nbsp;</span>
1008
+ <span class="cline-any cline-no">&nbsp;</span>
1009
+ <span class="cline-any cline-no">&nbsp;</span>
1010
+ <span class="cline-any cline-no">&nbsp;</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1012
+ <span class="cline-any cline-no">&nbsp;</span>
1013
+ <span class="cline-any cline-no">&nbsp;</span>
1014
+ <span class="cline-any cline-no">&nbsp;</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
1016
+ <span class="cline-any cline-no">&nbsp;</span>
1017
+ <span class="cline-any cline-no">&nbsp;</span>
1018
+ <span class="cline-any cline-no">&nbsp;</span>
1019
+ <span class="cline-any cline-no">&nbsp;</span>
1020
+ <span class="cline-any cline-no">&nbsp;</span>
1021
+ <span class="cline-any cline-no">&nbsp;</span>
1022
+ <span class="cline-any cline-no">&nbsp;</span>
1023
+ <span class="cline-any cline-no">&nbsp;</span>
1024
+ <span class="cline-any cline-no">&nbsp;</span>
1025
+ <span class="cline-any cline-no">&nbsp;</span>
1026
+ <span class="cline-any cline-no">&nbsp;</span>
1027
+ <span class="cline-any cline-no">&nbsp;</span>
1028
+ <span class="cline-any cline-no">&nbsp;</span>
1029
+ <span class="cline-any cline-no">&nbsp;</span>
1030
+ <span class="cline-any cline-no">&nbsp;</span>
1031
+ <span class="cline-any cline-no">&nbsp;</span>
1032
+ <span class="cline-any cline-no">&nbsp;</span>
1033
+ <span class="cline-any cline-no">&nbsp;</span>
1034
+ <span class="cline-any cline-no">&nbsp;</span>
1035
+ <span class="cline-any cline-no">&nbsp;</span>
1036
+ <span class="cline-any cline-no">&nbsp;</span>
1037
+ <span class="cline-any cline-no">&nbsp;</span>
1038
+ <span class="cline-any cline-no">&nbsp;</span>
1039
+ <span class="cline-any cline-no">&nbsp;</span>
1040
+ <span class="cline-any cline-no">&nbsp;</span>
1041
+ <span class="cline-any cline-no">&nbsp;</span>
1042
+ <span class="cline-any cline-no">&nbsp;</span>
1043
+ <span class="cline-any cline-no">&nbsp;</span>
1044
+ <span class="cline-any cline-no">&nbsp;</span>
1045
+ <span class="cline-any cline-no">&nbsp;</span>
1046
+ <span class="cline-any cline-no">&nbsp;</span>
1047
+ <span class="cline-any cline-no">&nbsp;</span>
1048
+ <span class="cline-any cline-no">&nbsp;</span>
1049
+ <span class="cline-any cline-no">&nbsp;</span>
1050
+ <span class="cline-any cline-no">&nbsp;</span>
1051
+ <span class="cline-any cline-no">&nbsp;</span>
1052
+ <span class="cline-any cline-no">&nbsp;</span>
1053
+ <span class="cline-any cline-no">&nbsp;</span>
1054
+ <span class="cline-any cline-no">&nbsp;</span>
1055
+ <span class="cline-any cline-no">&nbsp;</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
1057
+ <span class="cline-any cline-no">&nbsp;</span>
1058
+ <span class="cline-any cline-no">&nbsp;</span>
1059
+ <span class="cline-any cline-no">&nbsp;</span>
1060
+ <span class="cline-any cline-no">&nbsp;</span>
1061
+ <span class="cline-any cline-no">&nbsp;</span>
1062
+ <span class="cline-any cline-no">&nbsp;</span>
1063
+ <span class="cline-any cline-no">&nbsp;</span>
1064
+ <span class="cline-any cline-no">&nbsp;</span>
1065
+ <span class="cline-any cline-no">&nbsp;</span>
1066
+ <span class="cline-any cline-no">&nbsp;</span>
1067
+ <span class="cline-any cline-no">&nbsp;</span>
1068
+ <span class="cline-any cline-no">&nbsp;</span>
1069
+ <span class="cline-any cline-no">&nbsp;</span>
1070
+ <span class="cline-any cline-no">&nbsp;</span>
1071
+ <span class="cline-any cline-no">&nbsp;</span>
1072
+ <span class="cline-any cline-no">&nbsp;</span>
1073
+ <span class="cline-any cline-no">&nbsp;</span>
1074
+ <span class="cline-any cline-no">&nbsp;</span>
1075
+ <span class="cline-any cline-no">&nbsp;</span>
1076
+ <span class="cline-any cline-no">&nbsp;</span>
1077
+ <span class="cline-any cline-no">&nbsp;</span>
1078
+ <span class="cline-any cline-no">&nbsp;</span>
1079
+ <span class="cline-any cline-no">&nbsp;</span>
1080
+ <span class="cline-any cline-no">&nbsp;</span>
1081
+ <span class="cline-any cline-no">&nbsp;</span>
1082
+ <span class="cline-any cline-no">&nbsp;</span>
1083
+ <span class="cline-any cline-no">&nbsp;</span>
1084
+ <span class="cline-any cline-no">&nbsp;</span>
1085
+ <span class="cline-any cline-no">&nbsp;</span>
1086
+ <span class="cline-any cline-no">&nbsp;</span>
1087
+ <span class="cline-any cline-no">&nbsp;</span>
1088
+ <span class="cline-any cline-no">&nbsp;</span>
1089
+ <span class="cline-any cline-no">&nbsp;</span>
1090
+ <span class="cline-any cline-no">&nbsp;</span>
1091
+ <span class="cline-any cline-no">&nbsp;</span>
1092
+ <span class="cline-any cline-no">&nbsp;</span>
1093
+ <span class="cline-any cline-no">&nbsp;</span>
1094
+ <span class="cline-any cline-no">&nbsp;</span>
1095
+ <span class="cline-any cline-no">&nbsp;</span>
1096
+ <span class="cline-any cline-no">&nbsp;</span>
1097
+ <span class="cline-any cline-no">&nbsp;</span>
1098
+ <span class="cline-any cline-no">&nbsp;</span>
1099
+ <span class="cline-any cline-no">&nbsp;</span>
1100
+ <span class="cline-any cline-no">&nbsp;</span>
1101
+ <span class="cline-any cline-no">&nbsp;</span>
1102
+ <span class="cline-any cline-no">&nbsp;</span>
1103
+ <span class="cline-any cline-no">&nbsp;</span>
1104
+ <span class="cline-any cline-no">&nbsp;</span>
1105
+ <span class="cline-any cline-no">&nbsp;</span>
1106
+ <span class="cline-any cline-no">&nbsp;</span>
1107
+ <span class="cline-any cline-no">&nbsp;</span>
1108
+ <span class="cline-any cline-no">&nbsp;</span>
1109
+ <span class="cline-any cline-no">&nbsp;</span>
1110
+ <span class="cline-any cline-no">&nbsp;</span>
1111
+ <span class="cline-any cline-no">&nbsp;</span>
1112
+ <span class="cline-any cline-no">&nbsp;</span>
1113
+ <span class="cline-any cline-no">&nbsp;</span>
1114
+ <span class="cline-any cline-no">&nbsp;</span>
1115
+ <span class="cline-any cline-no">&nbsp;</span>
1116
+ <span class="cline-any cline-no">&nbsp;</span>
1117
+ <span class="cline-any cline-no">&nbsp;</span>
1118
+ <span class="cline-any cline-no">&nbsp;</span>
1119
+ <span class="cline-any cline-no">&nbsp;</span>
1120
+ <span class="cline-any cline-no">&nbsp;</span>
1121
+ <span class="cline-any cline-no">&nbsp;</span>
1122
+ <span class="cline-any cline-no">&nbsp;</span>
1123
+ <span class="cline-any cline-no">&nbsp;</span>
1124
+ <span class="cline-any cline-no">&nbsp;</span>
1125
+ <span class="cline-any cline-no">&nbsp;</span>
1126
+ <span class="cline-any cline-no">&nbsp;</span>
1127
+ <span class="cline-any cline-no">&nbsp;</span>
1128
+ <span class="cline-any cline-no">&nbsp;</span>
1129
+ <span class="cline-any cline-no">&nbsp;</span>
1130
+ <span class="cline-any cline-no">&nbsp;</span>
1131
+ <span class="cline-any cline-no">&nbsp;</span>
1132
+ <span class="cline-any cline-no">&nbsp;</span>
1133
+ <span class="cline-any cline-no">&nbsp;</span>
1134
+ <span class="cline-any cline-no">&nbsp;</span>
1135
+ <span class="cline-any cline-no">&nbsp;</span>
1136
+ <span class="cline-any cline-no">&nbsp;</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
+ <span class="cline-any cline-no">&nbsp;</span>
1140
+ <span class="cline-any cline-no">&nbsp;</span>
1141
+ <span class="cline-any cline-no">&nbsp;</span>
1142
+ <span class="cline-any cline-no">&nbsp;</span>
1143
+ <span class="cline-any cline-no">&nbsp;</span>
1144
+ <span class="cline-any cline-no">&nbsp;</span>
1145
+ <span class="cline-any cline-no">&nbsp;</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1147
+ <span class="cline-any cline-no">&nbsp;</span>
1148
+ <span class="cline-any cline-no">&nbsp;</span>
1149
+ <span class="cline-any cline-no">&nbsp;</span>
1150
+ <span class="cline-any cline-no">&nbsp;</span>
1151
+ <span class="cline-any cline-no">&nbsp;</span>
1152
+ <span class="cline-any cline-no">&nbsp;</span>
1153
+ <span class="cline-any cline-no">&nbsp;</span>
1154
+ <span class="cline-any cline-no">&nbsp;</span>
1155
+ <span class="cline-any cline-no">&nbsp;</span>
1156
+ <span class="cline-any cline-no">&nbsp;</span>
1157
+ <span class="cline-any cline-no">&nbsp;</span>
1158
+ <span class="cline-any cline-no">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
+ <span class="cline-any cline-no">&nbsp;</span>
1161
+ <span class="cline-any cline-no">&nbsp;</span>
1162
+ <span class="cline-any cline-no">&nbsp;</span>
1163
+ <span class="cline-any cline-no">&nbsp;</span>
1164
+ <span class="cline-any cline-no">&nbsp;</span>
1165
+ <span class="cline-any cline-no">&nbsp;</span>
1166
+ <span class="cline-any cline-no">&nbsp;</span>
1167
+ <span class="cline-any cline-no">&nbsp;</span>
1168
+ <span class="cline-any cline-no">&nbsp;</span>
1169
+ <span class="cline-any cline-no">&nbsp;</span>
1170
+ <span class="cline-any cline-no">&nbsp;</span>
1171
+ <span class="cline-any cline-no">&nbsp;</span>
1172
+ <span class="cline-any cline-no">&nbsp;</span>
1173
+ <span class="cline-any cline-no">&nbsp;</span>
1174
+ <span class="cline-any cline-no">&nbsp;</span>
1175
+ <span class="cline-any cline-no">&nbsp;</span>
1176
+ <span class="cline-any cline-no">&nbsp;</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-no">&nbsp;</span>
1180
+ <span class="cline-any cline-no">&nbsp;</span>
1181
+ <span class="cline-any cline-no">&nbsp;</span>
1182
+ <span class="cline-any cline-no">&nbsp;</span>
1183
+ <span class="cline-any cline-no">&nbsp;</span>
1184
+ <span class="cline-any cline-no">&nbsp;</span>
1185
+ <span class="cline-any cline-no">&nbsp;</span>
1186
+ <span class="cline-any cline-no">&nbsp;</span>
1187
+ <span class="cline-any cline-no">&nbsp;</span>
1188
+ <span class="cline-any cline-no">&nbsp;</span>
1189
+ <span class="cline-any cline-no">&nbsp;</span>
1190
+ <span class="cline-any cline-no">&nbsp;</span>
1191
+ <span class="cline-any cline-no">&nbsp;</span>
1192
+ <span class="cline-any cline-no">&nbsp;</span>
1193
+ <span class="cline-any cline-no">&nbsp;</span>
1194
+ <span class="cline-any cline-no">&nbsp;</span>
1195
+ <span class="cline-any cline-no">&nbsp;</span>
1196
+ <span class="cline-any cline-no">&nbsp;</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1198
+ <span class="cline-any cline-no">&nbsp;</span>
1199
+ <span class="cline-any cline-no">&nbsp;</span>
1200
+ <span class="cline-any cline-no">&nbsp;</span>
1201
+ <span class="cline-any cline-no">&nbsp;</span>
1202
+ <span class="cline-any cline-no">&nbsp;</span>
1203
+ <span class="cline-any cline-no">&nbsp;</span>
1204
+ <span class="cline-any cline-no">&nbsp;</span>
1205
+ <span class="cline-any cline-no">&nbsp;</span>
1206
+ <span class="cline-any cline-no">&nbsp;</span>
1207
+ <span class="cline-any cline-no">&nbsp;</span>
1208
+ <span class="cline-any cline-no">&nbsp;</span>
1209
+ <span class="cline-any cline-no">&nbsp;</span>
1210
+ <span class="cline-any cline-no">&nbsp;</span>
1211
+ <span class="cline-any cline-no">&nbsp;</span>
1212
+ <span class="cline-any cline-no">&nbsp;</span>
1213
+ <span class="cline-any cline-no">&nbsp;</span>
1214
+ <span class="cline-any cline-no">&nbsp;</span>
1215
+ <span class="cline-any cline-no">&nbsp;</span>
1216
+ <span class="cline-any cline-no">&nbsp;</span>
1217
+ <span class="cline-any cline-no">&nbsp;</span>
1218
+ <span class="cline-any cline-no">&nbsp;</span>
1219
+ <span class="cline-any cline-no">&nbsp;</span>
1220
+ <span class="cline-any cline-no">&nbsp;</span>
1221
+ <span class="cline-any cline-no">&nbsp;</span>
1222
+ <span class="cline-any cline-no">&nbsp;</span>
1223
+ <span class="cline-any cline-no">&nbsp;</span>
1224
+ <span class="cline-any cline-no">&nbsp;</span>
1225
+ <span class="cline-any cline-no">&nbsp;</span>
1226
+ <span class="cline-any cline-no">&nbsp;</span>
1227
+ <span class="cline-any cline-no">&nbsp;</span>
1228
+ <span class="cline-any cline-no">&nbsp;</span>
1229
+ <span class="cline-any cline-no">&nbsp;</span>
1230
+ <span class="cline-any cline-no">&nbsp;</span>
1231
+ <span class="cline-any cline-no">&nbsp;</span>
1232
+ <span class="cline-any cline-no">&nbsp;</span>
1233
+ <span class="cline-any cline-no">&nbsp;</span>
1234
+ <span class="cline-any cline-no">&nbsp;</span>
1235
+ <span class="cline-any cline-no">&nbsp;</span>
1236
+ <span class="cline-any cline-no">&nbsp;</span>
1237
+ <span class="cline-any cline-no">&nbsp;</span>
1238
+ <span class="cline-any cline-no">&nbsp;</span>
1239
+ <span class="cline-any cline-no">&nbsp;</span>
1240
+ <span class="cline-any cline-no">&nbsp;</span>
1241
+ <span class="cline-any cline-no">&nbsp;</span>
1242
+ <span class="cline-any cline-no">&nbsp;</span>
1243
+ <span class="cline-any cline-no">&nbsp;</span>
1244
+ <span class="cline-any cline-no">&nbsp;</span>
1245
+ <span class="cline-any cline-no">&nbsp;</span>
1246
+ <span class="cline-any cline-no">&nbsp;</span>
1247
+ <span class="cline-any cline-no">&nbsp;</span>
1248
+ <span class="cline-any cline-no">&nbsp;</span>
1249
+ <span class="cline-any cline-no">&nbsp;</span>
1250
+ <span class="cline-any cline-no">&nbsp;</span>
1251
+ <span class="cline-any cline-no">&nbsp;</span>
1252
+ <span class="cline-any cline-no">&nbsp;</span>
1253
+ <span class="cline-any cline-no">&nbsp;</span>
1254
+ <span class="cline-any cline-no">&nbsp;</span>
1255
+ <span class="cline-any cline-no">&nbsp;</span>
1256
+ <span class="cline-any cline-no">&nbsp;</span>
1257
+ <span class="cline-any cline-no">&nbsp;</span>
1258
+ <span class="cline-any cline-no">&nbsp;</span>
1259
+ <span class="cline-any cline-no">&nbsp;</span>
1260
+ <span class="cline-any cline-no">&nbsp;</span>
1261
+ <span class="cline-any cline-no">&nbsp;</span>
1262
+ <span class="cline-any cline-no">&nbsp;</span>
1263
+ <span class="cline-any cline-no">&nbsp;</span>
1264
+ <span class="cline-any cline-no">&nbsp;</span>
1265
+ <span class="cline-any cline-no">&nbsp;</span>
1266
+ <span class="cline-any cline-no">&nbsp;</span>
1267
+ <span class="cline-any cline-no">&nbsp;</span>
1268
+ <span class="cline-any cline-no">&nbsp;</span>
1269
+ <span class="cline-any cline-no">&nbsp;</span>
1270
+ <span class="cline-any cline-no">&nbsp;</span>
1271
+ <span class="cline-any cline-no">&nbsp;</span>
1272
+ <span class="cline-any cline-no">&nbsp;</span>
1273
+ <span class="cline-any cline-no">&nbsp;</span>
1274
+ <span class="cline-any cline-no">&nbsp;</span>
1275
+ <span class="cline-any cline-no">&nbsp;</span>
1276
+ <span class="cline-any cline-no">&nbsp;</span>
1277
+ <span class="cline-any cline-no">&nbsp;</span>
1278
+ <span class="cline-any cline-no">&nbsp;</span>
1279
+ <span class="cline-any cline-no">&nbsp;</span>
1280
+ <span class="cline-any cline-no">&nbsp;</span>
1281
+ <span class="cline-any cline-no">&nbsp;</span>
1282
+ <span class="cline-any cline-no">&nbsp;</span>
1283
+ <span class="cline-any cline-no">&nbsp;</span>
1284
+ <span class="cline-any cline-no">&nbsp;</span>
1285
+ <span class="cline-any cline-no">&nbsp;</span>
1286
+ <span class="cline-any cline-no">&nbsp;</span>
1287
+ <span class="cline-any cline-no">&nbsp;</span>
1288
+ <span class="cline-any cline-no">&nbsp;</span>
1289
+ <span class="cline-any cline-no">&nbsp;</span>
1290
+ <span class="cline-any cline-no">&nbsp;</span>
1291
+ <span class="cline-any cline-no">&nbsp;</span>
1292
+ <span class="cline-any cline-no">&nbsp;</span>
1293
+ <span class="cline-any cline-no">&nbsp;</span>
1294
+ <span class="cline-any cline-no">&nbsp;</span>
1295
+ <span class="cline-any cline-no">&nbsp;</span>
1296
+ <span class="cline-any cline-no">&nbsp;</span>
1297
+ <span class="cline-any cline-no">&nbsp;</span>
1298
+ <span class="cline-any cline-no">&nbsp;</span>
1299
+ <span class="cline-any cline-no">&nbsp;</span>
1300
+ <span class="cline-any cline-no">&nbsp;</span>
1301
+ <span class="cline-any cline-no">&nbsp;</span>
1302
+ <span class="cline-any cline-no">&nbsp;</span>
1303
+ <span class="cline-any cline-no">&nbsp;</span>
1304
+ <span class="cline-any cline-no">&nbsp;</span>
1305
+ <span class="cline-any cline-no">&nbsp;</span>
1306
+ <span class="cline-any cline-no">&nbsp;</span>
1307
+ <span class="cline-any cline-no">&nbsp;</span>
1308
+ <span class="cline-any cline-no">&nbsp;</span>
1309
+ <span class="cline-any cline-no">&nbsp;</span>
1310
+ <span class="cline-any cline-no">&nbsp;</span>
1311
+ <span class="cline-any cline-no">&nbsp;</span>
1312
+ <span class="cline-any cline-no">&nbsp;</span>
1313
+ <span class="cline-any cline-no">&nbsp;</span>
1314
+ <span class="cline-any cline-no">&nbsp;</span>
1315
+ <span class="cline-any cline-no">&nbsp;</span>
1316
+ <span class="cline-any cline-no">&nbsp;</span>
1317
+ <span class="cline-any cline-no">&nbsp;</span>
1318
+ <span class="cline-any cline-no">&nbsp;</span>
1319
+ <span class="cline-any cline-no">&nbsp;</span>
1320
+ <span class="cline-any cline-no">&nbsp;</span>
1321
+ <span class="cline-any cline-no">&nbsp;</span>
1322
+ <span class="cline-any cline-no">&nbsp;</span>
1323
+ <span class="cline-any cline-no">&nbsp;</span>
1324
+ <span class="cline-any cline-no">&nbsp;</span>
1325
+ <span class="cline-any cline-no">&nbsp;</span>
1326
+ <span class="cline-any cline-no">&nbsp;</span>
1327
+ <span class="cline-any cline-no">&nbsp;</span>
1328
+ <span class="cline-any cline-no">&nbsp;</span>
1329
+ <span class="cline-any cline-no">&nbsp;</span>
1330
+ <span class="cline-any cline-no">&nbsp;</span>
1331
+ <span class="cline-any cline-no">&nbsp;</span>
1332
+ <span class="cline-any cline-no">&nbsp;</span>
1333
+ <span class="cline-any cline-no">&nbsp;</span>
1334
+ <span class="cline-any cline-no">&nbsp;</span>
1335
+ <span class="cline-any cline-no">&nbsp;</span>
1336
+ <span class="cline-any cline-no">&nbsp;</span>
1337
+ <span class="cline-any cline-no">&nbsp;</span>
1338
+ <span class="cline-any cline-no">&nbsp;</span>
1339
+ <span class="cline-any cline-no">&nbsp;</span>
1340
+ <span class="cline-any cline-no">&nbsp;</span>
1341
+ <span class="cline-any cline-no">&nbsp;</span>
1342
+ <span class="cline-any cline-no">&nbsp;</span>
1343
+ <span class="cline-any cline-no">&nbsp;</span>
1344
+ <span class="cline-any cline-no">&nbsp;</span>
1345
+ <span class="cline-any cline-no">&nbsp;</span>
1346
+ <span class="cline-any cline-no">&nbsp;</span>
1347
+ <span class="cline-any cline-no">&nbsp;</span>
1348
+ <span class="cline-any cline-no">&nbsp;</span>
1349
+ <span class="cline-any cline-no">&nbsp;</span>
1350
+ <span class="cline-any cline-no">&nbsp;</span>
1351
+ <span class="cline-any cline-no">&nbsp;</span>
1352
+ <span class="cline-any cline-no">&nbsp;</span>
1353
+ <span class="cline-any cline-no">&nbsp;</span>
1354
+ <span class="cline-any cline-no">&nbsp;</span>
1355
+ <span class="cline-any cline-no">&nbsp;</span>
1356
+ <span class="cline-any cline-no">&nbsp;</span>
1357
+ <span class="cline-any cline-no">&nbsp;</span>
1358
+ <span class="cline-any cline-no">&nbsp;</span>
1359
+ <span class="cline-any cline-no">&nbsp;</span>
1360
+ <span class="cline-any cline-no">&nbsp;</span>
1361
+ <span class="cline-any cline-no">&nbsp;</span>
1362
+ <span class="cline-any cline-no">&nbsp;</span>
1363
+ <span class="cline-any cline-no">&nbsp;</span>
1364
+ <span class="cline-any cline-no">&nbsp;</span>
1365
+ <span class="cline-any cline-no">&nbsp;</span>
1366
+ <span class="cline-any cline-no">&nbsp;</span>
1367
+ <span class="cline-any cline-no">&nbsp;</span>
1368
+ <span class="cline-any cline-no">&nbsp;</span>
1369
+ <span class="cline-any cline-no">&nbsp;</span>
1370
+ <span class="cline-any cline-no">&nbsp;</span>
1371
+ <span class="cline-any cline-no">&nbsp;</span>
1372
+ <span class="cline-any cline-no">&nbsp;</span>
1373
+ <span class="cline-any cline-no">&nbsp;</span>
1374
+ <span class="cline-any cline-no">&nbsp;</span>
1375
+ <span class="cline-any cline-no">&nbsp;</span>
1376
+ <span class="cline-any cline-no">&nbsp;</span>
1377
+ <span class="cline-any cline-no">&nbsp;</span>
1378
+ <span class="cline-any cline-no">&nbsp;</span>
1379
+ <span class="cline-any cline-no">&nbsp;</span>
1380
+ <span class="cline-any cline-no">&nbsp;</span>
1381
+ <span class="cline-any cline-no">&nbsp;</span>
1382
+ <span class="cline-any cline-no">&nbsp;</span>
1383
+ <span class="cline-any cline-no">&nbsp;</span>
1384
+ <span class="cline-any cline-no">&nbsp;</span>
1385
+ <span class="cline-any cline-no">&nbsp;</span>
1386
+ <span class="cline-any cline-no">&nbsp;</span>
1387
+ <span class="cline-any cline-no">&nbsp;</span>
1388
+ <span class="cline-any cline-no">&nbsp;</span>
1389
+ <span class="cline-any cline-no">&nbsp;</span>
1390
+ <span class="cline-any cline-no">&nbsp;</span>
1391
+ <span class="cline-any cline-no">&nbsp;</span>
1392
+ <span class="cline-any cline-no">&nbsp;</span>
1393
+ <span class="cline-any cline-no">&nbsp;</span>
1394
+ <span class="cline-any cline-no">&nbsp;</span>
1395
+ <span class="cline-any cline-no">&nbsp;</span>
1396
+ <span class="cline-any cline-no">&nbsp;</span>
1397
+ <span class="cline-any cline-no">&nbsp;</span>
1398
+ <span class="cline-any cline-no">&nbsp;</span>
1399
+ <span class="cline-any cline-no">&nbsp;</span>
1400
+ <span class="cline-any cline-no">&nbsp;</span>
1401
+ <span class="cline-any cline-no">&nbsp;</span>
1402
+ <span class="cline-any cline-no">&nbsp;</span>
1403
+ <span class="cline-any cline-no">&nbsp;</span>
1404
+ <span class="cline-any cline-no">&nbsp;</span>
1405
+ <span class="cline-any cline-no">&nbsp;</span>
1406
+ <span class="cline-any cline-no">&nbsp;</span>
1407
+ <span class="cline-any cline-no">&nbsp;</span>
1408
+ <span class="cline-any cline-no">&nbsp;</span>
1409
+ <span class="cline-any cline-no">&nbsp;</span>
1410
+ <span class="cline-any cline-no">&nbsp;</span>
1411
+ <span class="cline-any cline-no">&nbsp;</span>
1412
+ <span class="cline-any cline-no">&nbsp;</span>
1413
+ <span class="cline-any cline-no">&nbsp;</span>
1414
+ <span class="cline-any cline-no">&nbsp;</span>
1415
+ <span class="cline-any cline-no">&nbsp;</span>
1416
+ <span class="cline-any cline-no">&nbsp;</span>
1417
+ <span class="cline-any cline-no">&nbsp;</span>
1418
+ <span class="cline-any cline-no">&nbsp;</span>
1419
+ <span class="cline-any cline-no">&nbsp;</span>
1420
+ <span class="cline-any cline-no">&nbsp;</span>
1421
+ <span class="cline-any cline-no">&nbsp;</span>
1422
+ <span class="cline-any cline-no">&nbsp;</span>
1423
+ <span class="cline-any cline-no">&nbsp;</span>
1424
+ <span class="cline-any cline-no">&nbsp;</span>
1425
+ <span class="cline-any cline-no">&nbsp;</span>
1426
+ <span class="cline-any cline-no">&nbsp;</span>
1427
+ <span class="cline-any cline-no">&nbsp;</span>
1428
+ <span class="cline-any cline-no">&nbsp;</span>
1429
+ <span class="cline-any cline-no">&nbsp;</span>
1430
+ <span class="cline-any cline-no">&nbsp;</span>
1431
+ <span class="cline-any cline-no">&nbsp;</span>
1432
+ <span class="cline-any cline-no">&nbsp;</span>
1433
+ <span class="cline-any cline-no">&nbsp;</span>
1434
+ <span class="cline-any cline-no">&nbsp;</span>
1435
+ <span class="cline-any cline-no">&nbsp;</span>
1436
+ <span class="cline-any cline-no">&nbsp;</span>
1437
+ <span class="cline-any cline-no">&nbsp;</span>
1438
+ <span class="cline-any cline-no">&nbsp;</span>
1439
+ <span class="cline-any cline-no">&nbsp;</span>
1440
+ <span class="cline-any cline-no">&nbsp;</span>
1441
+ <span class="cline-any cline-no">&nbsp;</span>
1442
+ <span class="cline-any cline-no">&nbsp;</span>
1443
+ <span class="cline-any cline-no">&nbsp;</span>
1444
+ <span class="cline-any cline-no">&nbsp;</span>
1445
+ <span class="cline-any cline-no">&nbsp;</span>
1446
+ <span class="cline-any cline-no">&nbsp;</span>
1447
+ <span class="cline-any cline-no">&nbsp;</span>
1448
+ <span class="cline-any cline-no">&nbsp;</span>
1449
+ <span class="cline-any cline-no">&nbsp;</span>
1450
+ <span class="cline-any cline-no">&nbsp;</span>
1451
+ <span class="cline-any cline-no">&nbsp;</span>
1452
+ <span class="cline-any cline-no">&nbsp;</span>
1453
+ <span class="cline-any cline-no">&nbsp;</span>
1454
+ <span class="cline-any cline-no">&nbsp;</span>
1455
+ <span class="cline-any cline-no">&nbsp;</span>
1456
+ <span class="cline-any cline-no">&nbsp;</span>
1457
+ <span class="cline-any cline-no">&nbsp;</span>
1458
+ <span class="cline-any cline-no">&nbsp;</span>
1459
+ <span class="cline-any cline-no">&nbsp;</span>
1460
+ <span class="cline-any cline-no">&nbsp;</span>
1461
+ <span class="cline-any cline-no">&nbsp;</span>
1462
+ <span class="cline-any cline-no">&nbsp;</span>
1463
+ <span class="cline-any cline-no">&nbsp;</span>
1464
+ <span class="cline-any cline-no">&nbsp;</span>
1465
+ <span class="cline-any cline-no">&nbsp;</span>
1466
+ <span class="cline-any cline-no">&nbsp;</span>
1467
+ <span class="cline-any cline-no">&nbsp;</span>
1468
+ <span class="cline-any cline-no">&nbsp;</span>
1469
+ <span class="cline-any cline-no">&nbsp;</span>
1470
+ <span class="cline-any cline-no">&nbsp;</span>
1471
+ <span class="cline-any cline-no">&nbsp;</span>
1472
+ <span class="cline-any cline-no">&nbsp;</span>
1473
+ <span class="cline-any cline-no">&nbsp;</span>
1474
+ <span class="cline-any cline-no">&nbsp;</span>
1475
+ <span class="cline-any cline-no">&nbsp;</span>
1476
+ <span class="cline-any cline-no">&nbsp;</span>
1477
+ <span class="cline-any cline-no">&nbsp;</span>
1478
+ <span class="cline-any cline-no">&nbsp;</span>
1479
+ <span class="cline-any cline-no">&nbsp;</span>
1480
+ <span class="cline-any cline-no">&nbsp;</span>
1481
+ <span class="cline-any cline-no">&nbsp;</span>
1482
+ <span class="cline-any cline-no">&nbsp;</span>
1483
+ <span class="cline-any cline-no">&nbsp;</span>
1484
+ <span class="cline-any cline-no">&nbsp;</span>
1485
+ <span class="cline-any cline-no">&nbsp;</span>
1486
+ <span class="cline-any cline-no">&nbsp;</span>
1487
+ <span class="cline-any cline-no">&nbsp;</span>
1488
+ <span class="cline-any cline-no">&nbsp;</span>
1489
+ <span class="cline-any cline-no">&nbsp;</span>
1490
+ <span class="cline-any cline-no">&nbsp;</span>
1491
+ <span class="cline-any cline-no">&nbsp;</span>
1492
+ <span class="cline-any cline-no">&nbsp;</span>
1493
+ <span class="cline-any cline-no">&nbsp;</span>
1494
+ <span class="cline-any cline-no">&nbsp;</span>
1495
+ <span class="cline-any cline-no">&nbsp;</span>
1496
+ <span class="cline-any cline-no">&nbsp;</span>
1497
+ <span class="cline-any cline-no">&nbsp;</span>
1498
+ <span class="cline-any cline-no">&nbsp;</span>
1499
+ <span class="cline-any cline-no">&nbsp;</span>
1500
+ <span class="cline-any cline-no">&nbsp;</span>
1501
+ <span class="cline-any cline-no">&nbsp;</span>
1502
+ <span class="cline-any cline-no">&nbsp;</span>
1503
+ <span class="cline-any cline-no">&nbsp;</span>
1504
+ <span class="cline-any cline-no">&nbsp;</span>
1505
+ <span class="cline-any cline-no">&nbsp;</span>
1506
+ <span class="cline-any cline-no">&nbsp;</span>
1507
+ <span class="cline-any cline-no">&nbsp;</span>
1508
+ <span class="cline-any cline-no">&nbsp;</span>
1509
+ <span class="cline-any cline-no">&nbsp;</span>
1510
+ <span class="cline-any cline-no">&nbsp;</span>
1511
+ <span class="cline-any cline-no">&nbsp;</span>
1512
+ <span class="cline-any cline-no">&nbsp;</span>
1513
+ <span class="cline-any cline-no">&nbsp;</span>
1514
+ <span class="cline-any cline-no">&nbsp;</span>
1515
+ <span class="cline-any cline-no">&nbsp;</span>
1516
+ <span class="cline-any cline-no">&nbsp;</span>
1517
+ <span class="cline-any cline-no">&nbsp;</span>
1518
+ <span class="cline-any cline-no">&nbsp;</span>
1519
+ <span class="cline-any cline-no">&nbsp;</span>
1520
+ <span class="cline-any cline-no">&nbsp;</span>
1521
+ <span class="cline-any cline-no">&nbsp;</span>
1522
+ <span class="cline-any cline-no">&nbsp;</span>
1523
+ <span class="cline-any cline-no">&nbsp;</span>
1524
+ <span class="cline-any cline-no">&nbsp;</span>
1525
+ <span class="cline-any cline-no">&nbsp;</span>
1526
+ <span class="cline-any cline-no">&nbsp;</span>
1527
+ <span class="cline-any cline-no">&nbsp;</span>
1528
+ <span class="cline-any cline-no">&nbsp;</span>
1529
+ <span class="cline-any cline-no">&nbsp;</span>
1530
+ <span class="cline-any cline-no">&nbsp;</span>
1531
+ <span class="cline-any cline-no">&nbsp;</span>
1532
+ <span class="cline-any cline-no">&nbsp;</span>
1533
+ <span class="cline-any cline-no">&nbsp;</span>
1534
+ <span class="cline-any cline-no">&nbsp;</span>
1535
+ <span class="cline-any cline-no">&nbsp;</span>
1536
+ <span class="cline-any cline-no">&nbsp;</span>
1537
+ <span class="cline-any cline-no">&nbsp;</span>
1538
+ <span class="cline-any cline-no">&nbsp;</span>
1539
+ <span class="cline-any cline-no">&nbsp;</span>
1540
+ <span class="cline-any cline-no">&nbsp;</span>
1541
+ <span class="cline-any cline-no">&nbsp;</span>
1542
+ <span class="cline-any cline-no">&nbsp;</span>
1543
+ <span class="cline-any cline-no">&nbsp;</span>
1544
+ <span class="cline-any cline-no">&nbsp;</span>
1545
+ <span class="cline-any cline-no">&nbsp;</span>
1546
+ <span class="cline-any cline-no">&nbsp;</span>
1547
+ <span class="cline-any cline-no">&nbsp;</span>
1548
+ <span class="cline-any cline-no">&nbsp;</span>
1549
+ <span class="cline-any cline-no">&nbsp;</span>
1550
+ <span class="cline-any cline-no">&nbsp;</span>
1551
+ <span class="cline-any cline-no">&nbsp;</span>
1552
+ <span class="cline-any cline-no">&nbsp;</span>
1553
+ <span class="cline-any cline-no">&nbsp;</span>
1554
+ <span class="cline-any cline-no">&nbsp;</span>
1555
+ <span class="cline-any cline-no">&nbsp;</span>
1556
+ <span class="cline-any cline-no">&nbsp;</span>
1557
+ <span class="cline-any cline-no">&nbsp;</span>
1558
+ <span class="cline-any cline-no">&nbsp;</span>
1559
+ <span class="cline-any cline-no">&nbsp;</span>
1560
+ <span class="cline-any cline-no">&nbsp;</span>
1561
+ <span class="cline-any cline-no">&nbsp;</span>
1562
+ <span class="cline-any cline-no">&nbsp;</span>
1563
+ <span class="cline-any cline-no">&nbsp;</span>
1564
+ <span class="cline-any cline-no">&nbsp;</span>
1565
+ <span class="cline-any cline-no">&nbsp;</span>
1566
+ <span class="cline-any cline-no">&nbsp;</span>
1567
+ <span class="cline-any cline-no">&nbsp;</span>
1568
+ <span class="cline-any cline-no">&nbsp;</span>
1569
+ <span class="cline-any cline-no">&nbsp;</span>
1570
+ <span class="cline-any cline-no">&nbsp;</span>
1571
+ <span class="cline-any cline-no">&nbsp;</span>
1572
+ <span class="cline-any cline-no">&nbsp;</span>
1573
+ <span class="cline-any cline-no">&nbsp;</span>
1574
+ <span class="cline-any cline-no">&nbsp;</span>
1575
+ <span class="cline-any cline-no">&nbsp;</span>
1576
+ <span class="cline-any cline-no">&nbsp;</span>
1577
+ <span class="cline-any cline-no">&nbsp;</span>
1578
+ <span class="cline-any cline-no">&nbsp;</span>
1579
+ <span class="cline-any cline-no">&nbsp;</span>
1580
+ <span class="cline-any cline-no">&nbsp;</span>
1581
+ <span class="cline-any cline-no">&nbsp;</span>
1582
+ <span class="cline-any cline-no">&nbsp;</span>
1583
+ <span class="cline-any cline-no">&nbsp;</span>
1584
+ <span class="cline-any cline-no">&nbsp;</span>
1585
+ <span class="cline-any cline-no">&nbsp;</span>
1586
+ <span class="cline-any cline-no">&nbsp;</span>
1587
+ <span class="cline-any cline-no">&nbsp;</span>
1588
+ <span class="cline-any cline-no">&nbsp;</span>
1589
+ <span class="cline-any cline-no">&nbsp;</span>
1590
+ <span class="cline-any cline-no">&nbsp;</span>
1591
+ <span class="cline-any cline-no">&nbsp;</span>
1592
+ <span class="cline-any cline-no">&nbsp;</span>
1593
+ <span class="cline-any cline-no">&nbsp;</span>
1594
+ <span class="cline-any cline-no">&nbsp;</span>
1595
+ <span class="cline-any cline-no">&nbsp;</span>
1596
+ <span class="cline-any cline-no">&nbsp;</span>
1597
+ <span class="cline-any cline-no">&nbsp;</span>
1598
+ <span class="cline-any cline-no">&nbsp;</span>
1599
+ <span class="cline-any cline-no">&nbsp;</span>
1600
+ <span class="cline-any cline-no">&nbsp;</span>
1601
+ <span class="cline-any cline-no">&nbsp;</span>
1602
+ <span class="cline-any cline-no">&nbsp;</span>
1603
+ <span class="cline-any cline-no">&nbsp;</span>
1604
+ <span class="cline-any cline-no">&nbsp;</span>
1605
+ <span class="cline-any cline-no">&nbsp;</span>
1606
+ <span class="cline-any cline-no">&nbsp;</span>
1607
+ <span class="cline-any cline-no">&nbsp;</span>
1608
+ <span class="cline-any cline-no">&nbsp;</span>
1609
+ <span class="cline-any cline-no">&nbsp;</span>
1610
+ <span class="cline-any cline-no">&nbsp;</span>
1611
+ <span class="cline-any cline-no">&nbsp;</span>
1612
+ <span class="cline-any cline-no">&nbsp;</span>
1613
+ <span class="cline-any cline-no">&nbsp;</span>
1614
+ <span class="cline-any cline-no">&nbsp;</span>
1615
+ <span class="cline-any cline-no">&nbsp;</span>
1616
+ <span class="cline-any cline-no">&nbsp;</span>
1617
+ <span class="cline-any cline-no">&nbsp;</span>
1618
+ <span class="cline-any cline-no">&nbsp;</span>
1619
+ <span class="cline-any cline-no">&nbsp;</span>
1620
+ <span class="cline-any cline-no">&nbsp;</span>
1621
+ <span class="cline-any cline-no">&nbsp;</span>
1622
+ <span class="cline-any cline-no">&nbsp;</span>
1623
+ <span class="cline-any cline-no">&nbsp;</span>
1624
+ <span class="cline-any cline-no">&nbsp;</span>
1625
+ <span class="cline-any cline-no">&nbsp;</span>
1626
+ <span class="cline-any cline-no">&nbsp;</span>
1627
+ <span class="cline-any cline-no">&nbsp;</span>
1628
+ <span class="cline-any cline-no">&nbsp;</span>
1629
+ <span class="cline-any cline-no">&nbsp;</span>
1630
+ <span class="cline-any cline-no">&nbsp;</span>
1631
+ <span class="cline-any cline-no">&nbsp;</span>
1632
+ <span class="cline-any cline-no">&nbsp;</span>
1633
+ <span class="cline-any cline-no">&nbsp;</span>
1634
+ <span class="cline-any cline-no">&nbsp;</span>
1635
+ <span class="cline-any cline-no">&nbsp;</span>
1636
+ <span class="cline-any cline-no">&nbsp;</span>
1637
+ <span class="cline-any cline-no">&nbsp;</span>
1638
+ <span class="cline-any cline-no">&nbsp;</span>
1639
+ <span class="cline-any cline-no">&nbsp;</span>
1640
+ <span class="cline-any cline-no">&nbsp;</span>
1641
+ <span class="cline-any cline-no">&nbsp;</span>
1642
+ <span class="cline-any cline-no">&nbsp;</span>
1643
+ <span class="cline-any cline-no">&nbsp;</span>
1644
+ <span class="cline-any cline-no">&nbsp;</span>
1645
+ <span class="cline-any cline-no">&nbsp;</span>
1646
+ <span class="cline-any cline-no">&nbsp;</span>
1647
+ <span class="cline-any cline-no">&nbsp;</span>
1648
+ <span class="cline-any cline-no">&nbsp;</span>
1649
+ <span class="cline-any cline-no">&nbsp;</span>
1650
+ <span class="cline-any cline-no">&nbsp;</span>
1651
+ <span class="cline-any cline-no">&nbsp;</span>
1652
+ <span class="cline-any cline-no">&nbsp;</span>
1653
+ <span class="cline-any cline-no">&nbsp;</span>
1654
+ <span class="cline-any cline-no">&nbsp;</span>
1655
+ <span class="cline-any cline-no">&nbsp;</span>
1656
+ <span class="cline-any cline-no">&nbsp;</span>
1657
+ <span class="cline-any cline-no">&nbsp;</span>
1658
+ <span class="cline-any cline-no">&nbsp;</span>
1659
+ <span class="cline-any cline-no">&nbsp;</span>
1660
+ <span class="cline-any cline-no">&nbsp;</span>
1661
+ <span class="cline-any cline-no">&nbsp;</span>
1662
+ <span class="cline-any cline-no">&nbsp;</span>
1663
+ <span class="cline-any cline-no">&nbsp;</span>
1664
+ <span class="cline-any cline-no">&nbsp;</span>
1665
+ <span class="cline-any cline-no">&nbsp;</span>
1666
+ <span class="cline-any cline-no">&nbsp;</span>
1667
+ <span class="cline-any cline-no">&nbsp;</span>
1668
+ <span class="cline-any cline-no">&nbsp;</span>
1669
+ <span class="cline-any cline-no">&nbsp;</span>
1670
+ <span class="cline-any cline-no">&nbsp;</span>
1671
+ <span class="cline-any cline-no">&nbsp;</span>
1672
+ <span class="cline-any cline-no">&nbsp;</span>
1673
+ <span class="cline-any cline-no">&nbsp;</span>
1674
+ <span class="cline-any cline-no">&nbsp;</span>
1675
+ <span class="cline-any cline-no">&nbsp;</span>
1676
+ <span class="cline-any cline-no">&nbsp;</span>
1677
+ <span class="cline-any cline-no">&nbsp;</span>
1678
+ <span class="cline-any cline-no">&nbsp;</span>
1679
+ <span class="cline-any cline-no">&nbsp;</span>
1680
+ <span class="cline-any cline-no">&nbsp;</span>
1681
+ <span class="cline-any cline-no">&nbsp;</span>
1682
+ <span class="cline-any cline-no">&nbsp;</span>
1683
+ <span class="cline-any cline-no">&nbsp;</span>
1684
+ <span class="cline-any cline-no">&nbsp;</span>
1685
+ <span class="cline-any cline-no">&nbsp;</span>
1686
+ <span class="cline-any cline-no">&nbsp;</span>
1687
+ <span class="cline-any cline-no">&nbsp;</span>
1688
+ <span class="cline-any cline-no">&nbsp;</span>
1689
+ <span class="cline-any cline-no">&nbsp;</span>
1690
+ <span class="cline-any cline-no">&nbsp;</span>
1691
+ <span class="cline-any cline-no">&nbsp;</span>
1692
+ <span class="cline-any cline-no">&nbsp;</span>
1693
+ <span class="cline-any cline-no">&nbsp;</span>
1694
+ <span class="cline-any cline-no">&nbsp;</span>
1695
+ <span class="cline-any cline-no">&nbsp;</span>
1696
+ <span class="cline-any cline-no">&nbsp;</span>
1697
+ <span class="cline-any cline-no">&nbsp;</span>
1698
+ <span class="cline-any cline-no">&nbsp;</span>
1699
+ <span class="cline-any cline-no">&nbsp;</span>
1700
+ <span class="cline-any cline-no">&nbsp;</span>
1701
+ <span class="cline-any cline-no">&nbsp;</span>
1702
+ <span class="cline-any cline-no">&nbsp;</span>
1703
+ <span class="cline-any cline-no">&nbsp;</span>
1704
+ <span class="cline-any cline-no">&nbsp;</span>
1705
+ <span class="cline-any cline-no">&nbsp;</span>
1706
+ <span class="cline-any cline-no">&nbsp;</span>
1707
+ <span class="cline-any cline-no">&nbsp;</span>
1708
+ <span class="cline-any cline-no">&nbsp;</span>
1709
+ <span class="cline-any cline-no">&nbsp;</span>
1710
+ <span class="cline-any cline-no">&nbsp;</span>
1711
+ <span class="cline-any cline-no">&nbsp;</span>
1712
+ <span class="cline-any cline-no">&nbsp;</span>
1713
+ <span class="cline-any cline-no">&nbsp;</span>
1714
+ <span class="cline-any cline-no">&nbsp;</span>
1715
+ <span class="cline-any cline-no">&nbsp;</span>
1716
+ <span class="cline-any cline-no">&nbsp;</span>
1717
+ <span class="cline-any cline-no">&nbsp;</span>
1718
+ <span class="cline-any cline-no">&nbsp;</span>
1719
+ <span class="cline-any cline-no">&nbsp;</span>
1720
+ <span class="cline-any cline-no">&nbsp;</span>
1721
+ <span class="cline-any cline-no">&nbsp;</span>
1722
+ <span class="cline-any cline-no">&nbsp;</span>
1723
+ <span class="cline-any cline-no">&nbsp;</span>
1724
+ <span class="cline-any cline-no">&nbsp;</span>
1725
+ <span class="cline-any cline-no">&nbsp;</span>
1726
+ <span class="cline-any cline-no">&nbsp;</span>
1727
+ <span class="cline-any cline-no">&nbsp;</span>
1728
+ <span class="cline-any cline-no">&nbsp;</span>
1729
+ <span class="cline-any cline-no">&nbsp;</span>
1730
+ <span class="cline-any cline-no">&nbsp;</span>
1731
+ <span class="cline-any cline-no">&nbsp;</span>
1732
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import { OpenAI } from 'openai';</span></span></span>
1733
+ <span class="cstat-no" title="statement not covered" ></span>
1734
+ <span class="cstat-no" title="statement not covered" >import { DyFM_OAI_Settings, DyFM_OAI_Model, DyFM_OAI_CallSettings } from '@futdevpro/fsm-dynamo/ai/open-ai';</span>
1735
+ <span class="cstat-no" title="statement not covered" >import { DyFM_AnyError, DyFM_Error, DyFM_Error_Settings, DyFM_Log, DyFM_notNull, DyFM_Object } from '@futdevpro/fsm-dynamo';</span>
1736
+ <span class="cstat-no" title="statement not covered" >import { </span>
1737
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_Message, </span>
1738
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_MessageRole,</span>
1739
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_Provider,</span>
1740
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_ProviderCapabilities,</span>
1741
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_CallSettings,</span>
1742
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_Config,</span>
1743
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_LLM_Response</span>
1744
+ <span class="cstat-no" title="statement not covered" >} from '@futdevpro/fsm-dynamo/ai';</span>
1745
+ <span class="cstat-no" title="statement not covered" ></span>
1746
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_global_settings } from '../../../../../_collections/global-settings.const';</span>
1747
+ <span class="cstat-no" title="statement not covered" >import { ChatCompletion } from 'openai/resources';</span>
1748
+ <span class="cstat-no" title="statement not covered" >import { ChatCompletionCreateParamsBase, ChatCompletionMessageParam } from 'openai/resources/chat/completions';</span>
1749
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_OAI_LLM_Predefined_Requests } from '../_models/interfaces/oai-llm-predefined-requests.interface';</span>
1750
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_OAI_global_settings } from '../_collections/oai-global-settings.const';</span>
1751
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_OAI_LLMDefaultPredefined_Requests } from '../_collections/oai-llm-predefined-requests.conts';</span>
1752
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_AI_LLM_ServiceBase } from '../../../_services/ai-llm.service-base';</span>
1753
+ <span class="cstat-no" title="statement not covered" >import {</span>
1754
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_Message_Input,</span>
1755
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_GenericSelect_Input,</span>
1756
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_GenericMultiSelect_Input,</span>
1757
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_JSONKeysDescription_Input,</span>
1758
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_JSONExactKeys_Input,</span>
1759
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_MultiSelect_Input,</span>
1760
+ <span class="cstat-no" title="statement not covered" > DyFM_AI_ConversationBase_Input</span>
1761
+ <span class="cstat-no" title="statement not covered" >} from '../../../_models/ai-input-interfaces';</span>
1762
+ <span class="cstat-no" title="statement not covered" ></span>
1763
+ <span class="cstat-no" title="statement not covered" ></span>
1764
+ <span class="cstat-no" title="statement not covered" >/**</span>
1765
+ <span class="cstat-no" title="statement not covered" > * {</span>
1766
+ <span class="cstat-no" title="statement not covered" > * organization: 'org-XY',</span>
1767
+ <span class="cstat-no" title="statement not covered" > * apiKey: 'sk-XY',</span>
1768
+ <span class="cstat-no" title="statement not covered" > * project: 'proj_XY',</span>
1769
+ <span class="cstat-no" title="statement not covered" > * }</span>
1770
+ <span class="cstat-no" title="statement not covered" > */</span>
1771
+ <span class="cstat-no" title="statement not covered" ></span>
1772
+ <span class="cstat-no" title="statement not covered" >// Di Dictionary DiModel DiEz DiAz</span>
1773
+ <span class="cstat-no" title="statement not covered" ></span>
1774
+ <span class="cstat-no" title="statement not covered" >export class DyNTS_OAI_LLM_ServiceBase extends DyNTS_AI_LLM_ServiceBase {</span>
1775
+ <span class="cstat-no" title="statement not covered" > </span>
1776
+ <span class="cstat-no" title="statement not covered" > /* readonly defaultErrorUserMsg: string = </span>
1777
+ <span class="cstat-no" title="statement not covered" > `We encountered an unhandled Control Service Error, ` +</span>
1778
+ <span class="cstat-no" title="statement not covered" > `\nplease contact the responsible development team.`; */</span>
1779
+ <span class="cstat-no" title="statement not covered" ></span>
1780
+ <span class="cstat-no" title="statement not covered" > openai: OpenAI;</span>
1781
+ <span class="cstat-no" title="statement not covered" ></span>
1782
+ <span class="cstat-no" title="statement not covered" > readonly defaultSettings: DyFM_OAI_CallSettings;</span>
1783
+ <span class="cstat-no" title="statement not covered" ></span>
1784
+ <span class="cstat-no" title="statement not covered" > // Provider properties from DyNTS_AI_Provider_ServiceBase</span>
1785
+ <span class="cstat-no" title="statement not covered" > readonly aiProvider: DyFM_AI_Provider = DyFM_AI_Provider.OpenAI;</span>
1786
+ <span class="cstat-no" title="statement not covered" ></span>
1787
+ <span class="cstat-no" title="statement not covered" > readonly capabilities: DyFM_AI_ProviderCapabilities = {</span>
1788
+ <span class="cstat-no" title="statement not covered" > chat: true,</span>
1789
+ <span class="cstat-no" title="statement not covered" > embeddings: true,</span>
1790
+ <span class="cstat-no" title="statement not covered" > imageGeneration: true,</span>
1791
+ <span class="cstat-no" title="statement not covered" > vision: true,</span>
1792
+ <span class="cstat-no" title="statement not covered" > audioGeneration: true,</span>
1793
+ <span class="cstat-no" title="statement not covered" > audioAnalysis: true,</span>
1794
+ <span class="cstat-no" title="statement not covered" > functionCalling: true,</span>
1795
+ <span class="cstat-no" title="statement not covered" > streaming: true,</span>
1796
+ <span class="cstat-no" title="statement not covered" > batchOperations: true,</span>
1797
+ <span class="cstat-no" title="statement not covered" > maxContextLength: 128000,</span>
1798
+ <span class="cstat-no" title="statement not covered" > supportedModelTypes: ['gpt-4o', 'gpt-4o-mini', 'text-embedding-3-large', 'text-embedding-3-small']</span>
1799
+ <span class="cstat-no" title="statement not covered" > };</span>
1800
+ <span class="cstat-no" title="statement not covered" ></span>
1801
+ <span class="cstat-no" title="statement not covered" > /* get _debugLog(): boolean {</span>
1802
+ <span class="cstat-no" title="statement not covered" > return this.defaultSettings.debugLog;</span>
1803
+ <span class="cstat-no" title="statement not covered" > } */</span>
1804
+ <span class="cstat-no" title="statement not covered" ></span>
1805
+ <span class="cstat-no" title="statement not covered" > /* get defaultSystemPrompt(): string {</span>
1806
+ <span class="cstat-no" title="statement not covered" > return this.defaultSettings.systemPrompt;</span>
1807
+ <span class="cstat-no" title="statement not covered" > } */</span>
1808
+ <span class="cstat-no" title="statement not covered" ></span>
1809
+ <span class="cstat-no" title="statement not covered" > override get defaultModel(): DyFM_OAI_Model | string {</span>
1810
+ <span class="cstat-no" title="statement not covered" > return this.defaultSettings.useModel;</span>
1811
+ <span class="cstat-no" title="statement not covered" > }</span>
1812
+ <span class="cstat-no" title="statement not covered" ></span>
1813
+ <span class="cstat-no" title="statement not covered" > predefinedRequests: DyNTS_OAI_LLM_Predefined_Requests = DyNTS_OAI_LLMDefaultPredefined_Requests;</span>
1814
+ <span class="cstat-no" title="statement not covered" ></span>
1815
+ <span class="cstat-no" title="statement not covered" > constructor(</span>
1816
+ <span class="cstat-no" title="statement not covered" > set?: DyFM_OAI_Settings</span>
1817
+ <span class="cstat-no" title="statement not covered" > ) {</span>
1818
+ <span class="cstat-no" title="statement not covered" > super();</span>
1819
+ <span class="cstat-no" title="statement not covered" > </span>
1820
+ <span class="cstat-no" title="statement not covered" > DyNTS_global_settings.openAi_settings ??= DyNTS_OAI_global_settings;</span>
1821
+ <span class="cstat-no" title="statement not covered" > </span>
1822
+ <span class="cstat-no" title="statement not covered" > this.openai = new OpenAI(</span>
1823
+ <span class="cstat-no" title="statement not covered" > set?.config ?? </span>
1824
+ <span class="cstat-no" title="statement not covered" > {</span>
1825
+ <span class="cstat-no" title="statement not covered" > organization: DyNTS_global_settings.env_settings.openAi.organization,</span>
1826
+ <span class="cstat-no" title="statement not covered" > apiKey: DyNTS_global_settings.env_settings.openAi.apiKey,</span>
1827
+ <span class="cstat-no" title="statement not covered" > project: DyNTS_global_settings.env_settings.openAi.project,</span>
1828
+ <span class="cstat-no" title="statement not covered" > }</span>
1829
+ <span class="cstat-no" title="statement not covered" > );</span>
1830
+ <span class="cstat-no" title="statement not covered" ></span>
1831
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings = set?.defaultSettings ?? </span>
1832
+ <span class="cstat-no" title="statement not covered" > DyNTS_OAI_global_settings.defaultSettings ?? </span>
1833
+ <span class="cstat-no" title="statement not covered" > new DyFM_OAI_CallSettings();</span>
1834
+ <span class="cstat-no" title="statement not covered" > }</span>
1835
+ <span class="cstat-no" title="statement not covered" ></span>
1836
+ <span class="cstat-no" title="statement not covered" > /**</span>
1837
+ <span class="cstat-no" title="statement not covered" > * Inicializálja az OpenAI client-et a megadott config-gal</span>
1838
+ <span class="cstat-no" title="statement not covered" > * </span>
1839
+ <span class="cstat-no" title="statement not covered" > * Reinitializes the OpenAI client with the provided config</span>
1840
+ <span class="cstat-no" title="statement not covered" > */</span>
1841
+ <span class="cstat-no" title="statement not covered" > setup(config: DyFM_AI_Config): void {</span>
1842
+ <span class="cstat-no" title="statement not covered" > this.openai = new OpenAI(config);</span>
1843
+ <span class="cstat-no" title="statement not covered" > }</span>
1844
+ <span class="cstat-no" title="statement not covered" > </span>
1845
+ <span class="cstat-no" title="statement not covered" > /* readonly defaultLogReplacer: string = '...long-context...'; */</span>
1846
+ <span class="cstat-no" title="statement not covered" ></span>
1847
+ <span class="cstat-no" title="statement not covered" > //#region Ask Questions</span>
1848
+ <span class="cstat-no" title="statement not covered" ></span>
1849
+ <span class="cstat-no" title="statement not covered" > /**</span>
1850
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a yes/no question</span>
1851
+ <span class="cstat-no" title="statement not covered" > * </span>
1852
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.yesNo.request} to ask the question,</span>
1853
+ <span class="cstat-no" title="statement not covered" > * and the {@link DyNTS_OAI_LLM_Predefined_Requests.yesNo.upperCaseYes} to check the answer</span>
1854
+ <span class="cstat-no" title="statement not covered" > */</span>
1855
+ <span class="cstat-no" title="statement not covered" > async requestYesNo(</span>
1856
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Message_Input</span>
1857
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;boolean&gt; {</span>
1858
+ <span class="cstat-no" title="statement not covered" > set.message += this.predefinedRequests.yesNo.request;</span>
1859
+ <span class="cstat-no" title="statement not covered" ></span>
1860
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
1861
+ <span class="cstat-no" title="statement not covered" ></span>
1862
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToBoolean(answer);</span>
1863
+ <span class="cstat-no" title="statement not covered" > }</span>
1864
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestYesNo} */</span>
1865
+ <span class="cstat-no" title="statement not covered" > //yesNoQuestion = this.askYesNoQuestion;</span>
1866
+ <span class="cstat-no" title="statement not covered" ></span>
1867
+ <span class="cstat-no" title="statement not covered" > /**</span>
1868
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a percentage question</span>
1869
+ <span class="cstat-no" title="statement not covered" > * </span>
1870
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.percentageOnly} to ask the question</span>
1871
+ <span class="cstat-no" title="statement not covered" > */</span>
1872
+ <span class="cstat-no" title="statement not covered" > async requestPercentage(</span>
1873
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Message_Input</span>
1874
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;number&gt; {</span>
1875
+ <span class="cstat-no" title="statement not covered" > set.message += this.predefinedRequests.percentageOnly;</span>
1876
+ <span class="cstat-no" title="statement not covered" ></span>
1877
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
1878
+ <span class="cstat-no" title="statement not covered" ></span>
1879
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToNumber(answer, set.message);</span>
1880
+ <span class="cstat-no" title="statement not covered" > }</span>
1881
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestPercentage} */</span>
1882
+ <span class="cstat-no" title="statement not covered" > //percentageQuestion = this.askPercentageQuestion;</span>
1883
+ <span class="cstat-no" title="statement not covered" ></span>
1884
+ <span class="cstat-no" title="statement not covered" > /**</span>
1885
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to select one of the options from the list</span>
1886
+ <span class="cstat-no" title="statement not covered" > * </span>
1887
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.selectRequest} to ask the question</span>
1888
+ <span class="cstat-no" title="statement not covered" > */</span>
1889
+ <span class="cstat-no" title="statement not covered" > /* async askSelectQuestion(</span>
1890
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_GenericSelect_Input&lt;string&gt;</span>
1891
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
1892
+ <span class="cstat-no" title="statement not covered" > // replace the {{DyNTS_selectOptions}} with the list of options</span>
1893
+ <span class="cstat-no" title="statement not covered" > const selectQuestionAddition = this.predefinedRequests.selectRequest.replace(</span>
1894
+ <span class="cstat-no" title="statement not covered" > '{{DyNTS_selectOptions}}', </span>
1895
+ <span class="cstat-no" title="statement not covered" > this.getTextListAsText(set.selectFrom)</span>
1896
+ <span class="cstat-no" title="statement not covered" > );</span>
1897
+ <span class="cstat-no" title="statement not covered" > set.message += selectQuestionAddition;</span>
1898
+ <span class="cstat-no" title="statement not covered" ></span>
1899
+ <span class="cstat-no" title="statement not covered" > let answer = await this.requestSimpleMessage(set);</span>
1900
+ <span class="cstat-no" title="statement not covered" > </span>
1901
+ <span class="cstat-no" title="statement not covered" > answer = answer.toLocaleUpperCase();</span>
1902
+ <span class="cstat-no" title="statement not covered" > </span>
1903
+ <span class="cstat-no" title="statement not covered" > for (const item of set.selectFrom) {</span>
1904
+ <span class="cstat-no" title="statement not covered" > if (answer.includes(item.toLocaleUpperCase())) return item;</span>
1905
+ <span class="cstat-no" title="statement not covered" > }</span>
1906
+ <span class="cstat-no" title="statement not covered" ></span>
1907
+ <span class="cstat-no" title="statement not covered" > return null;</span>
1908
+ <span class="cstat-no" title="statement not covered" > } */</span>
1909
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link askSelectQuestion} */</span>
1910
+ <span class="cstat-no" title="statement not covered" > //selectQuestion = this.askSelectQuestion;</span>
1911
+ <span class="cstat-no" title="statement not covered" ></span>
1912
+ <span class="cstat-no" title="statement not covered" > /**</span>
1913
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to select one of the options from the list</span>
1914
+ <span class="cstat-no" title="statement not covered" > * Similar to {@link askSelectQuestion}, </span>
1915
+ <span class="cstat-no" title="statement not covered" > * but with a more generic approach that can be used for objects</span>
1916
+ <span class="cstat-no" title="statement not covered" > * </span>
1917
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.selectRequest} to ask the question</span>
1918
+ <span class="cstat-no" title="statement not covered" > */</span>
1919
+ <span class="cstat-no" title="statement not covered" > async requestSelect&lt;T&gt;(</span>
1920
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_GenericSelect_Input&lt;T&gt;</span>
1921
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T | { unparsableResult: string }&gt; {</span>
1922
+ <span class="cstat-no" title="statement not covered" > const options: string[] = this.stringifySelectOptions(set.selectFrom);</span>
1923
+ <span class="cstat-no" title="statement not covered" > const selectQuestionAddition = this.predefinedRequests.selectRequest.replace(</span>
1924
+ <span class="cstat-no" title="statement not covered" > '{{DyNTS_selectOptions}}', </span>
1925
+ <span class="cstat-no" title="statement not covered" > this.getTextListAsText(options)</span>
1926
+ <span class="cstat-no" title="statement not covered" > );</span>
1927
+ <span class="cstat-no" title="statement not covered" > set.message += selectQuestionAddition;</span>
1928
+ <span class="cstat-no" title="statement not covered" ></span>
1929
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
1930
+ <span class="cstat-no" title="statement not covered" ></span>
1931
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToSelectOption&lt;T&gt;(answer, set.message, set.selectFrom);</span>
1932
+ <span class="cstat-no" title="statement not covered" > }</span>
1933
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestSelect} */</span>
1934
+ <span class="cstat-no" title="statement not covered" > //selectRequest = this.requestSelect;</span>
1935
+ <span class="cstat-no" title="statement not covered" ></span>
1936
+ <span class="cstat-no" title="statement not covered" > /**</span>
1937
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to select one or more of the options from the list</span>
1938
+ <span class="cstat-no" title="statement not covered" > * </span>
1939
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.multiselect} to ask the question</span>
1940
+ <span class="cstat-no" title="statement not covered" > */</span>
1941
+ <span class="cstat-no" title="statement not covered" > async requestMultiselect&lt;T&gt;(</span>
1942
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_GenericMultiSelect_Input&lt;T, DyFM_OAI_CallSettings&gt;</span>
1943
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T[] | { unparsableResult: string }&gt; {</span>
1944
+ <span class="cstat-no" title="statement not covered" > const options: string[] = this.stringifySelectOptions(set.options);</span>
1945
+ <span class="cstat-no" title="statement not covered" > const selectQuestionAddition = this.predefinedRequests.multiselect.replace(</span>
1946
+ <span class="cstat-no" title="statement not covered" > '{{DyNTS_selectOptions}}', </span>
1947
+ <span class="cstat-no" title="statement not covered" > this.getTextListAsText(options)</span>
1948
+ <span class="cstat-no" title="statement not covered" > );</span>
1949
+ <span class="cstat-no" title="statement not covered" > set.message += selectQuestionAddition;</span>
1950
+ <span class="cstat-no" title="statement not covered" ></span>
1951
+ <span class="cstat-no" title="statement not covered" > let answer = await this.requestSimpleMessage(set);</span>
1952
+ <span class="cstat-no" title="statement not covered" > </span>
1953
+ <span class="cstat-no" title="statement not covered" > answer = answer.toLocaleUpperCase();</span>
1954
+ <span class="cstat-no" title="statement not covered" > </span>
1955
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToSelectOptions&lt;T&gt;(answer, set.message, set.options);</span>
1956
+ <span class="cstat-no" title="statement not covered" > /* const result: T[] = [];</span>
1957
+ <span class="cstat-no" title="statement not covered" ></span>
1958
+ <span class="cstat-no" title="statement not covered" > for (const item of options) {</span>
1959
+ <span class="cstat-no" title="statement not covered" > if (answer.includes(item.toLocaleUpperCase())) {</span>
1960
+ <span class="cstat-no" title="statement not covered" > const parsedItem: T | { unparsableResult: string } = DyFM_Object.safeParseJSON&lt;T&gt;(item);</span>
1961
+ <span class="cstat-no" title="statement not covered" > if ((parsedItem as { unparsableResult: string }).unparsableResult) {</span>
1962
+ <span class="cstat-no" title="statement not covered" > result.push(item as any);</span>
1963
+ <span class="cstat-no" title="statement not covered" > } else {</span>
1964
+ <span class="cstat-no" title="statement not covered" > result.push(parsedItem as T);</span>
1965
+ <span class="cstat-no" title="statement not covered" > }</span>
1966
+ <span class="cstat-no" title="statement not covered" > </span>
1967
+ <span class="cstat-no" title="statement not covered" > }</span>
1968
+ <span class="cstat-no" title="statement not covered" > }</span>
1969
+ <span class="cstat-no" title="statement not covered" ></span>
1970
+ <span class="cstat-no" title="statement not covered" > if (!result.length &amp;&amp; !answer.trim().length) {</span>
1971
+ <span class="cstat-no" title="statement not covered" > return { unparsableResult: answer };</span>
1972
+ <span class="cstat-no" title="statement not covered" > }</span>
1973
+ <span class="cstat-no" title="statement not covered" ></span>
1974
+ <span class="cstat-no" title="statement not covered" > return result; */</span>
1975
+ <span class="cstat-no" title="statement not covered" > }</span>
1976
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link askMultipleSelectQuestionWithOptions} */</span>
1977
+ <span class="cstat-no" title="statement not covered" > //multipleSelectQuestion = this.askMultipleSelectQuestionWithOptions;</span>
1978
+ <span class="cstat-no" title="statement not covered" ></span>
1979
+ <span class="cstat-no" title="statement not covered" > /**</span>
1980
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to select one or more of the options from the list</span>
1981
+ <span class="cstat-no" title="statement not covered" > * Similar to {@link askMultipleSelectQuestionWithOptions}, </span>
1982
+ <span class="cstat-no" title="statement not covered" > * but with a more generic approach that can be used for objects</span>
1983
+ <span class="cstat-no" title="statement not covered" > * </span>
1984
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.multiselect} to ask the question</span>
1985
+ <span class="cstat-no" title="statement not covered" > */</span>
1986
+ <span class="cstat-no" title="statement not covered" > /* async requestMultiselect&lt;T&gt;(</span>
1987
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_GenericMultiSelect_Input&lt;T, DyFM_OAI_CallSettings&gt;</span>
1988
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T[]&gt; {</span>
1989
+ <span class="cstat-no" title="statement not covered" > const selectQuestionAddition = this.predefinedRequests.multiselect.replace(</span>
1990
+ <span class="cstat-no" title="statement not covered" > '{{DyNTS_selectOptions}}', </span>
1991
+ <span class="cstat-no" title="statement not covered" > this.getTextListAsText(set.options.map(item =&gt; `"${JSON.stringify(item)}"`))</span>
1992
+ <span class="cstat-no" title="statement not covered" > );</span>
1993
+ <span class="cstat-no" title="statement not covered" > set.message += selectQuestionAddition;</span>
1994
+ <span class="cstat-no" title="statement not covered" > </span>
1995
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
1996
+ <span class="cstat-no" title="statement not covered" ></span>
1997
+ <span class="cstat-no" title="statement not covered" > return DyFM_Object.safeParseList&lt;T[]&gt;(answer);</span>
1998
+ <span class="cstat-no" title="statement not covered" > } */</span>
1999
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestMultipleSelect} */</span>
2000
+ <span class="cstat-no" title="statement not covered" > //multipleSelectRequest = this.requestMultipleSelect;</span>
2001
+ <span class="cstat-no" title="statement not covered" ></span>
2002
+ <span class="cstat-no" title="statement not covered" > /**</span>
2003
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a question that must result a JSON object</span>
2004
+ <span class="cstat-no" title="statement not covered" > * </span>
2005
+ <span class="cstat-no" title="statement not covered" > * If the answer is not a valid JSON object, it will return { unparsableResult: answer }</span>
2006
+ <span class="cstat-no" title="statement not covered" > * </span>
2007
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.jsonRequest} to ask the question</span>
2008
+ <span class="cstat-no" title="statement not covered" > * </span>
2009
+ <span class="cstat-no" title="statement not covered" > * (uses {@link DyFM_safeParseJSON})</span>
2010
+ <span class="cstat-no" title="statement not covered" > */</span>
2011
+ <span class="cstat-no" title="statement not covered" > async requestJSON&lt;T = any&gt;(</span>
2012
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Message_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2013
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T | { unparsableResult: string }&gt; {</span>
2014
+ <span class="cstat-no" title="statement not covered" > set.message += this.predefinedRequests.jsonRequest;</span>
2015
+ <span class="cstat-no" title="statement not covered" ></span>
2016
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
2017
+ <span class="cstat-no" title="statement not covered" > </span>
2018
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToJSON&lt;T&gt;(answer, set.message);</span>
2019
+ <span class="cstat-no" title="statement not covered" > }</span>
2020
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link askJSONQuestion} */</span>
2021
+ <span class="cstat-no" title="statement not covered" > //jsonQuestion = this.askJSONQuestion;</span>
2022
+ <span class="cstat-no" title="statement not covered" ></span>
2023
+ <span class="cstat-no" title="statement not covered" > /**</span>
2024
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a question that must result a JSON object with specific key descriptions</span>
2025
+ <span class="cstat-no" title="statement not covered" > * </span>
2026
+ <span class="cstat-no" title="statement not covered" > * If the answer is not a valid JSON object, it will return { unparsableResult: answer }</span>
2027
+ <span class="cstat-no" title="statement not covered" > * </span>
2028
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.jsonRequestWithKeysDescription} to ask the question</span>
2029
+ <span class="cstat-no" title="statement not covered" > * </span>
2030
+ <span class="cstat-no" title="statement not covered" > * (uses {@link DyFM_safeParseJSON})</span>
2031
+ <span class="cstat-no" title="statement not covered" > */</span>
2032
+ <span class="cstat-no" title="statement not covered" > async requestJSONQuestionWithKeysDescription&lt;T = any&gt;(</span>
2033
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_JSONKeysDescription_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2034
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T | { unparsableResult: string }&gt; {</span>
2035
+ <span class="cstat-no" title="statement not covered" > const jsonRequestWithKeysDescription = this.predefinedRequests.jsonRequestWithKeysDescription.replace(</span>
2036
+ <span class="cstat-no" title="statement not covered" > '{{DyNTS_jsonKeysDescription}}', </span>
2037
+ <span class="cstat-no" title="statement not covered" > set.keysDescription</span>
2038
+ <span class="cstat-no" title="statement not covered" > );</span>
2039
+ <span class="cstat-no" title="statement not covered" > set.message += jsonRequestWithKeysDescription;</span>
2040
+ <span class="cstat-no" title="statement not covered" ></span>
2041
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
2042
+ <span class="cstat-no" title="statement not covered" ></span>
2043
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToJSON&lt;T&gt;(answer, set.message);</span>
2044
+ <span class="cstat-no" title="statement not covered" > }</span>
2045
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestJSONQuestionWithKeysDescription} */</span>
2046
+ <span class="cstat-no" title="statement not covered" > //jsonQuestionWithKeysDescription = this.askJSONQuestionWithKeysDescription;</span>
2047
+ <span class="cstat-no" title="statement not covered" ></span>
2048
+ <span class="cstat-no" title="statement not covered" > /**</span>
2049
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a question that must result a JSON object with specific keys</span>
2050
+ <span class="cstat-no" title="statement not covered" > * </span>
2051
+ <span class="cstat-no" title="statement not covered" > * If the answer is not a valid JSON object, it will return { unparsableResult: answer }</span>
2052
+ <span class="cstat-no" title="statement not covered" > * </span>
2053
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.jsonRequestWithExactKeys} to ask the question</span>
2054
+ <span class="cstat-no" title="statement not covered" > * </span>
2055
+ <span class="cstat-no" title="statement not covered" > * (uses {@link DyFM_safeParseJSON})</span>
2056
+ <span class="cstat-no" title="statement not covered" > */</span>
2057
+ <span class="cstat-no" title="statement not covered" > async requestJSONWithExactKeys&lt;T = any&gt;(</span>
2058
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_JSONExactKeys_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2059
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T | { unparsableResult: string }&gt; {</span>
2060
+ <span class="cstat-no" title="statement not covered" > const jsonRequestWithExactKeys = this.predefinedRequests.jsonRequestWithExactKeys.replace(</span>
2061
+ <span class="cstat-no" title="statement not covered" > '{{DyNTS_jsonKeys}}', </span>
2062
+ <span class="cstat-no" title="statement not covered" > this.getTextListAsText(set.keys)</span>
2063
+ <span class="cstat-no" title="statement not covered" > );</span>
2064
+ <span class="cstat-no" title="statement not covered" > set.message += jsonRequestWithExactKeys;</span>
2065
+ <span class="cstat-no" title="statement not covered" ></span>
2066
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
2067
+ <span class="cstat-no" title="statement not covered" ></span>
2068
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToJSON&lt;T&gt;(answer, set.message);</span>
2069
+ <span class="cstat-no" title="statement not covered" > }</span>
2070
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link askJSONQuestionWithExactKeys} */</span>
2071
+ <span class="cstat-no" title="statement not covered" > //jsonQuestionWithExactKeys = this.askJSONQuestionWithExactKeys;</span>
2072
+ <span class="cstat-no" title="statement not covered" ></span>
2073
+ <span class="cstat-no" title="statement not covered" > /**</span>
2074
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a question that must result a list of strings</span>
2075
+ <span class="cstat-no" title="statement not covered" > * </span>
2076
+ <span class="cstat-no" title="statement not covered" > * If the answer is not a valid JSON list, it will return the answer as a single item in an array</span>
2077
+ <span class="cstat-no" title="statement not covered" > * </span>
2078
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link DyNTS_OAI_LLM_Predefined_Requests.listRequest} to ask the question</span>
2079
+ <span class="cstat-no" title="statement not covered" > * </span>
2080
+ <span class="cstat-no" title="statement not covered" > * (uses {@link DyFM_Object.safeParseList})</span>
2081
+ <span class="cstat-no" title="statement not covered" > */</span>
2082
+ <span class="cstat-no" title="statement not covered" > /* async requestList(</span>
2083
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Base_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2084
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string[]&gt; {</span>
2085
+ <span class="cstat-no" title="statement not covered" > set.message += this.predefinedRequests.listRequest;</span>
2086
+ <span class="cstat-no" title="statement not covered" ></span>
2087
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
2088
+ <span class="cstat-no" title="statement not covered" ></span>
2089
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToList&lt;string&gt;(answer, set.message);</span>
2090
+ <span class="cstat-no" title="statement not covered" > } */</span>
2091
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link askListQuestion} */</span>
2092
+ <span class="cstat-no" title="statement not covered" > //listQuestion = this.askListQuestion;</span>
2093
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link askListQuestion} */</span>
2094
+ <span class="cstat-no" title="statement not covered" > //listRequest = this.askListQuestion;</span>
2095
+ <span class="cstat-no" title="statement not covered" ></span>
2096
+ <span class="cstat-no" title="statement not covered" > async requestList&lt;T = any&gt;(</span>
2097
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Message_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2098
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T[]&gt; {</span>
2099
+ <span class="cstat-no" title="statement not covered" > set.message += this.predefinedRequests.listRequest;</span>
2100
+ <span class="cstat-no" title="statement not covered" ></span>
2101
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestSimpleMessage(set);</span>
2102
+ <span class="cstat-no" title="statement not covered" ></span>
2103
+ <span class="cstat-no" title="statement not covered" > return this.convertAnswerToList&lt;T&gt;(answer, set.message);</span>
2104
+ <span class="cstat-no" title="statement not covered" > }</span>
2105
+ <span class="cstat-no" title="statement not covered" > </span>
2106
+ <span class="cstat-no" title="statement not covered" > /**</span>
2107
+ <span class="cstat-no" title="statement not covered" > * Asks the AI to answer a question</span>
2108
+ <span class="cstat-no" title="statement not covered" > * </span>
2109
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link resolveSimpleUserMessage}</span>
2110
+ <span class="cstat-no" title="statement not covered" > */</span>
2111
+ <span class="cstat-no" title="statement not covered" > async requestSimpleMessage(</span>
2112
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Message_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2113
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
2114
+ <span class="cstat-no" title="statement not covered" > this.logQuestion(set);</span>
2115
+ <span class="cstat-no" title="statement not covered" ></span>
2116
+ <span class="cstat-no" title="statement not covered" > set.conversation ??= [];</span>
2117
+ <span class="cstat-no" title="statement not covered" > set.conversation.push({ role: DyFM_AI_MessageRole.user, content: set.message });</span>
2118
+ <span class="cstat-no" title="statement not covered" ></span>
2119
+ <span class="cstat-no" title="statement not covered" > const answer: string = await this.resolveMessage({</span>
2120
+ <span class="cstat-no" title="statement not covered" > ...set,</span>
2121
+ <span class="cstat-no" title="statement not covered" > conversation: set.conversation,</span>
2122
+ <span class="cstat-no" title="statement not covered" > getFullResponse: false,</span>
2123
+ <span class="cstat-no" title="statement not covered" > }) as string;</span>
2124
+ <span class="cstat-no" title="statement not covered" ></span>
2125
+ <span class="cstat-no" title="statement not covered" > this.logAnswer(answer);</span>
2126
+ <span class="cstat-no" title="statement not covered" ></span>
2127
+ <span class="cstat-no" title="statement not covered" > return answer;</span>
2128
+ <span class="cstat-no" title="statement not covered" > }</span>
2129
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestSimpleMessage} */</span>
2130
+ <span class="cstat-no" title="statement not covered" > //answer = this.askQuestion;</span>
2131
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestSimpleMessage} */</span>
2132
+ <span class="cstat-no" title="statement not covered" > //getQuestionAnswer = this.askQuestion;</span>
2133
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestSimpleMessage} */</span>
2134
+ <span class="cstat-no" title="statement not covered" > //simpleQuestion = this.askQuestion;</span>
2135
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link requestSimpleMessage} */</span>
2136
+ <span class="cstat-no" title="statement not covered" > //askSimpleQuestion = this.askQuestion;</span>
2137
+ <span class="cstat-no" title="statement not covered" ></span>
2138
+ <span class="cstat-no" title="statement not covered" > /**</span>
2139
+ <span class="cstat-no" title="statement not covered" > * Resolves a simple user message and returns the answer as string</span>
2140
+ <span class="cstat-no" title="statement not covered" > * </span>
2141
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link resolveMessage}</span>
2142
+ <span class="cstat-no" title="statement not covered" > */</span>
2143
+ <span class="cstat-no" title="statement not covered" > /* async resolveSimpleUserMessage(</span>
2144
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Base_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2145
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
2146
+ <span class="cstat-no" title="statement not covered" > return this.resolveMessage({</span>
2147
+ <span class="cstat-no" title="statement not covered" > conversation: [{ role: DyFM_AI_MessageRole.user, content: set.message }], </span>
2148
+ <span class="cstat-no" title="statement not covered" > issuer: set.issuer ?? 'unknown',</span>
2149
+ <span class="cstat-no" title="statement not covered" > settings: set.settings ?? this.defaultSettings,</span>
2150
+ <span class="cstat-no" title="statement not covered" > getFullResponse: false,</span>
2151
+ <span class="cstat-no" title="statement not covered" > }) as Promise&lt;string&gt;;</span>
2152
+ <span class="cstat-no" title="statement not covered" > } */</span>
2153
+ <span class="cstat-no" title="statement not covered" > /** the exact same as {@link resolveSimpleUserMessage} */</span>
2154
+ <span class="cstat-no" title="statement not covered" > //simpleUserMessage = this.resolveSimpleUserMessage;</span>
2155
+ <span class="cstat-no" title="statement not covered" ></span>
2156
+ <span class="cstat-no" title="statement not covered" > //#endregion</span>
2157
+ <span class="cstat-no" title="statement not covered" ></span>
2158
+ <span class="cstat-no" title="statement not covered" > /**</span>
2159
+ <span class="cstat-no" title="statement not covered" > * Resolves a conversation</span>
2160
+ <span class="cstat-no" title="statement not covered" > * </span>
2161
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link getMessageCreateInput}</span>
2162
+ <span class="cstat-no" title="statement not covered" > */</span>
2163
+ <span class="cstat-no" title="statement not covered" > async resolveMessage(</span>
2164
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_ConversationBase_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2165
+ <span class="cstat-no" title="statement not covered" > /* {</span>
2166
+ <span class="cstat-no" title="statement not covered" > conversation: [{ role: DyFM_AI_MessageRole.user, content: set.message }], </span>
2167
+ <span class="cstat-no" title="statement not covered" > issuer: set.issuer ?? 'unknown',</span>
2168
+ <span class="cstat-no" title="statement not covered" > settings: set.settings ?? this.defaultSettings,</span>
2169
+ <span class="cstat-no" title="statement not covered" > getFullResponse: false,</span>
2170
+ <span class="cstat-no" title="statement not covered" > } */</span>
2171
+ <span class="cstat-no" title="statement not covered" > /* {</span>
2172
+ <span class="cstat-no" title="statement not covered" > conversation: DyFM_AI_Message[],</span>
2173
+ <span class="cstat-no" title="statement not covered" > issuer: string,</span>
2174
+ <span class="cstat-no" title="statement not covered" > settings?: DyFM_OAI_CallSettings,</span>
2175
+ <span class="cstat-no" title="statement not covered" > getFullResponse?: boolean</span>
2176
+ <span class="cstat-no" title="statement not covered" > } */</span>
2177
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string | ChatCompletion&gt; {</span>
2178
+ <span class="cstat-no" title="statement not covered" > try {</span>
2179
+ <span class="cstat-no" title="statement not covered" > set.conversation.unshift(this.getDefaultSystemMessage(set.settings));</span>
2180
+ <span class="cstat-no" title="statement not covered" ></span>
2181
+ <span class="cstat-no" title="statement not covered" ></span>
2182
+ <span class="cstat-no" title="statement not covered" ></span>
2183
+ <span class="cstat-no" title="statement not covered" > const result: ChatCompletion = await this.openai.chat.completions.create(</span>
2184
+ <span class="cstat-no" title="statement not covered" > this.getMessageCreateInput(set)</span>
2185
+ <span class="cstat-no" title="statement not covered" > ) as ChatCompletion;</span>
2186
+ <span class="cstat-no" title="statement not covered" ></span>
2187
+ <span class="cstat-no" title="statement not covered" > if (set.getFullResponse) {</span>
2188
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2189
+ <span class="cstat-no" title="statement not covered" > }</span>
2190
+ <span class="cstat-no" title="statement not covered" ></span>
2191
+ <span class="cstat-no" title="statement not covered" > return result.choices[0].message.content;</span>
2192
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2193
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2194
+ <span class="cstat-no" title="statement not covered" > ...this.getDefaultErrorSettings('resolveConversation', error, set.issuer),</span>
2195
+ <span class="cstat-no" title="statement not covered" > </span>
2196
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OAB-RC0`,</span>
2197
+ <span class="cstat-no" title="statement not covered" > });</span>
2198
+ <span class="cstat-no" title="statement not covered" > }</span>
2199
+ <span class="cstat-no" title="statement not covered" > }</span>
2200
+ <span class="cstat-no" title="statement not covered" ></span>
2201
+ <span class="cstat-no" title="statement not covered" > /**</span>
2202
+ <span class="cstat-no" title="statement not covered" > * Creates a message create input</span>
2203
+ <span class="cstat-no" title="statement not covered" > * </span>
2204
+ <span class="cstat-no" title="statement not covered" > * Uses the {@link getDefaultSystemMessage}</span>
2205
+ <span class="cstat-no" title="statement not covered" > */</span>
2206
+ <span class="cstat-no" title="statement not covered" > protected getMessageCreateInput(</span>
2207
+ <span class="cstat-no" title="statement not covered" > set: {</span>
2208
+ <span class="cstat-no" title="statement not covered" > conversation: DyFM_AI_Message[],</span>
2209
+ <span class="cstat-no" title="statement not covered" > issuer: string,</span>
2210
+ <span class="cstat-no" title="statement not covered" > settings?: DyFM_OAI_CallSettings</span>
2211
+ <span class="cstat-no" title="statement not covered" > }</span>
2212
+ <span class="cstat-no" title="statement not covered" > ): ChatCompletionCreateParamsBase {</span>
2213
+ <span class="cstat-no" title="statement not covered" > try {</span>
2214
+ <span class="cstat-no" title="statement not covered" > const settings = set.settings ?? this.defaultSettings;</span>
2215
+ <span class="cstat-no" title="statement not covered" ></span>
2216
+ <span class="cstat-no" title="statement not covered" > const result: ChatCompletionCreateParamsBase = {</span>
2217
+ <span class="cstat-no" title="statement not covered" > model: settings?.useModel ?? this.defaultModel,</span>
2218
+ <span class="cstat-no" title="statement not covered" > messages: set.conversation as ChatCompletionMessageParam[],</span>
2219
+ <span class="cstat-no" title="statement not covered" > };</span>
2220
+ <span class="cstat-no" title="statement not covered" ></span>
2221
+ <span class="cstat-no" title="statement not covered" > result.temperature = DyFM_notNull(settings?.temperature) ? </span>
2222
+ <span class="cstat-no" title="statement not covered" > settings.temperature : </span>
2223
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings.temperature;</span>
2224
+ <span class="cstat-no" title="statement not covered" > </span>
2225
+ <span class="cstat-no" title="statement not covered" > /* result.max_tokens = DyFM_notNull(settings?.maxTokens) ? </span>
2226
+ <span class="cstat-no" title="statement not covered" > settings.maxTokens : </span>
2227
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings.maxTokens; */</span>
2228
+ <span class="cstat-no" title="statement not covered" > result.max_completion_tokens = DyFM_notNull(settings?.maxTokens) ? </span>
2229
+ <span class="cstat-no" title="statement not covered" > settings.maxTokens : </span>
2230
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings.maxTokens;</span>
2231
+ <span class="cstat-no" title="statement not covered" ></span>
2232
+ <span class="cstat-no" title="statement not covered" > result.top_p = DyFM_notNull(settings?.topP) ? </span>
2233
+ <span class="cstat-no" title="statement not covered" > settings.topP : </span>
2234
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings.topP;</span>
2235
+ <span class="cstat-no" title="statement not covered" ></span>
2236
+ <span class="cstat-no" title="statement not covered" > result.frequency_penalty = DyFM_notNull(settings?.frequencyPenalty) ? </span>
2237
+ <span class="cstat-no" title="statement not covered" > settings.frequencyPenalty : </span>
2238
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings.frequencyPenalty;</span>
2239
+ <span class="cstat-no" title="statement not covered" ></span>
2240
+ <span class="cstat-no" title="statement not covered" > result.presence_penalty = DyFM_notNull(settings?.presencePenalty) ? </span>
2241
+ <span class="cstat-no" title="statement not covered" > settings.presencePenalty : </span>
2242
+ <span class="cstat-no" title="statement not covered" > this.defaultSettings.presencePenalty;</span>
2243
+ <span class="cstat-no" title="statement not covered" ></span>
2244
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2245
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2246
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2247
+ <span class="cstat-no" title="statement not covered" > ...this.getDefaultErrorSettings('getMessageCreateSettings', error, set.issuer),</span>
2248
+ <span class="cstat-no" title="statement not covered" > </span>
2249
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OAB-RC0`,</span>
2250
+ <span class="cstat-no" title="statement not covered" > });</span>
2251
+ <span class="cstat-no" title="statement not covered" > }</span>
2252
+ <span class="cstat-no" title="statement not covered" > }</span>
2253
+ <span class="cstat-no" title="statement not covered" ></span>
2254
+ <span class="cstat-no" title="statement not covered" > /**</span>
2255
+ <span class="cstat-no" title="statement not covered" > * Teszteli a kapcsolatot az OpenAI API-val</span>
2256
+ <span class="cstat-no" title="statement not covered" > * </span>
2257
+ <span class="cstat-no" title="statement not covered" > * Tests the connection to OpenAI API</span>
2258
+ <span class="cstat-no" title="statement not covered" > */</span>
2259
+ <span class="cstat-no" title="statement not covered" > async testConnection(issuer: string): Promise&lt;boolean&gt; {</span>
2260
+ <span class="cstat-no" title="statement not covered" > try {</span>
2261
+ <span class="cstat-no" title="statement not covered" > await this.openai.models.list();</span>
2262
+ <span class="cstat-no" title="statement not covered" > return true;</span>
2263
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2264
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error('DyNTS_OAI_LLM_ServiceBase', 'testConnection', 'Connection test failed', {</span>
2265
+ <span class="cstat-no" title="statement not covered" > error,</span>
2266
+ <span class="cstat-no" title="statement not covered" > issuer</span>
2267
+ <span class="cstat-no" title="statement not covered" > });</span>
2268
+ <span class="cstat-no" title="statement not covered" > return false;</span>
2269
+ <span class="cstat-no" title="statement not covered" > }</span>
2270
+ <span class="cstat-no" title="statement not covered" > }</span>
2271
+ <span class="cstat-no" title="statement not covered" ></span>
2272
+ <span class="cstat-no" title="statement not covered" >// async askJSONListQuestion(</span>
2273
+ <span class="cstat-no" title="statement not covered" >// question: string,</span>
2274
+ <span class="cstat-no" title="statement not covered" >// issuer: string,</span>
2275
+ <span class="cstat-no" title="statement not covered" >// settings?: DyFM_OAI_CallSettings,</span>
2276
+ <span class="cstat-no" title="statement not covered" >// debugLog?: boolean,</span>
2277
+ <span class="cstat-no" title="statement not covered" >// /** this is used to readably replace too long contents to eg '...' in logs */</span>
2278
+ <span class="cstat-no" title="statement not covered" >// replaceThisInLog?: string,</span>
2279
+ <span class="cstat-no" title="statement not covered" >// ): Promise&lt;{ key: string, input: string }[]&gt; {</span>
2280
+ <span class="cstat-no" title="statement not covered" >// question += this.predefinedRequests.jsonListRequest;</span>
2281
+ <span class="cstat-no" title="statement not covered" >//</span>
2282
+ <span class="cstat-no" title="statement not covered" >// const answer = await this.askQuestion(question, issuer, settings, debugLog, replaceThisInLog);</span>
2283
+ <span class="cstat-no" title="statement not covered" >//</span>
2284
+ <span class="cstat-no" title="statement not covered" >// return DyFM_Object.safeParseList&lt;{ key: string, input: string }[]&gt;(answer);</span>
2285
+ <span class="cstat-no" title="statement not covered" >// }</span>
2286
+ <span class="cstat-no" title="statement not covered" ></span>
2287
+ <span class="cstat-no" title="statement not covered" > //#region Tools</span>
2288
+ <span class="cstat-no" title="statement not covered" ></span>
2289
+ <span class="cstat-no" title="statement not covered" > /**</span>
2290
+ <span class="cstat-no" title="statement not covered" > * Logs the question if the debugLog is true</span>
2291
+ <span class="cstat-no" title="statement not covered" > */</span>
2292
+ <span class="cstat-no" title="statement not covered" > /* protected logQuestion(</span>
2293
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_Base_Input&lt;DyFM_OAI_CallSettings&gt;</span>
2294
+ <span class="cstat-no" title="statement not covered" > ): void {</span>
2295
+ <span class="cstat-no" title="statement not covered" > if (set.settings?.debugLog ?? this._debugLog) {</span>
2296
+ <span class="cstat-no" title="statement not covered" > console.log('\n - ', set.message);</span>
2297
+ <span class="cstat-no" title="statement not covered" > }</span>
2298
+ <span class="cstat-no" title="statement not covered" > } */</span>
2299
+ <span class="cstat-no" title="statement not covered" ></span>
2300
+ <span class="cstat-no" title="statement not covered" > /**</span>
2301
+ <span class="cstat-no" title="statement not covered" > * olvasható mondatszerű-listaszerű formába teszi a listaelemeket</span>
2302
+ <span class="cstat-no" title="statement not covered" > * pl.: ['a', 'b', 'c'] -&gt; '"a", "b" or "c"'</span>
2303
+ <span class="cstat-no" title="statement not covered" > */</span>
2304
+ <span class="cstat-no" title="statement not covered" > /* getTextListAsText(list: string[]): string {</span>
2305
+ <span class="cstat-no" title="statement not covered" > list = list.filter(item =&gt; item?.trim()).map(item =&gt; `"${item}"`);</span>
2306
+ <span class="cstat-no" title="statement not covered" ></span>
2307
+ <span class="cstat-no" title="statement not covered" > //list = list.map(item =&gt; item.toLocaleLowerCase());</span>
2308
+ <span class="cstat-no" title="statement not covered" ></span>
2309
+ <span class="cstat-no" title="statement not covered" > list.push(list.pop() + ' or ' + list.pop());</span>
2310
+ <span class="cstat-no" title="statement not covered" ></span>
2311
+ <span class="cstat-no" title="statement not covered" > return list.join(', ');</span>
2312
+ <span class="cstat-no" title="statement not covered" > } */</span>
2313
+ <span class="cstat-no" title="statement not covered" ></span>
2314
+ <span class="cstat-no" title="statement not covered" > /* protected getDefaultSystemMessage(settings: DyFM_OAI_CallSettings): DyFM_AI_Message {</span>
2315
+ <span class="cstat-no" title="statement not covered" > return {</span>
2316
+ <span class="cstat-no" title="statement not covered" > role: DyFM_AI_MessageRole.system,</span>
2317
+ <span class="cstat-no" title="statement not covered" > content: settings?.systemPrompt || this.defaultSystemPrompt,</span>
2318
+ <span class="cstat-no" title="statement not covered" > };</span>
2319
+ <span class="cstat-no" title="statement not covered" > } */</span>
2320
+ <span class="cstat-no" title="statement not covered" ></span>
2321
+ <span class="cstat-no" title="statement not covered" > /* protected validateConversation(conversation: DyFM_AI_Message[]): void {</span>
2322
+ <span class="cstat-no" title="statement not covered" > conversation.forEach((message: DyFM_AI_Message, index: number) =&gt; {</span>
2323
+ <span class="cstat-no" title="statement not covered" > if (!message.role) {</span>
2324
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2325
+ <span class="cstat-no" title="statement not covered" > message: `Message has no role at index ${index}`,</span>
2326
+ <span class="cstat-no" title="statement not covered" > additionalContent: {</span>
2327
+ <span class="cstat-no" title="statement not covered" > invalidMessage: message,</span>
2328
+ <span class="cstat-no" title="statement not covered" > conversation: conversation,</span>
2329
+ <span class="cstat-no" title="statement not covered" > }</span>
2330
+ <span class="cstat-no" title="statement not covered" > });</span>
2331
+ <span class="cstat-no" title="statement not covered" > }</span>
2332
+ <span class="cstat-no" title="statement not covered" ></span>
2333
+ <span class="cstat-no" title="statement not covered" > if (!message.content) {</span>
2334
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2335
+ <span class="cstat-no" title="statement not covered" > message: `Message has no content at index ${index}`,</span>
2336
+ <span class="cstat-no" title="statement not covered" > additionalContent: {</span>
2337
+ <span class="cstat-no" title="statement not covered" > invalidMessage: message,</span>
2338
+ <span class="cstat-no" title="statement not covered" > conversation: conversation,</span>
2339
+ <span class="cstat-no" title="statement not covered" > }</span>
2340
+ <span class="cstat-no" title="statement not covered" > });</span>
2341
+ <span class="cstat-no" title="statement not covered" > }</span>
2342
+ <span class="cstat-no" title="statement not covered" > });</span>
2343
+ <span class="cstat-no" title="statement not covered" > } */</span>
2344
+ <span class="cstat-no" title="statement not covered" > </span>
2345
+ <span class="cstat-no" title="statement not covered" > /* protected getDefaultErrorSettings(</span>
2346
+ <span class="cstat-no" title="statement not covered" > fnName: string, </span>
2347
+ <span class="cstat-no" title="statement not covered" > error: DyFM_AnyError,</span>
2348
+ <span class="cstat-no" title="statement not covered" > issuer: string</span>
2349
+ <span class="cstat-no" title="statement not covered" > ): DyFM_Error_Settings {</span>
2350
+ <span class="cstat-no" title="statement not covered" > return {</span>
2351
+ <span class="cstat-no" title="statement not covered" > status: (error as DyFM_Error)?.___status ?? 500,</span>
2352
+ <span class="cstat-no" title="statement not covered" > message: (error as Error)?.message ??</span>
2353
+ <span class="cstat-no" title="statement not covered" > (error as DyFM_Error)?._message ??</span>
2354
+ <span class="cstat-no" title="statement not covered" > `${fnName} was UNSUCCESSFUL (${DyNTS_global_settings.systemShortCodeName})`,</span>
2355
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: !(error as DyFM_Error)?.__userMessage,</span>
2356
+ <span class="cstat-no" title="statement not covered" > userMessage: (error as DyFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,</span>
2357
+ <span class="cstat-no" title="statement not covered" > issuer: issuer,</span>
2358
+ <span class="cstat-no" title="statement not covered" > issuerService: this.constructor?.name,</span>
2359
+ <span class="cstat-no" title="statement not covered" > error: error,</span>
2360
+ <span class="cstat-no" title="statement not covered" > };</span>
2361
+ <span class="cstat-no" title="statement not covered" > } */</span>
2362
+ <span class="cstat-no" title="statement not covered" ></span>
2363
+ <span class="cstat-no" title="statement not covered" > //#endregion</span>
2364
+ <span class="cstat-no" title="statement not covered" ></span>
2365
+ <span class="cstat-no" title="statement not covered" > //#region Provider Methods (from DyNTS_AI_Provider_ServiceBase)</span>
2366
+ <span class="cstat-no" title="statement not covered" ></span>
2367
+ <span class="cstat-no" title="statement not covered" > //#endregion</span>
2368
+ <span class="cstat-no" title="statement not covered" ></span>
2369
+ <span class="cstat-no" title="statement not covered" > //#region Abstract LLM Methods (from DyNTS_AI_LLM_ServiceBase)</span>
2370
+ <span class="cstat-no" title="statement not covered" ></span>
2371
+ <span class="cstat-no" title="statement not covered" > /**</span>
2372
+ <span class="cstat-no" title="statement not covered" > * Meghívja az LLM-et system és user message-szel</span>
2373
+ <span class="cstat-no" title="statement not covered" > * </span>
2374
+ <span class="cstat-no" title="statement not covered" > * Calls the LLM with system and user messages</span>
2375
+ <span class="cstat-no" title="statement not covered" > */</span>
2376
+ <span class="cstat-no" title="statement not covered" > /* async callLLM(</span>
2377
+ <span class="cstat-no" title="statement not covered" > systemMessage: string,</span>
2378
+ <span class="cstat-no" title="statement not covered" > userMessage: string,</span>
2379
+ <span class="cstat-no" title="statement not covered" > settings?: DyFM_AI_CallSettings,</span>
2380
+ <span class="cstat-no" title="statement not covered" > issuer?: string</span>
2381
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
2382
+ <span class="cstat-no" title="statement not covered" > const result = await this.resolveMessage({</span>
2383
+ <span class="cstat-no" title="statement not covered" > conversation: [</span>
2384
+ <span class="cstat-no" title="statement not covered" > { role: DyFM_AI_MessageRole.system, content: systemMessage },</span>
2385
+ <span class="cstat-no" title="statement not covered" > { role: DyFM_AI_MessageRole.user, content: userMessage }</span>
2386
+ <span class="cstat-no" title="statement not covered" > ],</span>
2387
+ <span class="cstat-no" title="statement not covered" > issuer: issuer ?? 'system',</span>
2388
+ <span class="cstat-no" title="statement not covered" > settings: this.convertToOAISettings(settings),</span>
2389
+ <span class="cstat-no" title="statement not covered" > getFullResponse: false</span>
2390
+ <span class="cstat-no" title="statement not covered" > });</span>
2391
+ <span class="cstat-no" title="statement not covered" > </span>
2392
+ <span class="cstat-no" title="statement not covered" > if (typeof result === 'string') {</span>
2393
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2394
+ <span class="cstat-no" title="statement not covered" > }</span>
2395
+ <span class="cstat-no" title="statement not covered" > return '';</span>
2396
+ <span class="cstat-no" title="statement not covered" > } */</span>
2397
+ <span class="cstat-no" title="statement not covered" ></span>
2398
+ <span class="cstat-no" title="statement not covered" > /**</span>
2399
+ <span class="cstat-no" title="statement not covered" > * Meghívja az LLM-et üzenet history-val</span>
2400
+ <span class="cstat-no" title="statement not covered" > * </span>
2401
+ <span class="cstat-no" title="statement not covered" > * Calls the LLM with message history</span>
2402
+ <span class="cstat-no" title="statement not covered" > */</span>
2403
+ <span class="cstat-no" title="statement not covered" > /* async callLLMWithHistory(</span>
2404
+ <span class="cstat-no" title="statement not covered" > messages: DyFM_AI_Message[],</span>
2405
+ <span class="cstat-no" title="statement not covered" > settings?: DyFM_AI_CallSettings,</span>
2406
+ <span class="cstat-no" title="statement not covered" > issuer?: string</span>
2407
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;string&gt; {</span>
2408
+ <span class="cstat-no" title="statement not covered" > const result = await this.resolveMessage({</span>
2409
+ <span class="cstat-no" title="statement not covered" > conversation: messages,</span>
2410
+ <span class="cstat-no" title="statement not covered" > issuer: issuer ?? 'system',</span>
2411
+ <span class="cstat-no" title="statement not covered" > settings: this.convertToOAISettings(settings),</span>
2412
+ <span class="cstat-no" title="statement not covered" > getFullResponse: false</span>
2413
+ <span class="cstat-no" title="statement not covered" > });</span>
2414
+ <span class="cstat-no" title="statement not covered" > </span>
2415
+ <span class="cstat-no" title="statement not covered" > if (typeof result === 'string') {</span>
2416
+ <span class="cstat-no" title="statement not covered" > return result;</span>
2417
+ <span class="cstat-no" title="statement not covered" > }</span>
2418
+ <span class="cstat-no" title="statement not covered" > return '';</span>
2419
+ <span class="cstat-no" title="statement not covered" > } */</span>
2420
+ <span class="cstat-no" title="statement not covered" ></span>
2421
+ <span class="cstat-no" title="statement not covered" > /**</span>
2422
+ <span class="cstat-no" title="statement not covered" > * Meghívja az LLM-et és visszaadja a raw response-t</span>
2423
+ <span class="cstat-no" title="statement not covered" > * </span>
2424
+ <span class="cstat-no" title="statement not covered" > * Calls the LLM and returns raw response</span>
2425
+ <span class="cstat-no" title="statement not covered" > */</span>
2426
+ <span class="cstat-no" title="statement not covered" > /* async callLLMRaw(</span>
2427
+ <span class="cstat-no" title="statement not covered" > messages: DyFM_AI_Message[],</span>
2428
+ <span class="cstat-no" title="statement not covered" > settings?: DyFM_AI_CallSettings,</span>
2429
+ <span class="cstat-no" title="statement not covered" > issuer?: string</span>
2430
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;DyFM_AI_LLM_Response&gt; {</span>
2431
+ <span class="cstat-no" title="statement not covered" > const result = await this.resolveMessage({</span>
2432
+ <span class="cstat-no" title="statement not covered" > conversation: messages,</span>
2433
+ <span class="cstat-no" title="statement not covered" > issuer: issuer ?? 'system',</span>
2434
+ <span class="cstat-no" title="statement not covered" > settings: this.convertToOAISettings(settings),</span>
2435
+ <span class="cstat-no" title="statement not covered" > getFullResponse: true</span>
2436
+ <span class="cstat-no" title="statement not covered" > }) as ChatCompletion;</span>
2437
+ <span class="cstat-no" title="statement not covered" ></span>
2438
+ <span class="cstat-no" title="statement not covered" > return {</span>
2439
+ <span class="cstat-no" title="statement not covered" > content: result.choices[0].message.content,</span>
2440
+ <span class="cstat-no" title="statement not covered" > usage: result.usage ? {</span>
2441
+ <span class="cstat-no" title="statement not covered" > promptTokens: result.usage.prompt_tokens,</span>
2442
+ <span class="cstat-no" title="statement not covered" > completionTokens: result.usage.completion_tokens,</span>
2443
+ <span class="cstat-no" title="statement not covered" > totalTokens: result.usage.total_tokens</span>
2444
+ <span class="cstat-no" title="statement not covered" > } : undefined,</span>
2445
+ <span class="cstat-no" title="statement not covered" > model: result.model,</span>
2446
+ <span class="cstat-no" title="statement not covered" > finishReason: result.choices[0].finish_reason,</span>
2447
+ <span class="cstat-no" title="statement not covered" > rawResponse: result</span>
2448
+ <span class="cstat-no" title="statement not covered" > };</span>
2449
+ <span class="cstat-no" title="statement not covered" > } */</span>
2450
+ <span class="cstat-no" title="statement not covered" ></span>
2451
+ <span class="cstat-no" title="statement not covered" > /**</span>
2452
+ <span class="cstat-no" title="statement not covered" > * Küld egy egyszerű üzenetet az LLM-nek</span>
2453
+ <span class="cstat-no" title="statement not covered" > * </span>
2454
+ <span class="cstat-no" title="statement not covered" > * Sends a simple message to the LLM</span>
2455
+ <span class="cstat-no" title="statement not covered" > */</span>
2456
+ <span class="cstat-no" title="statement not covered" > /* async sendMessage(set: DyFM_AI_Base_Input&lt;DyFM_OAI_CallSettings&gt;): Promise&lt;string&gt; {</span>
2457
+ <span class="cstat-no" title="statement not covered" > return await this.resolveSimpleUserMessage({</span>
2458
+ <span class="cstat-no" title="statement not covered" > message: set.message,</span>
2459
+ <span class="cstat-no" title="statement not covered" > issuer: set.issuer,</span>
2460
+ <span class="cstat-no" title="statement not covered" > settings: set.settings ? this.convertToOAISettings(set.settings) : undefined</span>
2461
+ <span class="cstat-no" title="statement not covered" > });</span>
2462
+ <span class="cstat-no" title="statement not covered" > } */</span>
2463
+ <span class="cstat-no" title="statement not covered" ></span>
2464
+ <span class="cstat-no" title="statement not covered" > /**</span>
2465
+ <span class="cstat-no" title="statement not covered" > * Kérdez egy kérdést és JSON választ vár exact keys-szel</span>
2466
+ <span class="cstat-no" title="statement not covered" > * </span>
2467
+ <span class="cstat-no" title="statement not covered" > * Asks a question and expects JSON response with exact keys</span>
2468
+ <span class="cstat-no" title="statement not covered" > */</span>
2469
+ <span class="cstat-no" title="statement not covered" > /* async requestJSONWithExactKeys&lt;T = any&gt;(</span>
2470
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_JSONExactKeys_Input</span>
2471
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T&gt; {</span>
2472
+ <span class="cstat-no" title="statement not covered" > const answer = await this.askJSONQuestionWithExactKeys({</span>
2473
+ <span class="cstat-no" title="statement not covered" > question: set.question,</span>
2474
+ <span class="cstat-no" title="statement not covered" > keys: set.keys,</span>
2475
+ <span class="cstat-no" title="statement not covered" > issuer: set.issuer,</span>
2476
+ <span class="cstat-no" title="statement not covered" > settings: set.settings ? this.convertToOAISettings(set.settings) : undefined,</span>
2477
+ <span class="cstat-no" title="statement not covered" > debugLog: set.debugLog,</span>
2478
+ <span class="cstat-no" title="statement not covered" > replaceThisInLog: set.replaceThisInLog</span>
2479
+ <span class="cstat-no" title="statement not covered" > });</span>
2480
+ <span class="cstat-no" title="statement not covered" ></span>
2481
+ <span class="cstat-no" title="statement not covered" > if ('unparsableResult' in answer) {</span>
2482
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2483
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid JSON response from AI',</span>
2484
+ <span class="cstat-no" title="statement not covered" > additionalContent: { answer },</span>
2485
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Failed to parse AI response'</span>
2486
+ <span class="cstat-no" title="statement not covered" > });</span>
2487
+ <span class="cstat-no" title="statement not covered" > }</span>
2488
+ <span class="cstat-no" title="statement not covered" ></span>
2489
+ <span class="cstat-no" title="statement not covered" > return answer as T;</span>
2490
+ <span class="cstat-no" title="statement not covered" > } */</span>
2491
+ <span class="cstat-no" title="statement not covered" ></span>
2492
+ <span class="cstat-no" title="statement not covered" > /**</span>
2493
+ <span class="cstat-no" title="statement not covered" > * Kérdez egy kérdést és több választ vár</span>
2494
+ <span class="cstat-no" title="statement not covered" > * </span>
2495
+ <span class="cstat-no" title="statement not covered" > * Asks a question and expects multiple responses</span>
2496
+ <span class="cstat-no" title="statement not covered" > */</span>
2497
+ <span class="cstat-no" title="statement not covered" > /* async requestMultiselect&lt;T = any&gt;(</span>
2498
+ <span class="cstat-no" title="statement not covered" > set: DyFM_AI_GenericMultiSelect_Input&lt;T&gt;</span>
2499
+ <span class="cstat-no" title="statement not covered" > ): Promise&lt;T[]&gt; {</span>
2500
+ <span class="cstat-no" title="statement not covered" > const answer = await this.requestMultipleSelect({</span>
2501
+ <span class="cstat-no" title="statement not covered" > question: set.message,</span>
2502
+ <span class="cstat-no" title="statement not covered" > options: set.options,</span>
2503
+ <span class="cstat-no" title="statement not covered" > issuer: set.issuer,</span>
2504
+ <span class="cstat-no" title="statement not covered" > settings: set.settings ? this.convertToOAISettings(set.settings) : undefined,</span>
2505
+ <span class="cstat-no" title="statement not covered" > debugLog: set.debugLog,</span>
2506
+ <span class="cstat-no" title="statement not covered" > replaceThisInLog: set.replaceThisInLog</span>
2507
+ <span class="cstat-no" title="statement not covered" > });</span>
2508
+ <span class="cstat-no" title="statement not covered" ></span>
2509
+ <span class="cstat-no" title="statement not covered" > return answer as T[];</span>
2510
+ <span class="cstat-no" title="statement not covered" > } */</span>
2511
+ <span class="cstat-no" title="statement not covered" ></span>
2512
+ <span class="cstat-no" title="statement not covered" > /**</span>
2513
+ <span class="cstat-no" title="statement not covered" > * Konvertálja a generic AI settings-et OpenAI specifikus settings-re</span>
2514
+ <span class="cstat-no" title="statement not covered" > * </span>
2515
+ <span class="cstat-no" title="statement not covered" > * Converts generic AI settings to OpenAI-specific settings</span>
2516
+ <span class="cstat-no" title="statement not covered" > */</span>
2517
+ <span class="cstat-no" title="statement not covered" > /* private convertToOAISettings(settings?: DyFM_AI_CallSettings): DyFM_OAI_CallSettings {</span>
2518
+ <span class="cstat-no" title="statement not covered" > if (!settings) {</span>
2519
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
2520
+ <span class="cstat-no" title="statement not covered" > } </span>
2521
+ <span class="cstat-no" title="statement not covered" ></span>
2522
+ <span class="cstat-no" title="statement not covered" > const oaiSettings = new DyFM_OAI_CallSettings();</span>
2523
+ <span class="cstat-no" title="statement not covered" > </span>
2524
+ <span class="cstat-no" title="statement not covered" > if (settings.systemPrompt !== undefined) { </span>
2525
+ <span class="cstat-no" title="statement not covered" > oaiSettings.systemPrompt = settings.systemPrompt;</span>
2526
+ <span class="cstat-no" title="statement not covered" > }</span>
2527
+ <span class="cstat-no" title="statement not covered" ></span>
2528
+ <span class="cstat-no" title="statement not covered" > if (settings.useModel !== undefined) { </span>
2529
+ <span class="cstat-no" title="statement not covered" > oaiSettings.useModel = settings.useModel as DyFM_OAI_Model;</span>
2530
+ <span class="cstat-no" title="statement not covered" > }</span>
2531
+ <span class="cstat-no" title="statement not covered" ></span>
2532
+ <span class="cstat-no" title="statement not covered" > if (settings.project !== undefined) { </span>
2533
+ <span class="cstat-no" title="statement not covered" > oaiSettings.project = settings.project;</span>
2534
+ <span class="cstat-no" title="statement not covered" > }</span>
2535
+ <span class="cstat-no" title="statement not covered" ></span>
2536
+ <span class="cstat-no" title="statement not covered" > if (settings.debugLog !== undefined) {</span>
2537
+ <span class="cstat-no" title="statement not covered" > oaiSettings.debugLog = settings.debugLog;</span>
2538
+ <span class="cstat-no" title="statement not covered" > }</span>
2539
+ <span class="cstat-no" title="statement not covered" ></span>
2540
+ <span class="cstat-no" title="statement not covered" > if (settings.temperature !== undefined) { </span>
2541
+ <span class="cstat-no" title="statement not covered" > oaiSettings.temperature = settings.temperature;</span>
2542
+ <span class="cstat-no" title="statement not covered" > }</span>
2543
+ <span class="cstat-no" title="statement not covered" ></span>
2544
+ <span class="cstat-no" title="statement not covered" > if (settings.maxTokens !== undefined) {</span>
2545
+ <span class="cstat-no" title="statement not covered" > oaiSettings.maxTokens = settings.maxTokens;</span>
2546
+ <span class="cstat-no" title="statement not covered" > }</span>
2547
+ <span class="cstat-no" title="statement not covered" ></span>
2548
+ <span class="cstat-no" title="statement not covered" > if (settings.topP !== undefined) { </span>
2549
+ <span class="cstat-no" title="statement not covered" > oaiSettings.topP = settings.topP;</span>
2550
+ <span class="cstat-no" title="statement not covered" > }</span>
2551
+ <span class="cstat-no" title="statement not covered" ></span>
2552
+ <span class="cstat-no" title="statement not covered" > if (settings.frequencyPenalty !== undefined) { </span>
2553
+ <span class="cstat-no" title="statement not covered" > oaiSettings.frequencyPenalty = settings.frequencyPenalty;</span>
2554
+ <span class="cstat-no" title="statement not covered" > }</span>
2555
+ <span class="cstat-no" title="statement not covered" ></span>
2556
+ <span class="cstat-no" title="statement not covered" > if (settings.presencePenalty !== undefined) { </span>
2557
+ <span class="cstat-no" title="statement not covered" > oaiSettings.presencePenalty = settings.presencePenalty;</span>
2558
+ <span class="cstat-no" title="statement not covered" > }</span>
2559
+ <span class="cstat-no" title="statement not covered" ></span>
2560
+ <span class="cstat-no" title="statement not covered" > return oaiSettings;</span>
2561
+ <span class="cstat-no" title="statement not covered" > } */</span>
2562
+ <span class="cstat-no" title="statement not covered" ></span>
2563
+ <span class="cstat-no" title="statement not covered" > //#endregion</span>
2564
+ <span class="cstat-no" title="statement not covered" >}</span>
2565
+ &nbsp;</pre></td></tr></table></pre>
2566
+
2567
+ <div class='push'></div><!-- for sticky footer -->
2568
+ </div><!-- /wrapper -->
2569
+ <div class='footer quiet pad2 space-top1 center small'>
2570
+ Code coverage generated by
2571
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2572
+ at 2025-11-12T23:04:34.838Z
2573
+ </div>
2574
+ <script src="../../../../../prettify.js"></script>
2575
+ <script>
2576
+ window.onload = function () {
2577
+ prettyPrint();
2578
+ };
2579
+ </script>
2580
+ <script src="../../../../../sorter.js"></script>
2581
+ <script src="../../../../../block-navigation.js"></script>
2582
+ </body>
2583
+ </html>
2584
+