qpp-style 9.22.0 → 9.22.2

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 (190) hide show
  1. package/coverage/clover.xml +79 -78
  2. package/coverage/coverage-final.json +73 -73
  3. package/coverage/lcov-report/components/Accordion/index.html +116 -0
  4. package/coverage/lcov-report/components/Accordion/index.jsx.html +364 -0
  5. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +349 -0
  6. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +178 -0
  7. package/coverage/lcov-report/components/Error/index.html +131 -0
  8. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +880 -0
  9. package/coverage/lcov-report/components/Footer/LegacyFooterUI.jsx.html +667 -0
  10. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +265 -0
  11. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +187 -0
  12. package/coverage/lcov-report/components/Footer/index.html +161 -0
  13. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +310 -0
  14. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +208 -0
  15. package/coverage/lcov-report/components/Infotip/index.html +146 -0
  16. package/coverage/lcov-report/components/Infotip/index.js.html +94 -0
  17. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
  18. package/coverage/lcov-report/components/Modal/Modal.jsx.html +505 -0
  19. package/coverage/lcov-report/components/Modal/index.html +146 -0
  20. package/coverage/lcov-report/components/Modal/index.jsx.html +151 -0
  21. package/coverage/lcov-report/components/SanitizedContent/index.html +116 -0
  22. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +685 -0
  23. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +868 -0
  24. package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +166 -0
  25. package/coverage/lcov-report/components/SideNav/AnimationGroup/index.html +116 -0
  26. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +889 -0
  27. package/coverage/lcov-report/components/SideNav/Chart/index.html +131 -0
  28. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +94 -0
  29. package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +709 -0
  30. package/coverage/lcov-report/components/SideNav/Content/LevelTwoContent.jsx.html +733 -0
  31. package/coverage/lcov-report/components/SideNav/Content/index.html +146 -0
  32. package/coverage/lcov-report/components/SideNav/Content/index.js.html +97 -0
  33. package/coverage/lcov-report/components/SideNav/Details/IndividualDetails.jsx.html +139 -0
  34. package/coverage/lcov-report/components/SideNav/Details/PracticeDetails.jsx.html +220 -0
  35. package/coverage/lcov-report/components/SideNav/Details/index.html +146 -0
  36. package/coverage/lcov-report/components/SideNav/Details/index.js.html +97 -0
  37. package/coverage/lcov-report/components/SideNav/Links/CmsSwitchLink.jsx.html +208 -0
  38. package/coverage/lcov-report/components/SideNav/Links/NavItemInline.jsx.html +247 -0
  39. package/coverage/lcov-report/components/SideNav/Links/NavLinkContainer.jsx.html +199 -0
  40. package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +832 -0
  41. package/coverage/lcov-report/components/SideNav/Links/NavLinkInline.jsx.html +406 -0
  42. package/coverage/lcov-report/components/SideNav/Links/NavLinkToggle.jsx.html +187 -0
  43. package/coverage/lcov-report/components/SideNav/Links/index.html +206 -0
  44. package/coverage/lcov-report/components/SideNav/Links/index.js.html +124 -0
  45. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +1084 -0
  46. package/coverage/lcov-report/components/SideNav/UI/index.html +131 -0
  47. package/coverage/lcov-report/components/SideNav/UI/index.js.html +94 -0
  48. package/coverage/lcov-report/components/SideNav/helpers.js.html +238 -0
  49. package/coverage/lcov-report/components/SideNav/index.html +116 -0
  50. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +349 -0
  51. package/coverage/lcov-report/components/Tooltip/index.html +146 -0
  52. package/coverage/lcov-report/components/Tooltip/index.js.html +94 -0
  53. package/coverage/lcov-report/components/Tooltip/position.js.html +289 -0
  54. package/coverage/lcov-report/components/hooks/index.html +116 -0
  55. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +307 -0
  56. package/coverage/lcov-report/components/index.html +116 -0
  57. package/coverage/lcov-report/index.html +10 -10
  58. package/coverage/lcov-report/lib/Chevron.jsx.html +181 -0
  59. package/coverage/lcov-report/lib/SvgComponents.jsx.html +1702 -0
  60. package/coverage/lcov-report/lib/index.html +146 -0
  61. package/coverage/lcov-report/lib/svg-definitions.svg.html +460 -0
  62. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  63. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  64. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  65. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  66. package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
  67. package/coverage/lcov-report/react/components/Dropdown/index.js.html +1 -1
  68. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  69. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  70. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  71. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  72. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +2 -2
  73. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +667 -0
  74. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
  75. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
  76. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  77. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  78. package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
  79. package/coverage/lcov-report/react/components/GovBanner/index.js.html +1 -1
  80. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +1 -1
  81. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
  82. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +1 -1
  83. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +1 -1
  84. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
  85. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +1 -1
  86. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +1 -1
  87. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
  88. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +1 -1
  89. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +1 -1
  90. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +1 -1
  91. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +1 -1
  92. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
  93. package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
  94. package/coverage/lcov-report/react/components/Header/hooks.js.html +1 -1
  95. package/coverage/lcov-report/react/components/Header/index.html +1 -1
  96. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
  97. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
  98. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  99. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  100. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  101. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
  102. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
  103. package/coverage/lcov-report/react/components/Modal/index.html +1 -1
  104. package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
  105. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +10 -10
  106. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +1 -1
  107. package/coverage/lcov-report/react/components/NotificationBanner/index.html +11 -11
  108. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +1 -1
  109. package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
  110. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +1 -1
  111. package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
  112. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +1 -1
  113. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +1 -1
  114. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +1 -1
  115. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
  116. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +1 -1
  117. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
  118. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
  119. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +1 -1
  120. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
  121. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +1 -1
  122. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +1 -1
  123. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +1 -1
  124. package/coverage/lcov-report/react/components/SideNav/Content/index.html +1 -1
  125. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
  126. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
  127. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
  128. package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
  129. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
  130. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
  131. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
  132. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
  133. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +1 -1
  134. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
  135. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +1 -1
  136. package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
  137. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
  138. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +1 -1
  139. package/coverage/lcov-report/react/components/SideNav/UI/index.html +1 -1
  140. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
  141. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +1 -1
  142. package/coverage/lcov-report/react/components/SideNav/index.html +1 -1
  143. package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
  144. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  145. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  146. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  147. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  148. package/coverage/lcov-report/react/components/hooks/index.html +1 -1
  149. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +1 -1
  150. package/coverage/lcov-report/react/components/index.html +1 -1
  151. package/coverage/lcov-report/react/index.html +1 -1
  152. package/coverage/lcov-report/react/index.js.html +1 -1
  153. package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
  154. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1 -1
  155. package/coverage/lcov-report/react/lib/index.html +1 -1
  156. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
  157. package/coverage/lcov-report/react/session/index.html +1 -1
  158. package/coverage/lcov-report/react/session/index.js.html +1 -1
  159. package/coverage/lcov-report/react/session/logout.js.html +1 -1
  160. package/coverage/lcov-report/react/session/refresh.js.html +1 -1
  161. package/coverage/lcov-report/react/session/ttl.js.html +1 -1
  162. package/coverage/lcov-report/session/index.html +161 -0
  163. package/coverage/lcov-report/session/index.js.html +100 -0
  164. package/coverage/lcov-report/session/logout.js.html +298 -0
  165. package/coverage/lcov-report/session/refresh.js.html +232 -0
  166. package/coverage/lcov-report/session/ttl.js.html +196 -0
  167. package/coverage/lcov.info +3 -2
  168. package/dist/browser.js +1 -1
  169. package/dist/browser.js.map +1 -1
  170. package/dist/index.js +1 -1
  171. package/dist/index.js.map +1 -1
  172. package/dist/react/index.js +1 -1
  173. package/dist/react/index.js.map +1 -1
  174. package/package.json +1 -1
  175. package/styles/components/_footer.scss +593 -0
  176. package/styles/components/_header.scss +890 -0
  177. package/styles/components/_sidebar.scss +8 -0
  178. package/styles/components/sidebar/_animations.scss +38 -0
  179. package/styles/components/sidebar/_cms.scss +61 -0
  180. package/styles/components/sidebar/_details.scss +58 -0
  181. package/styles/components/sidebar/_links.scss +415 -0
  182. package/styles/components/sidebar/_sidebar-animation.scss +121 -0
  183. package/styles/components/sidebar/_sidebar-tooltip.scss +33 -0
  184. package/styles/components/sidebar/_sidebar.scss +141 -0
  185. package/styles/components/sidebar/project-specific/_wi.scss +42 -0
  186. package/styles/qppds/components/_header.scss +17 -1
  187. package/styles/qppds/components/_infotip-content.scss +47 -0
  188. package/styles/qppds/components/_spinner.scss +46 -0
  189. package/styles/qppds/settings/variables/_index.scss +2 -1
  190. package/styles/qppds/settings/variables/_z-index.scss +8 -0
