qpp-style 9.18.1 → 9.18.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 (194) hide show
  1. package/components/NotificationBanner/CollapsedView.js +29 -22
  2. package/components/SideNav/Links/NavLinkDrawer.jsx +1 -1
  3. package/coverage/clover.xml +78 -79
  4. package/coverage/coverage-final.json +73 -73
  5. package/coverage/lcov-report/index.html +10 -10
  6. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  7. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  8. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  9. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  10. package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
  11. package/coverage/lcov-report/react/components/Dropdown/index.js.html +1 -1
  12. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  13. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  14. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  15. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  16. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +2 -2
  17. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
  18. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
  19. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  20. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  21. package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
  22. package/coverage/lcov-report/react/components/GovBanner/index.js.html +1 -1
  23. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +1 -1
  24. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
  25. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +1 -1
  26. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +1 -1
  27. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
  28. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +1 -1
  29. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +1 -1
  30. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
  31. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +1 -1
  32. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +1 -1
  33. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +1 -1
  34. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +1 -1
  35. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
  36. package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
  37. package/coverage/lcov-report/react/components/Header/hooks.js.html +1 -1
  38. package/coverage/lcov-report/react/components/Header/index.html +1 -1
  39. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
  40. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
  41. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  42. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  43. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  44. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
  45. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
  46. package/coverage/lcov-report/react/components/Modal/index.html +1 -1
  47. package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
  48. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +10 -10
  49. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +1 -1
  50. package/coverage/lcov-report/react/components/NotificationBanner/index.html +11 -11
  51. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +1 -1
  52. package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
  53. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +1 -1
  54. package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
  55. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +1 -1
  56. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +1 -1
  57. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +1 -1
  58. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
  59. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +1 -1
  60. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
  61. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
  62. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +1 -1
  63. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
  64. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +1 -1
  65. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +1 -1
  66. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +1 -1
  67. package/coverage/lcov-report/react/components/SideNav/Content/index.html +1 -1
  68. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
  69. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
  70. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
  71. package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
  72. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
  73. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
  74. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
  75. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
  76. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +1 -1
  77. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
  78. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +1 -1
  79. package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
  80. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
  81. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +1 -1
  82. package/coverage/lcov-report/react/components/SideNav/UI/index.html +1 -1
  83. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
  84. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +1 -1
  85. package/coverage/lcov-report/react/components/SideNav/index.html +1 -1
  86. package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
  87. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  88. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  89. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  90. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  91. package/coverage/lcov-report/react/components/hooks/index.html +1 -1
  92. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +1 -1
  93. package/coverage/lcov-report/react/components/index.html +1 -1
  94. package/coverage/lcov-report/react/index.html +1 -1
  95. package/coverage/lcov-report/react/index.js.html +1 -1
  96. package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
  97. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1 -1
  98. package/coverage/lcov-report/react/lib/index.html +1 -1
  99. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
  100. package/coverage/lcov-report/react/session/index.html +1 -1
  101. package/coverage/lcov-report/react/session/index.js.html +1 -1
  102. package/coverage/lcov-report/react/session/logout.js.html +1 -1
  103. package/coverage/lcov-report/react/session/refresh.js.html +1 -1
  104. package/coverage/lcov-report/react/session/ttl.js.html +1 -1
  105. package/coverage/lcov.info +2 -3
  106. package/dist/browser.js +1 -1
  107. package/dist/browser.js.map +1 -1
  108. package/dist/index.js +1 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/react/index.js +1 -1
  111. package/dist/react/index.js.map +1 -1
  112. package/package.json +13 -15
  113. package/styles/qppds/base/_typography.scss +12 -0
  114. package/styles/qppds/components/_checkbox.scss +199 -0
  115. package/styles/qppds/components/_radio-button.scss +184 -0
  116. package/styles/qppds/components/index.scss +2 -0
  117. package/styles/qppds/settings/variables/_layout.scss +5 -3
  118. package/styles/qppds/utilities/_list-style.scss +18 -0
  119. package/styles/qppds/utilities/index.scss +1 -0
  120. package/coverage/lcov-report/components/Accordion/index.html +0 -116
  121. package/coverage/lcov-report/components/Accordion/index.jsx.html +0 -364
  122. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +0 -349
  123. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +0 -178
  124. package/coverage/lcov-report/components/Error/index.html +0 -131
  125. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +0 -880
  126. package/coverage/lcov-report/components/Footer/LegacyFooterUI.jsx.html +0 -667
  127. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +0 -265
  128. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +0 -187
  129. package/coverage/lcov-report/components/Footer/index.html +0 -161
  130. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +0 -310
  131. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +0 -208
  132. package/coverage/lcov-report/components/Infotip/index.html +0 -146
  133. package/coverage/lcov-report/components/Infotip/index.js.html +0 -94
  134. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +0 -301
  135. package/coverage/lcov-report/components/Modal/Modal.jsx.html +0 -505
  136. package/coverage/lcov-report/components/Modal/index.html +0 -146
  137. package/coverage/lcov-report/components/Modal/index.jsx.html +0 -151
  138. package/coverage/lcov-report/components/SanitizedContent/index.html +0 -116
  139. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +0 -685
  140. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +0 -868
  141. package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -166
  142. package/coverage/lcov-report/components/SideNav/AnimationGroup/index.html +0 -116
  143. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +0 -889
  144. package/coverage/lcov-report/components/SideNav/Chart/index.html +0 -131
  145. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -94
  146. package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +0 -709
  147. package/coverage/lcov-report/components/SideNav/Content/LevelTwoContent.jsx.html +0 -733
  148. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -146
  149. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -97
  150. package/coverage/lcov-report/components/SideNav/Details/IndividualDetails.jsx.html +0 -139
  151. package/coverage/lcov-report/components/SideNav/Details/PracticeDetails.jsx.html +0 -220
  152. package/coverage/lcov-report/components/SideNav/Details/index.html +0 -146
  153. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -97
  154. package/coverage/lcov-report/components/SideNav/Links/CmsSwitchLink.jsx.html +0 -208
  155. package/coverage/lcov-report/components/SideNav/Links/NavItemInline.jsx.html +0 -247
  156. package/coverage/lcov-report/components/SideNav/Links/NavLinkContainer.jsx.html +0 -199
  157. package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -832
  158. package/coverage/lcov-report/components/SideNav/Links/NavLinkInline.jsx.html +0 -406
  159. package/coverage/lcov-report/components/SideNav/Links/NavLinkToggle.jsx.html +0 -187
  160. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -206
  161. package/coverage/lcov-report/components/SideNav/Links/index.js.html +0 -124
  162. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1084
  163. package/coverage/lcov-report/components/SideNav/UI/index.html +0 -131
  164. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -94
  165. package/coverage/lcov-report/components/SideNav/helpers.js.html +0 -238
  166. package/coverage/lcov-report/components/SideNav/index.html +0 -116
  167. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +0 -349
  168. package/coverage/lcov-report/components/Tooltip/index.html +0 -146
  169. package/coverage/lcov-report/components/Tooltip/index.js.html +0 -94
  170. package/coverage/lcov-report/components/Tooltip/position.js.html +0 -289
  171. package/coverage/lcov-report/components/hooks/index.html +0 -116
  172. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +0 -307
  173. package/coverage/lcov-report/components/index.html +0 -116
  174. package/coverage/lcov-report/lib/Chevron.jsx.html +0 -181
  175. package/coverage/lcov-report/lib/SvgComponents.jsx.html +0 -1702
  176. package/coverage/lcov-report/lib/index.html +0 -146
  177. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -460
  178. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +0 -667
  179. package/coverage/lcov-report/session/index.html +0 -161
  180. package/coverage/lcov-report/session/index.js.html +0 -100
  181. package/coverage/lcov-report/session/logout.js.html +0 -298
  182. package/coverage/lcov-report/session/refresh.js.html +0 -232
  183. package/coverage/lcov-report/session/ttl.js.html +0 -196
  184. package/styles/components/_footer.scss +0 -593
  185. package/styles/components/_header.scss +0 -890
  186. package/styles/components/_sidebar.scss +0 -8
  187. package/styles/components/sidebar/_animations.scss +0 -38
  188. package/styles/components/sidebar/_cms.scss +0 -61
  189. package/styles/components/sidebar/_details.scss +0 -58
  190. package/styles/components/sidebar/_links.scss +0 -415
  191. package/styles/components/sidebar/_sidebar-animation.scss +0 -121
  192. package/styles/components/sidebar/_sidebar-tooltip.scss +0 -33
  193. package/styles/components/sidebar/_sidebar.scss +0 -141
  194. package/styles/components/sidebar/project-specific/_wi.scss +0 -42
