@madie/madie-design-system 1.2.75 → 1.2.77

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 (249) hide show
  1. package/components/MadieAlert/index.jsx +3 -3
  2. package/components/MadieDialog/index.jsx +2 -2
  3. package/coverage/clover.xml +771 -0
  4. package/coverage/coverage-final.json +40 -0
  5. package/coverage/lcov-report/InputLabel/index.html +116 -0
  6. package/coverage/lcov-report/InputLabel/index.jsx.html +244 -0
  7. package/coverage/lcov-report/MadieTooltip/index.html +131 -0
  8. package/coverage/lcov-report/MadieTooltip/index.jsx.html +229 -0
  9. package/coverage/lcov-report/MadieTooltip/index.scss.html +274 -0
  10. package/coverage/lcov-report/MadieTooltipIcon/index.html +116 -0
  11. package/coverage/lcov-report/MadieTooltipIcon/index.jsx.html +178 -0
  12. package/coverage/lcov-report/TextField/index.html +116 -0
  13. package/coverage/lcov-report/TextField/index.jsx.html +556 -0
  14. package/coverage/lcov-report/base.css +224 -0
  15. package/coverage/lcov-report/block-navigation.js +87 -0
  16. package/coverage/lcov-report/favicon.png +0 -0
  17. package/coverage/lcov-report/index.html +626 -0
  18. package/coverage/lcov-report/prettify.css +1 -0
  19. package/coverage/lcov-report/prettify.js +2 -0
  20. package/coverage/lcov-report/react/components/Accordion/index.html +116 -0
  21. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +370 -0
  22. package/coverage/lcov-report/react/components/Alert/index.html +116 -0
  23. package/coverage/lcov-report/react/components/Alert/index.js.html +250 -0
  24. package/coverage/lcov-report/react/components/AutoComplete/AutoComplete.jsx.html +868 -0
  25. package/coverage/lcov-report/react/components/AutoComplete/index.html +116 -0
  26. package/coverage/lcov-report/react/components/Breadcrumb/index.html +116 -0
  27. package/coverage/lcov-report/react/components/Breadcrumb/index.js.html +361 -0
  28. package/coverage/lcov-report/react/components/Button/index.html +116 -0
  29. package/coverage/lcov-report/react/components/Button/index.js.html +385 -0
  30. package/coverage/lcov-report/react/components/DateField/DateField.jsx.html +469 -0
  31. package/coverage/lcov-report/react/components/DateField/index.html +116 -0
  32. package/coverage/lcov-report/react/components/DateTimeField/DateTimeField.jsx.html +397 -0
  33. package/coverage/lcov-report/react/components/DateTimeField/index.html +116 -0
  34. package/coverage/lcov-report/react/components/Dropdown/index.html +116 -0
  35. package/coverage/lcov-report/react/components/Dropdown/index.js.html +340 -0
  36. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +364 -0
  37. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +178 -0
  38. package/coverage/lcov-report/react/components/Error/error.js.html +163 -0
  39. package/coverage/lcov-report/react/components/Error/index.html +146 -0
  40. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +496 -0
  41. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +697 -0
  42. package/coverage/lcov-report/react/components/Footer/footer.js.html +175 -0
  43. package/coverage/lcov-report/react/components/Footer/index.html +146 -0
  44. package/coverage/lcov-report/react/components/FormControlLabel/index.html +116 -0
  45. package/coverage/lcov-report/react/components/FormControlLabel/index.jsx.html +154 -0
  46. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +310 -0
  47. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +208 -0
  48. package/coverage/lcov-report/react/components/Infotip/index.html +146 -0
  49. package/coverage/lcov-report/react/components/Infotip/index.js.html +94 -0
  50. package/coverage/lcov-report/react/components/InputLabel/index.html +116 -0
  51. package/coverage/lcov-report/react/components/InputLabel/index.jsx.html +244 -0
  52. package/coverage/lcov-report/react/components/Instant/index.html +116 -0
  53. package/coverage/lcov-report/react/components/Instant/index.jsx.html +886 -0
  54. package/coverage/lcov-report/react/components/Link/index.html +116 -0
  55. package/coverage/lcov-report/react/components/Link/index.js.html +268 -0
  56. package/coverage/lcov-report/react/components/MadieAlert/index.html +116 -0
  57. package/coverage/lcov-report/react/components/MadieAlert/index.jsx.html +1291 -0
  58. package/coverage/lcov-report/react/components/MadieConfirmDialog/index.html +116 -0
  59. package/coverage/lcov-report/react/components/MadieConfirmDialog/index.jsx.html +277 -0
  60. package/coverage/lcov-report/react/components/MadieDeleteDialog/index.html +116 -0
  61. package/coverage/lcov-report/react/components/MadieDeleteDialog/index.jsx.html +253 -0
  62. package/coverage/lcov-report/react/components/MadieDialog/index.html +116 -0
  63. package/coverage/lcov-report/react/components/MadieDialog/index.jsx.html +1165 -0
  64. package/coverage/lcov-report/react/components/MadieDiscardDialog/index.html +116 -0
  65. package/coverage/lcov-report/react/components/MadieDiscardDialog/index.jsx.html +232 -0
  66. package/coverage/lcov-report/react/components/MadieSpinner/index.html +116 -0
  67. package/coverage/lcov-report/react/components/MadieSpinner/index.jsx.html +190 -0
  68. package/coverage/lcov-report/react/components/MadieTooltip/index.html +116 -0
  69. package/coverage/lcov-report/react/components/MadieTooltip/index.jsx.html +232 -0
  70. package/coverage/lcov-report/react/components/MadieTooltip/index.scss.html +274 -0
  71. package/coverage/lcov-report/react/components/MadieTooltipIcon/index.html +116 -0
  72. package/coverage/lcov-report/react/components/MadieTooltipIcon/index.jsx.html +178 -0
  73. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +553 -0
  74. package/coverage/lcov-report/react/components/Modal/index.html +131 -0
  75. package/coverage/lcov-report/react/components/Modal/index.jsx.html +139 -0
  76. package/coverage/lcov-report/react/components/NumberInput/index.html +116 -0
  77. package/coverage/lcov-report/react/components/NumberInput/index.jsx.html +310 -0
  78. package/coverage/lcov-report/react/components/Pagination/index.html +116 -0
  79. package/coverage/lcov-report/react/components/Pagination/index.jsx.html +736 -0
  80. package/coverage/lcov-report/react/components/Popover/index.html +116 -0
  81. package/coverage/lcov-report/react/components/Popover/index.js.html +481 -0
  82. package/coverage/lcov-report/react/components/RadioButton/RadioButton.jsx.html +490 -0
  83. package/coverage/lcov-report/react/components/RadioButton/index.html +116 -0
  84. package/coverage/lcov-report/react/components/ReadOnlyTextField/index.html +116 -0
  85. package/coverage/lcov-report/react/components/ReadOnlyTextField/index.jsx.html +346 -0
  86. package/coverage/lcov-report/react/components/RichTextEditor/index.html +116 -0
  87. package/coverage/lcov-report/react/components/RichTextEditor/index.jsx.html +922 -0
  88. package/coverage/lcov-report/react/components/Search/index.html +116 -0
  89. package/coverage/lcov-report/react/components/Search/index.js.html +343 -0
  90. package/coverage/lcov-report/react/components/Select/index.html +116 -0
  91. package/coverage/lcov-report/react/components/Select/index.jsx.html +658 -0
  92. package/coverage/lcov-report/react/components/Tabs/Tab.js.html +325 -0
  93. package/coverage/lcov-report/react/components/Tabs/TabPanel.js.html +208 -0
  94. package/coverage/lcov-report/react/components/Tabs/index.html +146 -0
  95. package/coverage/lcov-report/react/components/Tabs/index.js.html +433 -0
  96. package/coverage/lcov-report/react/components/TextArea/index.html +116 -0
  97. package/coverage/lcov-report/react/components/TextArea/index.jsx.html +520 -0
  98. package/coverage/lcov-report/react/components/TextField/index.html +116 -0
  99. package/coverage/lcov-report/react/components/TextField/index.jsx.html +748 -0
  100. package/coverage/lcov-report/react/components/TextInput/index.html +116 -0
  101. package/coverage/lcov-report/react/components/TextInput/index.js.html +496 -0
  102. package/coverage/lcov-report/react/components/TimeField/TimeField.jsx.html +388 -0
  103. package/coverage/lcov-report/react/components/TimeField/index.html +116 -0
  104. package/coverage/lcov-report/react/components/Toast/index.html +116 -0
  105. package/coverage/lcov-report/react/components/Toast/index.jsx.html +436 -0
  106. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +349 -0
  107. package/coverage/lcov-report/react/components/Tooltip/index.html +146 -0
  108. package/coverage/lcov-report/react/components/Tooltip/index.js.html +94 -0
  109. package/coverage/lcov-report/react/components/Tooltip/position.js.html +313 -0
  110. package/coverage/lcov-report/react/components/TruncateText/index.html +116 -0
  111. package/coverage/lcov-report/react/components/TruncateText/index.js.html +241 -0
  112. package/coverage/lcov-report/react/components/index.html +116 -0
  113. package/coverage/lcov-report/react/components/index.js.html +547 -0
  114. package/coverage/lcov-report/react/index.html +116 -0
  115. package/coverage/lcov-report/react/index.js.html +127 -0
  116. package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
  117. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1777 -0
  118. package/coverage/lcov-report/react/lib/index.html +131 -0
  119. package/coverage/lcov-report/react/themes/actionCenterTheme.js.html +175 -0
  120. package/coverage/lcov-report/react/themes/index.html +116 -0
  121. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  122. package/coverage/lcov-report/sorter.js +196 -0
  123. package/coverage/lcov.info +1705 -0
  124. package/dist/browser.js +1 -1
  125. package/dist/index.js +1 -1
  126. package/dist/react/index.js +2 -2
  127. package/dist/react/index.js.map +1 -1
  128. package/package.json +1 -1
  129. package/storybook-static/1606.9527419c.iframe.bundle.js +76 -0
  130. package/storybook-static/1606.9527419c.iframe.bundle.js.LICENSE.txt +8 -0
  131. package/storybook-static/1606.9527419c.iframe.bundle.js.map +1 -0
  132. package/storybook-static/1822.72412063.iframe.bundle.js +2 -0
  133. package/storybook-static/1822.72412063.iframe.bundle.js.LICENSE.txt +5 -0
  134. package/storybook-static/2247.8b06a622.iframe.bundle.js +87 -0
  135. package/storybook-static/2247.8b06a622.iframe.bundle.js.LICENSE.txt +9 -0
  136. package/storybook-static/2247.8b06a622.iframe.bundle.js.map +1 -0
  137. package/storybook-static/2360.690c5cd8.iframe.bundle.js +1 -0
  138. package/storybook-static/2505.5a3351ca.iframe.bundle.js +2 -0
  139. package/storybook-static/2505.5a3351ca.iframe.bundle.js.LICENSE.txt +9 -0
  140. package/storybook-static/2543.64e1c8c6.iframe.bundle.js +2 -0
  141. package/storybook-static/2543.64e1c8c6.iframe.bundle.js.LICENSE.txt +8 -0
  142. package/storybook-static/2763.e9244c7e.iframe.bundle.js +1 -0
  143. package/storybook-static/3009.7080427c.iframe.bundle.js +1 -0
  144. package/storybook-static/312.98473fc0.iframe.bundle.js +2 -0
  145. package/storybook-static/312.98473fc0.iframe.bundle.js.LICENSE.txt +17 -0
  146. package/storybook-static/3264.1483ccad.iframe.bundle.js +1 -0
  147. package/storybook-static/3461.b9b84310.iframe.bundle.js +29 -0
  148. package/storybook-static/3461.b9b84310.iframe.bundle.js.map +1 -0
  149. package/storybook-static/4246.3dee0bc1.iframe.bundle.js +1 -0
  150. package/storybook-static/4683.334f6a20.iframe.bundle.js +1 -0
  151. package/storybook-static/4753.b31cfa9b.iframe.bundle.js +1 -0
  152. package/storybook-static/4788.aa09e5f9.iframe.bundle.js +1 -0
  153. package/storybook-static/5043.53f3bb0c.iframe.bundle.js +2 -0
  154. package/storybook-static/5043.53f3bb0c.iframe.bundle.js.LICENSE.txt +1 -0
  155. package/storybook-static/5467.8b66ac25.iframe.bundle.js +1 -0
  156. package/storybook-static/6357.6600668a.iframe.bundle.js +1 -0
  157. package/storybook-static/651.1fcfd284.iframe.bundle.js +1 -0
  158. package/storybook-static/6520.84e91a57.iframe.bundle.js +2 -0
  159. package/storybook-static/6520.84e91a57.iframe.bundle.js.LICENSE.txt +19 -0
  160. package/storybook-static/6958.8a916fa2.iframe.bundle.js +1 -0
  161. package/storybook-static/7599.3f695d6a.iframe.bundle.js +1 -0
  162. package/storybook-static/7648.6ac96dea.iframe.bundle.js +1 -0
  163. package/storybook-static/7737.8a6a8e54.iframe.bundle.js +1 -0
  164. package/storybook-static/8255.e2a8ed59.iframe.bundle.js +2 -0
  165. package/storybook-static/8255.e2a8ed59.iframe.bundle.js.LICENSE.txt +9 -0
  166. package/storybook-static/8735.566590af.iframe.bundle.js +2 -0
  167. package/storybook-static/8735.566590af.iframe.bundle.js.LICENSE.txt +29 -0
  168. package/storybook-static/9010.9ac07800.iframe.bundle.js +1 -0
  169. package/storybook-static/9060.b9282f66.iframe.bundle.js +1 -0
  170. package/storybook-static/9249.28266e92.iframe.bundle.js +1 -0
  171. package/storybook-static/9859.25828a48.iframe.bundle.js +2 -0
  172. package/storybook-static/9859.25828a48.iframe.bundle.js.LICENSE.txt +9 -0
  173. package/storybook-static/Accordion-Accordion-stories.dbeb9f2a.iframe.bundle.js +2 -0
  174. package/storybook-static/Accordion-Accordion-stories.dbeb9f2a.iframe.bundle.js.LICENSE.txt +9 -0
  175. package/storybook-static/AutoComplete-AutoComplete-stories.3fa69ad4.iframe.bundle.js +1 -0
  176. package/storybook-static/Button-Button-stories.c56437c4.iframe.bundle.js +1 -0
  177. package/storybook-static/DateField-DateField-stories.9e1b9e5c.iframe.bundle.js +1 -0
  178. package/storybook-static/DateTimeField-DateTimeField-stories.4d184efd.iframe.bundle.js +1 -0
  179. package/storybook-static/Instant-Instant-stories.cdd1bf7f.iframe.bundle.js +1 -0
  180. package/storybook-static/MadieAlert-MadieAlert-stories.b0a784a8.iframe.bundle.js +1 -0
  181. package/storybook-static/MadieConfirmDialog-MadieConfirmDialog-stories.2629a704.iframe.bundle.js +1 -0
  182. package/storybook-static/MadieDeleteDialog-MadieDeleteDialog-stories.0f91e77f.iframe.bundle.js +1 -0
  183. package/storybook-static/MadieDialog-MadieDialog-stories.1e63ebb3.iframe.bundle.js +1 -0
  184. package/storybook-static/MadieDiscardDialog-MadieDiscardDialog-stories.4632ec72.iframe.bundle.js +1 -0
  185. package/storybook-static/MadieSpinner-MadieSpinner-stories.6c47900d.iframe.bundle.js +30 -0
  186. package/storybook-static/MadieSpinner-MadieSpinner-stories.6c47900d.iframe.bundle.js.LICENSE.txt +8 -0
  187. package/storybook-static/MadieSpinner-MadieSpinner-stories.6c47900d.iframe.bundle.js.map +1 -0
  188. package/storybook-static/MadieTooltip-MadieTooltip-stories.0c8fb8f7.iframe.bundle.js +2 -0
  189. package/storybook-static/MadieTooltip-MadieTooltip-stories.0c8fb8f7.iframe.bundle.js.LICENSE.txt +9 -0
  190. package/storybook-static/MadieTooltipIcon-MadieTooltipIcon-stories.b33f0165.iframe.bundle.js +2 -0
  191. package/storybook-static/MadieTooltipIcon-MadieTooltipIcon-stories.b33f0165.iframe.bundle.js.LICENSE.txt +9 -0
  192. package/storybook-static/Modal-Modal-stories.1c8c1dcd.iframe.bundle.js +2 -0
  193. package/storybook-static/Modal-Modal-stories.1c8c1dcd.iframe.bundle.js.LICENSE.txt +19 -0
  194. package/storybook-static/NumberInput-NumberInput-stories.b642f330.iframe.bundle.js +1 -0
  195. package/storybook-static/Pagination-Pagination-stories.dc63a146.iframe.bundle.js +1 -0
  196. package/storybook-static/Popover-Popover-stories.680cce19.iframe.bundle.js +1 -0
  197. package/storybook-static/RadioButton-RadioButton-stories.5daa020f.iframe.bundle.js +1 -0
  198. package/storybook-static/ReadOnlyTextField-ReadOnlyTextField-stories.281af1c9.iframe.bundle.js +1 -0
  199. package/storybook-static/RichTextEditor-RichTextEditor-stories.f2f6efd0.iframe.bundle.js +1 -0
  200. package/storybook-static/Search-Search-stories.ce9d2b51.iframe.bundle.js +1 -0
  201. package/storybook-static/Select-Select-stories.1ba58501.iframe.bundle.js +1 -0
  202. package/storybook-static/Tabs-Tabs-stories.e9bf42ff.iframe.bundle.js +1 -0
  203. package/storybook-static/TextArea-TextArea-stories.9bb45748.iframe.bundle.js +1 -0
  204. package/storybook-static/TextField-TextField-stories.e5c08a5e.iframe.bundle.js +1 -0
  205. package/storybook-static/TimeField-TimeField-stories.760f9db5.iframe.bundle.js +1 -0
  206. package/storybook-static/Toast-Toast-stories.160e8bf1.iframe.bundle.js +1 -0
  207. package/storybook-static/TruncateText-TruncateText-stories.2da57e6a.iframe.bundle.js +1 -0
  208. package/storybook-static/favicon.svg +1 -0
  209. package/storybook-static/iframe.html +531 -0
  210. package/storybook-static/index.html +152 -0
  211. package/storybook-static/index.json +1 -0
  212. package/storybook-static/main.18ce3a87.iframe.bundle.js +1 -0
  213. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  214. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  215. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  216. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  217. package/storybook-static/project.json +1 -0
  218. package/storybook-static/runtime~main.6bbd8126.iframe.bundle.js +1 -0
  219. package/storybook-static/sb-addons/docs-2/manager-bundle.js +151 -0
  220. package/storybook-static/sb-addons/links-1/manager-bundle.js +3 -0
  221. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +188 -0
  222. package/storybook-static/sb-common-assets/favicon.svg +1 -0
  223. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  224. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  225. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  226. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  227. package/storybook-static/sb-manager/globals-module-info.js +797 -0
  228. package/storybook-static/sb-manager/globals-runtime.js +69459 -0
  229. package/storybook-static/sb-manager/globals.js +34 -0
  230. package/storybook-static/sb-manager/runtime.js +13003 -0
  231. package/storybook-static/sb-preview/globals.js +25 -0
  232. package/storybook-static/sb-preview/runtime.js +43237 -0
  233. package/storybook-static/static/media/FontAwesome.91f80bba.otf +0 -0
  234. package/storybook-static/static/media/Rubik-Bold.31bbd4d2.ttf +0 -0
  235. package/storybook-static/static/media/Rubik-Light.c90e2014.ttf +0 -0
  236. package/storybook-static/static/media/Rubik-Medium.5daa89aa.ttf +0 -0
  237. package/storybook-static/static/media/Rubik-Regular.cdf97d58.ttf +0 -0
  238. package/storybook-static/static/media/bitter-bold.24bf01e4.woff2 +0 -0
  239. package/storybook-static/static/media/bitter-italic.34644574.woff2 +0 -0
  240. package/storybook-static/static/media/bitter-regular.f4e2f1f1.woff2 +0 -0
  241. package/storybook-static/static/media/fontawesome-webfont.1e59d233.ttf +0 -0
  242. package/storybook-static/static/media/fontawesome-webfont.20fd1704.woff2 +0 -0
  243. package/storybook-static/static/media/fontawesome-webfont.8b43027f.eot +0 -0
  244. package/storybook-static/static/media/fontawesome-webfont.c1e38fd9.svg +2671 -0
  245. package/storybook-static/static/media/fontawesome-webfont.f691f37e.woff +0 -0
  246. package/storybook-static/static/media/opensans-bold-webfont.92e570c6.woff2 +0 -0
  247. package/storybook-static/static/media/opensans-italic-webfont.72daa33a.woff2 +0 -0
  248. package/storybook-static/static/media/opensans-regular-webfont.ca4dd835.woff2 +0 -0
  249. package/storybook-static/static/media/opensans-semibold-webfont.17ded75f.woff2 +0 -0