@@ -0,0 +1,889 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for components/SideNav/Chart/ScoreChart.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">components/SideNav/Chart</a> ScoreChart.jsx</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">68.6% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>59/86</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">47.22% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>17/36</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">59.09% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>13/22</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">68.6% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>59/86</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line medium'></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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-yes">2x</span>
340
+ <span class="cline-any cline-yes">2x</span>
341
+ <span class="cline-any cline-yes">2x</span>
342
+ <span class="cline-any cline-yes">2x</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-yes">2x</span>
345
+ <span class="cline-any cline-yes">1x</span>
346
+ <span class="cline-any cline-yes">1x</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-yes">1x</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-yes">1x</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-yes">1x</span>
365
+ <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-no">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-no">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-no">&nbsp;</span>
379
+ <span class="cline-any cline-no">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-yes">1x</span>
386
+ <span class="cline-any cline-yes">1x</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-yes">1x</span>
390
+ <span class="cline-any cline-yes">3x</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-yes">1x</span>
395
+ <span class="cline-any cline-yes">3x</span>
396
+ <span class="cline-any cline-yes">2x</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-yes">1x</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-yes">1x</span>
403
+ <span class="cline-any cline-neutral">&nbsp;</span>
404
+ <span class="cline-any cline-yes">1x</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-yes">1x</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-yes">1x</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
+ <span class="cline-any cline-yes">1x</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-yes">1x</span>
421
+ <span class="cline-any cline-yes">3x</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-yes">3x</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-yes">1x</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-yes">1x</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-yes">1x</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-yes">9x</span>
448
+ <span class="cline-any cline-yes">3x</span>
449
+ <span class="cline-any cline-yes">6x</span>
450
+ <span class="cline-any cline-yes">3x</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-yes">3x</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-yes">9x</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-yes">9x</span>
460
+ <span class="cline-any cline-yes">9x</span>
461
+ <span class="cline-any cline-yes">3x</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-yes">9x</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-yes">9x</span>
468
+ <span class="cline-any cline-yes">3x</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-no">&nbsp;</span>
474
+ <span class="cline-any cline-no">&nbsp;</span>
475
+ <span class="cline-any cline-no">&nbsp;</span>
476
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
482
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-yes">1x</span>
487
+ <span class="cline-any cline-yes">9x</span>
488
+ <span class="cline-any cline-yes">3x</span>
489
+ <span class="cline-any cline-yes">3x</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">1x</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-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-no">&nbsp;</span>
499
+ <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-yes">1x</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-yes">1x</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-yes">1x</span>
536
+ <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-yes">1x</span>
540
+ <span class="cline-any cline-yes">1x</span>
541
+ <span class="cline-any cline-yes">1x</span>
542
+ <span class="cline-any cline-yes">1x</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-yes">1x</span>
547
+ <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
558
+ <span class="cline-any cline-neutral">&nbsp;</span>
559
+ <span class="cline-any cline-no">&nbsp;</span>
560
+ <span class="cline-any cline-no">&nbsp;</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-yes">1x</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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">1x</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-neutral">&nbsp;</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-neutral">&nbsp;</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">2x</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</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></td><td class="text"><pre class="prettyprint lang-js">import React, { useState, useEffect } from 'react';
603
+ import { pie, arc } from 'd3-shape';
604
+ import { select, event } from 'd3-selection';
605
+ import PropTypes from 'prop-types';
606
+ &nbsp;
607
+ const WIDTH = 210;
608
+ const HEIGHT = 210;
609
+ const RADIUS = Math.min(WIDTH, HEIGHT) / 2;
610
+ const GAP_VALUE = 2.5;
611
+ &nbsp;
612
+ const ScoreChart = ({ performanceYear, chartData, linkCallback }) =&gt; {
613
+ const [hasLegend, setHasLegend] = useState(false);
614
+ const [titleMapping, setTitleMapping] = useState({
615
+ quality: 'Quality Measures',
616
+ aci: 'Advancing Care Info',
617
+ pi: 'Promoting Interoperability',
618
+ ia: 'Improvement Activities',
619
+ cost: 'Cost',
620
+ });
621
+ &nbsp;
622
+ const { categories } = chartData;
623
+ let legendToggler;
624
+ let legend;
625
+ &nbsp;
626
+ const getAdvancingCareLabel = () =&gt; {
627
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (performanceYear &gt; 2017) {
628
+ <span class="cstat-no" title="statement not covered" > setTitleMapping({ ...titleMapping, aci: 'Promoting Interoperability' });</span>
629
+ }
630
+ };
631
+ &nbsp;
632
+ const redirectToCategory = <span class="fstat-no" title="function not covered" >(l</span>ink, categoryId) =&gt; {
633
+ <span class="cstat-no" title="statement not covered" > if (!link) {</span>
634
+ <span class="cstat-no" title="statement not covered" > return;</span>
635
+ }
636
+ &nbsp;
637
+ // track explicitly chart legends
638
+ <span class="cstat-no" title="statement not covered" > if (window.utag) {</span>
639
+ <span class="cstat-no" title="statement not covered" > window.utag.track('link', {</span>
640
+ ga_event_category: 'SidebarNav',
641
+ ga_event_action: `GoTo${categoryId}`,
642
+ ga_event_label: categoryId,
643
+ });
644
+ }
645
+ &nbsp;
646
+ <span class="cstat-no" title="statement not covered" > if (linkCallback) {</span>
647
+ <span class="cstat-no" title="statement not covered" > linkCallback(link);</span>
648
+ } else {
649
+ <span class="cstat-no" title="statement not covered" > window.location.href = link;</span>
650
+ }
651
+ };
652
+ &nbsp;
653
+ const draw = (chartData) =&gt; {
654
+ const scorePie = pie().sort(null);
655
+ &nbsp;
656
+ // Removing invalid categories
657
+ const categories = chartData.categories.filter(
658
+ ({ maxContribution }) =&gt; !!maxContribution
659
+ );
660
+ &nbsp;
661
+ // Calculating the sum of valid categories in order to calculate ratios
662
+ const categorySum = categories
663
+ .map(({ maxContribution }) =&gt; maxContribution)
664
+ .reduce((sum, current) =&gt; sum + current);
665
+ &nbsp;
666
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!categorySum) {
667
+ <span class="cstat-no" title="statement not covered" > return;</span>
668
+ }
669
+ &nbsp;
670
+ select('.score-chart').selectAll('*').remove();
671
+ &nbsp;
672
+ const svg = select('.score-chart')
673
+ .attr('width', WIDTH)
674
+ .attr('height', HEIGHT);
675
+ &nbsp;
676
+ const chartArc = arc()
677
+ .innerRadius(RADIUS - 1.5)
678
+ .outerRadius(RADIUS - 25);
679
+ &nbsp;
680
+ // Preparing the data structure with ratios: [ FILLED, EMPTY, TRANSPARENT, FILLED, EMPTY, ... ]
681
+ let data;
682
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (categories.length === 0) {
683
+ <span class="cstat-no" title="statement not covered" > data = [];</span>
684
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (categories.length === 1) {
685
+ const { value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[0];</span>
686
+ <span class="cstat-no" title="statement not covered" > data = [value || 0, maxContribution - value];</span>
687
+ } else {
688
+ data = categories
689
+ .map(({ value, maxContribution }) =&gt; [
690
+ value || <span class="branch-1 cbranch-no" title="branch not covered" >0,</span>
691
+ maxContribution - value,
692
+ GAP_VALUE * (categorySum / 100),
693
+ ])
694
+ .reduce((a, b) =&gt; a.concat(b), []);
695
+ }
696
+ &nbsp;
697
+ svg.append('title').attr('id', 'titleID').text('Your submission score');
698
+ &nbsp;
699
+ svg
700
+ .append('desc')
701
+ .attr('id', 'descID')
702
+ .text(`${chartData.finalScore} out of 100`);
703
+ &nbsp;
704
+ // Setting up the arcs
705
+ let arcs = svg
706
+ .append('g')
707
+ .attr('class', 'arcs')
708
+ .attr('role', 'presentation')
709
+ .selectAll('g.arc')
710
+ .data(scorePie(data))
711
+ .enter()
712
+ .append('g')
713
+ .attr('class', (d, i) =&gt; {
714
+ let role;
715
+ if (i % 3 === 0) {
716
+ role = 'filled';
717
+ } else if (i % 3 === 1) {
718
+ role = 'empty';
719
+ } else {
720
+ role = 'transparent';
721
+ }
722
+ return `arc ${categories[parseInt(i / 3)].name} ${role}`;
723
+ })
724
+ .attr('transform', `translate(${RADIUS}, ${RADIUS})`)
725
+ // For accessibility, we add keyboard access to the filled slices
726
+ .attr('tabindex', (d, i) =&gt; {
727
+ let tabindex = -1;
728
+ if (i % 3 === 0) {
729
+ tabindex = 0;
730
+ }
731
+ return tabindex;
732
+ })
733
+ // IE for for focusable svg elements
734
+ .attr('focusable', (d, i) =&gt; {
735
+ if (i % 3 === 0) {
736
+ return true;
737
+ }
738
+ })
739
+ // For accessibility, we add keyboard access to the filled slices
740
+ .on('keyup', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
741
+ const code = <span class="cstat-no" title="statement not covered" >event.keyCode || event.which;</span>
742
+ <span class="cstat-no" title="statement not covered" > if (code === 13) {</span>
743
+ const { name, link } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
744
+ <span class="cstat-no" title="statement not covered" > redirectToCategory(link, name);</span>
745
+ }
746
+ })
747
+ // On click - go to category page
748
+ .on('click', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
749
+ const { name, link } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
750
+ <span class="cstat-no" title="statement not covered" > redirectToCategory(link, name);</span>
751
+ });
752
+ &nbsp;
753
+ // Add accessibility description
754
+ arcs.append('desc').text((d, i) =&gt; {
755
+ if (i % 3 === 0) {
756
+ const { name, value, maxContribution } = categories[parseInt(i / 3)];
757
+ return `${titleMapping[name]} ${value} out of ${maxContribution}`;
758
+ }
759
+ });
760
+ &nbsp;
761
+ arcs
762
+ .append('path')
763
+ .attr('d', chartArc)
764
+ // On mouse over - show category tooltip
765
+ .on('mouseover', <span class="fstat-no" title="function not covered" >(d</span>, i) =&gt; {
766
+ const { name, value, maxContribution } = <span class="cstat-no" title="statement not covered" >categories[parseInt(i / 3)];</span>
767
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
768
+ .style('opacity', 1)
769
+ .text(`${titleMapping[name]} ${value}/${maxContribution}`);
770
+ })
771
+ // On mouse move - move category tooltip
772
+ .on('mousemove', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
773
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip')</span>
774
+ .style('top', event.clientY - HEIGHT + 10 + 'px')
775
+ .style('left', event.clientX + 'px');
776
+ })
777
+ // On mouse out - hide category tooltip
778
+ .on('mouseout', <span class="fstat-no" title="function not covered" >()</span> =&gt; {
779
+ <span class="cstat-no" title="statement not covered" > select('.chart-tooltip').style('opacity', 0);</span>
780
+ });
781
+ &nbsp;
782
+ // Adding title and subtitle
783
+ const text = svg
784
+ .append('g')
785
+ .attr('text-anchor', 'middle')
786
+ .attr('transform', `translate(${WIDTH / 2}, ${HEIGHT / 2})`);
787
+ &nbsp;
788
+ // Adding title - X%
789
+ text
790
+ .append('text')
791
+ .attr('y', 4)
792
+ .attr('class', 'chart-title')
793
+ .text(chartData.finalScore);
794
+ &nbsp;
795
+ // Adding subtitle - OUT OF 100
796
+ text
797
+ .append('text')
798
+ .attr('y', 24)
799
+ .attr('class', 'chart-subtitle')
800
+ .text('OUT OF 100');
801
+ };
802
+ &nbsp;
803
+ const toggleLegend = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
804
+ <span class="cstat-no" title="statement not covered" > setHasLegend(!hasLegend);</span>
805
+ };
806
+ &nbsp;
807
+ useEffect(() =&gt; {
808
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (chartData?.finalScore) {
809
+ draw(chartData);
810
+ getAdvancingCareLabel();
811
+ }
812
+ }, [chartData?.finalScore]);
813
+ &nbsp;
814
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (hasLegend) {
815
+ <span class="cstat-no" title="statement not covered" > legendToggler = (</span>
816
+ &lt;button className="open" type="button" aria-pressed="true"&gt;
817
+ Hide Legend
818
+ &lt;svg
819
+ className="right-icon rotated"
820
+ aria-hidden="true"
821
+ focusable="false"
822
+ &gt;
823
+ &lt;use xlinkHref="#chevron-down" /&gt;
824
+ &lt;/svg&gt;
825
+ &lt;/button&gt;
826
+ );
827
+ <span class="cstat-no" title="statement not covered" > legend = categories.map(<span class="fstat-no" title="function not covered" >({</span> name, value, maxContribution, link }, index) =&gt; {</span>
828
+ <span class="cstat-no" title="statement not covered" > return (</span>
829
+ &lt;li key={name} className="legend-axis"&gt;
830
+ &lt;button onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >redirectToCategory(link, name)}</span>&gt;
831
+ &lt;span className={`legend-axis-color ${name}`} /&gt;
832
+ &amp;nbsp;
833
+ &lt;span className="legend-axis-title"&gt;{titleMapping[name]}&lt;/span&gt;
834
+ &amp;nbsp;
835
+ &lt;span className="legend-axis-value"&gt;{`${value}/${maxContribution}`}&lt;/span&gt;
836
+ &lt;/button&gt;
837
+ &lt;/li&gt;
838
+ );
839
+ });
840
+ } else {
841
+ legendToggler = (
842
+ &lt;button type="button" aria-pressed="false"&gt;
843
+ Show Legend
844
+ &lt;svg className="right-icon" aria-hidden="true" focusable="false"&gt;
845
+ &lt;use xlinkHref="#chevron-down" /&gt;
846
+ &lt;/svg&gt;
847
+ &lt;/button&gt;
848
+ );
849
+ }
850
+ &nbsp;
851
+ return (
852
+ &lt;div className="chart"&gt;
853
+ &lt;svg className="score-chart" focusable="false" /&gt;
854
+ &lt;div className="chart-tooltip off" /&gt;
855
+ &lt;div className="chart-legend-toggler" onClick={toggleLegend}&gt;
856
+ {legendToggler}
857
+ &lt;/div&gt;
858
+ &lt;ul className="chart-legend"&gt;{legend}&lt;/ul&gt;
859
+ &lt;/div&gt;
860
+ );
861
+ };
862
+ &nbsp;
863
+ ScoreChart.propTypes = {
864
+ chartData: PropTypes.object,
865
+ linkCallback: PropTypes.func,
866
+ performanceYear: PropTypes.number,
867
+ };
868
+ &nbsp;
869
+ export default ScoreChart;
870
+ &nbsp;</pre></td></tr></table></pre>
871
+
872
+ <div class='push'></div><!-- for sticky footer -->
873
+ </div><!-- /wrapper -->
874
+ <div class='footer quiet pad2 space-top1 center small'>
875
+ Code coverage generated by
876
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
877
+ at Fri Apr 29 2022 13:58:50 GMT-0400 (Eastern Daylight Time)
878
+ </div>
879
+ <script src="../../../prettify.js"></script>
880
+ <script>
881
+ window.onload = function () {
882
+ prettyPrint();
883
+ };
884
+ </script>
885
+ <script src="../../../sorter.js"></script>
886
+ <script src="../../../block-navigation.js"></script>
887
+ </body>
888
+ </html>
889
+