@decaf-ts/for-angular 0.1.3 → 0.1.4

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 (374) hide show
  1. package/.editorconfig +31 -0
  2. package/.gitlab-ci.yml +197 -0
  3. package/.hintrc +19 -0
  4. package/.prettierrc +49 -0
  5. package/.snyk +13 -0
  6. package/LICENSE.md +260 -0
  7. package/angular.json +274 -0
  8. package/bs-config.json +5 -0
  9. package/cli-module.js.map +1 -0
  10. package/dist/for-angular/cli/cli-module.d.ts +22 -0
  11. package/dist/for-angular/cli/cli-module.d.ts.map +1 -0
  12. package/dist/for-angular/cli/cli-module.js +131 -0
  13. package/dist/for-angular/cli/cli-module.js.map +1 -0
  14. package/dist/lib/README.md +117 -0
  15. package/eslint.config.mjs +101 -0
  16. package/ionic.config.json +14 -0
  17. package/jest.config.ts +52 -0
  18. package/jest.setup.ts +50 -0
  19. package/karma.conf.js +50 -0
  20. package/ng-package.json +16 -0
  21. package/ngsw-config.json +30 -0
  22. package/package.json +86 -17
  23. package/playwright.config.ts +80 -0
  24. package/resources/favicon.png +0 -0
  25. package/resources/favicon.svg +29 -0
  26. package/resources/icon-background.png +0 -0
  27. package/resources/icon-foreground.png +0 -0
  28. package/resources/icon-only.png +0 -0
  29. package/resources/icon-only.svg +29 -0
  30. package/resources/splash-dark.png +0 -0
  31. package/resources/splash-dark2.png +0 -0
  32. package/resources/splash.png +0 -0
  33. package/resources/splash2.png +0 -0
  34. package/resources/touch-icon.svg +29 -0
  35. package/schematics/README.md +28 -0
  36. package/schematics/collection.json +20 -0
  37. package/schematics/package-lock.json +1501 -0
  38. package/schematics/package.json +37 -0
  39. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +0 -0
  40. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +3 -0
  41. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +40 -0
  42. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +37 -0
  43. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template +14 -0
  44. package/schematics/src/component/index.js +146 -0
  45. package/schematics/src/component/schema.js +2 -0
  46. package/schematics/src/component/schema.json +101 -0
  47. package/schematics/src/page/files/__name@dasherize__.page.html.template +15 -0
  48. package/schematics/src/page/files/__name@dasherize__.page.scss.template +0 -0
  49. package/schematics/src/page/files/__name@dasherize__.page.ts.template +19 -0
  50. package/schematics/src/page/index.js +71 -0
  51. package/schematics/src/page/schema.json +87 -0
  52. package/schematics/src/schematics/index.js +11 -0
  53. package/schematics/src/schematics/index_spec.js +13 -0
  54. package/schematics/src/util/ast-util.js +517 -0
  55. package/schematics/src/util/change.js +96 -0
  56. package/schematics/src/util/index.js +14 -0
  57. package/settings.json +112 -0
  58. package/tsconfig.app.json +22 -0
  59. package/tsconfig.cli.json +82 -0
  60. package/tsconfig.lib.json +14 -0
  61. package/tsconfig.lib.prod.json +10 -0
  62. package/tsconfig.spec.json +22 -0
  63. package/webpack.config.js +10 -0
  64. package/workdocs/1-Header.md +5 -0
  65. package/workdocs/2-Badges.md +30 -0
  66. package/workdocs/4-Description.md +4 -0
  67. package/workdocs/5-HowToUse.md +27 -0
  68. package/workdocs/6-Related.md +7 -0
  69. package/workdocs/7-Social.md +5 -0
  70. package/workdocs/99-Footer.md +28 -0
  71. package/workdocs/Readme.md +12 -0
  72. package/workdocs/assets/apple-touch-icon.png +0 -0
  73. package/workdocs/assets/decaf-logo.svg +54 -0
  74. package/workdocs/assets/favicon.png +0 -0
  75. package/workdocs/assets/slogans.json +182 -0
  76. package/workdocs/confluence/.markdown-confluence.template.json +6 -0
  77. package/workdocs/confluence/Angular Module.md +5 -0
  78. package/workdocs/drawings/diagram.drawio +24 -0
  79. package/workdocs/prompts/bulk.md +122 -0
  80. package/workdocs/prompts/code.md +47 -0
  81. package/workdocs/prompts/documentation.md +146 -0
  82. package/workdocs/prompts/uml.md +11 -0
  83. package/workdocs/readme-md.json +6 -0
  84. package/workdocs/reports/CHANGELOG.md +12 -0
  85. package/workdocs/reports/DEPENDENCIES.md +213 -0
  86. package/workdocs/reports/RELEASE_NOTES.md +24 -0
  87. package/workdocs/reports/coverage/.gitkeep +0 -0
  88. package/workdocs/reports/coverage/clover.xml +4110 -0
  89. package/workdocs/reports/coverage/coverage-final.json +76 -0
  90. package/workdocs/reports/coverage/lcov-report/base.css +224 -0
  91. package/workdocs/reports/coverage/lcov-report/block-navigation.js +87 -0
  92. package/workdocs/reports/coverage/lcov-report/favicon.png +0 -0
  93. package/workdocs/reports/coverage/lcov-report/index.html +551 -0
  94. package/workdocs/reports/coverage/lcov-report/prettify.css +1 -0
  95. package/workdocs/reports/coverage/lcov-report/prettify.js +2 -0
  96. package/workdocs/reports/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  97. package/workdocs/reports/coverage/lcov-report/sorter.js +210 -0
  98. package/workdocs/reports/coverage/lcov-report/src/app/models/CategoryModel.ts.html +277 -0
  99. package/workdocs/reports/coverage/lcov-report/src/app/models/DemoModel.ts.html +427 -0
  100. package/workdocs/reports/coverage/lcov-report/src/app/models/UserModel.ts.html +226 -0
  101. package/workdocs/reports/coverage/lcov-report/src/app/models/index.html +146 -0
  102. package/workdocs/reports/coverage/lcov-report/src/cli-module.ts.html +502 -0
  103. package/workdocs/reports/coverage/lcov-report/src/environments/environment.ts.html +166 -0
  104. package/workdocs/reports/coverage/lcov-report/src/environments/index.html +116 -0
  105. package/workdocs/reports/coverage/lcov-report/src/index.html +191 -0
  106. package/workdocs/reports/coverage/lcov-report/src/karma-test.ts.html +121 -0
  107. package/workdocs/reports/coverage/lcov-report/src/lib/components/card/card.component.ts.html +625 -0
  108. package/workdocs/reports/coverage/lcov-report/src/lib/components/card/index.html +116 -0
  109. package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/component-renderer.component.ts.html +772 -0
  110. package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/index.html +116 -0
  111. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/crud-field.component.ts.html +2698 -0
  112. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/index.html +116 -0
  113. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/constants.ts.html +133 -0
  114. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/crud-form.component.ts.html +346 -0
  115. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/index.html +116 -0
  116. package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/empty-state.component.ts.html +1264 -0
  117. package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/index.html +116 -0
  118. package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/fieldset.component.ts.html +2965 -0
  119. package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/index.html +116 -0
  120. package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/file-upload.component.ts.html +2263 -0
  121. package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/index.html +116 -0
  122. package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/filter.component.ts.html +2485 -0
  123. package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/index.html +116 -0
  124. package/workdocs/reports/coverage/lcov-report/src/lib/components/for-angular-components.module.ts.html +259 -0
  125. package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/icon.component.ts.html +358 -0
  126. package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/index.html +116 -0
  127. package/workdocs/reports/coverage/lcov-report/src/lib/components/index.html +131 -0
  128. package/workdocs/reports/coverage/lcov-report/src/lib/components/index.ts.html +181 -0
  129. package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/index.html +116 -0
  130. package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/layout.component.ts.html +943 -0
  131. package/workdocs/reports/coverage/lcov-report/src/lib/components/list/index.html +116 -0
  132. package/workdocs/reports/coverage/lcov-report/src/lib/components/list/list.component.ts.html +4261 -0
  133. package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/index.html +116 -0
  134. package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/list-item.component.ts.html +1741 -0
  135. package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/index.html +116 -0
  136. package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/modal.component.ts.html +1984 -0
  137. package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/index.html +116 -0
  138. package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/model-renderer.component.ts.html +373 -0
  139. package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/index.html +116 -0
  140. package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/pagination.component.ts.html +1165 -0
  141. package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/index.html +116 -0
  142. package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/searchbar.component.ts.html +1774 -0
  143. package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/index.html +116 -0
  144. package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/stepped-form.component.ts.html +1219 -0
  145. package/workdocs/reports/coverage/lcov-report/src/lib/components/table/index.html +116 -0
  146. package/workdocs/reports/coverage/lcov-report/src/lib/components/table/table.component.ts.html +988 -0
  147. package/workdocs/reports/coverage/lcov-report/src/lib/directives/NgxSvgDirective.ts.html +163 -0
  148. package/workdocs/reports/coverage/lcov-report/src/lib/directives/collapsable.directive.ts.html +268 -0
  149. package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.html +131 -0
  150. package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.ts.html +91 -0
  151. package/workdocs/reports/coverage/lcov-report/src/lib/engine/DynamicModule.ts.html +133 -0
  152. package/workdocs/reports/coverage/lcov-report/src/lib/engine/MediaService.ts.html +142 -0
  153. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxBaseComponent.ts.html +2194 -0
  154. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxComponentDirective.ts.html +3430 -0
  155. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxCrudFormField.ts.html +721 -0
  156. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafComponentDirective.ts.html +1864 -0
  157. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormFieldDirective.ts.html +952 -0
  158. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormService.ts.html +3211 -0
  159. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxEventHandler.ts.html +307 -0
  160. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormDirective.ts.html +1366 -0
  161. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormFieldDirective.ts.html +1960 -0
  162. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormService.ts.html +3004 -0
  163. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxModelPageDirective.ts.html +1672 -0
  164. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxPageDirective.ts.html +748 -0
  165. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxParentComponentDirective.ts.html +775 -0
  166. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderableComponentDirective.ts.html +727 -0
  167. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderingEngine.ts.html +2005 -0
  168. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRepositoryDirective.ts.html +1561 -0
  169. package/workdocs/reports/coverage/lcov-report/src/lib/engine/ValidatorFactory.ts.html +817 -0
  170. package/workdocs/reports/coverage/lcov-report/src/lib/engine/constants.ts.html +1120 -0
  171. package/workdocs/reports/coverage/lcov-report/src/lib/engine/decorators.ts.html +376 -0
  172. package/workdocs/reports/coverage/lcov-report/src/lib/engine/helpers.ts.html +676 -0
  173. package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.html +356 -0
  174. package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.ts.html +160 -0
  175. package/workdocs/reports/coverage/lcov-report/src/lib/engine/overrides.ts.html +499 -0
  176. package/workdocs/reports/coverage/lcov-report/src/lib/for-angular-common.module.ts.html +298 -0
  177. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.html +131 -0
  178. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.ts.html +121 -0
  179. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/utils.ts.html +1603 -0
  180. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/FakeLoader.ts.html +157 -0
  181. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/Loader.ts.html +826 -0
  182. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.html +146 -0
  183. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.ts.html +91 -0
  184. package/workdocs/reports/coverage/lcov-report/src/lib/index.html +131 -0
  185. package/workdocs/reports/coverage/lcov-report/src/lib/public-apis.ts.html +157 -0
  186. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxFormService.ts.html +3460 -0
  187. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxMediaService.ts.html +1420 -0
  188. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxRouterService.ts.html +1231 -0
  189. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxTranslateService.ts.html +214 -0
  190. package/workdocs/reports/coverage/lcov-report/src/lib/services/index.html +176 -0
  191. package/workdocs/reports/coverage/lcov-report/src/lib/services/index.ts.html +91 -0
  192. package/workdocs/reports/coverage/lcov-report/src/lib/utils/DecafFakerRepository.ts.html +571 -0
  193. package/workdocs/reports/coverage/lcov-report/src/lib/utils/helpers.ts.html +1663 -0
  194. package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.html +146 -0
  195. package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.ts.html +124 -0
  196. package/workdocs/reports/coverage/lcov-report/src/main.ts.html +100 -0
  197. package/workdocs/reports/coverage/lcov-report/src/polyfills.ts.html +271 -0
  198. package/workdocs/reports/coverage/lcov-report/src/stories/Configure.stories.ts.html +1156 -0
  199. package/workdocs/reports/coverage/lcov-report/src/stories/button.component.ts.html +229 -0
  200. package/workdocs/reports/coverage/lcov-report/src/stories/button.stories.ts.html +235 -0
  201. package/workdocs/reports/coverage/lcov-report/src/stories/crud-field.stories.ts.html +325 -0
  202. package/workdocs/reports/coverage/lcov-report/src/stories/header.stories.ts.html +181 -0
  203. package/workdocs/reports/coverage/lcov-report/src/stories/index.html +281 -0
  204. package/workdocs/reports/coverage/lcov-report/src/stories/list.stories.ts.html +289 -0
  205. package/workdocs/reports/coverage/lcov-report/src/stories/login.page.stories.ts.html +175 -0
  206. package/workdocs/reports/coverage/lcov-report/src/stories/model-renderer.stories.ts.html +259 -0
  207. package/workdocs/reports/coverage/lcov-report/src/stories/page.component.ts.html +331 -0
  208. package/workdocs/reports/coverage/lcov-report/src/stories/page.stories.ts.html +193 -0
  209. package/workdocs/reports/coverage/lcov-report/src/stories/setup.ts.html +127 -0
  210. package/workdocs/reports/coverage/lcov-report/src/stories/utils.ts.html +247 -0
  211. package/workdocs/reports/coverage/lcov-report/src/tests/index.html +116 -0
  212. package/workdocs/reports/coverage/lcov-report/src/tests/karmaErrorParser.ts.html +190 -0
  213. package/workdocs/reports/coverage/lcov-report/src/typings.d.ts.html +88 -0
  214. package/workdocs/reports/coverage/lcov-report/src/zone-flags.ts.html +103 -0
  215. package/workdocs/reports/coverage/lcov.info +7917 -0
  216. package/workdocs/reports/data/.gitkeep +1 -0
  217. package/workdocs/reports/html/.gitkeep +0 -0
  218. package/workdocs/reports/html/jest-html-reporters-attach/test-report/index.js +3 -0
  219. package/workdocs/reports/html/jest-html-reporters-attach/test-report/result.js +1 -0
  220. package/workdocs/reports/html/test-report.html +1 -0
  221. package/workdocs/reports/images/.gitkeep +1 -0
  222. package/workdocs/reports/jest.coverage.config.ts +43 -0
  223. package/workdocs/reports/junit/junit-report.xml +91 -0
  224. package/workdocs/resources/.gitlock +0 -0
  225. package/workdocs/resources/diagram-Actor.png +0 -0
  226. package/workdocs/resources/diagram-banner.png +0 -0
  227. package/workdocs/resources/diagram.png +0 -0
  228. package/workdocs/tutorials/Contributing.md +64 -0
  229. package/workdocs/tutorials/Documentation.md +340 -0
  230. package/workdocs/tutorials/For Developers.md +337 -0
  231. package/workdocs/uml/diagram.puml +11 -0
  232. package/www/1049.10b030f0de36543b.js +1 -0
  233. package/www/1102.67cedfb3e29f0a05.js +1 -0
  234. package/www/1107.6454396befef800d.js +1 -0
  235. package/www/1459.cabc18e941afa5d7.js +1 -0
  236. package/www/1577.5221deebe3501e43.js +1 -0
  237. package/www/2075.b6dc4fbb89dd6afc.js +1 -0
  238. package/www/2348.c4cc27dadbec70ec.js +1 -0
  239. package/www/2375.318d0b24ab346271.js +1 -0
  240. package/www/2415.618d6968ffda319c.js +1 -0
  241. package/www/2460.1d97c6f48b898ee2.js +1 -0
  242. package/www/2560.2e7000dcf80b6b2c.js +1 -0
  243. package/www/2585.dffa5649fffafb44.js +1 -0
  244. package/www/2885.d99b86afd1ff7aa8.js +1 -0
  245. package/www/3162.bbc401f4a5f82460.js +1 -0
  246. package/www/323.f64c512be5c8d797.js +1 -0
  247. package/www/3238.a3e7e8004c6b6667.js +1 -0
  248. package/www/3506.8c03f5589b33a4a6.js +1 -0
  249. package/www/3511.56b7e49bb6c2c936.js +1 -0
  250. package/www/3519.84fbb67dc803f702.js +1 -0
  251. package/www/3675.7ebfdcf145052232.js +1 -0
  252. package/www/3814.765c1794e1be63de.js +1 -0
  253. package/www/3rdpartylicenses.txt +1344 -0
  254. package/www/4171.a974bdbf9c97e4e1.js +1 -0
  255. package/www/4183.41ef1def450a2cc0.js +1 -0
  256. package/www/4406.0b2dd3839b8c1417.js +1 -0
  257. package/www/441.e1031657c7e5f0ff.js +1 -0
  258. package/www/4463.6ad7b857e5f34009.js +1 -0
  259. package/www/4591.42f34534d38b9b31.js +1 -0
  260. package/www/4699.8df8ea9806163d4c.js +1 -0
  261. package/www/5100.ed6483c55a157d67.js +1 -0
  262. package/www/5193.15ea6938534eceb1.js +1 -0
  263. package/www/5197.6733853529768a45.js +1 -0
  264. package/www/5222.8439a641c2c4b1c1.js +1 -0
  265. package/www/5373.d7878f708309f038.js +1 -0
  266. package/www/5467.53f5cce977c2e28b.js +1 -0
  267. package/www/5712.b08cf436ee8145ce.js +1 -0
  268. package/www/5887.3d038f564e925abb.js +1 -0
  269. package/www/5949.37330f20e95dee79.js +1 -0
  270. package/www/6024.c10cc3d1b341c748.js +1 -0
  271. package/www/6433.360fcff952bde822.js +1 -0
  272. package/www/6499.60169da9869db697.js +1 -0
  273. package/www/6521.fab1f34bfe6b8200.js +1 -0
  274. package/www/6631.eaa711da6e0aeed9.js +1 -0
  275. package/www/6717.b4731255038304cd.js +1 -0
  276. package/www/6840.7317cd962ab23932.js +1 -0
  277. package/www/7030.d115d82ca7468a4e.js +1 -0
  278. package/www/7076.cce20ed5c79ff305.js +1 -0
  279. package/www/7179.c0545989ce869b3d.js +1 -0
  280. package/www/7240.69aeb484d78eb24d.js +1 -0
  281. package/www/7372.94c62459e34f7303.js +1 -0
  282. package/www/7402.983a5ecff61e9a5d.js +1 -0
  283. package/www/7428.527ac48035a2f915.js +1 -0
  284. package/www/7676.d7db23d350e4b096.js +1 -0
  285. package/www/770.80af87d5eb0075d3.js +1 -0
  286. package/www/7720.0701576cb9966779.js +1 -0
  287. package/www/7927.ee869d0dc478250a.js +1 -0
  288. package/www/8066.894688fbb2e5c832.js +1 -0
  289. package/www/8193.7f09ecd40b6d42c2.js +1 -0
  290. package/www/8255.158098a6302c91c2.js +1 -0
  291. package/www/8314.596c1ccf26b9c93a.js +1 -0
  292. package/www/8357.c5406b92e6933d7a.js +1 -0
  293. package/www/8477.a3ccc11c25a642d3.js +1 -0
  294. package/www/8487.93b6f7465ae1b7ac.js +1 -0
  295. package/www/8584.b77ad478a5a7ac2a.js +1 -0
  296. package/www/8805.a87413652185ff8f.js +1 -0
  297. package/www/8814.b489a78ae8e926c4.js +1 -0
  298. package/www/8970.234b3db1f97528fe.js +1 -0
  299. package/www/9013.c2e6ba17a915bdd6.js +1 -0
  300. package/www/9073.16c4e42482d55a3c.js +1 -0
  301. package/www/9344.7d2d24b194b794e2.js +1 -0
  302. package/www/9364.9a028036dd89e3e7.js +1 -0
  303. package/www/944.7e4317348c48d4f4.js +1 -0
  304. package/www/964.9a979e1c1aad0f5b.js +1 -0
  305. package/www/9657.8c3589a0aff521c0.js +1 -0
  306. package/www/9956.2d00a2153e9a7799.js +1 -0
  307. package/www/9977.068cd5561462bc99.js +1 -0
  308. package/www/assets/i18n/en.json +210 -0
  309. package/www/assets/i18n/ew/en.json +346 -0
  310. package/www/assets/i18n/pt.json +186 -0
  311. package/www/assets/icons/icon-128.webp +0 -0
  312. package/www/assets/icons/icon-192.webp +0 -0
  313. package/www/assets/icons/icon-256.webp +0 -0
  314. package/www/assets/icons/icon-48.webp +0 -0
  315. package/www/assets/icons/icon-512.webp +0 -0
  316. package/www/assets/icons/icon-72.webp +0 -0
  317. package/www/assets/icons/icon-96.webp +0 -0
  318. package/www/assets/images/angular-logo.svg +45 -0
  319. package/www/assets/images/apple-touch-icon.png +0 -0
  320. package/www/assets/images/decaf-logo-black.svg +22 -0
  321. package/www/assets/images/decaf-logo-contrast.svg +54 -0
  322. package/www/assets/images/decaf-logo-white.svg +22 -0
  323. package/www/assets/images/decaf-logo.svg +54 -0
  324. package/www/assets/images/ew/product.txt +1 -0
  325. package/www/assets/images/favicon-contrast.svg +7 -0
  326. package/www/assets/images/favicon.png +0 -0
  327. package/www/assets/images/favicon.svg +29 -0
  328. package/www/assets/images/icons/document.svg +7 -0
  329. package/www/assets/images/icons/edit.svg +1 -0
  330. package/www/assets/images/icons/logout.svg +4 -0
  331. package/www/assets/images/icons/menu-collapse.svg +5 -0
  332. package/www/assets/images/icons/menu.svg +3 -0
  333. package/www/assets/images/icons/moon-stars.svg +5 -0
  334. package/www/assets/images/icons/trash.svg +1 -0
  335. package/www/cli-module.ts +139 -0
  336. package/www/common.e50b5f8708aca9a5.js +1 -0
  337. package/www/index.html +29 -0
  338. package/www/main.6144bf417dec1977.js +1 -0
  339. package/www/polyfills.4c1e087fffe784e8.js +1 -0
  340. package/www/runtime.d8dcb0932f88fe3c.js +1 -0
  341. package/www/styles.5a3cd83eba16afc9.css +4 -0
  342. package/www/tabler-icons.bfabe54eef86ae62.woff +0 -0
  343. package/www/tabler-icons.d9f65ab9439b4ffc.ttf +0 -0
  344. package/www/tabler-icons.f17d2c3b34a5deaa.woff2 +0 -0
  345. /package/{assets → dist/lib/assets}/i18n/en.json +0 -0
  346. /package/{assets → dist/lib/assets}/i18n/ew/en.json +0 -0
  347. /package/{assets → dist/lib/assets}/i18n/pt.json +0 -0
  348. /package/{assets → dist/lib/assets}/icons/icon-128.webp +0 -0
  349. /package/{assets → dist/lib/assets}/icons/icon-192.webp +0 -0
  350. /package/{assets → dist/lib/assets}/icons/icon-256.webp +0 -0
  351. /package/{assets → dist/lib/assets}/icons/icon-48.webp +0 -0
  352. /package/{assets → dist/lib/assets}/icons/icon-512.webp +0 -0
  353. /package/{assets → dist/lib/assets}/icons/icon-72.webp +0 -0
  354. /package/{assets → dist/lib/assets}/icons/icon-96.webp +0 -0
  355. /package/{assets → dist/lib/assets}/images/angular-logo.svg +0 -0
  356. /package/{assets → dist/lib/assets}/images/apple-touch-icon.png +0 -0
  357. /package/{assets → dist/lib/assets}/images/decaf-logo-black.svg +0 -0
  358. /package/{assets → dist/lib/assets}/images/decaf-logo-contrast.svg +0 -0
  359. /package/{assets → dist/lib/assets}/images/decaf-logo-white.svg +0 -0
  360. /package/{assets → dist/lib/assets}/images/decaf-logo.svg +0 -0
  361. /package/{assets → dist/lib/assets}/images/ew/product.txt +0 -0
  362. /package/{assets → dist/lib/assets}/images/favicon-contrast.svg +0 -0
  363. /package/{assets → dist/lib/assets}/images/favicon.png +0 -0
  364. /package/{assets → dist/lib/assets}/images/favicon.svg +0 -0
  365. /package/{assets → dist/lib/assets}/images/icons/document.svg +0 -0
  366. /package/{assets → dist/lib/assets}/images/icons/edit.svg +0 -0
  367. /package/{assets → dist/lib/assets}/images/icons/logout.svg +0 -0
  368. /package/{assets → dist/lib/assets}/images/icons/menu-collapse.svg +0 -0
  369. /package/{assets → dist/lib/assets}/images/icons/menu.svg +0 -0
  370. /package/{assets → dist/lib/assets}/images/icons/moon-stars.svg +0 -0
  371. /package/{assets → dist/lib/assets}/images/icons/trash.svg +0 -0
  372. /package/{fesm2022 → dist/lib/fesm2022}/decaf-ts-for-angular.mjs +0 -0
  373. /package/{fesm2022 → dist/lib/fesm2022}/decaf-ts-for-angular.mjs.map +0 -0
  374. /package/{index.d.ts → dist/lib/index.d.ts} +0 -0