@@ -1,868 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for components/SessionDialogUI.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</a> SessionDialogUI.jsx</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">78.33% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>47/60</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">67.85% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>19/28</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">87.5% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>14/16</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">78.33% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>47/60</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-neutral">&nbsp;</span>
334
- <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-yes">1x</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">19x</span>
347
- <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-yes">19x</span>
349
- <span class="cline-any cline-yes">19x</span>
350
- <span class="cline-any cline-yes">19x</span>
351
- <span class="cline-any cline-yes">19x</span>
352
- <span class="cline-any cline-yes">19x</span>
353
- <span class="cline-any cline-yes">19x</span>
354
- <span class="cline-any cline-yes">19x</span>
355
- <span class="cline-any cline-yes">19x</span>
356
- <span class="cline-any cline-yes">19x</span>
357
- <span class="cline-any cline-yes">19x</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-yes">19x</span>
360
- <span class="cline-any cline-yes">8x</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-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">11x</span>
366
- <span class="cline-any cline-neutral">&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-yes">11x</span>
371
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
379
- <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-yes">2x</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
386
- <span class="cline-any cline-yes">1x</span>
387
- <span class="cline-any cline-yes">1x</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-yes">2x</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-no">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
398
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-neutral">&nbsp;</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-yes">78x</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-yes">78x</span>
410
- <span class="cline-any cline-yes">76x</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-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-yes">76x</span>
418
- <span class="cline-any cline-yes">76x</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-no">&nbsp;</span>
428
- <span class="cline-any cline-no">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-yes">14x</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-yes">14x</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-yes">10x</span>
455
- <span class="cline-any cline-yes">5x</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">5x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">5x</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
468
- <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-yes">6x</span>
473
- <span class="cline-any cline-yes">4x</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-yes">2x</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">8x</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-yes">1x</span>
493
- <span class="cline-any cline-neutral">&nbsp;</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-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-yes">2x</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-neutral">&nbsp;</span>
512
- <span class="cline-any cline-yes">1x</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-yes">1x</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">1x</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-yes">1x</span>
530
- <span class="cline-any cline-yes">1x</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-yes">22x</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-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-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-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-neutral">&nbsp;</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-yes">1x</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></td><td class="text"><pre class="prettyprint lang-js">import React, { Component } from 'react';
589
- import PropTypes from 'prop-types';
590
- import cookie from 'cookie';
591
- import retry from 'retry';
592
- import jwtDecode from 'jwt-decode';
593
- &nbsp;
594
- import Modal from './Modal';
595
- import RefreshSession from '../session/refresh';
596
- import LogoutSession from '../session/logout';
597
- import fetchTtl from '../session/ttl';
598
- &nbsp;
599
- const fetchTtlIntervalMs = 60000;
600
- &nbsp;
601
- export default class SessionDialogUI extends Component {
602
- /**
603
- * Create a SessionDialogUI component.
604
- * @param {object} props - Configuration options. See SessionDialog for more
605
- */
606
- constructor(props) {
607
- super(props);
608
- &nbsp;
609
- this.handleOpenModal = this.handleOpenModal.bind(this);
610
- this.handleCloseModal = this.handleCloseModal.bind(this);
611
- this.refreshSession = this.refreshSession.bind(this);
612
- this.signOut = this.signOut.bind(this);
613
- this.startTimer = this.startTimer.bind(this);
614
- this.shouldShowDialog = this.shouldShowDialog.bind(this);
615
- this.shouldSignOut = this.shouldSignOut.bind(this);
616
- this.minutesUntil = this.minutesUntil.bind(this);
617
- this.checkExpiry = this.checkExpiry.bind(this);
618
- this.onInterval = this.onInterval.bind(this);
619
- &nbsp;
620
- if (props.showImmediate === true) {
621
- this.state = {
622
- showModal: true,
623
- showError: false,
624
- };
625
- } else {
626
- this.state = {
627
- showModal: false,
628
- showError: false,
629
- };
630
- &nbsp;
631
- this.startTimer();
632
- }
633
- }
634
- &nbsp;
635
- /**
636
- * Extracts the token exp value as a JavaScript date.
637
- * @param {Object} cookies - An object representation of the cookie store
638
- * @returns {(date|null)} The token expiration date, if found
639
- */
640
- getTokenExpiry(cookies) {
641
- let expiry = null;
642
- &nbsp;
643
- if (cookies.hasOwnProperty('qpp_auth_token') &amp;&amp; cookies.qpp_auth_token) {
644
- // See https://tools.ietf.org/html/rfc7519
645
- // `exp` is a NumericDate representing "seconds since the epoch"
646
- // and it needs to be milliseconds to get a JavaScript date from it.
647
- const { exp } = jwtDecode(cookies.qpp_auth_token);
648
- expiry = new Date(exp * 1000);
649
- }
650
- &nbsp;
651
- return expiry;
652
- }
653
- &nbsp;
654
- <span class="fstat-no" title="function not covered" > ch</span>eckExpiry(expiry) {
655
- <span class="cstat-no" title="statement not covered" > if (expiry) {</span>
656
- <span class="cstat-no" title="statement not covered" > if (this.shouldShowDialog(expiry)) {</span>
657
- <span class="cstat-no" title="statement not covered" > this.handleOpenModal();</span>
658
- } else <span class="cstat-no" title="statement not covered" >if (this.shouldSignOut(expiry)) {</span>
659
- <span class="cstat-no" title="statement not covered" > this.signOut();</span>
660
- <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
661
- }
662
- } else {
663
- <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
664
- }
665
- }
666
- &nbsp;
667
- onInterval() {
668
- const cookies = cookie.parse(document.cookie);
669
- &nbsp;
670
- if (cookies.hasOwnProperty('qpp_auth_token') &amp;&amp; cookies.qpp_auth_token) {
671
- const operation = retry.operation({
672
- retries: 5,
673
- factor: 1,
674
- minTimeout: 1000,
675
- maxTimeout: 1000,
676
- });
677
- &nbsp;
678
- operation.attempt(() =&gt; {
679
- fetchTtl(cookies.qpp_auth_token)
680
- .then(this.checkExpiry)
681
- .catch(<span class="fstat-no" title="function not covered" >(e</span>rror) =&gt; {
682
- <span class="cstat-no" title="statement not covered" > if (operation.retry(error)) {</span>
683
- // try again before giving up
684
- <span class="cstat-no" title="statement not covered" > return;</span>
685
- }
686
- <span class="cstat-no" title="statement not covered" > clearInterval(this.warningInterval);</span>
687
- // sign an inactive user out
688
- <span class="cstat-no" title="statement not covered" > this.forceTimeoutHandle = setTimeout(this.signOut, 120 * 1000);</span>
689
- <span class="cstat-no" title="statement not covered" > this.setState({</span>
690
- showModal: false,
691
- showError: true,
692
- });
693
- });
694
- });
695
- }
696
- }
697
- &nbsp;
698
- /**
699
- * Checks whether the user is within a specified number of minutes before
700
- * their session token expires. If so, show a warning dialog. If the
701
- * expiration has been reached, sign the user out.
702
- */
703
- startTimer() {
704
- clearInterval(this.warningInterval);
705
- &nbsp;
706
- this.warningInterval = setInterval(this.onInterval, fetchTtlIntervalMs);
707
- }
708
- &nbsp;
709
- /**
710
- * Returns whether the current time is within the timeout range of expiry.
711
- * @param {date|number} expiry - Expiration date to check against
712
- * @returns {boolean}
713
- */
714
- shouldShowDialog(expiry) {
715
- if (typeof expiry === 'number') {
716
- const minutesLeft = expiry / 60;
717
- &nbsp;
718
- return !this.state.showModal &amp;&amp; minutesLeft &lt;= this.props.warningTimeout;
719
- } else {
720
- return (
721
- !this.state.showModal &amp;&amp;
722
- this.minutesUntil(expiry) &lt;= this.props.warningTimeout
723
- );
724
- }
725
- }
726
- &nbsp;
727
- /**
728
- * Returns whether the current time has reached the expiration date.
729
- * @param {date|number} expiry - Expiration date to check against
730
- * @returns {boolean}
731
- */
732
- shouldSignOut(expiry) {
733
- if (typeof expiry === 'number') {
734
- return expiry &lt;= 1;
735
- } else {
736
- return this.minutesUntil(expiry) &lt;= 0;
737
- }
738
- }
739
- &nbsp;
740
- /**
741
- * Returns number of minutes until the expiration date.
742
- * @param {date} expiry - Expiration date to check against
743
- * @returns {number}
744
- */
745
- minutesUntil(expiry) {
746
- return (expiry - new Date().getTime()) / 60000;
747
- }
748
- &nbsp;
749
- /**
750
- * Sets the modal state to visible.
751
- */
752
- handleOpenModal() {
753
- this.setState({
754
- showModal: true,
755
- showError: false,
756
- });
757
- }
758
- &nbsp;
759
- /**
760
- * Sets the modal state to hidden.
761
- */
762
- handleCloseModal() {
763
- this.setState({
764
- showModal: false,
765
- showError: false,
766
- });
767
- }
768
- &nbsp;
769
- /**
770
- * Handles the user requesting their session be extended.
771
- */
772
- refreshSession() {
773
- RefreshSession({
774
- window,
775
- onSuccess: () =&gt; {
776
- this.startTimer();
777
- },
778
- });
779
- &nbsp;
780
- this.handleCloseModal();
781
- }
782
- &nbsp;
783
- /**
784
- * Handles the user requesting their session be ended.
785
- */
786
- signOut() {
787
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this.forceTimeoutHandle) {
788
- <span class="cstat-no" title="statement not covered" > clearTimeout(this.forceTimeoutHandle);</span>
789
- }
790
- LogoutSession(window);
791
- this.handleCloseModal();
792
- }
793
- &nbsp;
794
- render() {
795
- return (
796
- &lt;React.Fragment&gt;
797
- &lt;Modal
798
- useDesignSystem
799
- title="You will be signed out within two minutes"
800
- isOpen={this.state.showModal}
801
- primary={{
802
- title: 'Keep me signed in',
803
- onClick: this.refreshSession,
804
- }}
805
- secondary={{
806
- title: 'Sign me out now',
807
- onClick: this.signOut,
808
- }}
809
- onRequestClose={this.handleCloseModal}
810
- &gt;
811
- &lt;p&gt;
812
- You have been inactive for thirty minutes. For your security, we
813
- will sign you out automatically.
814
- &lt;/p&gt;
815
- &lt;/Modal&gt;
816
- &nbsp;
817
- &lt;Modal
818
- useDesignSystem
819
- title="Technical Difficulties"
820
- isOpen={this.state.showError}
821
- primary={{
822
- title: 'Sign Out',
823
- onClick: this.signOut,
824
- }}
825
- onRequestClose={this.signOut}
826
- &gt;
827
- &lt;p&gt;
828
- We’re experiencing technical difficulties. Please log in again to
829
- continue. For your security, we will sign you out automatically
830
- within two minutes.
831
- &lt;/p&gt;
832
- &lt;/Modal&gt;
833
- &lt;/React.Fragment&gt;
834
- );
835
- }
836
- }
837
- &nbsp;
838
- SessionDialogUI.propTypes = {
839
- showImmediate: PropTypes.bool,
840
- warningTimeout: PropTypes.number,
841
- appElement: PropTypes.string,
842
- };
843
- &nbsp;
844
- SessionDialogUI.defaultProps = {
845
- showImmediate: false,
846
- warningTimeout: 2,
847
- appElement: undefined,
848
- };
849
- &nbsp;</pre></td></tr></table></pre>
850
-
851
- <div class='push'></div><!-- for sticky footer -->
852
- </div><!-- /wrapper -->
853
- <div class='footer quiet pad2 space-top1 center small'>
854
- Code coverage generated by
855
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
856
- at Fri Apr 29 2022 13:58:50 GMT-0400 (Eastern Daylight Time)
857
- </div>
858
- <script src="../prettify.js"></script>
859
- <script>
860
- window.onload = function () {
861
- prettyPrint();
862
- };
863
- </script>
864
- <script src="../sorter.js"></script>
865
- <script src="../block-navigation.js"></script>
866
- </body>
867
- </html>
868
-