qpp-style 9.34.6 → 9.35.0
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.
- package/components/SideNav/Links/NavLinkDrawer.jsx +1 -0
- package/coverage/clover.xml +1361 -0
- package/coverage/coverage-final.json +71 -0
- package/coverage/lcov-report/Infotip.jsx.html +298 -0
- package/coverage/lcov-report/InfotipContent.jsx.html +223 -0
- package/coverage/lcov-report/InfotipIcon.jsx.html +208 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/components/Accordion/index.html +116 -0
- package/coverage/lcov-report/components/Accordion/index.jsx.html +376 -0
- package/coverage/lcov-report/components/Button/index.html +116 -0
- package/coverage/lcov-report/components/Button/index.js.html +355 -0
- package/coverage/lcov-report/components/Error/Collapsible.jsx.html +349 -0
- package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +178 -0
- package/coverage/lcov-report/components/Error/index.html +131 -0
- package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +718 -0
- package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +265 -0
- package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +187 -0
- package/coverage/lcov-report/components/Footer/index.html +146 -0
- package/coverage/lcov-report/components/GovBanner/index.html +116 -0
- package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
- package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +367 -0
- package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +133 -0
- package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +307 -0
- package/coverage/lcov-report/components/Header/HeaderLogo.jsx.html +211 -0
- package/coverage/lcov-report/components/Header/HeaderMenuButton.js.html +235 -0
- package/coverage/lcov-report/components/Header/HeaderMenuItem.jsx.html +802 -0
- package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
- package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
- package/coverage/lcov-report/components/Header/HeaderMobileButton.js.html +196 -0
- package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +586 -0
- package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
- package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +328 -0
- package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +166 -0
- package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
- package/coverage/lcov-report/components/Header/index.html +326 -0
- package/coverage/lcov-report/components/Header/utag-helpers.js.html +112 -0
- package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +298 -0
- package/coverage/lcov-report/components/Infotip/InfotipContent.jsx.html +223 -0
- package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +208 -0
- package/coverage/lcov-report/components/Infotip/index.html +146 -0
- package/coverage/lcov-report/components/Infotip/index.js.html +94 -0
- package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +301 -0
- package/coverage/lcov-report/components/Modal/Modal.jsx.html +505 -0
- package/coverage/lcov-report/components/Modal/index.html +146 -0
- package/coverage/lcov-report/components/Modal/index.jsx.html +151 -0
- package/coverage/lcov-report/components/NotificationBanner/CollapsedView.js.html +202 -0
- package/coverage/lcov-report/components/NotificationBanner/ExpandedView.js.html +220 -0
- package/coverage/lcov-report/components/NotificationBanner/index.html +146 -0
- package/coverage/lcov-report/components/NotificationBanner/index.js.html +748 -0
- package/coverage/lcov-report/components/SanitizedContent/index.html +116 -0
- package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +754 -0
- package/coverage/lcov-report/components/SessionDialogUI.jsx.html +868 -0
- package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +889 -0
- package/coverage/lcov-report/components/SideNav/Chart/index.html +116 -0
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/index.html +116 -0
- package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +532 -0
- package/coverage/lcov-report/components/SideNav/helpers.js.html +1309 -0
- package/coverage/lcov-report/components/SideNav/index.html +116 -0
- package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +349 -0
- package/coverage/lcov-report/components/Tooltip/index.html +146 -0
- package/coverage/lcov-report/components/Tooltip/index.js.html +94 -0
- package/coverage/lcov-report/components/Tooltip/position.js.html +289 -0
- package/coverage/lcov-report/components/hooks/index.html +116 -0
- package/coverage/lcov-report/components/hooks/useGetConfig.js.html +310 -0
- package/coverage/lcov-report/components/index.html +116 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +446 -0
- package/coverage/lcov-report/index.js.html +94 -0
- package/coverage/lcov-report/lib/Chevron.jsx.html +181 -0
- package/coverage/lcov-report/lib/SvgComponents.jsx.html +2200 -0
- package/coverage/lcov-report/lib/index.html +131 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/react/components/Accordion/index.html +116 -0
- package/coverage/lcov-report/react/components/Accordion/index.jsx.html +376 -0
- package/coverage/lcov-report/react/components/Button/index.html +116 -0
- package/coverage/lcov-report/react/components/Button/index.js.html +355 -0
- package/coverage/lcov-report/react/components/Dropdown/index.html +116 -0
- package/coverage/lcov-report/react/components/Dropdown/index.js.html +340 -0
- package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +349 -0
- package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +178 -0
- package/coverage/lcov-report/react/components/Error/error.js.html +163 -0
- package/coverage/lcov-report/react/components/Error/index.html +146 -0
- package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +718 -0
- package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +667 -0
- package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +265 -0
- package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +187 -0
- package/coverage/lcov-report/react/components/Footer/footer.js.html +145 -0
- package/coverage/lcov-report/react/components/Footer/index.html +161 -0
- package/coverage/lcov-report/react/components/GovBanner/index.html +116 -0
- package/coverage/lcov-report/react/components/GovBanner/index.js.html +436 -0
- package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +367 -0
- package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +133 -0
- package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +313 -0
- package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +265 -0
- package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +235 -0
- package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +802 -0
- package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +253 -0
- package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +271 -0
- package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +196 -0
- package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +586 -0
- package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +181 -0
- package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +328 -0
- package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +166 -0
- package/coverage/lcov-report/react/components/Header/header.js.html +205 -0
- package/coverage/lcov-report/react/components/Header/hooks.js.html +283 -0
- package/coverage/lcov-report/react/components/Header/index.html +341 -0
- package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +112 -0
- package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +298 -0
- package/coverage/lcov-report/react/components/Infotip/InfotipContent.jsx.html +223 -0
- package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +208 -0
- package/coverage/lcov-report/react/components/Infotip/index.html +161 -0
- package/coverage/lcov-report/react/components/Infotip/index.js.html +94 -0
- package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +301 -0
- package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +505 -0
- package/coverage/lcov-report/react/components/Modal/index.html +146 -0
- package/coverage/lcov-report/react/components/Modal/index.jsx.html +151 -0
- package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +202 -0
- package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +220 -0
- package/coverage/lcov-report/react/components/NotificationBanner/index.html +146 -0
- package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +748 -0
- package/coverage/lcov-report/react/components/SanitizedContent/index.html +116 -0
- package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +754 -0
- package/coverage/lcov-report/react/components/Session/Session.jsx.html +382 -0
- package/coverage/lcov-report/react/components/Session/SessionDialogWrapped.jsx.html +121 -0
- package/coverage/lcov-report/react/components/Session/index.html +146 -0
- package/coverage/lcov-report/react/components/Session/index.jsx.html +94 -0
- package/coverage/lcov-report/react/components/SessionDialog/index.html +116 -0
- package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +163 -0
- package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +808 -0
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +166 -0
- package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +116 -0
- package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +889 -0
- package/coverage/lcov-report/react/components/SideNav/Chart/index.html +131 -0
- package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +94 -0
- package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +232 -0
- package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +733 -0
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +131 -0
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +319 -0
- package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +532 -0
- package/coverage/lcov-report/react/components/SideNav/Content/index.html +131 -0
- package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +94 -0
- package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +139 -0
- package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +238 -0
- package/coverage/lcov-report/react/components/SideNav/Details/index.html +146 -0
- package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +97 -0
- package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +208 -0
- package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +247 -0
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +199 -0
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +970 -0
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +415 -0
- package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +187 -0
- package/coverage/lcov-report/react/components/SideNav/Links/index.html +206 -0
- package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +124 -0
- package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +1051 -0
- package/coverage/lcov-report/react/components/SideNav/UI/default-markup.js.html +97 -0
- package/coverage/lcov-report/react/components/SideNav/UI/index.html +146 -0
- package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +94 -0
- package/coverage/lcov-report/react/components/SideNav/helpers.js.html +1282 -0
- package/coverage/lcov-report/react/components/SideNav/index.html +131 -0
- package/coverage/lcov-report/react/components/SideNav/index.js.html +172 -0
- package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +349 -0
- package/coverage/lcov-report/react/components/Tooltip/index.html +146 -0
- package/coverage/lcov-report/react/components/Tooltip/index.js.html +94 -0
- package/coverage/lcov-report/react/components/Tooltip/position.js.html +289 -0
- package/coverage/lcov-report/react/components/hooks/index.html +116 -0
- package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +304 -0
- package/coverage/lcov-report/react/components/index.html +116 -0
- package/coverage/lcov-report/react/index.html +116 -0
- package/coverage/lcov-report/react/index.js.html +178 -0
- package/coverage/lcov-report/react/lib/Chevron.jsx.html +181 -0
- package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +2200 -0
- package/coverage/lcov-report/react/lib/index.html +131 -0
- package/coverage/lcov-report/react/lib/svg-definitions.svg.html +460 -0
- package/coverage/lcov-report/react/session/index.html +176 -0
- package/coverage/lcov-report/react/session/index.js.html +100 -0
- package/coverage/lcov-report/react/session/isAuthV2.js.html +151 -0
- package/coverage/lcov-report/react/session/logout.js.html +280 -0
- package/coverage/lcov-report/react/session/refresh.js.html +241 -0
- package/coverage/lcov-report/react/session/ttl.js.html +160 -0
- package/coverage/lcov-report/session/index.html +161 -0
- package/coverage/lcov-report/session/index.js.html +100 -0
- package/coverage/lcov-report/session/logout.js.html +316 -0
- package/coverage/lcov-report/session/refresh.js.html +232 -0
- package/coverage/lcov-report/session/ttl.js.html +196 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +2919 -0
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,1309 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for components/SideNav/helpers.js</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</a> helpers.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">48.52% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>198/408</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/19</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">48.52% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>198/408</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 low'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
+
<a name='L409'></a><a href='#L409'>409</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
475
|
+
<span class="cline-any cline-yes">1x</span>
|
|
476
|
+
<span class="cline-any cline-yes">1x</span>
|
|
477
|
+
<span class="cline-any cline-yes">1x</span>
|
|
478
|
+
<span class="cline-any cline-yes">1x</span>
|
|
479
|
+
<span class="cline-any cline-yes">1x</span>
|
|
480
|
+
<span class="cline-any cline-yes">1x</span>
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">1x</span>
|
|
483
|
+
<span class="cline-any cline-yes">1x</span>
|
|
484
|
+
<span class="cline-any cline-yes">1x</span>
|
|
485
|
+
<span class="cline-any cline-yes">1x</span>
|
|
486
|
+
<span class="cline-any cline-yes">1x</span>
|
|
487
|
+
<span class="cline-any cline-yes">1x</span>
|
|
488
|
+
<span class="cline-any cline-yes">1x</span>
|
|
489
|
+
<span class="cline-any cline-yes">1x</span>
|
|
490
|
+
<span class="cline-any cline-yes">1x</span>
|
|
491
|
+
<span class="cline-any cline-yes">1x</span>
|
|
492
|
+
<span class="cline-any cline-yes">1x</span>
|
|
493
|
+
<span class="cline-any cline-yes">1x</span>
|
|
494
|
+
<span class="cline-any cline-yes">1x</span>
|
|
495
|
+
<span class="cline-any cline-yes">1x</span>
|
|
496
|
+
<span class="cline-any cline-yes">1x</span>
|
|
497
|
+
<span class="cline-any cline-yes">1x</span>
|
|
498
|
+
<span class="cline-any cline-yes">1x</span>
|
|
499
|
+
<span class="cline-any cline-yes">1x</span>
|
|
500
|
+
<span class="cline-any cline-yes">1x</span>
|
|
501
|
+
<span class="cline-any cline-yes">1x</span>
|
|
502
|
+
<span class="cline-any cline-yes">1x</span>
|
|
503
|
+
<span class="cline-any cline-yes">1x</span>
|
|
504
|
+
<span class="cline-any cline-yes">1x</span>
|
|
505
|
+
<span class="cline-any cline-yes">1x</span>
|
|
506
|
+
<span class="cline-any cline-yes">1x</span>
|
|
507
|
+
<span class="cline-any cline-no"> </span>
|
|
508
|
+
<span class="cline-any cline-no"> </span>
|
|
509
|
+
<span class="cline-any cline-no"> </span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-no"> </span>
|
|
512
|
+
<span class="cline-any cline-yes">1x</span>
|
|
513
|
+
<span class="cline-any cline-yes">1x</span>
|
|
514
|
+
<span class="cline-any cline-yes">1x</span>
|
|
515
|
+
<span class="cline-any cline-no"> </span>
|
|
516
|
+
<span class="cline-any cline-yes">1x</span>
|
|
517
|
+
<span class="cline-any cline-yes">1x</span>
|
|
518
|
+
<span class="cline-any cline-yes">1x</span>
|
|
519
|
+
<span class="cline-any cline-no"> </span>
|
|
520
|
+
<span class="cline-any cline-no"> </span>
|
|
521
|
+
<span class="cline-any cline-no"> </span>
|
|
522
|
+
<span class="cline-any cline-no"> </span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-no"> </span>
|
|
525
|
+
<span class="cline-any cline-no"> </span>
|
|
526
|
+
<span class="cline-any cline-no"> </span>
|
|
527
|
+
<span class="cline-any cline-no"> </span>
|
|
528
|
+
<span class="cline-any cline-no"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
530
|
+
<span class="cline-any cline-no"> </span>
|
|
531
|
+
<span class="cline-any cline-no"> </span>
|
|
532
|
+
<span class="cline-any cline-no"> </span>
|
|
533
|
+
<span class="cline-any cline-yes">1x</span>
|
|
534
|
+
<span class="cline-any cline-yes">1x</span>
|
|
535
|
+
<span class="cline-any cline-yes">1x</span>
|
|
536
|
+
<span class="cline-any cline-yes">1x</span>
|
|
537
|
+
<span class="cline-any cline-yes">1x</span>
|
|
538
|
+
<span class="cline-any cline-yes">1x</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-no"> </span>
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
544
|
+
<span class="cline-any cline-no"> </span>
|
|
545
|
+
<span class="cline-any cline-no"> </span>
|
|
546
|
+
<span class="cline-any cline-no"> </span>
|
|
547
|
+
<span class="cline-any cline-no"> </span>
|
|
548
|
+
<span class="cline-any cline-no"> </span>
|
|
549
|
+
<span class="cline-any cline-no"> </span>
|
|
550
|
+
<span class="cline-any cline-no"> </span>
|
|
551
|
+
<span class="cline-any cline-no"> </span>
|
|
552
|
+
<span class="cline-any cline-no"> </span>
|
|
553
|
+
<span class="cline-any cline-no"> </span>
|
|
554
|
+
<span class="cline-any cline-no"> </span>
|
|
555
|
+
<span class="cline-any cline-no"> </span>
|
|
556
|
+
<span class="cline-any cline-no"> </span>
|
|
557
|
+
<span class="cline-any cline-no"> </span>
|
|
558
|
+
<span class="cline-any cline-no"> </span>
|
|
559
|
+
<span class="cline-any cline-no"> </span>
|
|
560
|
+
<span class="cline-any cline-no"> </span>
|
|
561
|
+
<span class="cline-any cline-no"> </span>
|
|
562
|
+
<span class="cline-any cline-no"> </span>
|
|
563
|
+
<span class="cline-any cline-no"> </span>
|
|
564
|
+
<span class="cline-any cline-no"> </span>
|
|
565
|
+
<span class="cline-any cline-no"> </span>
|
|
566
|
+
<span class="cline-any cline-no"> </span>
|
|
567
|
+
<span class="cline-any cline-no"> </span>
|
|
568
|
+
<span class="cline-any cline-no"> </span>
|
|
569
|
+
<span class="cline-any cline-no"> </span>
|
|
570
|
+
<span class="cline-any cline-yes">1x</span>
|
|
571
|
+
<span class="cline-any cline-yes">1x</span>
|
|
572
|
+
<span class="cline-any cline-yes">1x</span>
|
|
573
|
+
<span class="cline-any cline-yes">1x</span>
|
|
574
|
+
<span class="cline-any cline-yes">1x</span>
|
|
575
|
+
<span class="cline-any cline-yes">1x</span>
|
|
576
|
+
<span class="cline-any cline-yes">1x</span>
|
|
577
|
+
<span class="cline-any cline-yes">1x</span>
|
|
578
|
+
<span class="cline-any cline-yes">1x</span>
|
|
579
|
+
<span class="cline-any cline-yes">1x</span>
|
|
580
|
+
<span class="cline-any cline-yes">1x</span>
|
|
581
|
+
<span class="cline-any cline-yes">1x</span>
|
|
582
|
+
<span class="cline-any cline-yes">1x</span>
|
|
583
|
+
<span class="cline-any cline-yes">1x</span>
|
|
584
|
+
<span class="cline-any cline-yes">1x</span>
|
|
585
|
+
<span class="cline-any cline-yes">1x</span>
|
|
586
|
+
<span class="cline-any cline-yes">1x</span>
|
|
587
|
+
<span class="cline-any cline-yes">1x</span>
|
|
588
|
+
<span class="cline-any cline-yes">1x</span>
|
|
589
|
+
<span class="cline-any cline-yes">1x</span>
|
|
590
|
+
<span class="cline-any cline-no"> </span>
|
|
591
|
+
<span class="cline-any cline-no"> </span>
|
|
592
|
+
<span class="cline-any cline-no"> </span>
|
|
593
|
+
<span class="cline-any cline-no"> </span>
|
|
594
|
+
<span class="cline-any cline-no"> </span>
|
|
595
|
+
<span class="cline-any cline-no"> </span>
|
|
596
|
+
<span class="cline-any cline-no"> </span>
|
|
597
|
+
<span class="cline-any cline-no"> </span>
|
|
598
|
+
<span class="cline-any cline-no"> </span>
|
|
599
|
+
<span class="cline-any cline-no"> </span>
|
|
600
|
+
<span class="cline-any cline-no"> </span>
|
|
601
|
+
<span class="cline-any cline-no"> </span>
|
|
602
|
+
<span class="cline-any cline-no"> </span>
|
|
603
|
+
<span class="cline-any cline-no"> </span>
|
|
604
|
+
<span class="cline-any cline-no"> </span>
|
|
605
|
+
<span class="cline-any cline-no"> </span>
|
|
606
|
+
<span class="cline-any cline-no"> </span>
|
|
607
|
+
<span class="cline-any cline-no"> </span>
|
|
608
|
+
<span class="cline-any cline-yes">1x</span>
|
|
609
|
+
<span class="cline-any cline-yes">1x</span>
|
|
610
|
+
<span class="cline-any cline-yes">1x</span>
|
|
611
|
+
<span class="cline-any cline-yes">1x</span>
|
|
612
|
+
<span class="cline-any cline-yes">1x</span>
|
|
613
|
+
<span class="cline-any cline-yes">1x</span>
|
|
614
|
+
<span class="cline-any cline-yes">1x</span>
|
|
615
|
+
<span class="cline-any cline-yes">1x</span>
|
|
616
|
+
<span class="cline-any cline-yes">1x</span>
|
|
617
|
+
<span class="cline-any cline-yes">1x</span>
|
|
618
|
+
<span class="cline-any cline-no"> </span>
|
|
619
|
+
<span class="cline-any cline-no"> </span>
|
|
620
|
+
<span class="cline-any cline-no"> </span>
|
|
621
|
+
<span class="cline-any cline-no"> </span>
|
|
622
|
+
<span class="cline-any cline-no"> </span>
|
|
623
|
+
<span class="cline-any cline-no"> </span>
|
|
624
|
+
<span class="cline-any cline-no"> </span>
|
|
625
|
+
<span class="cline-any cline-no"> </span>
|
|
626
|
+
<span class="cline-any cline-no"> </span>
|
|
627
|
+
<span class="cline-any cline-no"> </span>
|
|
628
|
+
<span class="cline-any cline-yes">1x</span>
|
|
629
|
+
<span class="cline-any cline-yes">1x</span>
|
|
630
|
+
<span class="cline-any cline-yes">1x</span>
|
|
631
|
+
<span class="cline-any cline-yes">1x</span>
|
|
632
|
+
<span class="cline-any cline-yes">1x</span>
|
|
633
|
+
<span class="cline-any cline-yes">1x</span>
|
|
634
|
+
<span class="cline-any cline-yes">1x</span>
|
|
635
|
+
<span class="cline-any cline-yes">1x</span>
|
|
636
|
+
<span class="cline-any cline-no"> </span>
|
|
637
|
+
<span class="cline-any cline-no"> </span>
|
|
638
|
+
<span class="cline-any cline-no"> </span>
|
|
639
|
+
<span class="cline-any cline-no"> </span>
|
|
640
|
+
<span class="cline-any cline-yes">1x</span>
|
|
641
|
+
<span class="cline-any cline-yes">1x</span>
|
|
642
|
+
<span class="cline-any cline-yes">1x</span>
|
|
643
|
+
<span class="cline-any cline-yes">1x</span>
|
|
644
|
+
<span class="cline-any cline-yes">1x</span>
|
|
645
|
+
<span class="cline-any cline-yes">1x</span>
|
|
646
|
+
<span class="cline-any cline-yes">1x</span>
|
|
647
|
+
<span class="cline-any cline-yes">1x</span>
|
|
648
|
+
<span class="cline-any cline-no"> </span>
|
|
649
|
+
<span class="cline-any cline-no"> </span>
|
|
650
|
+
<span class="cline-any cline-no"> </span>
|
|
651
|
+
<span class="cline-any cline-no"> </span>
|
|
652
|
+
<span class="cline-any cline-no"> </span>
|
|
653
|
+
<span class="cline-any cline-no"> </span>
|
|
654
|
+
<span class="cline-any cline-no"> </span>
|
|
655
|
+
<span class="cline-any cline-no"> </span>
|
|
656
|
+
<span class="cline-any cline-no"> </span>
|
|
657
|
+
<span class="cline-any cline-no"> </span>
|
|
658
|
+
<span class="cline-any cline-no"> </span>
|
|
659
|
+
<span class="cline-any cline-no"> </span>
|
|
660
|
+
<span class="cline-any cline-no"> </span>
|
|
661
|
+
<span class="cline-any cline-no"> </span>
|
|
662
|
+
<span class="cline-any cline-no"> </span>
|
|
663
|
+
<span class="cline-any cline-no"> </span>
|
|
664
|
+
<span class="cline-any cline-no"> </span>
|
|
665
|
+
<span class="cline-any cline-no"> </span>
|
|
666
|
+
<span class="cline-any cline-no"> </span>
|
|
667
|
+
<span class="cline-any cline-no"> </span>
|
|
668
|
+
<span class="cline-any cline-no"> </span>
|
|
669
|
+
<span class="cline-any cline-no"> </span>
|
|
670
|
+
<span class="cline-any cline-no"> </span>
|
|
671
|
+
<span class="cline-any cline-no"> </span>
|
|
672
|
+
<span class="cline-any cline-no"> </span>
|
|
673
|
+
<span class="cline-any cline-no"> </span>
|
|
674
|
+
<span class="cline-any cline-no"> </span>
|
|
675
|
+
<span class="cline-any cline-no"> </span>
|
|
676
|
+
<span class="cline-any cline-no"> </span>
|
|
677
|
+
<span class="cline-any cline-no"> </span>
|
|
678
|
+
<span class="cline-any cline-no"> </span>
|
|
679
|
+
<span class="cline-any cline-no"> </span>
|
|
680
|
+
<span class="cline-any cline-no"> </span>
|
|
681
|
+
<span class="cline-any cline-no"> </span>
|
|
682
|
+
<span class="cline-any cline-no"> </span>
|
|
683
|
+
<span class="cline-any cline-no"> </span>
|
|
684
|
+
<span class="cline-any cline-no"> </span>
|
|
685
|
+
<span class="cline-any cline-no"> </span>
|
|
686
|
+
<span class="cline-any cline-no"> </span>
|
|
687
|
+
<span class="cline-any cline-no"> </span>
|
|
688
|
+
<span class="cline-any cline-yes">1x</span>
|
|
689
|
+
<span class="cline-any cline-yes">1x</span>
|
|
690
|
+
<span class="cline-any cline-yes">1x</span>
|
|
691
|
+
<span class="cline-any cline-yes">1x</span>
|
|
692
|
+
<span class="cline-any cline-yes">1x</span>
|
|
693
|
+
<span class="cline-any cline-yes">1x</span>
|
|
694
|
+
<span class="cline-any cline-yes">1x</span>
|
|
695
|
+
<span class="cline-any cline-yes">1x</span>
|
|
696
|
+
<span class="cline-any cline-no"> </span>
|
|
697
|
+
<span class="cline-any cline-no"> </span>
|
|
698
|
+
<span class="cline-any cline-no"> </span>
|
|
699
|
+
<span class="cline-any cline-no"> </span>
|
|
700
|
+
<span class="cline-any cline-no"> </span>
|
|
701
|
+
<span class="cline-any cline-no"> </span>
|
|
702
|
+
<span class="cline-any cline-no"> </span>
|
|
703
|
+
<span class="cline-any cline-no"> </span>
|
|
704
|
+
<span class="cline-any cline-no"> </span>
|
|
705
|
+
<span class="cline-any cline-no"> </span>
|
|
706
|
+
<span class="cline-any cline-no"> </span>
|
|
707
|
+
<span class="cline-any cline-no"> </span>
|
|
708
|
+
<span class="cline-any cline-no"> </span>
|
|
709
|
+
<span class="cline-any cline-no"> </span>
|
|
710
|
+
<span class="cline-any cline-no"> </span>
|
|
711
|
+
<span class="cline-any cline-no"> </span>
|
|
712
|
+
<span class="cline-any cline-no"> </span>
|
|
713
|
+
<span class="cline-any cline-no"> </span>
|
|
714
|
+
<span class="cline-any cline-no"> </span>
|
|
715
|
+
<span class="cline-any cline-yes">1x</span>
|
|
716
|
+
<span class="cline-any cline-yes">1x</span>
|
|
717
|
+
<span class="cline-any cline-yes">1x</span>
|
|
718
|
+
<span class="cline-any cline-yes">1x</span>
|
|
719
|
+
<span class="cline-any cline-yes">1x</span>
|
|
720
|
+
<span class="cline-any cline-yes">1x</span>
|
|
721
|
+
<span class="cline-any cline-yes">1x</span>
|
|
722
|
+
<span class="cline-any cline-yes">1x</span>
|
|
723
|
+
<span class="cline-any cline-yes">1x</span>
|
|
724
|
+
<span class="cline-any cline-yes">1x</span>
|
|
725
|
+
<span class="cline-any cline-yes">1x</span>
|
|
726
|
+
<span class="cline-any cline-yes">1x</span>
|
|
727
|
+
<span class="cline-any cline-yes">1x</span>
|
|
728
|
+
<span class="cline-any cline-yes">1x</span>
|
|
729
|
+
<span class="cline-any cline-yes">1x</span>
|
|
730
|
+
<span class="cline-any cline-yes">1x</span>
|
|
731
|
+
<span class="cline-any cline-yes">1x</span>
|
|
732
|
+
<span class="cline-any cline-yes">1x</span>
|
|
733
|
+
<span class="cline-any cline-yes">1x</span>
|
|
734
|
+
<span class="cline-any cline-yes">1x</span>
|
|
735
|
+
<span class="cline-any cline-yes">1x</span>
|
|
736
|
+
<span class="cline-any cline-yes">1x</span>
|
|
737
|
+
<span class="cline-any cline-yes">1x</span>
|
|
738
|
+
<span class="cline-any cline-yes">1x</span>
|
|
739
|
+
<span class="cline-any cline-yes">1x</span>
|
|
740
|
+
<span class="cline-any cline-yes">1x</span>
|
|
741
|
+
<span class="cline-any cline-yes">1x</span>
|
|
742
|
+
<span class="cline-any cline-yes">1x</span>
|
|
743
|
+
<span class="cline-any cline-yes">1x</span>
|
|
744
|
+
<span class="cline-any cline-yes">1x</span>
|
|
745
|
+
<span class="cline-any cline-yes">1x</span>
|
|
746
|
+
<span class="cline-any cline-yes">1x</span>
|
|
747
|
+
<span class="cline-any cline-yes">1x</span>
|
|
748
|
+
<span class="cline-any cline-yes">1x</span>
|
|
749
|
+
<span class="cline-any cline-yes">1x</span>
|
|
750
|
+
<span class="cline-any cline-yes">1x</span>
|
|
751
|
+
<span class="cline-any cline-no"> </span>
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
753
|
+
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-no"> </span>
|
|
755
|
+
<span class="cline-any cline-yes">1x</span>
|
|
756
|
+
<span class="cline-any cline-yes">1x</span>
|
|
757
|
+
<span class="cline-any cline-yes">1x</span>
|
|
758
|
+
<span class="cline-any cline-yes">1x</span>
|
|
759
|
+
<span class="cline-any cline-yes">1x</span>
|
|
760
|
+
<span class="cline-any cline-yes">1x</span>
|
|
761
|
+
<span class="cline-any cline-yes">1x</span>
|
|
762
|
+
<span class="cline-any cline-yes">1x</span>
|
|
763
|
+
<span class="cline-any cline-yes">1x</span>
|
|
764
|
+
<span class="cline-any cline-no"> </span>
|
|
765
|
+
<span class="cline-any cline-no"> </span>
|
|
766
|
+
<span class="cline-any cline-no"> </span>
|
|
767
|
+
<span class="cline-any cline-no"> </span>
|
|
768
|
+
<span class="cline-any cline-no"> </span>
|
|
769
|
+
<span class="cline-any cline-no"> </span>
|
|
770
|
+
<span class="cline-any cline-no"> </span>
|
|
771
|
+
<span class="cline-any cline-no"> </span>
|
|
772
|
+
<span class="cline-any cline-no"> </span>
|
|
773
|
+
<span class="cline-any cline-no"> </span>
|
|
774
|
+
<span class="cline-any cline-yes">1x</span>
|
|
775
|
+
<span class="cline-any cline-yes">1x</span>
|
|
776
|
+
<span class="cline-any cline-yes">1x</span>
|
|
777
|
+
<span class="cline-any cline-yes">1x</span>
|
|
778
|
+
<span class="cline-any cline-yes">1x</span>
|
|
779
|
+
<span class="cline-any cline-yes">1x</span>
|
|
780
|
+
<span class="cline-any cline-yes">1x</span>
|
|
781
|
+
<span class="cline-any cline-yes">1x</span>
|
|
782
|
+
<span class="cline-any cline-no"> </span>
|
|
783
|
+
<span class="cline-any cline-no"> </span>
|
|
784
|
+
<span class="cline-any cline-no"> </span>
|
|
785
|
+
<span class="cline-any cline-no"> </span>
|
|
786
|
+
<span class="cline-any cline-no"> </span>
|
|
787
|
+
<span class="cline-any cline-no"> </span>
|
|
788
|
+
<span class="cline-any cline-no"> </span>
|
|
789
|
+
<span class="cline-any cline-no"> </span>
|
|
790
|
+
<span class="cline-any cline-no"> </span>
|
|
791
|
+
<span class="cline-any cline-no"> </span>
|
|
792
|
+
<span class="cline-any cline-no"> </span>
|
|
793
|
+
<span class="cline-any cline-no"> </span>
|
|
794
|
+
<span class="cline-any cline-no"> </span>
|
|
795
|
+
<span class="cline-any cline-no"> </span>
|
|
796
|
+
<span class="cline-any cline-no"> </span>
|
|
797
|
+
<span class="cline-any cline-no"> </span>
|
|
798
|
+
<span class="cline-any cline-no"> </span>
|
|
799
|
+
<span class="cline-any cline-no"> </span>
|
|
800
|
+
<span class="cline-any cline-no"> </span>
|
|
801
|
+
<span class="cline-any cline-no"> </span>
|
|
802
|
+
<span class="cline-any cline-no"> </span>
|
|
803
|
+
<span class="cline-any cline-no"> </span>
|
|
804
|
+
<span class="cline-any cline-no"> </span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
806
|
+
<span class="cline-any cline-no"> </span>
|
|
807
|
+
<span class="cline-any cline-no"> </span>
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-no"> </span>
|
|
812
|
+
<span class="cline-any cline-no"> </span>
|
|
813
|
+
<span class="cline-any cline-no"> </span>
|
|
814
|
+
<span class="cline-any cline-yes">1x</span>
|
|
815
|
+
<span class="cline-any cline-yes">1x</span>
|
|
816
|
+
<span class="cline-any cline-yes">1x</span>
|
|
817
|
+
<span class="cline-any cline-no"> </span>
|
|
818
|
+
<span class="cline-any cline-no"> </span>
|
|
819
|
+
<span class="cline-any cline-no"> </span>
|
|
820
|
+
<span class="cline-any cline-yes">1x</span>
|
|
821
|
+
<span class="cline-any cline-yes">1x</span>
|
|
822
|
+
<span class="cline-any cline-yes">1x</span>
|
|
823
|
+
<span class="cline-any cline-yes">1x</span>
|
|
824
|
+
<span class="cline-any cline-yes">1x</span>
|
|
825
|
+
<span class="cline-any cline-yes">1x</span>
|
|
826
|
+
<span class="cline-any cline-yes">1x</span>
|
|
827
|
+
<span class="cline-any cline-no"> </span>
|
|
828
|
+
<span class="cline-any cline-no"> </span>
|
|
829
|
+
<span class="cline-any cline-yes">1x</span>
|
|
830
|
+
<span class="cline-any cline-yes">1x</span>
|
|
831
|
+
<span class="cline-any cline-no"> </span>
|
|
832
|
+
<span class="cline-any cline-no"> </span>
|
|
833
|
+
<span class="cline-any cline-no"> </span>
|
|
834
|
+
<span class="cline-any cline-yes">1x</span>
|
|
835
|
+
<span class="cline-any cline-yes">1x</span>
|
|
836
|
+
<span class="cline-any cline-no"> </span>
|
|
837
|
+
<span class="cline-any cline-no"> </span>
|
|
838
|
+
<span class="cline-any cline-no"> </span>
|
|
839
|
+
<span class="cline-any cline-no"> </span>
|
|
840
|
+
<span class="cline-any cline-no"> </span>
|
|
841
|
+
<span class="cline-any cline-no"> </span>
|
|
842
|
+
<span class="cline-any cline-no"> </span>
|
|
843
|
+
<span class="cline-any cline-no"> </span>
|
|
844
|
+
<span class="cline-any cline-yes">1x</span>
|
|
845
|
+
<span class="cline-any cline-yes">1x</span>
|
|
846
|
+
<span class="cline-any cline-no"> </span>
|
|
847
|
+
<span class="cline-any cline-yes">1x</span>
|
|
848
|
+
<span class="cline-any cline-yes">1x</span>
|
|
849
|
+
<span class="cline-any cline-no"> </span>
|
|
850
|
+
<span class="cline-any cline-yes">1x</span>
|
|
851
|
+
<span class="cline-any cline-yes">1x</span>
|
|
852
|
+
<span class="cline-any cline-no"> </span>
|
|
853
|
+
<span class="cline-any cline-no"> </span>
|
|
854
|
+
<span class="cline-any cline-no"> </span>
|
|
855
|
+
<span class="cline-any cline-no"> </span>
|
|
856
|
+
<span class="cline-any cline-no"> </span>
|
|
857
|
+
<span class="cline-any cline-no"> </span>
|
|
858
|
+
<span class="cline-any cline-yes">1x</span>
|
|
859
|
+
<span class="cline-any cline-yes">1x</span>
|
|
860
|
+
<span class="cline-any cline-yes">1x</span>
|
|
861
|
+
<span class="cline-any cline-yes">1x</span>
|
|
862
|
+
<span class="cline-any cline-yes">1x</span>
|
|
863
|
+
<span class="cline-any cline-yes">1x</span>
|
|
864
|
+
<span class="cline-any cline-yes">1x</span>
|
|
865
|
+
<span class="cline-any cline-yes">1x</span>
|
|
866
|
+
<span class="cline-any cline-yes">1x</span>
|
|
867
|
+
<span class="cline-any cline-yes">1x</span>
|
|
868
|
+
<span class="cline-any cline-yes">1x</span>
|
|
869
|
+
<span class="cline-any cline-yes">1x</span>
|
|
870
|
+
<span class="cline-any cline-yes">1x</span>
|
|
871
|
+
<span class="cline-any cline-yes">1x</span>
|
|
872
|
+
<span class="cline-any cline-yes">1x</span>
|
|
873
|
+
<span class="cline-any cline-yes">1x</span>
|
|
874
|
+
<span class="cline-any cline-yes">1x</span>
|
|
875
|
+
<span class="cline-any cline-yes">1x</span>
|
|
876
|
+
<span class="cline-any cline-yes">1x</span>
|
|
877
|
+
<span class="cline-any cline-yes">1x</span>
|
|
878
|
+
<span class="cline-any cline-yes">1x</span>
|
|
879
|
+
<span class="cline-any cline-yes">1x</span>
|
|
880
|
+
<span class="cline-any cline-yes">1x</span>
|
|
881
|
+
<span class="cline-any cline-yes">1x</span>
|
|
882
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import cookie from 'cookie';
|
|
883
|
+
import {
|
|
884
|
+
AccountHomeIcon,
|
|
885
|
+
DashboardIcon,
|
|
886
|
+
FacilityBasedPreviewIcon,
|
|
887
|
+
HardshipIcon,
|
|
888
|
+
HelpSupportIcon,
|
|
889
|
+
ManageUsersIcon,
|
|
890
|
+
MyApplicationsIcon,
|
|
891
|
+
MyTestDataIcon,
|
|
892
|
+
PaymentIcon,
|
|
893
|
+
PhysicianCompareIcon,
|
|
894
|
+
StarIcon,
|
|
895
|
+
TargetIcon,
|
|
896
|
+
IndividualReporting,
|
|
897
|
+
ManageDocumentsIcon,
|
|
898
|
+
AuthorContentIcon,
|
|
899
|
+
RegistrationIcon,
|
|
900
|
+
} from '../../lib/SvgComponents';
|
|
901
|
+
import { isReviewerRole, isContentMgmtRole } from './Content/SelectRole/utils';
|
|
902
|
+
|
|
903
|
+
const submissionsUrl = '/user/submissions';
|
|
904
|
+
const dashboardUrl = '/user/dashboard';
|
|
905
|
+
const manageUrl = '/user/manage-access';
|
|
906
|
+
const feedbackUrl = `${submissionsUrl}/feedback`;
|
|
907
|
+
const physicianCompareUrl = `${submissionsUrl}/doctors-clinicians-preview`;
|
|
908
|
+
const reportsPortalUrl = `${submissionsUrl}/reports`;
|
|
909
|
+
const facilityBasedPreviewBaseUrl = `${submissionsUrl}/facility-based-preview`;
|
|
910
|
+
const viewingToolUrl = '/user/helpdesk-viewing-tool';
|
|
911
|
+
const contentMgrDashboardUrl = '/user/content-management';
|
|
912
|
+
const registrationUrl = '/user/registration/';
|
|
913
|
+
|
|
914
|
+
const performanceFeedbackUrl = <span class="fstat-no" title="function not covered" >(performanceYear) => {</span>
|
|
915
|
+
<span class="cstat-no" title="statement not covered" > if (performanceYear) {</span>
|
|
916
|
+
<span class="cstat-no" title="statement not covered" > return `${feedbackUrl}/${performanceYear}`;</span>
|
|
917
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
918
|
+
<span class="cstat-no" title="statement not covered" > return feedbackUrl;</span>
|
|
919
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
920
|
+
};
|
|
921
|
+
|
|
922
|
+
const facilityBasedPreviewUrl = <span class="fstat-no" title="function not covered" >(performanceYear) => {</span>
|
|
923
|
+
<span class="cstat-no" title="statement not covered" > return `${facilityBasedPreviewBaseUrl}/${performanceYear}`;</span>
|
|
924
|
+
};
|
|
925
|
+
|
|
926
|
+
const handleNavigation = <span class="fstat-no" title="function not covered" >(e, linkCallbackFunction, label) => {</span>
|
|
927
|
+
<span class="cstat-no" title="statement not covered" > if (linkCallbackFunction) {</span>
|
|
928
|
+
<span class="cstat-no" title="statement not covered" > const { pathname, hash, search } = e.currentTarget;</span>
|
|
929
|
+
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
930
|
+
<span class="cstat-no" title="statement not covered" > e.stopPropagation();</span>
|
|
931
|
+
<span class="cstat-no" title="statement not covered" > linkCallbackFunction(`${pathname}${hash}${search}`);</span>
|
|
932
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
933
|
+
<span class="cstat-no" title="statement not covered" > window?.utag?.link({</span>
|
|
934
|
+
<span class="cstat-no" title="statement not covered" > ga_event_category: 'side navbar',</span>
|
|
935
|
+
<span class="cstat-no" title="statement not covered" > ga_event_action: 'click',</span>
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > ga_event_label: label,</span>
|
|
937
|
+
<span class="cstat-no" title="statement not covered" > page_title: `${window.document.title}`,</span>
|
|
938
|
+
<span class="cstat-no" title="statement not covered" > page_url: `${window.location.pathname}`,</span>
|
|
939
|
+
<span class="cstat-no" title="statement not covered" > event: 'trackEvent',</span>
|
|
940
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
941
|
+
};
|
|
942
|
+
|
|
943
|
+
/**
|
|
944
|
+
* Load icon by url
|
|
945
|
+
* @param {string} url
|
|
946
|
+
* @returns svg icon
|
|
947
|
+
*/
|
|
948
|
+
const getIcon = <span class="fstat-no" title="function not covered" >(url, linkLabel) => {</span>
|
|
949
|
+
<span class="cstat-no" title="statement not covered" > const icons = {</span>
|
|
950
|
+
<span class="cstat-no" title="statement not covered" > [dashboardUrl]: DashboardIcon,</span>
|
|
951
|
+
<span class="cstat-no" title="statement not covered" > [feedbackUrl]: StarIcon,</span>
|
|
952
|
+
<span class="cstat-no" title="statement not covered" > [manageUrl]: ManageUsersIcon,</span>
|
|
953
|
+
<span class="cstat-no" title="statement not covered" > [physicianCompareUrl]: PhysicianCompareIcon,</span>
|
|
954
|
+
<span class="cstat-no" title="statement not covered" > [reportsPortalUrl]: HardshipIcon,</span>
|
|
955
|
+
<span class="cstat-no" title="statement not covered" > [submissionsUrl]: AccountHomeIcon,</span>
|
|
956
|
+
<span class="cstat-no" title="statement not covered" > [facilityBasedPreviewBaseUrl]: FacilityBasedPreviewIcon,</span>
|
|
957
|
+
<span class="cstat-no" title="statement not covered" > [registrationUrl]: RegistrationIcon,</span>
|
|
958
|
+
<span class="cstat-no" title="statement not covered" > '/developers': HelpSupportIcon,</span>
|
|
959
|
+
<span class="cstat-no" title="statement not covered" > '/resources/help-and-support': HelpSupportIcon,</span>
|
|
960
|
+
<span class="cstat-no" title="statement not covered" > '/user/apm-incentive-payments': PaymentIcon,</span>
|
|
961
|
+
<span class="cstat-no" title="statement not covered" > '/user/applications': MyApplicationsIcon,</span>
|
|
962
|
+
<span class="cstat-no" title="statement not covered" > '/user/exception/#/landing': HardshipIcon,</span>
|
|
963
|
+
<span class="cstat-no" title="statement not covered" > '/user/targeted-review/#/landing': TargetIcon,</span>
|
|
964
|
+
<span class="cstat-no" title="statement not covered" > '/user/test-data': MyTestDataIcon,</span>
|
|
965
|
+
<span class="cstat-no" title="statement not covered" > '/user/self-nomination/#/landing': IndividualReporting,</span>
|
|
966
|
+
<span class="cstat-no" title="statement not covered" > '/user/reviewers': AccountHomeIcon,</span>
|
|
967
|
+
<span class="cstat-no" title="statement not covered" > '/reviewer/exception': HardshipIcon,</span>
|
|
968
|
+
<span class="cstat-no" title="statement not covered" > '/reviewer/targeted-review': TargetIcon,</span>
|
|
969
|
+
<span class="cstat-no" title="statement not covered" > '/self-nomination': IndividualReporting,</span>
|
|
970
|
+
<span class="cstat-no" title="statement not covered" > '/case-management': FacilityBasedPreviewIcon,</span>
|
|
971
|
+
<span class="cstat-no" title="statement not covered" > [contentMgrDashboardUrl]: AccountHomeIcon,</span>
|
|
972
|
+
<span class="cstat-no" title="statement not covered" > 'Manage Documents': ManageDocumentsIcon,</span>
|
|
973
|
+
<span class="cstat-no" title="statement not covered" > 'Author Content': AuthorContentIcon,</span>
|
|
974
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
975
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
976
|
+
<span class="cstat-no" title="statement not covered" > if (linkLabel) return icons[linkLabel];</span>
|
|
977
|
+
<span class="cstat-no" title="statement not covered" > return icons[url];</span>
|
|
978
|
+
};
|
|
979
|
+
|
|
980
|
+
const singleRoleContentMap = {
|
|
981
|
+
'QPP Content Management - Author': 'contentManager',
|
|
982
|
+
'QPP Content Management - Approver': 'contentManager',
|
|
983
|
+
'QPP Content Management - Admin': 'contentManager',
|
|
984
|
+
'QPP Front-end - Author': 'contentManager',
|
|
985
|
+
'QPP Self-Nomination': 'internalReviewers',
|
|
986
|
+
'QPP Targeted Review & Exceptions': 'internalReviewers',
|
|
987
|
+
'QPP Case Management - PIMMS Reviewer': 'internalReviewers',
|
|
988
|
+
'QPP Case Management - ACO PAC Reviewer': 'internalReviewers',
|
|
989
|
+
'QPP Case Management - CMS Reviewer': 'internalReviewers',
|
|
990
|
+
};
|
|
991
|
+
|
|
992
|
+
const multiRoleContentMap = {
|
|
993
|
+
Reviewer: 'internalReviewers',
|
|
994
|
+
'Content Manager': 'contentManager',
|
|
995
|
+
};
|
|
996
|
+
|
|
997
|
+
const replaceDefaultContentMgrLinks = <span class="fstat-no" title="function not covered" >(defaultContent) => {</span>
|
|
998
|
+
<span class="cstat-no" title="statement not covered" > const host = window.location.host;</span>
|
|
999
|
+
<span class="cstat-no" title="statement not covered" > const updatedDefaultContent = {</span>
|
|
1000
|
+
<span class="cstat-no" title="statement not covered" > ...defaultContent,</span>
|
|
1001
|
+
<span class="cstat-no" title="statement not covered" > contentManager: [</span>
|
|
1002
|
+
<span class="cstat-no" title="statement not covered" > defaultContent.contentManager.find(</span>
|
|
1003
|
+
<span class="cstat-no" title="statement not covered" > (obj) => obj.label === 'Dashboard Home',</span>
|
|
1004
|
+
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
1005
|
+
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1006
|
+
<span class="cstat-no" title="statement not covered" > url: `${host}.qpp.cms.gov/cm/`,</span>
|
|
1007
|
+
<span class="cstat-no" title="statement not covered" > label: 'Manage Documents',</span>
|
|
1008
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1009
|
+
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1010
|
+
<span class="cstat-no" title="statement not covered" > url: `${host}.qpp.cms.gov/content-management/`,</span>
|
|
1011
|
+
<span class="cstat-no" title="statement not covered" > label: 'Author Content',</span>
|
|
1012
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1013
|
+
<span class="cstat-no" title="statement not covered" > ],</span>
|
|
1014
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1015
|
+
<span class="cstat-no" title="statement not covered" > return updatedDefaultContent;</span>
|
|
1016
|
+
};
|
|
1017
|
+
|
|
1018
|
+
/**
|
|
1019
|
+
* Load the side nav content for the given role
|
|
1020
|
+
* @param {string} roleName role of given user from internalReviewerNames
|
|
1021
|
+
* @param {object} navContent object of side nav links by role (levelOneContent & defaultContent)
|
|
1022
|
+
* @returns {array} returns an array of objects (side nav menu links) from levelOneContent
|
|
1023
|
+
* || defaultContent
|
|
1024
|
+
*/
|
|
1025
|
+
const loadSideNavContent = <span class="fstat-no" title="function not covered" >(roleName, navContent, isMultiRoleUser = false) => {</span>
|
|
1026
|
+
<span class="cstat-no" title="statement not covered" > const { levelOneContent, defaultContent } = navContent;</span>
|
|
1027
|
+
<span class="cstat-no" title="statement not covered" > const updatedDefaultContent = replaceDefaultContentMgrLinks(defaultContent);</span>
|
|
1028
|
+
<span class="cstat-no" title="statement not covered" > const roleContentMap = isMultiRoleUser</span>
|
|
1029
|
+
<span class="cstat-no" title="statement not covered" > ? multiRoleContentMap</span>
|
|
1030
|
+
<span class="cstat-no" title="statement not covered" > : singleRoleContentMap;</span>
|
|
1031
|
+
<span class="cstat-no" title="statement not covered" > const contentByRole = roleContentMap[roleName];</span>
|
|
1032
|
+
<span class="cstat-no" title="statement not covered" > if (levelOneContent) {</span>
|
|
1033
|
+
<span class="cstat-no" title="statement not covered" > return levelOneContent[contentByRole] || levelOneContent.default;</span>
|
|
1034
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1035
|
+
<span class="cstat-no" title="statement not covered" > return updatedDefaultContent[contentByRole] || updatedDefaultContent.default;</span>
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
/**
|
|
1039
|
+
* Check if user is currently impersonating
|
|
1040
|
+
* @param {string} docCookie document cookie
|
|
1041
|
+
* @returns {boolean}
|
|
1042
|
+
*/
|
|
1043
|
+
const isImpersonating = <span class="fstat-no" title="function not covered" >(docCookie) => {</span>
|
|
1044
|
+
<span class="cstat-no" title="statement not covered" > const parsedCookies = cookie.parse(docCookie);</span>
|
|
1045
|
+
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
1046
|
+
<span class="cstat-no" title="statement not covered" > parsedCookies.qpp_can_impersonate && parsedCookies.qpp_impersonated_user</span>
|
|
1047
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1048
|
+
};
|
|
1049
|
+
|
|
1050
|
+
/**
|
|
1051
|
+
* Check if user has multiple roles, used to display Select Role dropdown
|
|
1052
|
+
* @param {string} docCookie document cookie
|
|
1053
|
+
* @returns {boolean}
|
|
1054
|
+
*/
|
|
1055
|
+
const isMultiRoleUser = <span class="fstat-no" title="function not covered" >(docCookie) => {</span>
|
|
1056
|
+
<span class="cstat-no" title="statement not covered" > const activeRoles = new Set();</span>
|
|
1057
|
+
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1058
|
+
<span class="cstat-no" title="statement not covered" > qpp_cms_internal_authorized,</span>
|
|
1059
|
+
<span class="cstat-no" title="statement not covered" > qpp_has_authorizations,</span>
|
|
1060
|
+
<span class="cstat-no" title="statement not covered" > qpp_is_dev_pre,</span>
|
|
1061
|
+
<span class="cstat-no" title="statement not covered" > } = cookie.parse(docCookie);</span>
|
|
1062
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1063
|
+
<span class="cstat-no" title="statement not covered" > let internalAuthz = [];</span>
|
|
1064
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1065
|
+
<span class="cstat-no" title="statement not covered" > if (qpp_cms_internal_authorized) {</span>
|
|
1066
|
+
<span class="cstat-no" title="statement not covered" > internalAuthz = JSON.parse(qpp_cms_internal_authorized);</span>
|
|
1067
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1068
|
+
<span class="cstat-no" title="statement not covered" > // Filter out test internalCms authz</span>
|
|
1069
|
+
<span class="cstat-no" title="statement not covered" > const filteredInternalAuthz = internalAuthz.filter((internalAuth) => {</span>
|
|
1070
|
+
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
1071
|
+
<span class="cstat-no" title="statement not covered" > internalAuth !== 'Test internalCms Resource' &&</span>
|
|
1072
|
+
<span class="cstat-no" title="statement not covered" > internalAuth !== 'Test internalCms Resource 2'</span>
|
|
1073
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1074
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1075
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1076
|
+
<span class="cstat-no" title="statement not covered" > filteredInternalAuthz.forEach((element) => {</span>
|
|
1077
|
+
<span class="cstat-no" title="statement not covered" > if (isReviewerRole(element)) {</span>
|
|
1078
|
+
<span class="cstat-no" title="statement not covered" > return activeRoles.add('reviewer');</span>
|
|
1079
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1080
|
+
<span class="cstat-no" title="statement not covered" > if (isContentMgmtRole(element)) {</span>
|
|
1081
|
+
<span class="cstat-no" title="statement not covered" > return activeRoles.add('content manager');</span>
|
|
1082
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1083
|
+
<span class="cstat-no" title="statement not covered" > return activeRoles.add(element);</span>
|
|
1084
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1085
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1086
|
+
<span class="cstat-no" title="statement not covered" > if (qpp_has_authorizations === 'true') {</span>
|
|
1087
|
+
<span class="cstat-no" title="statement not covered" > activeRoles.add('qpp user');</span>
|
|
1088
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1089
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1090
|
+
<span class="cstat-no" title="statement not covered" > if (qpp_is_dev_pre === 'true') {</span>
|
|
1091
|
+
<span class="cstat-no" title="statement not covered" > activeRoles.clear(); // reset roles since there is no dropdown in devpre</span>
|
|
1092
|
+
<span class="cstat-no" title="statement not covered" > activeRoles.add('devpre user');</span>
|
|
1093
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1094
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1095
|
+
<span class="cstat-no" title="statement not covered" > return activeRoles.size > 1;</span>
|
|
1096
|
+
};
|
|
1097
|
+
|
|
1098
|
+
/**
|
|
1099
|
+
* Transform cookie values to permissions object
|
|
1100
|
+
* @param {object} cookies parsed document.cookie values
|
|
1101
|
+
* @returns {object}
|
|
1102
|
+
*/
|
|
1103
|
+
const transformCookieValues = <span class="fstat-no" title="function not covered" >(cookies) => {</span>
|
|
1104
|
+
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1105
|
+
<span class="cstat-no" title="statement not covered" > qpp_can_impersonate,</span>
|
|
1106
|
+
<span class="cstat-no" title="statement not covered" > qpp_has_authorizations,</span>
|
|
1107
|
+
<span class="cstat-no" title="statement not covered" > user_has_apm_payments,</span>
|
|
1108
|
+
<span class="cstat-no" title="statement not covered" > qpp_cms_internal_authorized,</span>
|
|
1109
|
+
<span class="cstat-no" title="statement not covered" > qpp_ehr_authorized,</span>
|
|
1110
|
+
<span class="cstat-no" title="statement not covered" > qpp_has_non_registry_authorizations,</span>
|
|
1111
|
+
<span class="cstat-no" title="statement not covered" > } = cookies;</span>
|
|
1112
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1113
|
+
<span class="cstat-no" title="statement not covered" > canImpersonate: qpp_can_impersonate === 'true',</span>
|
|
1114
|
+
<span class="cstat-no" title="statement not covered" > hasAuthorizations: qpp_has_authorizations === 'true',</span>
|
|
1115
|
+
<span class="cstat-no" title="statement not covered" > hasApmPayments: user_has_apm_payments === 'true',</span>
|
|
1116
|
+
<span class="cstat-no" title="statement not covered" > internalReviewerNames: qpp_cms_internal_authorized</span>
|
|
1117
|
+
<span class="cstat-no" title="statement not covered" > ? JSON.parse(qpp_cms_internal_authorized)</span>
|
|
1118
|
+
<span class="cstat-no" title="statement not covered" > : [],</span>
|
|
1119
|
+
<span class="cstat-no" title="statement not covered" > ehrAuthorized: qpp_ehr_authorized === 'true',</span>
|
|
1120
|
+
<span class="cstat-no" title="statement not covered" > hasNonRegistryAuthorizations:</span>
|
|
1121
|
+
<span class="cstat-no" title="statement not covered" > qpp_has_non_registry_authorizations === 'true',</span>
|
|
1122
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1123
|
+
};
|
|
1124
|
+
|
|
1125
|
+
const permissionsByRole = {
|
|
1126
|
+
'QPP User': {
|
|
1127
|
+
canImpersonate: false,
|
|
1128
|
+
hasAuthorizations: true,
|
|
1129
|
+
hasApmPayments: true,
|
|
1130
|
+
},
|
|
1131
|
+
Reviewer: {
|
|
1132
|
+
hasAuthorizations: false,
|
|
1133
|
+
hasApmPaymentss: false,
|
|
1134
|
+
},
|
|
1135
|
+
'Helpdesk Viewer': {
|
|
1136
|
+
hasAuthorizations: false,
|
|
1137
|
+
hasApmPayments: false,
|
|
1138
|
+
hasNonRegistryAuthorizations: false,
|
|
1139
|
+
internalReviewerNames: ['QPP Helpdesk'],
|
|
1140
|
+
},
|
|
1141
|
+
// Helpdesk role && impersonating (use impersonated user authz values)
|
|
1142
|
+
Impersonation: {
|
|
1143
|
+
internalReviewerNames: ['QPP Helpdesk'],
|
|
1144
|
+
},
|
|
1145
|
+
'Content Manager': {
|
|
1146
|
+
hasAuthorizations: false,
|
|
1147
|
+
hasApmPaymentss: false,
|
|
1148
|
+
hasNonRegistryAuthorizations: false,
|
|
1149
|
+
},
|
|
1150
|
+
};
|
|
1151
|
+
|
|
1152
|
+
/**
|
|
1153
|
+
* Return permissions by role
|
|
1154
|
+
* @param {string} selectedRole selected user role
|
|
1155
|
+
* @param {object} permissionValues default permission values from transformed parsed cookie
|
|
1156
|
+
* @returns {object}
|
|
1157
|
+
*/
|
|
1158
|
+
const loadUserPermissionsByRole = <span class="fstat-no" title="function not covered" >(selectedRole, permissionValues) => {</span>
|
|
1159
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1160
|
+
<span class="cstat-no" title="statement not covered" > ...permissionValues,</span>
|
|
1161
|
+
<span class="cstat-no" title="statement not covered" > ...permissionsByRole[selectedRole],</span>
|
|
1162
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1163
|
+
};
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* Helper fn to return user permissions/properties from cookies set on login
|
|
1167
|
+
* @param {string} docCookie cookie values set on login
|
|
1168
|
+
* @param {string} selectedRole string of selected role if user has multiple roles
|
|
1169
|
+
* @returns {object}
|
|
1170
|
+
*/
|
|
1171
|
+
const loadUserPermissions = <span class="fstat-no" title="function not covered" >(docCookie, selectedRole) => {</span>
|
|
1172
|
+
<span class="cstat-no" title="statement not covered" > const parsedCookies = cookie.parse(docCookie);</span>
|
|
1173
|
+
<span class="cstat-no" title="statement not covered" > const permissionValues = transformCookieValues(parsedCookies);</span>
|
|
1174
|
+
<span class="cstat-no" title="statement not covered" > const impersonating = isImpersonating(docCookie);</span>
|
|
1175
|
+
<span class="cstat-no" title="statement not covered" > const role = impersonating ? 'Impersonation' : selectedRole;</span>
|
|
1176
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1177
|
+
<span class="cstat-no" title="statement not covered" > if (role) {</span>
|
|
1178
|
+
<span class="cstat-no" title="statement not covered" > return loadUserPermissionsByRole(role, permissionValues);</span>
|
|
1179
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1180
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1181
|
+
<span class="cstat-no" title="statement not covered" > return permissionValues;</span>
|
|
1182
|
+
};
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* Return map of link conditionals based on user cookies for side nav
|
|
1186
|
+
* @param {object} userPermissions user permissions/properties derived from cookies set on login
|
|
1187
|
+
* @returns {object}
|
|
1188
|
+
*/
|
|
1189
|
+
const getUrlConditionMap = <span class="fstat-no" title="function not covered" >(userPermissions) => {</span>
|
|
1190
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1191
|
+
<span class="cstat-no" title="statement not covered" > [dashboardUrl]: userPermissions.hasAuthorizations,</span>
|
|
1192
|
+
<span class="cstat-no" title="statement not covered" > [feedbackUrl]: userPermissions.hasAuthorizations,</span>
|
|
1193
|
+
<span class="cstat-no" title="statement not covered" > '/user/apm-incentive-payments': userPermissions.hasApmPayments,</span>
|
|
1194
|
+
<span class="cstat-no" title="statement not covered" > [physicianCompareUrl]: userPermissions.hasNonRegistryAuthorizations,</span>
|
|
1195
|
+
<span class="cstat-no" title="statement not covered" > [registrationUrl]: userPermissions.hasAuthorizations,</span>
|
|
1196
|
+
<span class="cstat-no" title="statement not covered" > [reportsPortalUrl]: userPermissions.hasAuthorizations,</span>
|
|
1197
|
+
<span class="cstat-no" title="statement not covered" > [facilityBasedPreviewBaseUrl]: userPermissions.hasAuthorizations,</span>
|
|
1198
|
+
<span class="cstat-no" title="statement not covered" > '/user/helpdesk-viewing-tool': userPermissions.canImpersonate,</span>
|
|
1199
|
+
<span class="cstat-no" title="statement not covered" > '/reviewer/exception': userPermissions.internalReviewerNames?.includes(</span>
|
|
1200
|
+
<span class="cstat-no" title="statement not covered" > 'QPP Targeted Review & Exceptions',</span>
|
|
1201
|
+
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
1202
|
+
<span class="cstat-no" title="statement not covered" > '/reviewer/targeted-review':</span>
|
|
1203
|
+
<span class="cstat-no" title="statement not covered" > userPermissions.internalReviewerNames?.includes(</span>
|
|
1204
|
+
<span class="cstat-no" title="statement not covered" > 'QPP Targeted Review & Exceptions',</span>
|
|
1205
|
+
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
1206
|
+
<span class="cstat-no" title="statement not covered" > '/self-nomination': userPermissions.internalReviewerNames?.includes(</span>
|
|
1207
|
+
<span class="cstat-no" title="statement not covered" > 'QPP Self-Nomination',</span>
|
|
1208
|
+
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
1209
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1210
|
+
<span class="cstat-no" title="statement not covered" > '/case-management': userPermissions.internalReviewerNames?.some((val) =></span>
|
|
1211
|
+
<span class="cstat-no" title="statement not covered" > [</span>
|
|
1212
|
+
<span class="cstat-no" title="statement not covered" > 'QPP Case Management - PIMMS Reviewer',</span>
|
|
1213
|
+
<span class="cstat-no" title="statement not covered" > 'QPP Case Management - ACO PAC Reviewer',</span>
|
|
1214
|
+
<span class="cstat-no" title="statement not covered" > 'QPP Case Management - CMS Reviewer',</span>
|
|
1215
|
+
<span class="cstat-no" title="statement not covered" > ].includes(val),</span>
|
|
1216
|
+
<span class="cstat-no" title="statement not covered" > ),</span>
|
|
1217
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1218
|
+
<span class="cstat-no" title="statement not covered" > // dev pre</span>
|
|
1219
|
+
<span class="cstat-no" title="statement not covered" > '/user/applications': userPermissions.ehrAuthorized,</span>
|
|
1220
|
+
<span class="cstat-no" title="statement not covered" > '/user/test-data': userPermissions.ehrAuthorized,</span>
|
|
1221
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1222
|
+
};
|
|
1223
|
+
|
|
1224
|
+
const isImpersonationLink = <span class="fstat-no" title="function not covered" >(docCookie, linkLabel) => {</span>
|
|
1225
|
+
<span class="cstat-no" title="statement not covered" > if (!isImpersonating(docCookie)) return;</span>
|
|
1226
|
+
<span class="cstat-no" title="statement not covered" > const helpdeskLinks = ['Account Home', 'Manage Access', 'Help and Support'];</span>
|
|
1227
|
+
<span class="cstat-no" title="statement not covered" > return !helpdeskLinks.includes(linkLabel);</span>
|
|
1228
|
+
};
|
|
1229
|
+
|
|
1230
|
+
/**
|
|
1231
|
+
* Set SideNav expanded state as qpp_side_nav_expanded in localStorage
|
|
1232
|
+
*/
|
|
1233
|
+
const sideNavExpandedStorage = {
|
|
1234
|
+
isNullOrUndefined: <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1235
|
+
<span class="cstat-no" title="statement not covered" > const sideNavExpandedValue = localStorage.getItem('qpp_side_nav_expanded');</span>
|
|
1236
|
+
<span class="cstat-no" title="statement not covered" > return sideNavExpandedValue === null || sideNavExpandedValue === undefined;</span>
|
|
1237
|
+
},
|
|
1238
|
+
init: <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1239
|
+
<span class="cstat-no" title="statement not covered" > if (this.isNullOrUndefined()) {</span>
|
|
1240
|
+
<span class="cstat-no" title="statement not covered" > localStorage.setItem('qpp_side_nav_expanded', true);</span>
|
|
1241
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1242
|
+
},
|
|
1243
|
+
toggle: <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1244
|
+
<span class="cstat-no" title="statement not covered" > const isSideNavExpanded = JSON.parse(</span>
|
|
1245
|
+
<span class="cstat-no" title="statement not covered" > localStorage.getItem('qpp_side_nav_expanded'),</span>
|
|
1246
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1247
|
+
<span class="cstat-no" title="statement not covered" > if (!isSideNavExpanded) {</span>
|
|
1248
|
+
<span class="cstat-no" title="statement not covered" > localStorage.setItem('qpp_side_nav_expanded', true);</span>
|
|
1249
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1250
|
+
<span class="cstat-no" title="statement not covered" > localStorage.setItem('qpp_side_nav_expanded', false);</span>
|
|
1251
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1252
|
+
},
|
|
1253
|
+
get: <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1254
|
+
<span class="cstat-no" title="statement not covered" > return JSON.parse(localStorage.getItem('qpp_side_nav_expanded'));</span>
|
|
1255
|
+
},
|
|
1256
|
+
remove: <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1257
|
+
<span class="cstat-no" title="statement not covered" > localStorage.removeItem('qpp_side_nav_expanded');</span>
|
|
1258
|
+
},
|
|
1259
|
+
setDefault: <span class="fstat-no" title="function not covered" >function () {</span>
|
|
1260
|
+
<span class="cstat-no" title="statement not covered" > let defaultValue = true;</span>
|
|
1261
|
+
<span class="cstat-no" title="statement not covered" > if (!this.isNullOrUndefined()) {</span>
|
|
1262
|
+
<span class="cstat-no" title="statement not covered" > defaultValue = this.get();</span>
|
|
1263
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1264
|
+
<span class="cstat-no" title="statement not covered" > return defaultValue;</span>
|
|
1265
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1266
|
+
};
|
|
1267
|
+
|
|
1268
|
+
module.exports = {
|
|
1269
|
+
submissionsUrl,
|
|
1270
|
+
dashboardUrl,
|
|
1271
|
+
feedbackUrl,
|
|
1272
|
+
manageUrl,
|
|
1273
|
+
physicianCompareUrl,
|
|
1274
|
+
registrationUrl,
|
|
1275
|
+
performanceFeedbackUrl,
|
|
1276
|
+
facilityBasedPreviewUrl,
|
|
1277
|
+
handleNavigation,
|
|
1278
|
+
reportsPortalUrl,
|
|
1279
|
+
facilityBasedPreviewBaseUrl,
|
|
1280
|
+
viewingToolUrl,
|
|
1281
|
+
loadUserPermissions,
|
|
1282
|
+
getUrlConditionMap,
|
|
1283
|
+
isMultiRoleUser,
|
|
1284
|
+
getIcon,
|
|
1285
|
+
isImpersonating,
|
|
1286
|
+
isImpersonationLink,
|
|
1287
|
+
loadSideNavContent,
|
|
1288
|
+
sideNavExpandedStorage,
|
|
1289
|
+
};
|
|
1290
|
+
</pre></td></tr></table></pre>
|
|
1291
|
+
|
|
1292
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
1293
|
+
</div><!-- /wrapper -->
|
|
1294
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
1295
|
+
Code coverage generated by
|
|
1296
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1297
|
+
at 2023-07-14T20:29:47.209Z
|
|
1298
|
+
</div>
|
|
1299
|
+
<script src="../../prettify.js"></script>
|
|
1300
|
+
<script>
|
|
1301
|
+
window.onload = function () {
|
|
1302
|
+
prettyPrint();
|
|
1303
|
+
};
|
|
1304
|
+
</script>
|
|
1305
|
+
<script src="../../sorter.js"></script>
|
|
1306
|
+
<script src="../../block-navigation.js"></script>
|
|
1307
|
+
</body>
|
|
1308
|
+
</html>
|
|
1309
|
+
|