@@ -0,0 +1,1291 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for react/components/MadieAlert/index.jsx</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">react/components/MadieAlert</a> index.jsx</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">98.9% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>90/91</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">87.95% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>73/83</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>23/23</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>87/87</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 high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-yes">11x</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-yes">11x</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-yes">11x</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-yes">11x</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-yes">24x</span>
514
+ <span class="cline-any cline-yes">24x</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-yes">24x</span>
517
+ <span class="cline-any cline-yes">71x</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-yes">61x</span>
520
+ <span class="cline-any cline-yes">31x</span>
521
+ <span class="cline-any cline-yes">31x</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-yes">31x</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-yes">61x</span>
530
+ <span class="cline-any cline-yes">61x</span>
531
+ <span class="cline-any cline-yes">16x</span>
532
+ <span class="cline-any cline-yes">45x</span>
533
+ <span class="cline-any cline-yes">10x</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-yes">24x</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-yes">24x</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-yes">24x</span>
544
+ <span class="cline-any cline-yes">71x</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-yes">71x</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-yes">71x</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-yes">10x</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-yes">71x</span>
557
+ <span class="cline-any cline-yes">16x</span>
558
+ <span class="cline-any cline-yes">37x</span>
559
+ <span class="cline-any cline-neutral">&nbsp;</span>
560
+ <span class="cline-any cline-yes">37x</span>
561
+ <span class="cline-any cline-yes">33x</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-yes">33x</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-yes">19x</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-yes">55x</span>
573
+ <span class="cline-any cline-yes">10x</span>
574
+ <span class="cline-any cline-yes">45x</span>
575
+ <span class="cline-any cline-neutral">&nbsp;</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-yes">35x</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-yes">10x</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-yes">10x</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-yes">71x</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-yes">24x</span>
596
+ <span class="cline-any cline-yes">24x</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-yes">11x</span>
607
+ <span class="cline-any cline-yes">51x</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-yes">11x</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-neutral">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-yes">11x</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-neutral">&nbsp;</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-yes">46x</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-yes">46x</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-yes">46x</span>
647
+ <span class="cline-any cline-yes">30x</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-yes">46x</span>
652
+ <span class="cline-any cline-yes">16x</span>
653
+ <span class="cline-any cline-neutral">&nbsp;</span>
654
+ <span class="cline-any cline-neutral">&nbsp;</span>
655
+ <span class="cline-any cline-neutral">&nbsp;</span>
656
+ <span class="cline-any cline-neutral">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-neutral">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-yes">46x</span>
678
+ <span class="cline-any cline-yes">16x</span>
679
+ <span class="cline-any cline-yes">16x</span>
680
+ <span class="cline-any cline-neutral">&nbsp;</span>
681
+ <span class="cline-any cline-yes">16x</span>
682
+ <span class="cline-any cline-yes">21x</span>
683
+ <span class="cline-any cline-yes">20x</span>
684
+ <span class="cline-any cline-yes">20x</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-yes">20x</span>
687
+ <span class="cline-any cline-yes">5x</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-neutral">&nbsp;</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-yes">16x</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-neutral">&nbsp;</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-neutral">&nbsp;</span>
699
+ <span class="cline-any cline-yes">46x</span>
700
+ <span class="cline-any cline-yes">8x</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-yes">46x</span>
706
+ <span class="cline-any cline-yes">1x</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-yes">46x</span>
711
+ <span class="cline-any cline-yes">10x</span>
712
+ <span class="cline-any cline-yes">10x</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-yes">46x</span>
715
+ <span class="cline-any cline-yes">10x</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-yes">46x</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-yes">63x</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-yes">63x</span>
732
+ <span class="cline-any cline-neutral">&nbsp;</span>
733
+ <span class="cline-any cline-yes">51x</span>
734
+ <span class="cline-any cline-yes">51x</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">51x</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">8x</span>
748
+ <span class="cline-any cline-yes">8x</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-yes">4x</span>
765
+ <span class="cline-any cline-yes">4x</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-neutral">&nbsp;</span>
770
+ <span class="cline-any cline-yes">4x</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-neutral">&nbsp;</span>
775
+ <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-neutral">&nbsp;</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-neutral">&nbsp;</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-yes">46x</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-yes">1x</span>
798
+ <span class="cline-any cline-neutral">&nbsp;</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
800
+ <span class="cline-any cline-neutral">&nbsp;</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-yes">63x</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-neutral">&nbsp;</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-yes">1x</span>
819
+ <span class="cline-any cline-yes">1x</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
826
+ <span class="cline-any cline-neutral">&nbsp;</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-neutral">&nbsp;</span>
836
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
+ <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-neutral">&nbsp;</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-yes">11x</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-neutral">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-yes">11x</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useEffect, useState, useMemo } from "react";
871
+ &nbsp;
872
+ import ErrorIcon from "@mui/icons-material/Error"; // warning
873
+ import InfoIcon from "@mui/icons-material/Info"; // info
874
+ import CancelIcon from "@mui/icons-material/Cancel"; // error
875
+ import CheckCircleIcon from "@mui/icons-material/CheckCircle"; //success
876
+ import ContentCopyIcon from "@mui/icons-material/ContentCopy"; //copy
877
+ import FullscreenExitRoundedIcon from "@mui/icons-material/FullscreenExitRounded";
878
+ import WarningRoundedIcon from "@mui/icons-material/WarningRounded";
879
+ import Tooltip from "@mui/material/Tooltip";
880
+ import { IconButton } from "@mui/material";
881
+ import ClearIcon from "@mui/icons-material/Clear";
882
+ import Toast from "../Toast/index";
883
+ import classNames from "classnames";
884
+ import PropTypes from "prop-types";
885
+ &nbsp;
886
+ // Define icon mapping outside component to avoid recreation on each render
887
+ const typeToIconMap = {
888
+ warning: ErrorIcon,
889
+ info: InfoIcon,
890
+ error: CancelIcon,
891
+ success: CheckCircleIcon,
892
+ };
893
+ &nbsp;
894
+ // Common button styles
895
+ const buttonBaseSx = {
896
+ marginLeft: "auto",
897
+ };
898
+ &nbsp;
899
+ const buttonWithDividerSx = {
900
+ ...buttonBaseSx,
901
+ "&amp;:after": {
902
+ content: `''`,
903
+ position: "absolute",
904
+ left: "0px",
905
+ width: "1px",
906
+ height: "40px",
907
+ backgroundColor: "#B0B0B0",
908
+ pointerEvents: "none",
909
+ },
910
+ };
911
+ &nbsp;
912
+ // Extract alert content processing to a separate function
913
+ const processContent = (content) =&gt; {
914
+ // Counts errors/warnings in ul/li elements
915
+ const countUlLiChildren = (element) =&gt; {
916
+ const counts = { ul: 0, li: 0 };
917
+ &nbsp;
918
+ const traverse = (el) =&gt; {
919
+ if (!el || typeof el !== "object") return;
920
+ &nbsp;
921
+ if (el.type === "ul" || el.type === "li") {
922
+ const children = el.props?.children;
923
+ const childCount = Array.isArray(children)
924
+ ? children.length
925
+ : children
926
+ ? 1
927
+ : <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
928
+ counts[el.type] += childCount;
929
+ }
930
+ &nbsp;
931
+ const children = el.props?.children;
932
+ if (Array.isArray(children)) {
933
+ children.forEach(traverse);
934
+ } else if (children &amp;&amp; typeof children === "object") {
935
+ traverse(children);
936
+ }
937
+ };
938
+ &nbsp;
939
+ traverse(element);
940
+ &nbsp;
941
+ return counts.li &gt; counts.ul ? counts.li : counts.ul;
942
+ };
943
+ &nbsp;
944
+ // Converts content to text for copying - improved to avoid unwanted characters
945
+ const buildCopyText = (contentNode, parentNode = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span> =&gt; {
946
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!contentNode) <span class="cstat-no" title="statement not covered" >return "";</span>
947
+ &nbsp;
948
+ // Initialize result string
949
+ let result = "";
950
+ &nbsp;
951
+ // Handle specific node types that need special formatting
952
+ if (contentNode.type === "ul") {
953
+ // Start ul with a newline
954
+ result = "\n";
955
+ }
956
+ &nbsp;
957
+ // Process children based on their type
958
+ if (Array.isArray(contentNode.props?.children)) {
959
+ contentNode.props.children.forEach((child, index) =&gt; {
960
+ const childText = buildCopyText(child, false);
961
+ // Only add non-empty text
962
+ if (childText.trim()) {
963
+ result += childText;
964
+ &nbsp;
965
+ // Add line breaks after certain elements
966
+ if (
967
+ (parentNode &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >index === 1)</span> ||
968
+ contentNode.type === "ul"
969
+ ) {
970
+ result += "\n";
971
+ }
972
+ }
973
+ });
974
+ } else if (typeof contentNode.props?.children === "object") {
975
+ result += buildCopyText(contentNode.props.children, false);
976
+ } else if (
977
+ typeof contentNode.props?.children === "string" ||
978
+ typeof contentNode.props?.children === "number"
979
+ ) {
980
+ // Clean the string by trimming and normalizing whitespace
981
+ result += contentNode.props.children
982
+ .toString()
983
+ .replace(/\s+/g, " ")
984
+ .trim();
985
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>if (
986
+ typeof contentNode === "string" ||
987
+ <span class="branch-1 cbranch-no" title="branch not covered" > typeof contentNode === "number"</span>
988
+ ) {
989
+ // Clean the string by trimming and normalizing whitespace
990
+ result += contentNode.toString().replace(/\s+/g, " ").trim();
991
+ }
992
+ &nbsp;
993
+ return result;
994
+ };
995
+ &nbsp;
996
+ // Process content and ensure we trim the final result
997
+ const rawText = buildCopyText(content, false);
998
+ return {
999
+ errorCount: countUlLiChildren(content),
1000
+ copyText: rawText
1001
+ .replace(/\s+\n/g, "\n")
1002
+ .replace(/\n\s+/g, "\n")
1003
+ .trim(),
1004
+ };
1005
+ };
1006
+ &nbsp;
1007
+ // Define ActionButton as a separate component outside MadieAlert
1008
+ const ActionButton = ({ tooltip, onClick, icon, testId, sx }) =&gt; (
1009
+ &lt;Tooltip title={tooltip} data-testid={`${testId}-tooltip`} arrow&gt;
1010
+ &lt;IconButton onClick={onClick} sx={sx} data-testid={testId}&gt;
1011
+ {icon}
1012
+ &lt;/IconButton&gt;
1013
+ &lt;/Tooltip&gt;
1014
+ );
1015
+ &nbsp;
1016
+ // Add PropTypes for ActionButton
1017
+ ActionButton.propTypes = {
1018
+ tooltip: PropTypes.string.isRequired,
1019
+ onClick: PropTypes.func.isRequired,
1020
+ icon: PropTypes.node.isRequired,
1021
+ testId: PropTypes.string.isRequired,
1022
+ sx: PropTypes.object,
1023
+ };
1024
+ &nbsp;
1025
+ const MadieAlert = ({
1026
+ type = "warning",
1027
+ visible = true,
1028
+ content,
1029
+ canClose = true,
1030
+ minimizeAlerts = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
1031
+ alertProps,
1032
+ closeButtonProps,
1033
+ copyButton,
1034
+ alerts = <span class="branch-0 cbranch-no" title="branch not covered" >null,</span>
1035
+ }) =&gt; {
1036
+ // Consolidate related state
1037
+ const [state, setState] = useState({
1038
+ toastOpen: false,
1039
+ copyText: "",
1040
+ minimizedAlerts: {},
1041
+ individualErrors: {},
1042
+ });
1043
+ &nbsp;
1044
+ // Create alias for readability
1045
+ const { toastOpen, copyText, minimizedAlerts, individualErrors } = state;
1046
+ &nbsp;
1047
+ // Use a single update function
1048
+ const updateState = (updates) =&gt; {
1049
+ setState((prev) =&gt; ({ ...prev, ...updates }));
1050
+ };
1051
+ &nbsp;
1052
+ // Prepare alerts array once
1053
+ const alertsArray = useMemo(() =&gt; {
1054
+ return (
1055
+ alerts || [
1056
+ {
1057
+ type,
1058
+ visible,
1059
+ content,
1060
+ canClose,
1061
+ alertProps,
1062
+ closeButtonProps,
1063
+ copyButton,
1064
+ },
1065
+ ]
1066
+ );
1067
+ }, [
1068
+ alerts,
1069
+ type,
1070
+ visible,
1071
+ content,
1072
+ canClose,
1073
+ alertProps,
1074
+ closeButtonProps,
1075
+ copyButton,
1076
+ ]);
1077
+ &nbsp;
1078
+ // Process all alerts content once
1079
+ useEffect(() =&gt; {
1080
+ const newIndividualErrors = {};
1081
+ let totalCopyText = "";
1082
+ &nbsp;
1083
+ alertsArray.forEach((alert, index) =&gt; {
1084
+ if (alert.content &amp;&amp; alert.visible !== false) {
1085
+ const processed = processContent(alert.content);
1086
+ newIndividualErrors[index] = processed.errorCount;
1087
+ &nbsp;
1088
+ if (alert.copyButton) {
1089
+ totalCopyText += processed.copyText + "\n\n";
1090
+ }
1091
+ }
1092
+ });
1093
+ &nbsp;
1094
+ updateState({
1095
+ individualErrors: newIndividualErrors,
1096
+ copyText: totalCopyText.trim(),
1097
+ });
1098
+ }, [alertsArray]);
1099
+ &nbsp;
1100
+ // Utility functions for managing minimized state
1101
+ const minimizeAlert = (index) =&gt; {
1102
+ updateState({
1103
+ minimizedAlerts: { ...minimizedAlerts, [index]: true },
1104
+ });
1105
+ };
1106
+ &nbsp;
1107
+ const restoreAllAlerts = () =&gt; {
1108
+ updateState({ minimizedAlerts: {} });
1109
+ };
1110
+ &nbsp;
1111
+ // Calculate minimized alerts info
1112
+ const minimizedIndices = Object.keys(minimizedAlerts)
1113
+ .filter((key) =&gt; minimizedAlerts[key])
1114
+ .map((key) =&gt; parseInt(key));
1115
+ &nbsp;
1116
+ const totalMinimizedErrors = minimizedIndices.reduce(
1117
+ (sum, index) =&gt; sum + (individualErrors[index] || 0),
1118
+ 0,
1119
+ );
1120
+ &nbsp;
1121
+ // Render alert content
1122
+ const renderAlert = (alert, index) =&gt; {
1123
+ const {
1124
+ type = <span class="branch-0 cbranch-no" title="branch not covered" >"warning",</span>
1125
+ visible = true,
1126
+ content,
1127
+ canClose = true,
1128
+ alertProps = {},
1129
+ closeButtonProps = {},
1130
+ copyButton = false,
1131
+ } = alert;
1132
+ &nbsp;
1133
+ if (!visible || minimizedAlerts[index]) return null;
1134
+ &nbsp;
1135
+ const Icon = typeToIconMap[type];
1136
+ const alertClass = classNames("madie-alert", type);
1137
+ &nbsp;
1138
+ return (
1139
+ &lt;div key={index} className={alertClass} {...alertProps}&gt;
1140
+ &lt;Icon className={classNames("alert-icon", type)} /&gt;
1141
+ &lt;div id="content" data-alert-index={index}&gt;
1142
+ {content}
1143
+ &lt;/div&gt;
1144
+ &nbsp;
1145
+ {minimizeAlerts &amp;&amp; (
1146
+ &lt;ActionButton
1147
+ tooltip="Minimize"
1148
+ onClick={(e) =&gt; {
1149
+ e.preventDefault();
1150
+ minimizeAlert(index);
1151
+ }}
1152
+ icon={
1153
+ &lt;FullscreenExitRoundedIcon
1154
+ sx={{ color: "#242424" }}
1155
+ /&gt;
1156
+ }
1157
+ testId={`minimize-button-${index}`}
1158
+ sx={buttonWithDividerSx}
1159
+ /&gt;
1160
+ )}
1161
+ &nbsp;
1162
+ {copyButton &amp;&amp; (
1163
+ &lt;ActionButton
1164
+ tooltip="Copy"
1165
+ onClick={(e) =&gt; {
1166
+ e.preventDefault();
1167
+ navigator.clipboard.writeText(
1168
+ copyButton
1169
+ ? processContent(content).copyText
1170
+ : <span class="branch-1 cbranch-no" title="branch not covered" >copyText,</span>
1171
+ );
1172
+ updateState({ toastOpen: true });
1173
+ }}
1174
+ icon={&lt;ContentCopyIcon sx={{ color: "#242424" }} /&gt;}
1175
+ testId="copy-button"
1176
+ sx={
1177
+ !minimizeAlerts ? buttonWithDividerSx : buttonBaseSx
1178
+ }
1179
+ /&gt;
1180
+ )}
1181
+ &nbsp;
1182
+ {canClose &amp;&amp; (
1183
+ &lt;IconButton sx={buttonWithDividerSx} {...closeButtonProps}&gt;
1184
+ &lt;ClearIcon sx={{ color: "#242424" }} /&gt;
1185
+ &lt;/IconButton&gt;
1186
+ )}
1187
+ &lt;/div&gt;
1188
+ );
1189
+ };
1190
+ &nbsp;
1191
+ return (
1192
+ &lt;div&gt;
1193
+ &lt;Toast
1194
+ toastKey="copy-success-toast"
1195
+ data-testid="copy-success"
1196
+ toastType="success"
1197
+ open={toastOpen}
1198
+ message="Copied to clipboard!"
1199
+ onClose={() =&gt; updateState({ toastOpen: false })}
1200
+ autoHideDuration={1500}
1201
+ /&gt;
1202
+ &nbsp;
1203
+ {/* Render visible alerts */}
1204
+ {alertsArray.map((alert, index) =&gt; renderAlert(alert, index))}
1205
+ &nbsp;
1206
+ {/* Show minimized indicator if any alerts are minimized */}
1207
+ {minimizedIndices.length &gt; 0 &amp;&amp; (
1208
+ &lt;div
1209
+ style={{
1210
+ position: "absolute",
1211
+ right: "32px",
1212
+ top: "10px",
1213
+ display: "flex",
1214
+ alignItems: "center",
1215
+ cursor: "pointer",
1216
+ }}
1217
+ data-testid="minimized-alert"
1218
+ className="minimized-alert"
1219
+ onClick={(e) =&gt; {
1220
+ e.preventDefault();
1221
+ restoreAllAlerts();
1222
+ }}
1223
+ &gt;
1224
+ &lt;WarningRoundedIcon
1225
+ sx={{ color: "yellow", marginRight: "5px" }}
1226
+ /&gt;
1227
+ &lt;span
1228
+ data-testid="minimized-alert-text"
1229
+ style={{ color: "white", fontSize: "16px" }}
1230
+ &gt;
1231
+ Display Alerts{" "}
1232
+ {totalMinimizedErrors &gt; 0
1233
+ ? `(${totalMinimizedErrors})`
1234
+ : ""}
1235
+ &lt;/span&gt;
1236
+ &lt;/div&gt;
1237
+ )}
1238
+ &lt;/div&gt;
1239
+ );
1240
+ };
1241
+ &nbsp;
1242
+ // PropTypes definition
1243
+ MadieAlert.propTypes = {
1244
+ type: PropTypes.string,
1245
+ visible: PropTypes.bool,
1246
+ content: PropTypes.node,
1247
+ canClose: PropTypes.bool,
1248
+ alertProps: PropTypes.object,
1249
+ closeButtonProps: PropTypes.object,
1250
+ copyButton: PropTypes.bool,
1251
+ minimizeAlerts: PropTypes.bool,
1252
+ alerts: PropTypes.arrayOf(
1253
+ PropTypes.shape({
1254
+ type: PropTypes.string,
1255
+ visible: PropTypes.bool,
1256
+ content: PropTypes.node,
1257
+ canClose: PropTypes.bool,
1258
+ alertProps: PropTypes.object,
1259
+ closeButtonProps: PropTypes.object,
1260
+ copyButton: PropTypes.bool,
1261
+ }),
1262
+ ),
1263
+ };
1264
+ &nbsp;
1265
+ MadieAlert.defaultProps = {
1266
+ copyButton: false,
1267
+ minimizeAlerts: false,
1268
+ alerts: null,
1269
+ };
1270
+ &nbsp;
1271
+ export default MadieAlert;
1272
+ &nbsp;</pre></td></tr></table></pre>
1273
+
1274
+ <div class='push'></div><!-- for sticky footer -->
1275
+ </div><!-- /wrapper -->
1276
+ <div class='footer quiet pad2 space-top1 center small'>
1277
+ Code coverage generated by
1278
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1279
+ at 2025-06-17T20:32:27.082Z
1280
+ </div>
1281
+ <script src="../../../prettify.js"></script>
1282
+ <script>
1283
+ window.onload = function () {
1284
+ prettyPrint();
1285
+ };
1286
+ </script>
1287
+ <script src="../../../sorter.js"></script>
1288
+ <script src="../../../block-navigation.js"></script>
1289
+ </body>
1290
+ </html>
1291
+