@@ -0,0 +1,2965 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/lib/components/fieldset/fieldset.component.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">src/lib/components/fieldset</a> fieldset.component.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">26.18% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>61/233</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">12% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>15/125</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">20% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>7/35</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">27.77% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>60/216</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>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-neutral">&nbsp;</span>
1029
+ <span class="cline-any cline-neutral">&nbsp;</span>
1030
+ <span class="cline-any cline-neutral">&nbsp;</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-neutral">&nbsp;</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-neutral">&nbsp;</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-yes">1x</span>
1037
+ <span class="cline-any cline-yes">1x</span>
1038
+ <span class="cline-any cline-yes">1x</span>
1039
+ <span class="cline-any cline-yes">1x</span>
1040
+ <span class="cline-any cline-yes">1x</span>
1041
+ <span class="cline-any cline-yes">1x</span>
1042
+ <span class="cline-any cline-neutral">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-neutral">&nbsp;</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-neutral">&nbsp;</span>
1049
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-neutral">&nbsp;</span>
1053
+ <span class="cline-any cline-yes">1x</span>
1054
+ <span class="cline-any cline-yes">1x</span>
1055
+ <span class="cline-any cline-yes">1x</span>
1056
+ <span class="cline-any cline-yes">1x</span>
1057
+ <span class="cline-any cline-yes">1x</span>
1058
+ <span class="cline-any cline-yes">1x</span>
1059
+ <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-neutral">&nbsp;</span>
1061
+ <span class="cline-any cline-yes">1x</span>
1062
+ <span class="cline-any cline-yes">1x</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-yes">1x</span>
1065
+ <span class="cline-any cline-yes">1x</span>
1066
+ <span class="cline-any cline-yes">1x</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-yes">1x</span>
1069
+ <span class="cline-any cline-neutral">&nbsp;</span>
1070
+ <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-neutral">&nbsp;</span>
1073
+ <span class="cline-any cline-neutral">&nbsp;</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-neutral">&nbsp;</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-neutral">&nbsp;</span>
1083
+ <span class="cline-any cline-neutral">&nbsp;</span>
1084
+ <span class="cline-any cline-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-neutral">&nbsp;</span>
1086
+ <span class="cline-any cline-neutral">&nbsp;</span>
1087
+ <span class="cline-any cline-neutral">&nbsp;</span>
1088
+ <span class="cline-any cline-neutral">&nbsp;</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-neutral">&nbsp;</span>
1091
+ <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-neutral">&nbsp;</span>
1095
+ <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-neutral">&nbsp;</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-neutral">&nbsp;</span>
1101
+ <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-neutral">&nbsp;</span>
1103
+ <span class="cline-any cline-neutral">&nbsp;</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-neutral">&nbsp;</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-neutral">&nbsp;</span>
1108
+ <span class="cline-any cline-neutral">&nbsp;</span>
1109
+ <span class="cline-any cline-neutral">&nbsp;</span>
1110
+ <span class="cline-any cline-neutral">&nbsp;</span>
1111
+ <span class="cline-any cline-neutral">&nbsp;</span>
1112
+ <span class="cline-any cline-neutral">&nbsp;</span>
1113
+ <span class="cline-any cline-neutral">&nbsp;</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-neutral">&nbsp;</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-neutral">&nbsp;</span>
1118
+ <span class="cline-any cline-neutral">&nbsp;</span>
1119
+ <span class="cline-any cline-neutral">&nbsp;</span>
1120
+ <span class="cline-any cline-neutral">&nbsp;</span>
1121
+ <span class="cline-any cline-neutral">&nbsp;</span>
1122
+ <span class="cline-any cline-neutral">&nbsp;</span>
1123
+ <span class="cline-any cline-neutral">&nbsp;</span>
1124
+ <span class="cline-any cline-neutral">&nbsp;</span>
1125
+ <span class="cline-any cline-neutral">&nbsp;</span>
1126
+ <span class="cline-any cline-neutral">&nbsp;</span>
1127
+ <span class="cline-any cline-neutral">&nbsp;</span>
1128
+ <span class="cline-any cline-neutral">&nbsp;</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-neutral">&nbsp;</span>
1131
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
+ <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-neutral">&nbsp;</span>
1134
+ <span class="cline-any cline-neutral">&nbsp;</span>
1135
+ <span class="cline-any cline-neutral">&nbsp;</span>
1136
+ <span class="cline-any cline-neutral">&nbsp;</span>
1137
+ <span class="cline-any cline-neutral">&nbsp;</span>
1138
+ <span class="cline-any cline-neutral">&nbsp;</span>
1139
+ <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-neutral">&nbsp;</span>
1141
+ <span class="cline-any cline-neutral">&nbsp;</span>
1142
+ <span class="cline-any cline-neutral">&nbsp;</span>
1143
+ <span class="cline-any cline-yes">1x</span>
1144
+ <span class="cline-any cline-neutral">&nbsp;</span>
1145
+ <span class="cline-any cline-neutral">&nbsp;</span>
1146
+ <span class="cline-any cline-neutral">&nbsp;</span>
1147
+ <span class="cline-any cline-neutral">&nbsp;</span>
1148
+ <span class="cline-any cline-neutral">&nbsp;</span>
1149
+ <span class="cline-any cline-neutral">&nbsp;</span>
1150
+ <span class="cline-any cline-neutral">&nbsp;</span>
1151
+ <span class="cline-any cline-neutral">&nbsp;</span>
1152
+ <span class="cline-any cline-neutral">&nbsp;</span>
1153
+ <span class="cline-any cline-neutral">&nbsp;</span>
1154
+ <span class="cline-any cline-neutral">&nbsp;</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-neutral">&nbsp;</span>
1157
+ <span class="cline-any cline-neutral">&nbsp;</span>
1158
+ <span class="cline-any cline-neutral">&nbsp;</span>
1159
+ <span class="cline-any cline-neutral">&nbsp;</span>
1160
+ <span class="cline-any cline-neutral">&nbsp;</span>
1161
+ <span class="cline-any cline-neutral">&nbsp;</span>
1162
+ <span class="cline-any cline-neutral">&nbsp;</span>
1163
+ <span class="cline-any cline-neutral">&nbsp;</span>
1164
+ <span class="cline-any cline-neutral">&nbsp;</span>
1165
+ <span class="cline-any cline-neutral">&nbsp;</span>
1166
+ <span class="cline-any cline-neutral">&nbsp;</span>
1167
+ <span class="cline-any cline-neutral">&nbsp;</span>
1168
+ <span class="cline-any cline-neutral">&nbsp;</span>
1169
+ <span class="cline-any cline-neutral">&nbsp;</span>
1170
+ <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-neutral">&nbsp;</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-neutral">&nbsp;</span>
1174
+ <span class="cline-any cline-neutral">&nbsp;</span>
1175
+ <span class="cline-any cline-neutral">&nbsp;</span>
1176
+ <span class="cline-any cline-neutral">&nbsp;</span>
1177
+ <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-neutral">&nbsp;</span>
1179
+ <span class="cline-any cline-neutral">&nbsp;</span>
1180
+ <span class="cline-any cline-neutral">&nbsp;</span>
1181
+ <span class="cline-any cline-neutral">&nbsp;</span>
1182
+ <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-neutral">&nbsp;</span>
1184
+ <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-neutral">&nbsp;</span>
1186
+ <span class="cline-any cline-neutral">&nbsp;</span>
1187
+ <span class="cline-any cline-neutral">&nbsp;</span>
1188
+ <span class="cline-any cline-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-neutral">&nbsp;</span>
1190
+ <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-neutral">&nbsp;</span>
1192
+ <span class="cline-any cline-neutral">&nbsp;</span>
1193
+ <span class="cline-any cline-neutral">&nbsp;</span>
1194
+ <span class="cline-any cline-neutral">&nbsp;</span>
1195
+ <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-neutral">&nbsp;</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span>
1199
+ <span class="cline-any cline-neutral">&nbsp;</span>
1200
+ <span class="cline-any cline-neutral">&nbsp;</span>
1201
+ <span class="cline-any cline-neutral">&nbsp;</span>
1202
+ <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-neutral">&nbsp;</span>
1204
+ <span class="cline-any cline-neutral">&nbsp;</span>
1205
+ <span class="cline-any cline-neutral">&nbsp;</span>
1206
+ <span class="cline-any cline-neutral">&nbsp;</span>
1207
+ <span class="cline-any cline-neutral">&nbsp;</span>
1208
+ <span class="cline-any cline-neutral">&nbsp;</span>
1209
+ <span class="cline-any cline-neutral">&nbsp;</span>
1210
+ <span class="cline-any cline-neutral">&nbsp;</span>
1211
+ <span class="cline-any cline-neutral">&nbsp;</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-neutral">&nbsp;</span>
1214
+ <span class="cline-any cline-neutral">&nbsp;</span>
1215
+ <span class="cline-any cline-yes">1x</span>
1216
+ <span class="cline-any cline-neutral">&nbsp;</span>
1217
+ <span class="cline-any cline-neutral">&nbsp;</span>
1218
+ <span class="cline-any cline-neutral">&nbsp;</span>
1219
+ <span class="cline-any cline-neutral">&nbsp;</span>
1220
+ <span class="cline-any cline-neutral">&nbsp;</span>
1221
+ <span class="cline-any cline-neutral">&nbsp;</span>
1222
+ <span class="cline-any cline-neutral">&nbsp;</span>
1223
+ <span class="cline-any cline-neutral">&nbsp;</span>
1224
+ <span class="cline-any cline-neutral">&nbsp;</span>
1225
+ <span class="cline-any cline-neutral">&nbsp;</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-yes">1x</span>
1228
+ <span class="cline-any cline-neutral">&nbsp;</span>
1229
+ <span class="cline-any cline-neutral">&nbsp;</span>
1230
+ <span class="cline-any cline-neutral">&nbsp;</span>
1231
+ <span class="cline-any cline-neutral">&nbsp;</span>
1232
+ <span class="cline-any cline-neutral">&nbsp;</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-neutral">&nbsp;</span>
1236
+ <span class="cline-any cline-neutral">&nbsp;</span>
1237
+ <span class="cline-any cline-neutral">&nbsp;</span>
1238
+ <span class="cline-any cline-neutral">&nbsp;</span>
1239
+ <span class="cline-any cline-yes">1x</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-neutral">&nbsp;</span>
1242
+ <span class="cline-any cline-neutral">&nbsp;</span>
1243
+ <span class="cline-any cline-neutral">&nbsp;</span>
1244
+ <span class="cline-any cline-neutral">&nbsp;</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-neutral">&nbsp;</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-neutral">&nbsp;</span>
1249
+ <span class="cline-any cline-neutral">&nbsp;</span>
1250
+ <span class="cline-any cline-yes">1x</span>
1251
+ <span class="cline-any cline-neutral">&nbsp;</span>
1252
+ <span class="cline-any cline-neutral">&nbsp;</span>
1253
+ <span class="cline-any cline-neutral">&nbsp;</span>
1254
+ <span class="cline-any cline-neutral">&nbsp;</span>
1255
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-neutral">&nbsp;</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-neutral">&nbsp;</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-neutral">&nbsp;</span>
1273
+ <span class="cline-any cline-neutral">&nbsp;</span>
1274
+ <span class="cline-any cline-yes">1x</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-neutral">&nbsp;</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-neutral">&nbsp;</span>
1284
+ <span class="cline-any cline-neutral">&nbsp;</span>
1285
+ <span class="cline-any cline-neutral">&nbsp;</span>
1286
+ <span class="cline-any cline-neutral">&nbsp;</span>
1287
+ <span class="cline-any cline-neutral">&nbsp;</span>
1288
+ <span class="cline-any cline-yes">1x</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-neutral">&nbsp;</span>
1291
+ <span class="cline-any cline-neutral">&nbsp;</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-neutral">&nbsp;</span>
1294
+ <span class="cline-any cline-neutral">&nbsp;</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-neutral">&nbsp;</span>
1297
+ <span class="cline-any cline-neutral">&nbsp;</span>
1298
+ <span class="cline-any cline-neutral">&nbsp;</span>
1299
+ <span class="cline-any cline-neutral">&nbsp;</span>
1300
+ <span class="cline-any cline-neutral">&nbsp;</span>
1301
+ <span class="cline-any cline-yes">1x</span>
1302
+ <span class="cline-any cline-neutral">&nbsp;</span>
1303
+ <span class="cline-any cline-neutral">&nbsp;</span>
1304
+ <span class="cline-any cline-neutral">&nbsp;</span>
1305
+ <span class="cline-any cline-neutral">&nbsp;</span>
1306
+ <span class="cline-any cline-neutral">&nbsp;</span>
1307
+ <span class="cline-any cline-neutral">&nbsp;</span>
1308
+ <span class="cline-any cline-neutral">&nbsp;</span>
1309
+ <span class="cline-any cline-neutral">&nbsp;</span>
1310
+ <span class="cline-any cline-neutral">&nbsp;</span>
1311
+ <span class="cline-any cline-yes">1x</span>
1312
+ <span class="cline-any cline-neutral">&nbsp;</span>
1313
+ <span class="cline-any cline-neutral">&nbsp;</span>
1314
+ <span class="cline-any cline-neutral">&nbsp;</span>
1315
+ <span class="cline-any cline-neutral">&nbsp;</span>
1316
+ <span class="cline-any cline-neutral">&nbsp;</span>
1317
+ <span class="cline-any cline-neutral">&nbsp;</span>
1318
+ <span class="cline-any cline-neutral">&nbsp;</span>
1319
+ <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-neutral">&nbsp;</span>
1321
+ <span class="cline-any cline-neutral">&nbsp;</span>
1322
+ <span class="cline-any cline-neutral">&nbsp;</span>
1323
+ <span class="cline-any cline-neutral">&nbsp;</span>
1324
+ <span class="cline-any cline-neutral">&nbsp;</span>
1325
+ <span class="cline-any cline-neutral">&nbsp;</span>
1326
+ <span class="cline-any cline-neutral">&nbsp;</span>
1327
+ <span class="cline-any cline-neutral">&nbsp;</span>
1328
+ <span class="cline-any cline-neutral">&nbsp;</span>
1329
+ <span class="cline-any cline-neutral">&nbsp;</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-neutral">&nbsp;</span>
1332
+ <span class="cline-any cline-neutral">&nbsp;</span>
1333
+ <span class="cline-any cline-neutral">&nbsp;</span>
1334
+ <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-neutral">&nbsp;</span>
1338
+ <span class="cline-any cline-neutral">&nbsp;</span>
1339
+ <span class="cline-any cline-neutral">&nbsp;</span>
1340
+ <span class="cline-any cline-neutral">&nbsp;</span>
1341
+ <span class="cline-any cline-neutral">&nbsp;</span>
1342
+ <span class="cline-any cline-neutral">&nbsp;</span>
1343
+ <span class="cline-any cline-yes">1x</span>
1344
+ <span class="cline-any cline-neutral">&nbsp;</span>
1345
+ <span class="cline-any cline-neutral">&nbsp;</span>
1346
+ <span class="cline-any cline-neutral">&nbsp;</span>
1347
+ <span class="cline-any cline-neutral">&nbsp;</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-neutral">&nbsp;</span>
1350
+ <span class="cline-any cline-neutral">&nbsp;</span>
1351
+ <span class="cline-any cline-neutral">&nbsp;</span>
1352
+ <span class="cline-any cline-neutral">&nbsp;</span>
1353
+ <span class="cline-any cline-neutral">&nbsp;</span>
1354
+ <span class="cline-any cline-neutral">&nbsp;</span>
1355
+ <span class="cline-any cline-yes">1x</span>
1356
+ <span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-neutral">&nbsp;</span>
1359
+ <span class="cline-any cline-neutral">&nbsp;</span>
1360
+ <span class="cline-any cline-neutral">&nbsp;</span>
1361
+ <span class="cline-any cline-neutral">&nbsp;</span>
1362
+ <span class="cline-any cline-neutral">&nbsp;</span>
1363
+ <span class="cline-any cline-neutral">&nbsp;</span>
1364
+ <span class="cline-any cline-neutral">&nbsp;</span>
1365
+ <span class="cline-any cline-neutral">&nbsp;</span>
1366
+ <span class="cline-any cline-neutral">&nbsp;</span>
1367
+ <span class="cline-any cline-neutral">&nbsp;</span>
1368
+ <span class="cline-any cline-neutral">&nbsp;</span>
1369
+ <span class="cline-any cline-yes">1x</span>
1370
+ <span class="cline-any cline-neutral">&nbsp;</span>
1371
+ <span class="cline-any cline-neutral">&nbsp;</span>
1372
+ <span class="cline-any cline-neutral">&nbsp;</span>
1373
+ <span class="cline-any cline-neutral">&nbsp;</span>
1374
+ <span class="cline-any cline-neutral">&nbsp;</span>
1375
+ <span class="cline-any cline-neutral">&nbsp;</span>
1376
+ <span class="cline-any cline-neutral">&nbsp;</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-neutral">&nbsp;</span>
1382
+ <span class="cline-any cline-yes">1x</span>
1383
+ <span class="cline-any cline-neutral">&nbsp;</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-neutral">&nbsp;</span>
1386
+ <span class="cline-any cline-neutral">&nbsp;</span>
1387
+ <span class="cline-any cline-neutral">&nbsp;</span>
1388
+ <span class="cline-any cline-neutral">&nbsp;</span>
1389
+ <span class="cline-any cline-neutral">&nbsp;</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-neutral">&nbsp;</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-yes">1x</span>
1394
+ <span class="cline-any cline-yes">1x</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-neutral">&nbsp;</span>
1401
+ <span class="cline-any cline-neutral">&nbsp;</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-neutral">&nbsp;</span>
1406
+ <span class="cline-any cline-neutral">&nbsp;</span>
1407
+ <span class="cline-any cline-yes">1x</span>
1408
+ <span class="cline-any cline-yes">1x</span>
1409
+ <span class="cline-any cline-yes">1x</span>
1410
+ <span class="cline-any cline-neutral">&nbsp;</span>
1411
+ <span class="cline-any cline-yes">1x</span>
1412
+ <span class="cline-any cline-neutral">&nbsp;</span>
1413
+ <span class="cline-any cline-yes">1x</span>
1414
+ <span class="cline-any cline-yes">1x</span>
1415
+ <span class="cline-any cline-yes">1x</span>
1416
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1425
+ <span class="cline-any cline-yes">1x</span>
1426
+ <span class="cline-any cline-no">&nbsp;</span>
1427
+ <span class="cline-any cline-yes">1x</span>
1428
+ <span class="cline-any cline-no">&nbsp;</span>
1429
+ <span class="cline-any cline-yes">1x</span>
1430
+ <span class="cline-any cline-no">&nbsp;</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-neutral">&nbsp;</span>
1433
+ <span class="cline-any cline-yes">1x</span>
1434
+ <span class="cline-any cline-yes">1x</span>
1435
+ <span class="cline-any cline-yes">1x</span>
1436
+ <span class="cline-any cline-yes">1x</span>
1437
+ <span class="cline-any cline-neutral">&nbsp;</span>
1438
+ <span class="cline-any cline-no">&nbsp;</span>
1439
+ <span class="cline-any cline-neutral">&nbsp;</span>
1440
+ <span class="cline-any cline-neutral">&nbsp;</span>
1441
+ <span class="cline-any cline-no">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span>
1443
+ <span class="cline-any cline-neutral">&nbsp;</span>
1444
+ <span class="cline-any cline-yes">1x</span>
1445
+ <span class="cline-any cline-no">&nbsp;</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-yes">1x</span>
1448
+ <span class="cline-any cline-neutral">&nbsp;</span>
1449
+ <span class="cline-any cline-neutral">&nbsp;</span>
1450
+ <span class="cline-any cline-neutral">&nbsp;</span>
1451
+ <span class="cline-any cline-yes">1x</span>
1452
+ <span class="cline-any cline-yes">1x</span>
1453
+ <span class="cline-any cline-neutral">&nbsp;</span>
1454
+ <span class="cline-any cline-neutral">&nbsp;</span>
1455
+ <span class="cline-any cline-neutral">&nbsp;</span>
1456
+ <span class="cline-any cline-neutral">&nbsp;</span>
1457
+ <span class="cline-any cline-neutral">&nbsp;</span>
1458
+ <span class="cline-any cline-neutral">&nbsp;</span>
1459
+ <span class="cline-any cline-neutral">&nbsp;</span>
1460
+ <span class="cline-any cline-neutral">&nbsp;</span>
1461
+ <span class="cline-any cline-neutral">&nbsp;</span>
1462
+ <span class="cline-any cline-neutral">&nbsp;</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-neutral">&nbsp;</span>
1465
+ <span class="cline-any cline-neutral">&nbsp;</span>
1466
+ <span class="cline-any cline-neutral">&nbsp;</span>
1467
+ <span class="cline-any cline-neutral">&nbsp;</span>
1468
+ <span class="cline-any cline-neutral">&nbsp;</span>
1469
+ <span class="cline-any cline-neutral">&nbsp;</span>
1470
+ <span class="cline-any cline-neutral">&nbsp;</span>
1471
+ <span class="cline-any cline-neutral">&nbsp;</span>
1472
+ <span class="cline-any cline-neutral">&nbsp;</span>
1473
+ <span class="cline-any cline-neutral">&nbsp;</span>
1474
+ <span class="cline-any cline-neutral">&nbsp;</span>
1475
+ <span class="cline-any cline-neutral">&nbsp;</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span>
1477
+ <span class="cline-any cline-neutral">&nbsp;</span>
1478
+ <span class="cline-any cline-neutral">&nbsp;</span>
1479
+ <span class="cline-any cline-neutral">&nbsp;</span>
1480
+ <span class="cline-any cline-neutral">&nbsp;</span>
1481
+ <span class="cline-any cline-neutral">&nbsp;</span>
1482
+ <span class="cline-any cline-neutral">&nbsp;</span>
1483
+ <span class="cline-any cline-neutral">&nbsp;</span>
1484
+ <span class="cline-any cline-neutral">&nbsp;</span>
1485
+ <span class="cline-any cline-yes">1x</span>
1486
+ <span class="cline-any cline-neutral">&nbsp;</span>
1487
+ <span class="cline-any cline-neutral">&nbsp;</span>
1488
+ <span class="cline-any cline-neutral">&nbsp;</span>
1489
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
1493
+ <span class="cline-any cline-yes">1x</span>
1494
+ <span class="cline-any cline-neutral">&nbsp;</span>
1495
+ <span class="cline-any cline-yes">1x</span>
1496
+ <span class="cline-any cline-yes">1x</span>
1497
+ <span class="cline-any cline-no">&nbsp;</span>
1498
+ <span class="cline-any cline-neutral">&nbsp;</span>
1499
+ <span class="cline-any cline-yes">1x</span>
1500
+ <span class="cline-any cline-neutral">&nbsp;</span>
1501
+ <span class="cline-any cline-neutral">&nbsp;</span>
1502
+ <span class="cline-any cline-yes">1x</span>
1503
+ <span class="cline-any cline-yes">1x</span>
1504
+ <span class="cline-any cline-neutral">&nbsp;</span>
1505
+ <span class="cline-any cline-yes">1x</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-neutral">&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-neutral">&nbsp;</span>
1515
+ <span class="cline-any cline-neutral">&nbsp;</span>
1516
+ <span class="cline-any cline-neutral">&nbsp;</span>
1517
+ <span class="cline-any cline-neutral">&nbsp;</span>
1518
+ <span class="cline-any cline-neutral">&nbsp;</span>
1519
+ <span class="cline-any cline-neutral">&nbsp;</span>
1520
+ <span class="cline-any cline-neutral">&nbsp;</span>
1521
+ <span class="cline-any cline-neutral">&nbsp;</span>
1522
+ <span class="cline-any cline-neutral">&nbsp;</span>
1523
+ <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1541
+ <span class="cline-any cline-neutral">&nbsp;</span>
1542
+ <span class="cline-any cline-no">&nbsp;</span>
1543
+ <span class="cline-any cline-neutral">&nbsp;</span>
1544
+ <span class="cline-any cline-no">&nbsp;</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-neutral">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
+ <span class="cline-any cline-neutral">&nbsp;</span>
1550
+ <span class="cline-any cline-neutral">&nbsp;</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-neutral">&nbsp;</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
1555
+ <span class="cline-any cline-neutral">&nbsp;</span>
1556
+ <span class="cline-any cline-neutral">&nbsp;</span>
1557
+ <span class="cline-any cline-neutral">&nbsp;</span>
1558
+ <span class="cline-any cline-neutral">&nbsp;</span>
1559
+ <span class="cline-any cline-neutral">&nbsp;</span>
1560
+ <span class="cline-any cline-neutral">&nbsp;</span>
1561
+ <span class="cline-any cline-neutral">&nbsp;</span>
1562
+ <span class="cline-any cline-neutral">&nbsp;</span>
1563
+ <span class="cline-any cline-neutral">&nbsp;</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-neutral">&nbsp;</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-neutral">&nbsp;</span>
1569
+ <span class="cline-any cline-neutral">&nbsp;</span>
1570
+ <span class="cline-any cline-neutral">&nbsp;</span>
1571
+ <span class="cline-any cline-neutral">&nbsp;</span>
1572
+ <span class="cline-any cline-neutral">&nbsp;</span>
1573
+ <span class="cline-any cline-neutral">&nbsp;</span>
1574
+ <span class="cline-any cline-neutral">&nbsp;</span>
1575
+ <span class="cline-any cline-neutral">&nbsp;</span>
1576
+ <span class="cline-any cline-neutral">&nbsp;</span>
1577
+ <span class="cline-any cline-neutral">&nbsp;</span>
1578
+ <span class="cline-any cline-neutral">&nbsp;</span>
1579
+ <span class="cline-any cline-neutral">&nbsp;</span>
1580
+ <span class="cline-any cline-neutral">&nbsp;</span>
1581
+ <span class="cline-any cline-neutral">&nbsp;</span>
1582
+ <span class="cline-any cline-neutral">&nbsp;</span>
1583
+ <span class="cline-any cline-neutral">&nbsp;</span>
1584
+ <span class="cline-any cline-neutral">&nbsp;</span>
1585
+ <span class="cline-any cline-neutral">&nbsp;</span>
1586
+ <span class="cline-any cline-neutral">&nbsp;</span>
1587
+ <span class="cline-any cline-neutral">&nbsp;</span>
1588
+ <span class="cline-any cline-neutral">&nbsp;</span>
1589
+ <span class="cline-any cline-neutral">&nbsp;</span>
1590
+ <span class="cline-any cline-neutral">&nbsp;</span>
1591
+ <span class="cline-any cline-neutral">&nbsp;</span>
1592
+ <span class="cline-any cline-neutral">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-neutral">&nbsp;</span>
1595
+ <span class="cline-any cline-neutral">&nbsp;</span>
1596
+ <span class="cline-any cline-neutral">&nbsp;</span>
1597
+ <span class="cline-any cline-neutral">&nbsp;</span>
1598
+ <span class="cline-any cline-neutral">&nbsp;</span>
1599
+ <span class="cline-any cline-neutral">&nbsp;</span>
1600
+ <span class="cline-any cline-neutral">&nbsp;</span>
1601
+ <span class="cline-any cline-neutral">&nbsp;</span>
1602
+ <span class="cline-any cline-neutral">&nbsp;</span>
1603
+ <span class="cline-any cline-neutral">&nbsp;</span>
1604
+ <span class="cline-any cline-neutral">&nbsp;</span>
1605
+ <span class="cline-any cline-neutral">&nbsp;</span>
1606
+ <span class="cline-any cline-neutral">&nbsp;</span>
1607
+ <span class="cline-any cline-neutral">&nbsp;</span>
1608
+ <span class="cline-any cline-neutral">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-neutral">&nbsp;</span>
1611
+ <span class="cline-any cline-neutral">&nbsp;</span>
1612
+ <span class="cline-any cline-neutral">&nbsp;</span>
1613
+ <span class="cline-any cline-neutral">&nbsp;</span>
1614
+ <span class="cline-any cline-neutral">&nbsp;</span>
1615
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-neutral">&nbsp;</span>
1626
+ <span class="cline-any cline-neutral">&nbsp;</span>
1627
+ <span class="cline-any cline-neutral">&nbsp;</span>
1628
+ <span class="cline-any cline-neutral">&nbsp;</span>
1629
+ <span class="cline-any cline-neutral">&nbsp;</span>
1630
+ <span class="cline-any cline-neutral">&nbsp;</span>
1631
+ <span class="cline-any cline-neutral">&nbsp;</span>
1632
+ <span class="cline-any cline-neutral">&nbsp;</span>
1633
+ <span class="cline-any cline-neutral">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-neutral">&nbsp;</span>
1636
+ <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-neutral">&nbsp;</span>
1639
+ <span class="cline-any cline-neutral">&nbsp;</span>
1640
+ <span class="cline-any cline-neutral">&nbsp;</span>
1641
+ <span class="cline-any cline-neutral">&nbsp;</span>
1642
+ <span class="cline-any cline-neutral">&nbsp;</span>
1643
+ <span class="cline-any cline-neutral">&nbsp;</span>
1644
+ <span class="cline-any cline-neutral">&nbsp;</span>
1645
+ <span class="cline-any cline-neutral">&nbsp;</span>
1646
+ <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1660
+ <span class="cline-any cline-neutral">&nbsp;</span>
1661
+ <span class="cline-any cline-no">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span>
1663
+ <span class="cline-any cline-neutral">&nbsp;</span>
1664
+ <span class="cline-any cline-neutral">&nbsp;</span>
1665
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1676
+ <span class="cline-any cline-neutral">&nbsp;</span>
1677
+ <span class="cline-any cline-no">&nbsp;</span>
1678
+ <span class="cline-any cline-neutral">&nbsp;</span>
1679
+ <span class="cline-any cline-neutral">&nbsp;</span>
1680
+ <span class="cline-any cline-neutral">&nbsp;</span>
1681
+ <span class="cline-any cline-neutral">&nbsp;</span>
1682
+ <span class="cline-any cline-neutral">&nbsp;</span>
1683
+ <span class="cline-any cline-neutral">&nbsp;</span>
1684
+ <span class="cline-any cline-neutral">&nbsp;</span>
1685
+ <span class="cline-any cline-neutral">&nbsp;</span>
1686
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1690
+ <span class="cline-any cline-neutral">&nbsp;</span>
1691
+ <span class="cline-any cline-neutral">&nbsp;</span>
1692
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1699
+ <span class="cline-any cline-neutral">&nbsp;</span>
1700
+ <span class="cline-any cline-neutral">&nbsp;</span>
1701
+ <span class="cline-any cline-neutral">&nbsp;</span>
1702
+ <span class="cline-any cline-neutral">&nbsp;</span>
1703
+ <span class="cline-any cline-neutral">&nbsp;</span>
1704
+ <span class="cline-any cline-neutral">&nbsp;</span>
1705
+ <span class="cline-any cline-neutral">&nbsp;</span>
1706
+ <span class="cline-any cline-neutral">&nbsp;</span>
1707
+ <span class="cline-any cline-neutral">&nbsp;</span>
1708
+ <span class="cline-any cline-neutral">&nbsp;</span>
1709
+ <span class="cline-any cline-neutral">&nbsp;</span>
1710
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1716
+ <span class="cline-any cline-neutral">&nbsp;</span>
1717
+ <span class="cline-any cline-neutral">&nbsp;</span>
1718
+ <span class="cline-any cline-neutral">&nbsp;</span>
1719
+ <span class="cline-any cline-neutral">&nbsp;</span>
1720
+ <span class="cline-any cline-neutral">&nbsp;</span>
1721
+ <span class="cline-any cline-neutral">&nbsp;</span>
1722
+ <span class="cline-any cline-neutral">&nbsp;</span>
1723
+ <span class="cline-any cline-neutral">&nbsp;</span>
1724
+ <span class="cline-any cline-neutral">&nbsp;</span>
1725
+ <span class="cline-any cline-neutral">&nbsp;</span>
1726
+ <span class="cline-any cline-neutral">&nbsp;</span>
1727
+ <span class="cline-any cline-neutral">&nbsp;</span>
1728
+ <span class="cline-any cline-neutral">&nbsp;</span>
1729
+ <span class="cline-any cline-neutral">&nbsp;</span>
1730
+ <span class="cline-any cline-neutral">&nbsp;</span>
1731
+ <span class="cline-any cline-neutral">&nbsp;</span>
1732
+ <span class="cline-any cline-no">&nbsp;</span>
1733
+ <span class="cline-any cline-no">&nbsp;</span>
1734
+ <span class="cline-any cline-no">&nbsp;</span>
1735
+ <span class="cline-any cline-no">&nbsp;</span>
1736
+ <span class="cline-any cline-neutral">&nbsp;</span>
1737
+ <span class="cline-any cline-neutral">&nbsp;</span>
1738
+ <span class="cline-any cline-no">&nbsp;</span>
1739
+ <span class="cline-any cline-no">&nbsp;</span>
1740
+ <span class="cline-any cline-no">&nbsp;</span>
1741
+ <span class="cline-any cline-neutral">&nbsp;</span>
1742
+ <span class="cline-any cline-neutral">&nbsp;</span>
1743
+ <span class="cline-any cline-neutral">&nbsp;</span>
1744
+ <span class="cline-any cline-neutral">&nbsp;</span>
1745
+ <span class="cline-any cline-neutral">&nbsp;</span>
1746
+ <span class="cline-any cline-neutral">&nbsp;</span>
1747
+ <span class="cline-any cline-neutral">&nbsp;</span>
1748
+ <span class="cline-any cline-neutral">&nbsp;</span>
1749
+ <span class="cline-any cline-neutral">&nbsp;</span>
1750
+ <span class="cline-any cline-neutral">&nbsp;</span>
1751
+ <span class="cline-any cline-no">&nbsp;</span>
1752
+ <span class="cline-any cline-no">&nbsp;</span>
1753
+ <span class="cline-any cline-no">&nbsp;</span>
1754
+ <span class="cline-any cline-no">&nbsp;</span>
1755
+ <span class="cline-any cline-neutral">&nbsp;</span>
1756
+ <span class="cline-any cline-no">&nbsp;</span>
1757
+ <span class="cline-any cline-neutral">&nbsp;</span>
1758
+ <span class="cline-any cline-no">&nbsp;</span>
1759
+ <span class="cline-any cline-no">&nbsp;</span>
1760
+ <span class="cline-any cline-no">&nbsp;</span>
1761
+ <span class="cline-any cline-no">&nbsp;</span>
1762
+ <span class="cline-any cline-no">&nbsp;</span>
1763
+ <span class="cline-any cline-neutral">&nbsp;</span>
1764
+ <span class="cline-any cline-neutral">&nbsp;</span>
1765
+ <span class="cline-any cline-no">&nbsp;</span>
1766
+ <span class="cline-any cline-neutral">&nbsp;</span>
1767
+ <span class="cline-any cline-no">&nbsp;</span>
1768
+ <span class="cline-any cline-neutral">&nbsp;</span>
1769
+ <span class="cline-any cline-no">&nbsp;</span>
1770
+ <span class="cline-any cline-no">&nbsp;</span>
1771
+ <span class="cline-any cline-neutral">&nbsp;</span>
1772
+ <span class="cline-any cline-no">&nbsp;</span>
1773
+ <span class="cline-any cline-no">&nbsp;</span>
1774
+ <span class="cline-any cline-neutral">&nbsp;</span>
1775
+ <span class="cline-any cline-no">&nbsp;</span>
1776
+ <span class="cline-any cline-neutral">&nbsp;</span>
1777
+ <span class="cline-any cline-neutral">&nbsp;</span>
1778
+ <span class="cline-any cline-neutral">&nbsp;</span>
1779
+ <span class="cline-any cline-neutral">&nbsp;</span>
1780
+ <span class="cline-any cline-neutral">&nbsp;</span>
1781
+ <span class="cline-any cline-neutral">&nbsp;</span>
1782
+ <span class="cline-any cline-neutral">&nbsp;</span>
1783
+ <span class="cline-any cline-neutral">&nbsp;</span>
1784
+ <span class="cline-any cline-neutral">&nbsp;</span>
1785
+ <span class="cline-any cline-neutral">&nbsp;</span>
1786
+ <span class="cline-any cline-neutral">&nbsp;</span>
1787
+ <span class="cline-any cline-neutral">&nbsp;</span>
1788
+ <span class="cline-any cline-neutral">&nbsp;</span>
1789
+ <span class="cline-any cline-neutral">&nbsp;</span>
1790
+ <span class="cline-any cline-neutral">&nbsp;</span>
1791
+ <span class="cline-any cline-neutral">&nbsp;</span>
1792
+ <span class="cline-any cline-neutral">&nbsp;</span>
1793
+ <span class="cline-any cline-neutral">&nbsp;</span>
1794
+ <span class="cline-any cline-neutral">&nbsp;</span>
1795
+ <span class="cline-any cline-neutral">&nbsp;</span>
1796
+ <span class="cline-any cline-neutral">&nbsp;</span>
1797
+ <span class="cline-any cline-no">&nbsp;</span>
1798
+ <span class="cline-any cline-no">&nbsp;</span>
1799
+ <span class="cline-any cline-neutral">&nbsp;</span>
1800
+ <span class="cline-any cline-no">&nbsp;</span>
1801
+ <span class="cline-any cline-no">&nbsp;</span>
1802
+ <span class="cline-any cline-neutral">&nbsp;</span>
1803
+ <span class="cline-any cline-no">&nbsp;</span>
1804
+ <span class="cline-any cline-no">&nbsp;</span>
1805
+ <span class="cline-any cline-neutral">&nbsp;</span>
1806
+ <span class="cline-any cline-no">&nbsp;</span>
1807
+ <span class="cline-any cline-no">&nbsp;</span>
1808
+ <span class="cline-any cline-no">&nbsp;</span>
1809
+ <span class="cline-any cline-neutral">&nbsp;</span>
1810
+ <span class="cline-any cline-neutral">&nbsp;</span>
1811
+ <span class="cline-any cline-no">&nbsp;</span>
1812
+ <span class="cline-any cline-no">&nbsp;</span>
1813
+ <span class="cline-any cline-no">&nbsp;</span>
1814
+ <span class="cline-any cline-neutral">&nbsp;</span>
1815
+ <span class="cline-any cline-no">&nbsp;</span>
1816
+ <span class="cline-any cline-no">&nbsp;</span>
1817
+ <span class="cline-any cline-neutral">&nbsp;</span>
1818
+ <span class="cline-any cline-neutral">&nbsp;</span>
1819
+ <span class="cline-any cline-neutral">&nbsp;</span>
1820
+ <span class="cline-any cline-neutral">&nbsp;</span>
1821
+ <span class="cline-any cline-neutral">&nbsp;</span>
1822
+ <span class="cline-any cline-neutral">&nbsp;</span>
1823
+ <span class="cline-any cline-neutral">&nbsp;</span>
1824
+ <span class="cline-any cline-neutral">&nbsp;</span>
1825
+ <span class="cline-any cline-neutral">&nbsp;</span>
1826
+ <span class="cline-any cline-neutral">&nbsp;</span>
1827
+ <span class="cline-any cline-neutral">&nbsp;</span>
1828
+ <span class="cline-any cline-neutral">&nbsp;</span>
1829
+ <span class="cline-any cline-neutral">&nbsp;</span>
1830
+ <span class="cline-any cline-neutral">&nbsp;</span>
1831
+ <span class="cline-any cline-neutral">&nbsp;</span>
1832
+ <span class="cline-any cline-neutral">&nbsp;</span>
1833
+ <span class="cline-any cline-neutral">&nbsp;</span>
1834
+ <span class="cline-any cline-neutral">&nbsp;</span>
1835
+ <span class="cline-any cline-neutral">&nbsp;</span>
1836
+ <span class="cline-any cline-neutral">&nbsp;</span>
1837
+ <span class="cline-any cline-neutral">&nbsp;</span>
1838
+ <span class="cline-any cline-neutral">&nbsp;</span>
1839
+ <span class="cline-any cline-neutral">&nbsp;</span>
1840
+ <span class="cline-any cline-neutral">&nbsp;</span>
1841
+ <span class="cline-any cline-neutral">&nbsp;</span>
1842
+ <span class="cline-any cline-neutral">&nbsp;</span>
1843
+ <span class="cline-any cline-neutral">&nbsp;</span>
1844
+ <span class="cline-any cline-neutral">&nbsp;</span>
1845
+ <span class="cline-any cline-neutral">&nbsp;</span>
1846
+ <span class="cline-any cline-neutral">&nbsp;</span>
1847
+ <span class="cline-any cline-neutral">&nbsp;</span>
1848
+ <span class="cline-any cline-no">&nbsp;</span>
1849
+ <span class="cline-any cline-neutral">&nbsp;</span>
1850
+ <span class="cline-any cline-neutral">&nbsp;</span>
1851
+ <span class="cline-any cline-neutral">&nbsp;</span>
1852
+ <span class="cline-any cline-neutral">&nbsp;</span>
1853
+ <span class="cline-any cline-no">&nbsp;</span>
1854
+ <span class="cline-any cline-neutral">&nbsp;</span>
1855
+ <span class="cline-any cline-neutral">&nbsp;</span>
1856
+ <span class="cline-any cline-neutral">&nbsp;</span>
1857
+ <span class="cline-any cline-neutral">&nbsp;</span>
1858
+ <span class="cline-any cline-neutral">&nbsp;</span>
1859
+ <span class="cline-any cline-neutral">&nbsp;</span>
1860
+ <span class="cline-any cline-neutral">&nbsp;</span>
1861
+ <span class="cline-any cline-neutral">&nbsp;</span>
1862
+ <span class="cline-any cline-neutral">&nbsp;</span>
1863
+ <span class="cline-any cline-neutral">&nbsp;</span>
1864
+ <span class="cline-any cline-neutral">&nbsp;</span>
1865
+ <span class="cline-any cline-neutral">&nbsp;</span>
1866
+ <span class="cline-any cline-neutral">&nbsp;</span>
1867
+ <span class="cline-any cline-neutral">&nbsp;</span>
1868
+ <span class="cline-any cline-neutral">&nbsp;</span>
1869
+ <span class="cline-any cline-neutral">&nbsp;</span>
1870
+ <span class="cline-any cline-neutral">&nbsp;</span>
1871
+ <span class="cline-any cline-neutral">&nbsp;</span>
1872
+ <span class="cline-any cline-neutral">&nbsp;</span>
1873
+ <span class="cline-any cline-neutral">&nbsp;</span>
1874
+ <span class="cline-any cline-neutral">&nbsp;</span>
1875
+ <span class="cline-any cline-neutral">&nbsp;</span>
1876
+ <span class="cline-any cline-neutral">&nbsp;</span>
1877
+ <span class="cline-any cline-neutral">&nbsp;</span>
1878
+ <span class="cline-any cline-neutral">&nbsp;</span>
1879
+ <span class="cline-any cline-neutral">&nbsp;</span>
1880
+ <span class="cline-any cline-neutral">&nbsp;</span>
1881
+ <span class="cline-any cline-neutral">&nbsp;</span>
1882
+ <span class="cline-any cline-neutral">&nbsp;</span>
1883
+ <span class="cline-any cline-neutral">&nbsp;</span>
1884
+ <span class="cline-any cline-neutral">&nbsp;</span>
1885
+ <span class="cline-any cline-neutral">&nbsp;</span>
1886
+ <span class="cline-any cline-neutral">&nbsp;</span>
1887
+ <span class="cline-any cline-no">&nbsp;</span>
1888
+ <span class="cline-any cline-no">&nbsp;</span>
1889
+ <span class="cline-any cline-no">&nbsp;</span>
1890
+ <span class="cline-any cline-no">&nbsp;</span>
1891
+ <span class="cline-any cline-no">&nbsp;</span>
1892
+ <span class="cline-any cline-no">&nbsp;</span>
1893
+ <span class="cline-any cline-no">&nbsp;</span>
1894
+ <span class="cline-any cline-neutral">&nbsp;</span>
1895
+ <span class="cline-any cline-neutral">&nbsp;</span>
1896
+ <span class="cline-any cline-neutral">&nbsp;</span>
1897
+ <span class="cline-any cline-no">&nbsp;</span>
1898
+ <span class="cline-any cline-neutral">&nbsp;</span>
1899
+ <span class="cline-any cline-neutral">&nbsp;</span>
1900
+ <span class="cline-any cline-no">&nbsp;</span>
1901
+ <span class="cline-any cline-no">&nbsp;</span>
1902
+ <span class="cline-any cline-no">&nbsp;</span>
1903
+ <span class="cline-any cline-neutral">&nbsp;</span>
1904
+ <span class="cline-any cline-neutral">&nbsp;</span>
1905
+ <span class="cline-any cline-neutral">&nbsp;</span>
1906
+ <span class="cline-any cline-neutral">&nbsp;</span>
1907
+ <span class="cline-any cline-neutral">&nbsp;</span>
1908
+ <span class="cline-any cline-neutral">&nbsp;</span>
1909
+ <span class="cline-any cline-neutral">&nbsp;</span>
1910
+ <span class="cline-any cline-neutral">&nbsp;</span>
1911
+ <span class="cline-any cline-neutral">&nbsp;</span>
1912
+ <span class="cline-any cline-neutral">&nbsp;</span>
1913
+ <span class="cline-any cline-neutral">&nbsp;</span>
1914
+ <span class="cline-any cline-neutral">&nbsp;</span>
1915
+ <span class="cline-any cline-neutral">&nbsp;</span>
1916
+ <span class="cline-any cline-no">&nbsp;</span>
1917
+ <span class="cline-any cline-no">&nbsp;</span>
1918
+ <span class="cline-any cline-no">&nbsp;</span>
1919
+ <span class="cline-any cline-no">&nbsp;</span>
1920
+ <span class="cline-any cline-no">&nbsp;</span>
1921
+ <span class="cline-any cline-neutral">&nbsp;</span>
1922
+ <span class="cline-any cline-no">&nbsp;</span>
1923
+ <span class="cline-any cline-neutral">&nbsp;</span>
1924
+ <span class="cline-any cline-neutral">&nbsp;</span>
1925
+ <span class="cline-any cline-neutral">&nbsp;</span>
1926
+ <span class="cline-any cline-no">&nbsp;</span>
1927
+ <span class="cline-any cline-no">&nbsp;</span>
1928
+ <span class="cline-any cline-no">&nbsp;</span>
1929
+ <span class="cline-any cline-neutral">&nbsp;</span>
1930
+ <span class="cline-any cline-no">&nbsp;</span>
1931
+ <span class="cline-any cline-neutral">&nbsp;</span>
1932
+ <span class="cline-any cline-neutral">&nbsp;</span>
1933
+ <span class="cline-any cline-no">&nbsp;</span>
1934
+ <span class="cline-any cline-neutral">&nbsp;</span>
1935
+ <span class="cline-any cline-neutral">&nbsp;</span>
1936
+ <span class="cline-any cline-neutral">&nbsp;</span>
1937
+ <span class="cline-any cline-neutral">&nbsp;</span>
1938
+ <span class="cline-any cline-neutral">&nbsp;</span>
1939
+ <span class="cline-any cline-neutral">&nbsp;</span>
1940
+ <span class="cline-any cline-no">&nbsp;</span>
1941
+ <span class="cline-any cline-no">&nbsp;</span>
1942
+ <span class="cline-any cline-neutral">&nbsp;</span>
1943
+ <span class="cline-any cline-neutral">&nbsp;</span>
1944
+ <span class="cline-any cline-neutral">&nbsp;</span>
1945
+ <span class="cline-any cline-no">&nbsp;</span>
1946
+ <span class="cline-any cline-neutral">&nbsp;</span>
1947
+ <span class="cline-any cline-neutral">&nbsp;</span>
1948
+ <span class="cline-any cline-neutral">&nbsp;</span>
1949
+ <span class="cline-any cline-neutral">&nbsp;</span>
1950
+ <span class="cline-any cline-neutral">&nbsp;</span>
1951
+ <span class="cline-any cline-neutral">&nbsp;</span>
1952
+ <span class="cline-any cline-neutral">&nbsp;</span>
1953
+ <span class="cline-any cline-neutral">&nbsp;</span>
1954
+ <span class="cline-any cline-neutral">&nbsp;</span>
1955
+ <span class="cline-any cline-neutral">&nbsp;</span>
1956
+ <span class="cline-any cline-neutral">&nbsp;</span>
1957
+ <span class="cline-any cline-neutral">&nbsp;</span>
1958
+ <span class="cline-any cline-neutral">&nbsp;</span>
1959
+ <span class="cline-any cline-neutral">&nbsp;</span>
1960
+ <span class="cline-any cline-neutral">&nbsp;</span>
1961
+ <span class="cline-any cline-neutral">&nbsp;</span>
1962
+ <span class="cline-any cline-neutral">&nbsp;</span>
1963
+ <span class="cline-any cline-neutral">&nbsp;</span>
1964
+ <span class="cline-any cline-neutral">&nbsp;</span>
1965
+ <span class="cline-any cline-neutral">&nbsp;</span>
1966
+ <span class="cline-any cline-neutral">&nbsp;</span>
1967
+ <span class="cline-any cline-neutral">&nbsp;</span>
1968
+ <span class="cline-any cline-no">&nbsp;</span>
1969
+ <span class="cline-any cline-no">&nbsp;</span>
1970
+ <span class="cline-any cline-no">&nbsp;</span>
1971
+ <span class="cline-any cline-no">&nbsp;</span>
1972
+ <span class="cline-any cline-no">&nbsp;</span>
1973
+ <span class="cline-any cline-neutral">&nbsp;</span>
1974
+ <span class="cline-any cline-neutral">&nbsp;</span>
1975
+ <span class="cline-any cline-neutral">&nbsp;</span>
1976
+ <span class="cline-any cline-no">&nbsp;</span>
1977
+ <span class="cline-any cline-no">&nbsp;</span>
1978
+ <span class="cline-any cline-no">&nbsp;</span>
1979
+ <span class="cline-any cline-neutral">&nbsp;</span>
1980
+ <span class="cline-any cline-no">&nbsp;</span>
1981
+ <span class="cline-any cline-neutral">&nbsp;</span>
1982
+ <span class="cline-any cline-neutral">&nbsp;</span>
1983
+ <span class="cline-any cline-no">&nbsp;</span>
1984
+ <span class="cline-any cline-neutral">&nbsp;</span>
1985
+ <span class="cline-any cline-neutral">&nbsp;</span>
1986
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
1987
+ * @module module:lib/components/fieldset/fieldset.component
1988
+ * @description Fieldset component module.
1989
+ * @summary Provides `FieldsetComponent` — a dynamic, collapsible fieldset container
1990
+ * for grouping form controls with validation, reorder and add/remove capabilities.
1991
+ * Ideal for complex forms that require nested groupings and dynamic items.
1992
+ *
1993
+ * @link {@link FieldsetComponent}
1994
+ */
1995
+ &nbsp;
1996
+ import { AfterViewInit, Component, Input, OnInit } from '@angular/core';
1997
+ import { FormArray, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
1998
+ import { TranslatePipe } from '@ngx-translate/core';
1999
+ import { alertCircleOutline, createOutline, addOutline, trashOutline } from 'ionicons/icons';
2000
+ import { addIcons } from 'ionicons';
2001
+ import {
2002
+ IonButton,
2003
+ IonItem,
2004
+ IonLabel,
2005
+ IonList,
2006
+ ItemReorderEventDetail,
2007
+ IonReorderGroup,
2008
+ IonReorder,
2009
+ IonIcon,
2010
+ IonText,
2011
+ IonSpinner,
2012
+ } from '@ionic/angular/standalone';
2013
+ import { CrudOperations, OperationKeys } from '@decaf-ts/db-decorators';
2014
+ import { Model, ReservedModels } from '@decaf-ts/decorator-validation';
2015
+ import { ComponentEventNames } from '@decaf-ts/ui-decorators';
2016
+ import { NgxFormDirective } from '../../engine/NgxFormDirective';
2017
+ import { NgxFormService } from '../../services/NgxFormService';
2018
+ import { LayoutComponent } from '../layout/layout.component';
2019
+ import { FormParent, KeyValue } from '../../engine/types';
2020
+ import { IFieldSetItem, IFieldSetValidationEvent } from '../../engine/interfaces';
2021
+ import { Dynamic } from '../../engine/decorators';
2022
+ import { itemMapper } from '../../utils/helpers';
2023
+ import { CrudOperationKeys, UIModelMetadata } from '@decaf-ts/ui-decorators';
2024
+ import { timer } from 'rxjs';
2025
+ import { IconComponent } from '../icon/icon.component';
2026
+ import { ActionRoles } from '../../engine/constants';
2027
+ import { DecafRepository } from '../../engine/types';
2028
+ import { presentModalConfirm } from '../modal/modal.component';
2029
+ &nbsp;
2030
+ /**
2031
+ * @description Dynamic fieldset component with collapsible accordion functionality.
2032
+ * @summary This component provides a sophisticated fieldset container that automatically
2033
+ * adapts its behavior based on CRUD operations. It integrates seamlessly with Ionic's
2034
+ * accordion components to create expandable/collapsible sections for organizing form
2035
+ * content and related information. The component intelligently determines its initial
2036
+ * state based on the operation type, opening automatically for READ and DELETE operations
2037
+ * while remaining closed for CREATE and UPDATE operations.
2038
+ *
2039
+ * @example
2040
+ * ```html
2041
+ * &lt;!-- Basic usage with automatic state management --&gt;
2042
+ * &lt;ngx-decaf-fieldset
2043
+ * name="Personal Information"
2044
+ * [operation]="OperationKeys.READ"
2045
+ * target="_self"&gt;
2046
+ * &lt;ion-input label="Name" placeholder="Enter name"&gt;&lt;/ion-input&gt;
2047
+ * &lt;ion-input label="Email" type="email" placeholder="Enter email"&gt;&lt;/ion-input&gt;
2048
+ * &lt;/ngx-decaf-fieldset&gt;
2049
+ *
2050
+ * &lt;!-- Advanced usage with custom operation --&gt;
2051
+ * &lt;ngx-decaf-fieldset
2052
+ * name="Contact Details"
2053
+ * [operation]="currentOperation"
2054
+ * target="_blank"&gt;
2055
+ * &lt;!-- Complex form fields --&gt;
2056
+ * &lt;/ngx-decaf-fieldset&gt;
2057
+ * ```
2058
+ *
2059
+ * @mermaid
2060
+ * sequenceDiagram
2061
+ * participant U as User
2062
+ * participant F as FieldsetComponent
2063
+ * participant I as Ionic Accordion
2064
+ * participant D as DOM
2065
+ *
2066
+ * F-&gt;&gt;F: ngAfterViewInit()
2067
+ * alt operation is READ or DELETE
2068
+ * F-&gt;&gt;F: Set isOpen = true
2069
+ * F-&gt;&gt;D: Query accordion element
2070
+ * F-&gt;&gt;I: Set value attribute to 'open'
2071
+ * F-&gt;&gt;F: Trigger change detection
2072
+ * end
2073
+ * U-&gt;&gt;I: Click accordion header
2074
+ * I-&gt;&gt;F: handleChange(event)
2075
+ * F-&gt;&gt;F: Update isOpen state
2076
+ * F-&gt;&gt;I: Reflect new state
2077
+ *
2078
+ * @memberOf FieldsetComponent
2079
+ */
2080
+ @Dynamic()
2081
+ @Component({
2082
+ standalone: true,
2083
+ selector: 'ngx-decaf-fieldset',
2084
+ templateUrl: './fieldset.component.html',
2085
+ styleUrls: ['./fieldset.component.scss'],
2086
+ schemas: [],
2087
+ imports: [
2088
+ TranslatePipe,
2089
+ ReactiveFormsModule,
2090
+ IonList,
2091
+ IonItem,
2092
+ IonLabel,
2093
+ IonText,
2094
+ IonReorder,
2095
+ IonReorderGroup,
2096
+ IonButton,
2097
+ IonIcon,
2098
+ LayoutComponent,
2099
+ IonSpinner,
2100
+ IconComponent,
2101
+ ],
2102
+ })
2103
+ export class FieldsetComponent extends NgxFormDirective implements OnInit, AfterViewInit {
2104
+ /**
2105
+ * @description The display name or title of the fieldset section.
2106
+ * @summary Sets the legend or header text that appears in the accordion header. This text
2107
+ * provides a clear label for the collapsible section, helping users understand what content
2108
+ * is contained within. The name is displayed prominently and serves as the clickable area
2109
+ * for expanding/collapsing the fieldset.
2110
+ *
2111
+ * @type {string}
2112
+ * @default 'Child'
2113
+ * @memberOf FieldsetComponent
2114
+ */
2115
+ @Input()
2116
+ formControl!: FormControl;
2117
+ &nbsp;
2118
+ /**
2119
+ * @description The parent component identifier for hierarchical fieldset relationships.
2120
+ * @summary Specifies the parent component name that this fieldset belongs to in a hierarchical
2121
+ * form structure. This property is used for event bubbling and establishing parent-child
2122
+ * relationships between fieldsets in complex forms with nested structures.
2123
+ *
2124
+ * @type {string}
2125
+ * @default 'Child'
2126
+ * @memberOf FieldsetComponent
2127
+ */
2128
+ @Input()
2129
+ // collapsable: boolean = true;
2130
+ &nbsp;
2131
+ /**
2132
+ * @description Custom type definitions for specialized fieldset behavior.
2133
+ * @summary Defines custom data types or validation rules that should be applied to this fieldset.
2134
+ * Can be a single type string or array of types that determine how the fieldset handles
2135
+ * data validation, formatting, and display behavior for specialized use cases.
2136
+ *
2137
+ * @type {string | string[]}
2138
+ * @memberOf FieldsetComponent
2139
+ */
2140
+ @Input()
2141
+ customTypes!: string | string[];
2142
+ &nbsp;
2143
+ /**
2144
+ * @description Primary title text for the fieldset content.
2145
+ * @summary Display title used for fieldset identification and content organization.
2146
+ * Provides semantic meaning to the grouped form fields.
2147
+ *
2148
+ * @type {string}
2149
+ * @memberOf FieldsetComponent
2150
+ */
2151
+ @Input()
2152
+ title!: string;
2153
+ &nbsp;
2154
+ /**
2155
+ * @description Secondary descriptive text for the fieldset.
2156
+ * @summary Additional information that provides context or instructions
2157
+ * related to the fieldset content and purpose.
2158
+ *
2159
+ * @type {string}
2160
+ * @memberOf FieldsetComponent
2161
+ */
2162
+ @Input()
2163
+ description!: string;
2164
+ &nbsp;
2165
+ /**
2166
+ * @description Enables multiple item management within the fieldset.
2167
+ * @summary Boolean flag that determines if the fieldset supports adding multiple values.
2168
+ * When true, displays a reorderable list of items with add/remove functionality.
2169
+ *
2170
+ * @type {boolean}
2171
+ * @default false
2172
+ * @memberOf FieldsetComponent
2173
+ */
2174
+ @Input()
2175
+ override multiple: boolean = true;
2176
+ &nbsp;
2177
+ /**
2178
+ * @description Array of raw values stored in the fieldset.
2179
+ * @summary Contains the actual data values that have been added to the fieldset.
2180
+ * This is the source of truth for the fieldset's data state.
2181
+ *
2182
+ * @type {KeyValue[]}
2183
+ * @default []
2184
+ * @memberOf FieldsetComponent
2185
+ */
2186
+ @Input()
2187
+ override value: KeyValue[] = [];
2188
+ &nbsp;
2189
+ /**
2190
+ * @description Controls whether borders are displayed around the fieldset.
2191
+ * @summary Boolean flag that determines if the fieldset should be visually outlined with borders.
2192
+ * When true, borders are shown to visually separate the fieldset from surrounding content.
2193
+ *
2194
+ * @type {boolean}
2195
+ * @default true
2196
+ * @memberOf FieldsetComponent
2197
+ */
2198
+ @Input()
2199
+ override borders: boolean = true;
2200
+ &nbsp;
2201
+ /**
2202
+ * @description Array of formatted items for UI display.
2203
+ * @summary Contains the processed items ready for display in the component template.
2204
+ * These items are mapped from the raw values using the mapper configuration.
2205
+ *
2206
+ * @type {IFieldSetItem[]}
2207
+ * @default []
2208
+ * @memberOf FieldsetComponent
2209
+ */
2210
+ items: IFieldSetItem[] = [];
2211
+ &nbsp;
2212
+ /**
2213
+ * @description Currently selected item for update operations.
2214
+ * @summary Holds the item being edited when in update mode. Used to track
2215
+ * which item is being modified and apply changes to the correct item.
2216
+ *
2217
+ * @type {IFieldSetItem | undefined}
2218
+ * @memberOf FieldsetComponent
2219
+ */
2220
+ updatingItem!: IFieldSetItem | undefined;
2221
+ &nbsp;
2222
+ /**
2223
+ * @description Current state of the accordion (expanded or collapsed).
2224
+ * @summary Boolean flag that tracks whether the fieldset accordion is currently open or closed.
2225
+ * This property is automatically managed based on user interactions and initial operation state.
2226
+ * It serves as the single source of truth for the component's visibility state and is used
2227
+ * to coordinate between user actions and programmatic state changes. The value is automatically
2228
+ * set based on CRUD operations during initialization and updated through user interactions.
2229
+ *
2230
+ * @type {boolean}
2231
+ * @default false
2232
+ * @memberOf FieldsetComponent
2233
+ */
2234
+ isOpen: boolean = false;
2235
+ &nbsp;
2236
+ /**
2237
+ * @description Indicates whether the fieldset contains required form fields.
2238
+ * @summary Boolean flag that signals the presence of mandatory input fields within the fieldset.
2239
+ * This property is automatically set by the CollapsableDirective when required fields are detected,
2240
+ * and can be used to apply special styling, validation logic, or UI indicators to highlight
2241
+ * fieldsets that contain mandatory information. It helps with form validation feedback and
2242
+ * user experience by making required sections more prominent.
2243
+ *
2244
+ * @type {boolean}
2245
+ * @default false
2246
+ * @memberOf FieldsetComponent
2247
+ */
2248
+ isRequired: boolean = false;
2249
+ &nbsp;
2250
+ /**
2251
+ * @description Indicates whether the fieldset contains validation errors.
2252
+ * @summary Boolean flag that tracks if any form fields within the fieldset have validation errors.
2253
+ * This property is used to control accordion behavior when errors are present, preventing
2254
+ * users from collapsing the accordion when they need to see and address validation issues.
2255
+ * It's automatically updated when validation error events are received from child form fields.
2256
+ *
2257
+ * @type {boolean}
2258
+ * @default false
2259
+ * @memberOf FieldsetComponent
2260
+ */
2261
+ hasValidationErrors: boolean = false;
2262
+ &nbsp;
2263
+ /**
2264
+ * @description Validation error message for duplicate values.
2265
+ * @summary Stores the error message when a user attempts to add a duplicate value
2266
+ * to the fieldset. Used to display uniqueness validation feedback.
2267
+ *
2268
+ * @type {string | undefined}
2269
+ * @memberOf FieldsetComponent
2270
+ */
2271
+ isUniqueError: string | undefined = undefined;
2272
+ &nbsp;
2273
+ /**
2274
+ * @description Localized label text for action buttons.
2275
+ * @summary Dynamic button label that changes based on the current operation mode.
2276
+ * Shows "Add" for create operations and "Update" for edit operations.
2277
+ *
2278
+ * @type {string}
2279
+ * @memberOf FieldsetComponent
2280
+ */
2281
+ buttonLabel!: string;
2282
+ &nbsp;
2283
+ /**
2284
+ * @description Localized label text for action buttons.
2285
+ * @summary Dynamic button label that changes based on the current operation mode.
2286
+ * Shows "Cancel" for update operations
2287
+ *
2288
+ * @type {string}
2289
+ * @memberOf FieldsetComponent
2290
+ */
2291
+ buttonCancelLabel!: string;
2292
+ &nbsp;
2293
+ /**
2294
+ * @description Maximum allowed items in the fieldset.
2295
+ * @summary Numeric limit that controls how many items can be added when `multiple` is true.
2296
+ * When set to Infinity there is no limit.
2297
+ *
2298
+ * @type {number}
2299
+ * @default Infinity
2300
+ * @memberOf FieldsetComponent
2301
+ */
2302
+ @Input()
2303
+ max: number | undefined = undefined;
2304
+ &nbsp;
2305
+ /**
2306
+ * @description Maximum allowed items in the fieldset.
2307
+ * @summary Numeric limit that controls how many items can be added when `multiple` is true.
2308
+ * When set to Infinity there is no limit.
2309
+ *
2310
+ * @type {number}
2311
+ * @default Infinity
2312
+ * @memberOf FieldsetComponent
2313
+ */
2314
+ @Input()
2315
+ required: boolean = false;
2316
+ &nbsp;
2317
+ /**
2318
+ * @description Determines if the fieldset items can be reordered.
2319
+ * @summary Boolean flag that enables or disables the drag-and-drop reordering functionality
2320
+ * for the items within the fieldset. When set to true, users can rearrange the order
2321
+ * of items using drag-and-drop gestures. This is particularly useful for managing
2322
+ * lists where the order of items is significant.
2323
+ *
2324
+ * @type {boolean}
2325
+ * @default true
2326
+ * @memberOf FieldsetComponent
2327
+ */
2328
+ @Input()
2329
+ ordenable: boolean = true;
2330
+ &nbsp;
2331
+ /**
2332
+ * @description Determines if the fieldset items can be edited by the user.
2333
+ * @summary Boolean flag that enables or disables the editing functionality
2334
+ * for the items within the fieldset. When set to true, users can modify the items.
2335
+ *
2336
+ * @type {boolean}
2337
+ * @default true
2338
+ * @memberOf FieldsetComponent
2339
+ * @default true
2340
+ */
2341
+ @Input()
2342
+ editable: boolean = true;
2343
+ &nbsp;
2344
+ /**
2345
+ * @description Component constructor that initializes the fieldset with icons and component name.
2346
+ * @summary Calls the parent NgxFormDirective constructor with the component name and
2347
+ * required Ionic icons (alertCircleOutline for validation errors and createOutline for add actions).
2348
+ * Sets up the foundational component structure and icon registry.
2349
+ *
2350
+ * @memberOf FieldsetComponent
2351
+ */
2352
+ constructor() {
2353
+ super('FieldsetComponent');
2354
+ addIcons({ alertCircleOutline, addOutline, trashOutline, createOutline });
2355
+ }
2356
+ &nbsp;
2357
+ /**
2358
+ * @description Component initialization lifecycle method.
2359
+ * @summary Initializes the component by setting up repository relationships if a model exists,
2360
+ * and configures the initial button label for the add action based on the current locale.
2361
+ * This method ensures proper setup of translation services and component state.
2362
+ *
2363
+ * @returns {void}
2364
+ * @memberOf FieldsetComponent
2365
+ */
2366
+ async ngOnInit(): Promise&lt;void&gt; {
2367
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.max &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this.max === 1)</span> <span class="cstat-no" title="statement not covered" >this.multiple = false;</span>
2368
+ this.buttonLabel = this.translateService.instant(this.locale + '.add');
2369
+ this.buttonCancelLabel = this.translateService.instant(this.locale + '.cancel');
2370
+ &nbsp;
2371
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.multiple) <span class="cstat-no" title="statement not covered" >this.ordenable = false;</span>
2372
+ &nbsp;
2373
+ if ([OperationKeys.CREATE, OperationKeys.UPDATE].includes(this.operation)) {
2374
+ if (!this.formGroup) {
2375
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.parentForm instanceof FormGroup) {
2376
+ // iterate on childOf path to get correct formGroup
2377
+ const parts = (<span class="cstat-no" title="statement not covered" >this.childOf as string).split('.');</span>
2378
+ let formGroup = <span class="cstat-no" title="statement not covered" >this.parentForm as FormParent;</span>
2379
+ <span class="cstat-no" title="statement not covered" > for (const part of parts)</span>
2380
+ <span class="cstat-no" title="statement not covered" > formGroup = (formGroup as FormGroup).controls[part] as FormParent;</span>
2381
+ <span class="cstat-no" title="statement not covered" > this.formGroup = formGroup;</span>
2382
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.formGroup instanceof FormGroup)</span>
2383
+ <span class="cstat-no" title="statement not covered" > this.formGroup = this.formGroup.parent as FormArray;</span>
2384
+ }
2385
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.formGroup &amp;&amp; this.parentForm instanceof FormArray)
2386
+ <span class="cstat-no" title="statement not covered" > this.formGroup = this.parentForm;</span>
2387
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.formGroup &amp;&amp; (this.children[0] as KeyValue)?.['formGroup'] instanceof FormGroup)
2388
+ <span class="cstat-no" title="statement not covered" > this.formGroup = (this.children[0] as KeyValue)?.['formGroup'].parent as FormArray;</span>
2389
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.formGroup &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!(this.formGroup instanceof FormArray))</span>
2390
+ <span class="cstat-no" title="statement not covered" > this.formGroup = (this.formGroup as FormParent)?.parent as FormArray;</span>
2391
+ }
2392
+ }
2393
+ if (this.multiple) {
2394
+ this.formGroup?.setErrors(null);
2395
+ this.formGroup?.disable();
2396
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.required) {
2397
+ // this.collapsable = false;
2398
+ <span class="cstat-no" title="statement not covered" > this.activePage = this.getActivePage();</span>
2399
+ }
2400
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>{
2401
+ <span class="cstat-no" title="statement not covered" > this.activePage = this.getActivePage();</span>
2402
+ }
2403
+ &nbsp;
2404
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this.pk) {
2405
+ <span class="cstat-no" title="statement not covered" > this.mapper = Object.assign(this.mapper || {}, { [this.pk]: this.pk });</span>
2406
+ }
2407
+ await this.initialize();
2408
+ }
2409
+ &nbsp;
2410
+ override async initialize(): Promise&lt;void&gt; {
2411
+ await super.initialize();
2412
+ await this.refresh();
2413
+ }
2414
+ &nbsp;
2415
+ /**
2416
+ * @description Initializes the component state after view and child components are rendered.
2417
+ * @summary This lifecycle hook implements intelligent auto-state management based on the current
2418
+ * CRUD operation. For READ and DELETE operations, the fieldset automatically opens to provide
2419
+ * immediate access to information, while CREATE and UPDATE operations keep it closed to maintain
2420
+ * a clean initial interface. The method directly manipulates the DOM to ensure proper accordion
2421
+ * synchronization and triggers change detection to reflect the programmatic state changes.
2422
+ *
2423
+ * @mermaid
2424
+ * sequenceDiagram
2425
+ * participant A as Angular Lifecycle
2426
+ * participant F as FieldsetComponent
2427
+ * participant D as DOM
2428
+ * participant C as ChangeDetector
2429
+ *
2430
+ * A-&gt;&gt;F: ngAfterViewInit()
2431
+ * alt operation is READ or DELETE
2432
+ * F-&gt;&gt;F: Set isOpen = true
2433
+ * F-&gt;&gt;D: Query ion-accordion-group element
2434
+ * alt accordion element exists
2435
+ * F-&gt;&gt;D: Set value attribute to 'open'
2436
+ * end
2437
+ * end
2438
+ * F-&gt;&gt;C: detectChanges()
2439
+ * C-&gt;&gt;F: Update view with new state
2440
+ *
2441
+ * @returns {Promise&lt;void&gt;}
2442
+ * @memberOf FieldsetComponent
2443
+ */
2444
+ override async ngAfterViewInit(): Promise&lt;void&gt; {
2445
+ await super.ngAfterViewInit();
2446
+ }
2447
+ &nbsp;
2448
+ override async refresh(operation?: CrudOperationKeys): Promise&lt;void&gt; {
2449
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (operation) {
2450
+ <span class="cstat-no" title="statement not covered" > this.operation = operation;</span>
2451
+ <span class="cstat-no" title="statement not covered" > this.changeDetectorRef.detectChanges();</span>
2452
+ }
2453
+ if (this._data &amp;&amp; !this.value?.length) {
2454
+ function resolvePath(obj: KeyValue, path: string) {
2455
+ return path.split('.').reduce((acc, key) =&gt; {
2456
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (acc &amp;&amp; key in acc) {
2457
+ <span class="cstat-no" title="statement not covered" > return acc[key];</span>
2458
+ }
2459
+ return false;
2460
+ }, obj);
2461
+ }
2462
+ if (!Array.isArray(this._data)) {
2463
+ this._data = resolvePath(this._data, this.childOf as string);
2464
+ }
2465
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (this._data) {
2466
+ const data = <span class="cstat-no" title="statement not covered" >this._data || [];</span>
2467
+ <span class="cstat-no" title="statement not covered" > if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation)) {</span>
2468
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(data)) <span class="cstat-no" title="statement not covered" >this._data = [data];</span></span>
2469
+ <span class="cstat-no" title="statement not covered" > this.items = [</span>
2470
+ ...this._data.map(<span class="fstat-no" title="function not covered" >(v</span>: KeyValue) =&gt; {
2471
+ <span class="cstat-no" title="statement not covered" > return this.children.map(<span class="fstat-no" title="function not covered" >(c</span>hild) =&gt; {</span>
2472
+ const { props, tag } = <span class="cstat-no" title="statement not covered" >child as KeyValue;</span>
2473
+ <span class="cstat-no" title="statement not covered" > return {</span>
2474
+ tag,
2475
+ props: {
2476
+ ...props,
2477
+ value: v[props.name] || '',
2478
+ },
2479
+ };
2480
+ });
2481
+ }),
2482
+ ];
2483
+ } else {
2484
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(data)) {</span>
2485
+ <span class="cstat-no" title="statement not covered" > this.value = [];</span>
2486
+ <span class="cstat-no" title="statement not covered" > data.map(<span class="fstat-no" title="function not covered" >(v</span>) =&gt; {</span>
2487
+ const formGroup = <span class="cstat-no" title="statement not covered" >this.activeFormGroup as FormGroup;</span>
2488
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (data.length &gt; (formGroup.parent as FormArray).length)</span>
2489
+ <span class="cstat-no" title="statement not covered" > NgxFormService.addGroupToParent(formGroup.parent as FormArray);</span>
2490
+ &nbsp;
2491
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Object.keys(this.mapper).length) <span class="cstat-no" title="statement not covered" >this.mapper = this.getMapper(v as KeyValue);</span></span>
2492
+ <span class="cstat-no" title="statement not covered" > Object.entries(v).forEach(<span class="fstat-no" title="function not covered" >([</span>key, value]) =&gt; {</span>
2493
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (key === this.pk)</span>
2494
+ <span class="cstat-no" title="statement not covered" > formGroup.addControl(key, new FormControl({ value: value, disabled: false }));</span>
2495
+ const control = <span class="cstat-no" title="statement not covered" >formGroup.get(key);</span>
2496
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (control instanceof FormControl) {</span>
2497
+ <span class="cstat-no" title="statement not covered" > control.setValue(value);</span>
2498
+ <span class="cstat-no" title="statement not covered" > control.updateValueAndValidity();</span>
2499
+ <span class="cstat-no" title="statement not covered" > formGroup.updateValueAndValidity();</span>
2500
+ }
2501
+ });
2502
+ <span class="cstat-no" title="statement not covered" > this.activeFormGroupIndex = (formGroup.parent as FormArray).length - 1;</span>
2503
+ });
2504
+ <span class="cstat-no" title="statement not covered" > this.setValue();</span>
2505
+ // this.changeDetectorRef.detectChanges();
2506
+ }
2507
+ // this.getItems(data as []);
2508
+ }
2509
+ }
2510
+ }
2511
+ // this.refreshing = true;
2512
+ // this.changeDetectorRef.detectChanges();
2513
+ // if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation)) {
2514
+ // // if(!this.multiple) {
2515
+ // // this.required = this.collapsable = false;
2516
+ // // }
2517
+ // this.items = [
2518
+ // ...this.value.map((v) =&gt; {
2519
+ // return this.children.map((child) =&gt; {
2520
+ // const { props, tag } = child as KeyValue;
2521
+ // return {
2522
+ // tag,
2523
+ // props: {
2524
+ // ...props,
2525
+ // value: v[props.name] || "",
2526
+ // },
2527
+ // };
2528
+ // });
2529
+ // }),
2530
+ // ] as UIElementMetadata[][];
2531
+ // }
2532
+ // if ([OperationKeys.CREATE, OperationKeys.UPDATE].includes(this.operation)) {
2533
+ // const value = [...this.value];
2534
+ // this.value = [];
2535
+ // value.map((v) =&gt; {
2536
+ // const formGroup = this.activeFormGroup as FormGroup;
2537
+ // if (value.length &gt; (formGroup.parent as FormArray).length)
2538
+ // NgxFormService.addGroupToParent(formGroup.parent as FormArray);
2539
+ &nbsp;
2540
+ // if (!Object.keys(this.mapper).length)
2541
+ // this.mapper = this.getMapper(v as KeyValue);
2542
+ // Object.entries(v).forEach(([key, value]) =&gt; {
2543
+ // if (key === this.pk)
2544
+ // formGroup.addControl(
2545
+ // key,
2546
+ // new FormControl({ value: value, disabled: false })
2547
+ // );
2548
+ // const control = formGroup.get(key);
2549
+ // if (control instanceof FormControl) {
2550
+ // control.setValue(value);
2551
+ // control.updateValueAndValidity();
2552
+ // formGroup.updateValueAndValidity();
2553
+ // }
2554
+ // });
2555
+ // this.activeFormGroupIndex = (formGroup.parent as FormArray).length - 1;
2556
+ // });
2557
+ // this.setValue();
2558
+ // this.changeDetectorRef.detectChanges();
2559
+ // }
2560
+ // this.refreshing = false;
2561
+ // this.changeDetectorRef.detectChanges();
2562
+ }
2563
+ &nbsp;
2564
+ /**
2565
+ * @description Handles removal of the fieldset with slide animation.
2566
+ * @summary Initiates the removal process for the fieldset with a smooth slide-up animation.
2567
+ * The method applies CSS classes for the slide animation and then safely removes the
2568
+ * element from the DOM using Renderer2. This provides a polished user experience
2569
+ * when removing fieldset instances from dynamic forms.
2570
+ *
2571
+ * @param {Event} event - DOM event from the remove button click
2572
+ * @returns {void}
2573
+ * @memberOf FieldsetComponent
2574
+ */
2575
+ <span class="fstat-no" title="function not covered" > handleClear(</span>event?: Event): void {
2576
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (event) <span class="cstat-no" title="statement not covered" >event.stopImmediatePropagation();</span></span>
2577
+ <span class="cstat-no" title="statement not covered" > this.formGroup?.disable();</span>
2578
+ <span class="cstat-no" title="statement not covered" > this.isOpen = false;</span>
2579
+ <span class="cstat-no" title="statement not covered" > this.items = [];</span>
2580
+ <span class="cstat-no" title="statement not covered" > this.value = undefined as unknown as KeyValue[];</span>
2581
+ <span class="cstat-no" title="statement not covered" > this.activePage = undefined;</span>
2582
+ <span class="cstat-no" title="statement not covered" > this.activeFormGroupIndex = 0;</span>
2583
+ <span class="cstat-no" title="statement not covered" > this.changeDetectorRef.detectChanges();</span>
2584
+ }
2585
+ &nbsp;
2586
+ /**
2587
+ * @description Handles creating new items or triggering group addition events.
2588
+ * @summary Processes form validation events for item creation or emits events to trigger
2589
+ * the addition of new fieldset groups. When called with validation event data, it validates
2590
+ * uniqueness and adds the item to the fieldset. When called without parameters, it triggers
2591
+ * a group addition event for parent components to handle.
2592
+ *
2593
+ * @param {CustomEvent&lt;IFieldSetValidationEvent&gt;} [event] - Optional validation event containing form data
2594
+ * @returns {Promise&lt;void&gt;}
2595
+ * @memberOf FieldsetComponent
2596
+ *
2597
+ * @example
2598
+ * ```typescript
2599
+ * // Called from form validation
2600
+ * handleCreateItem(validationEvent);
2601
+ *
2602
+ * // Called to trigger group addition
2603
+ * handleCreateItem();
2604
+ * ```
2605
+ */
2606
+ <span class="fstat-no" title="function not covered" > async </span>handleCreateItem(event?: CustomEvent&lt;IFieldSetValidationEvent&gt;): Promise&lt;void | boolean&gt; {
2607
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (event &amp;&amp; event instanceof CustomEvent) <span class="cstat-no" title="statement not covered" >event.stopImmediatePropagation();</span></span>
2608
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.activePage) {</span>
2609
+ <span class="cstat-no" title="statement not covered" > this.activePage = this.getActivePage();</span>
2610
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.operation === OperationKeys.UPDATE) <span class="cstat-no" title="statement not covered" >return this.handleCreateItem(event);</span></span>
2611
+ <span class="cstat-no" title="statement not covered" > return;</span>
2612
+ }
2613
+ const formGroup = <span class="cstat-no" title="statement not covered" >this.activeFormGroup as FormGroup;</span>
2614
+ const value = <span class="cstat-no" title="statement not covered" >formGroup.value;</span>
2615
+ const hasSomeValue = <span class="cstat-no" title="statement not covered" >this.hasValue(value);</span>
2616
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (hasSomeValue) {</span>
2617
+ const action = <span class="cstat-no" title="statement not covered" >this.updatingItem ? OperationKeys.UPDATE : OperationKeys.CREATE;</span>
2618
+ const isValid = <span class="cstat-no" title="statement not covered" >NgxFormService.validateFields(formGroup);</span>
2619
+ &nbsp;
2620
+ // must pass correct pk here
2621
+ const isUnique = <span class="cstat-no" title="statement not covered" >NgxFormService.isUniqueOnGroup(</span>
2622
+ formGroup,
2623
+ action,
2624
+ action === OperationKeys.UPDATE ? this.updatingItem?.index : undefined,
2625
+ );
2626
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isValid) {</span>
2627
+ <span class="cstat-no" title="statement not covered" > this.mapper = this.getMapper(value as KeyValue);</span>
2628
+ <span class="cstat-no" title="statement not covered" > if (isUnique) {</span>
2629
+ <span class="cstat-no" title="statement not covered" > this.isUniqueError = this.updatingItem = undefined;</span>
2630
+ <span class="cstat-no" title="statement not covered" > this.setValue();</span>
2631
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.max || (formGroup.parent as FormArray)?.length &lt; this.max) {</span>
2632
+ <span class="cstat-no" title="statement not covered" > NgxFormService.addGroupToParent(formGroup.parent as FormArray);</span>
2633
+ <span class="cstat-no" title="statement not covered" > this.activeFormGroupIndex = (formGroup.parent as FormArray).length - 1;</span>
2634
+ <span class="cstat-no" title="statement not covered" > this.activePage = this.getActivePage();</span>
2635
+ }
2636
+ } else {
2637
+ <span class="cstat-no" title="statement not covered" > this.isUniqueError =</span>
2638
+ typeof value === ReservedModels.OBJECT.name.toLowerCase()
2639
+ ? (value as KeyValue)?.[this.pk] || undefined
2640
+ : value;
2641
+ }
2642
+ }
2643
+ }
2644
+ }
2645
+ &nbsp;
2646
+ <span class="fstat-no" title="function not covered" > hasValue(</span>value: KeyValue = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: boolean {
2647
+ <span class="cstat-no" title="statement not covered" > return Object.keys(value).some(</span>
2648
+ <span class="fstat-no" title="function not covered" > (k</span>ey) =&gt; <span class="cstat-no" title="statement not covered" >value[key] !== null &amp;&amp; value[key] !== undefined &amp;&amp; value[key] !== '',</span>
2649
+ );
2650
+ }
2651
+ &nbsp;
2652
+ <span class="fstat-no" title="function not covered" > handleUpdateItem(</span>index: number): void {
2653
+ const formGroup = <span class="cstat-no" title="statement not covered" >this.getFormArrayIndex(index);</span>
2654
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (formGroup) {</span>
2655
+ <span class="cstat-no" title="statement not covered" > this.updatingItem = Object.assign({}, formGroup.value || {}, { index });</span>
2656
+ <span class="cstat-no" title="statement not covered" > this.activeFormGroupIndex = index;</span>
2657
+ <span class="cstat-no" title="statement not covered" > this.activePage = this.getActivePage();</span>
2658
+ }
2659
+ }
2660
+ &nbsp;
2661
+ /**
2662
+ * @description Cancels the update mode and resets the UI state.
2663
+ * @summary Exits the update mode by resetting the button label and clearing the updating item,
2664
+ * restoring the component to its default state for adding new items. Notifies parent components
2665
+ * that the update operation has been cancelled.
2666
+ *
2667
+ * @returns {void}
2668
+ * @memberOf FieldsetComponent
2669
+ */
2670
+ <span class="fstat-no" title="function not covered" > handleCancelUpdateItem(</span>): void {
2671
+ <span class="cstat-no" title="statement not covered" > this.buttonLabel = this.translateService.instant(this.locale + '.add');</span>
2672
+ <span class="cstat-no" title="statement not covered" > this.updatingItem = undefined;</span>
2673
+ <span class="cstat-no" title="statement not covered" > this.activeFormGroupIndex = (this.formGroup as FormArray)?.length - 1;</span>
2674
+ <span class="cstat-no" title="statement not covered" > this.getFormArrayIndex(this.activeFormGroupIndex);</span>
2675
+ }
2676
+ &nbsp;
2677
+ /**
2678
+ * @description Handles item removal operations with form array management.
2679
+ * @summary Processes item removal by either handling validation events or removing specific
2680
+ * items from the form array. When called with a validation event, it triggers value updates.
2681
+ * When called with an identifier, it locates and removes the matching item from the form array.
2682
+ *
2683
+ * @param {number} index - The identifier of the item to remove
2684
+ * @returns {void}
2685
+ * @memberOf FieldsetComponent
2686
+ */
2687
+ <span class="fstat-no" title="function not covered" > async </span>handleRemoveItem(
2688
+ index: number,
2689
+ confirmed: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
2690
+ value: KeyValue | undefined = <span class="branch-0 cbranch-no" title="branch not covered" >undefined,</span>
2691
+ ): Promise&lt;void&gt; {
2692
+ const repository = <span class="cstat-no" title="statement not covered" >this._repository;</span>
2693
+ const formArray = <span class="cstat-no" title="statement not covered" >this.formGroup as FormArray;</span>
2694
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!value) {</span>
2695
+ <span class="cstat-no" title="statement not covered" > value = this.value?.length ? formArray?.at(index)?.value || {} : this.items[index];</span>
2696
+ }
2697
+ // only ask for confirmation for items already saved in the repository
2698
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (repository &amp;&amp; !confirmed &amp;&amp; value?.[this.pk] !== undefined) {</span>
2699
+ const item = <span class="cstat-no" title="statement not covered" >await this.translate(this.title);</span>
2700
+ const modal = <span class="cstat-no" title="statement not covered" >await presentModalConfirm(</span>
2701
+ {
2702
+ data: {
2703
+ item,
2704
+ pk: this.pk,
2705
+ uid: value[this.pk],
2706
+ },
2707
+ },
2708
+ ActionRoles.delete,
2709
+ this.injector,
2710
+ );
2711
+ <span class="cstat-no" title="statement not covered" > await modal.present();</span>
2712
+ const { role } = <span class="cstat-no" title="statement not covered" >await modal.onDidDismiss();</span>
2713
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (role === ActionRoles.confirm) <span class="cstat-no" title="statement not covered" >return this.handleRemoveItem(index, true, value);</span></span>
2714
+ <span class="cstat-no" title="statement not covered" > return;</span>
2715
+ }
2716
+ <span class="cstat-no" title="statement not covered" > this.items = this.items.filter(<span class="fstat-no" title="function not covered" >(_</span>, i) =&gt; <span class="cstat-no" title="statement not covered" >i !== index)</span>;</span>
2717
+ &nbsp;
2718
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.value.length) {</span>
2719
+ <span class="cstat-no" title="statement not covered" > if (formArray.length === 1) {</span>
2720
+ const currentGroup = <span class="cstat-no" title="statement not covered" >formArray.at(0) as FormGroup;</span>
2721
+ <span class="cstat-no" title="statement not covered" > Object.keys(currentGroup?.controls).forEach(<span class="fstat-no" title="function not covered" >(c</span>ontrolName) =&gt; {</span>
2722
+ <span class="cstat-no" title="statement not covered" > currentGroup.get(controlName)?.setValue(null);</span>
2723
+ });
2724
+ } else {
2725
+ <span class="cstat-no" title="statement not covered" > formArray.removeAt(index);</span>
2726
+ }
2727
+ <span class="cstat-no" title="statement not covered" > this.setValue();</span>
2728
+ }
2729
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (repository &amp;&amp; value?.[this.pk] !== undefined) {</span>
2730
+ <span class="cstat-no" title="statement not covered" > this.handleEmitEvent(value || {}, OperationKeys.DELETE);</span>
2731
+ }
2732
+ <span class="cstat-no" title="statement not covered" > if (this.items.length &gt; 0) {</span>
2733
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.activeFormGroupIndex &gt; 0) <span class="cstat-no" title="statement not covered" >this.activeFormGroupIndex = this.activeFormGroupIndex - 1;</span></span>
2734
+ } else {
2735
+ <span class="cstat-no" title="statement not covered" > this.handleClear();</span>
2736
+ }
2737
+ }
2738
+ &nbsp;
2739
+ /**
2740
+ * @description Handles reordering of items within the fieldset list.
2741
+ * @summary Processes drag-and-drop reorder events from the ion-reorder-group component.
2742
+ * Updates both the display items array and the underlying value array to maintain
2743
+ * consistency between UI state and data state. Preserves item indices after reordering.
2744
+ *
2745
+ * @param {CustomEvent&lt;ItemReorderEventDetail&gt;} event - Ionic reorder event containing source and target indices
2746
+ * @returns {void}
2747
+ * @memberOf FieldsetComponent
2748
+ *
2749
+ * @example
2750
+ * ```html
2751
+ * &lt;ion-reorder-group (ionItemReorder)="handleReorder($event)"&gt;
2752
+ * &lt;!-- Reorderable items --&gt;
2753
+ * &lt;/ion-reorder-group&gt;
2754
+ * ```
2755
+ */
2756
+ <span class="fstat-no" title="function not covered" > handleReorderItems(</span>event: CustomEvent&lt;ItemReorderEventDetail&gt;): void {
2757
+ const fromIndex = <span class="cstat-no" title="statement not covered" >event.detail.from;</span>
2758
+ const toIndex = <span class="cstat-no" title="statement not covered" >event.detail.to;</span>
2759
+ &nbsp;
2760
+ const items = <span class="cstat-no" title="statement not covered" >[...this.items];</span> // visual data
2761
+ const formArray = <span class="cstat-no" title="statement not covered" >this.formGroup as FormArray;</span> // FormArray
2762
+ &nbsp;
2763
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (fromIndex !== toIndex) {</span>
2764
+ <span class="cstat-no" title="statement not covered" > this.items = [];</span>
2765
+ // reorder visual data
2766
+ const itemToMove = <span class="cstat-no" title="statement not covered" >items.splice(fromIndex, 1)[0];</span>
2767
+ <span class="cstat-no" title="statement not covered" > items.splice(toIndex, 0, itemToMove);</span>
2768
+ <span class="cstat-no" title="statement not covered" > items.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, index) =&gt; ((<span class="cstat-no" title="statement not covered" >item as IFieldSetItem)['index'] = index + 1)</span>);</span>
2769
+ &nbsp;
2770
+ // reorder FormArray controls
2771
+ const controlToMove = <span class="cstat-no" title="statement not covered" >formArray.at(fromIndex);</span>
2772
+ <span class="cstat-no" title="statement not covered" > formArray.removeAt(fromIndex);</span>
2773
+ <span class="cstat-no" title="statement not covered" > formArray.insert(toIndex, controlToMove);</span>
2774
+ }
2775
+ <span class="cstat-no" title="statement not covered" > this.items = [...(items as IFieldSetItem[])];</span>
2776
+ <span class="cstat-no" title="statement not covered" > event.detail.complete();</span>
2777
+ }
2778
+ &nbsp;
2779
+ /**
2780
+ * @description Handles accordion state change events from user interactions.
2781
+ * @summary Processes CustomEvent objects triggered when users expand or collapse the accordion.
2782
+ * This method extracts the new state from the event details and updates the component's
2783
+ * internal state accordingly. It specifically listens for ION-ACCORDION-GROUP events to
2784
+ * ensure proper event source validation and prevent handling of unrelated events.
2785
+ *
2786
+ * @param {CustomEvent} event - The event object containing accordion state change details
2787
+ * @returns {void}
2788
+ *
2789
+ * @mermaid
2790
+ * sequenceDiagram
2791
+ * participant U as User
2792
+ * participant I as Ion-Accordion
2793
+ * participant F as FieldsetComponent
2794
+ *
2795
+ * U-&gt;&gt;I: Click accordion header
2796
+ * I-&gt;&gt;F: handleChange(CustomEvent)
2797
+ * F-&gt;&gt;F: Extract target and detail from event
2798
+ * F-&gt;&gt;F: Validate target is ION-ACCORDION-GROUP
2799
+ * alt valid target
2800
+ * F-&gt;&gt;F: Update isOpen = !!value
2801
+ * end
2802
+ * F-&gt;&gt;I: Reflect updated state
2803
+ *
2804
+ * @memberOf FieldsetComponent
2805
+ */
2806
+ &nbsp;
2807
+ <span class="fstat-no" title="function not covered" > handleEmitEvent(</span>value: KeyValue, operation: CrudOperations): void {
2808
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2809
+ this._repository &amp;&amp;
2810
+ this.operation === OperationKeys.UPDATE &amp;&amp;
2811
+ value[this.pk] !== undefined
2812
+ ) {
2813
+ <span class="cstat-no" title="statement not covered" > this.listenEvent.emit({</span>
2814
+ name: ComponentEventNames.Submit,
2815
+ role: operation,
2816
+ component: this.componentName,
2817
+ handler: this.handlers[ComponentEventNames.Submit] || undefined,
2818
+ data: value,
2819
+ context: {
2820
+ repository: this._repository as DecafRepository&lt;Model&gt;,
2821
+ modelName: this.name as string,
2822
+ },
2823
+ });
2824
+ }
2825
+ }
2826
+ &nbsp;
2827
+ /**
2828
+ * @description Handles validation error events from child form fields.
2829
+ * @summary Processes validation error events dispatched by form fields within the fieldset.
2830
+ * When errors are detected, the accordion is forced open and prevented from collapsing
2831
+ * to ensure users can see the validation messages. This method updates the component's
2832
+ * error state and accordion visibility accordingly.
2833
+ *
2834
+ * @param {CustomEvent} event - Custom event containing validation error details
2835
+ * @returns {UIModelMetadata[] | undefined}
2836
+ * @memberOf FieldsetComponent
2837
+ */
2838
+ // handleValidationError(event: CustomEvent): void {
2839
+ // event.stopImmediatePropagation();
2840
+ // const {hasErrors} = event.detail;
2841
+ // this.isOpen = this.hasValidationErrors = hasErrors;
2842
+ // if (hasErrors)
2843
+ // this.accordionComponent.value = 'open';
2844
+ // }
2845
+ &nbsp;
2846
+ protected override <span class="fstat-no" title="function not covered" >getActivePage(</span>): UIModelMetadata[] | undefined {
2847
+ <span class="cstat-no" title="statement not covered" > this.activePage = undefined;</span>
2848
+ <span class="cstat-no" title="statement not covered" > this.isOpen = true;</span>
2849
+ <span class="cstat-no" title="statement not covered" > this.changeDetectorRef.detectChanges();</span>
2850
+ <span class="cstat-no" title="statement not covered" > this.timerSubscription = timer(10).subscribe(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
2851
+ <span class="cstat-no" title="statement not covered" > this.children = this.children.map(<span class="fstat-no" title="function not covered" >(c</span>hild) =&gt; {</span>
2852
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!child.props) <span class="cstat-no" title="statement not covered" >child.props = {};</span></span>
2853
+ <span class="cstat-no" title="statement not covered" > child.props = Object.assign(child.props, {</span>
2854
+ activeFormGroup: this.activeFormGroupIndex,
2855
+ multiple: this.multiple,
2856
+ });
2857
+ <span class="cstat-no" title="statement not covered" > return child;</span>
2858
+ });
2859
+ });
2860
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.multiple &amp;&amp; [OperationKeys.CREATE, OperationKeys.UPDATE].includes(this.operation))</span>
2861
+ <span class="cstat-no" title="statement not covered" > this.getFormArrayIndex(this.activeFormGroupIndex);</span>
2862
+ <span class="cstat-no" title="statement not covered" > return this.children as UIModelMetadata[];</span>
2863
+ }
2864
+ &nbsp;
2865
+ /**
2866
+ * @description Processes and stores a new or updated value in the fieldset.
2867
+ * @summary Handles both create and update operations for fieldset items. Parses and cleans
2868
+ * the input value, determines the operation type based on the updating state, and either
2869
+ * adds a new item or updates an existing one. Maintains data integrity and UI consistency.
2870
+ *
2871
+ * @returns {void}
2872
+ * @private
2873
+ * @memberOf FieldsetComponent
2874
+ */
2875
+ protected <span class="fstat-no" title="function not covered" >setValue(</span>): void {
2876
+ const formGroup = <span class="cstat-no" title="statement not covered" >this.formGroup as FormArray;</span>
2877
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (formGroup?.length) {</span>
2878
+ const value = <span class="cstat-no" title="statement not covered" >formGroup.controls.map(<span class="fstat-no" title="function not covered" >({</span> value }) =&gt; <span class="cstat-no" title="statement not covered" >value)</span>.filter(<span class="fstat-no" title="function not covered" >(v</span>) =&gt; <span class="cstat-no" title="statement not covered" >this.hasValue(v))</span>;</span>
2879
+ <span class="cstat-no" title="statement not covered" > this.value = value;</span>
2880
+ <span class="cstat-no" title="statement not covered" > this.getItems(value);</span>
2881
+ }
2882
+ <span class="cstat-no" title="statement not covered" > this.updatingItem = undefined;</span>
2883
+ }
2884
+ &nbsp;
2885
+ private <span class="fstat-no" title="function not covered" >getItems(</span>value: KeyValue[]): void {
2886
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (value) {</span>
2887
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(value)) {</span>
2888
+ <span class="cstat-no" title="statement not covered" > value = [value];</span>
2889
+ }
2890
+ <span class="cstat-no" title="statement not covered" > this.items = [</span>
2891
+ ...value
2892
+ .map(<span class="fstat-no" title="function not covered" >(v</span>) =&gt; {
2893
+ <span class="cstat-no" title="statement not covered" > return {</span>
2894
+ ...v,
2895
+ index: this.items?.length ? this.items.length + 1 : 1,
2896
+ };
2897
+ })
2898
+ .filter(<span class="fstat-no" title="function not covered" >(v</span>) =&gt; {
2899
+ // return `${v[this.pk] || ""}`.trim().length;
2900
+ <span class="cstat-no" title="statement not covered" > return Object.entries(v).some(</span>
2901
+ <span class="fstat-no" title="function not covered" > ([</span>k, v]) =&gt; <span class="cstat-no" title="statement not covered" >k !== 'index' &amp;&amp; v !== undefined &amp;&amp; String(v).trim().length,</span>
2902
+ );
2903
+ })
2904
+ .map(<span class="fstat-no" title="function not covered" >(v</span>, index) =&gt; {
2905
+ <span class="cstat-no" title="statement not covered" > return {</span>
2906
+ ...itemMapper(Object.assign({}, v), this.mapper, {
2907
+ [this.pk]: this.pk || undefined,
2908
+ }),
2909
+ index: v.index &gt; 1 ? v.index : index + 1,
2910
+ } as IFieldSetItem;
2911
+ }),
2912
+ ];
2913
+ }
2914
+ }
2915
+ &nbsp;
2916
+ /**
2917
+ * @description Automatically configures the field mapping based on the value structure.
2918
+ * @summary Analyzes the provided value object to automatically determine the primary key
2919
+ * and create appropriate field mappings for display purposes. Sets up the mapper object
2920
+ * with title, description, and index fields based on the available data structure.
2921
+ *
2922
+ * @param {KeyValue} value - Sample value object used to determine field mappings
2923
+ * @returns {KeyValue} The configured mapper object
2924
+ * @private
2925
+ * @memberOf FieldsetComponent
2926
+ */
2927
+ private <span class="fstat-no" title="function not covered" >getMapper(</span>value: KeyValue): KeyValue {
2928
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.pk) <span class="cstat-no" title="statement not covered" >this.pk = Object.keys(value)[0];</span></span>
2929
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Object.keys(this.mapper).length) (<span class="cstat-no" title="statement not covered" >this.mapper as KeyValue)['title'] = this.pk;</span></span>
2930
+ (<span class="cstat-no" title="statement not covered" >this.mapper as KeyValue)['index'] = 'index';</span>
2931
+ <span class="cstat-no" title="statement not covered" > for (const key in value) {</span>
2932
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2933
+ Object.keys(this.mapper).length &gt;= 2 ||
2934
+ Object.keys(this.mapper).length === Object.keys(value).length
2935
+ )
2936
+ <span class="cstat-no" title="statement not covered" > break;</span>
2937
+ <span class="cstat-no" title="statement not covered" > if (!(this.mapper as KeyValue)['title']) {</span>
2938
+ (<span class="cstat-no" title="statement not covered" >this.mapper as KeyValue)['title'] = key;</span>
2939
+ } else {
2940
+ (<span class="cstat-no" title="statement not covered" >this.mapper as KeyValue)['description'] = key;</span>
2941
+ }
2942
+ }
2943
+ <span class="cstat-no" title="statement not covered" > return this.mapper;</span>
2944
+ }
2945
+ }
2946
+ &nbsp;</pre></td></tr></table></pre>
2947
+
2948
+ <div class='push'></div><!-- for sticky footer -->
2949
+ </div><!-- /wrapper -->
2950
+ <div class='footer quiet pad2 space-top1 center small'>
2951
+ Code coverage generated by
2952
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2953
+ at 2026-02-25T10:45:48.506Z
2954
+ </div>
2955
+ <script src="../../../../prettify.js"></script>
2956
+ <script>
2957
+ window.onload = function () {
2958
+ prettyPrint();
2959
+ };
2960
+ </script>
2961
+ <script src="../../../../sorter.js"></script>
2962
+ <script src="../../../../block-navigation.js"></script>
2963
+ </body>
2964
+ </html>
2965
+