apostrophe 2.220.6 → 2.221.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.
Files changed (201) hide show
  1. package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +1 -0
  2. package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +1 -0
  3. package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +1 -0
  4. package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +1 -0
  5. package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +1 -0
  6. package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +1 -0
  7. package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +1 -0
  8. package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +1 -0
  9. package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +1 -0
  10. package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +1 -0
  11. package/.nyc_output/processinfo/index.json +1 -0
  12. package/CHANGELOG.md +33 -0
  13. package/coverage/a3/defaults.js.html +253 -0
  14. package/coverage/a3/index.html +131 -0
  15. package/coverage/a3/index.js.html +2338 -0
  16. package/coverage/a3/lib/escape-host.js.html +109 -0
  17. package/coverage/a3/lib/index.html +176 -0
  18. package/coverage/a3/lib/mongodb-connect.js.html +250 -0
  19. package/coverage/a3/lib/moog-require.js.html +790 -0
  20. package/coverage/a3/lib/moog.js.html +1711 -0
  21. package/coverage/a3/lib/opentelemetry.js.html +517 -0
  22. package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +116 -0
  23. package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +931 -0
  24. package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +116 -0
  25. package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +115 -0
  26. package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +116 -0
  27. package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +1105 -0
  28. package/coverage/a3/modules/@apostrophecms/archive-page/index.html +116 -0
  29. package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +97 -0
  30. package/coverage/a3/modules/@apostrophecms/area/index.html +116 -0
  31. package/coverage/a3/modules/@apostrophecms/area/index.js.html +2104 -0
  32. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +469 -0
  33. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +131 -0
  34. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +286 -0
  35. package/coverage/a3/modules/@apostrophecms/asset/index.html +116 -0
  36. package/coverage/a3/modules/@apostrophecms/asset/index.js.html +3982 -0
  37. package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +346 -0
  38. package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +116 -0
  39. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +131 -0
  40. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +289 -0
  41. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +148 -0
  42. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +116 -0
  43. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +131 -0
  44. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +184 -0
  45. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +238 -0
  46. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +958 -0
  47. package/coverage/a3/modules/@apostrophecms/attachment/index.html +116 -0
  48. package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +3676 -0
  49. package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +116 -0
  50. package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +205 -0
  51. package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +116 -0
  52. package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +328 -0
  53. package/coverage/a3/modules/@apostrophecms/busy/index.html +116 -0
  54. package/coverage/a3/modules/@apostrophecms/busy/index.js.html +145 -0
  55. package/coverage/a3/modules/@apostrophecms/cache/index.html +116 -0
  56. package/coverage/a3/modules/@apostrophecms/cache/index.js.html +424 -0
  57. package/coverage/a3/modules/@apostrophecms/db/index.html +116 -0
  58. package/coverage/a3/modules/@apostrophecms/db/index.js.html +640 -0
  59. package/coverage/a3/modules/@apostrophecms/doc/index.html +116 -0
  60. package/coverage/a3/modules/@apostrophecms/doc/index.js.html +3937 -0
  61. package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +116 -0
  62. package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +622 -0
  63. package/coverage/a3/modules/@apostrophecms/doc-type/index.html +116 -0
  64. package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +8638 -0
  65. package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +319 -0
  66. package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +116 -0
  67. package/coverage/a3/modules/@apostrophecms/email/index.html +116 -0
  68. package/coverage/a3/modules/@apostrophecms/email/index.js.html +301 -0
  69. package/coverage/a3/modules/@apostrophecms/error/index.html +116 -0
  70. package/coverage/a3/modules/@apostrophecms/error/index.js.html +202 -0
  71. package/coverage/a3/modules/@apostrophecms/express/index.html +116 -0
  72. package/coverage/a3/modules/@apostrophecms/express/index.js.html +2116 -0
  73. package/coverage/a3/modules/@apostrophecms/file/index.html +116 -0
  74. package/coverage/a3/modules/@apostrophecms/file/index.js.html +367 -0
  75. package/coverage/a3/modules/@apostrophecms/file-tag/index.html +116 -0
  76. package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +127 -0
  77. package/coverage/a3/modules/@apostrophecms/global/index.html +116 -0
  78. package/coverage/a3/modules/@apostrophecms/global/index.js.html +535 -0
  79. package/coverage/a3/modules/@apostrophecms/home-page/index.html +116 -0
  80. package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +94 -0
  81. package/coverage/a3/modules/@apostrophecms/html-widget/index.html +116 -0
  82. package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +271 -0
  83. package/coverage/a3/modules/@apostrophecms/http/index.html +116 -0
  84. package/coverage/a3/modules/@apostrophecms/http/index.js.html +976 -0
  85. package/coverage/a3/modules/@apostrophecms/i18n/index.html +116 -0
  86. package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +2083 -0
  87. package/coverage/a3/modules/@apostrophecms/image/index.html +116 -0
  88. package/coverage/a3/modules/@apostrophecms/image/index.js.html +1486 -0
  89. package/coverage/a3/modules/@apostrophecms/image-tag/index.html +116 -0
  90. package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +127 -0
  91. package/coverage/a3/modules/@apostrophecms/image-widget/index.html +116 -0
  92. package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +145 -0
  93. package/coverage/a3/modules/@apostrophecms/job/index.html +116 -0
  94. package/coverage/a3/modules/@apostrophecms/job/index.js.html +1321 -0
  95. package/coverage/a3/modules/@apostrophecms/launder/index.html +116 -0
  96. package/coverage/a3/modules/@apostrophecms/launder/index.js.html +124 -0
  97. package/coverage/a3/modules/@apostrophecms/lock/index.html +116 -0
  98. package/coverage/a3/modules/@apostrophecms/lock/index.js.html +676 -0
  99. package/coverage/a3/modules/@apostrophecms/login/index.html +116 -0
  100. package/coverage/a3/modules/@apostrophecms/login/index.js.html +2617 -0
  101. package/coverage/a3/modules/@apostrophecms/migration/index.html +116 -0
  102. package/coverage/a3/modules/@apostrophecms/migration/index.js.html +970 -0
  103. package/coverage/a3/modules/@apostrophecms/modal/index.html +116 -0
  104. package/coverage/a3/modules/@apostrophecms/modal/index.js.html +193 -0
  105. package/coverage/a3/modules/@apostrophecms/module/index.html +116 -0
  106. package/coverage/a3/modules/@apostrophecms/module/index.js.html +2500 -0
  107. package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +547 -0
  108. package/coverage/a3/modules/@apostrophecms/module/lib/index.html +116 -0
  109. package/coverage/a3/modules/@apostrophecms/notification/index.html +116 -0
  110. package/coverage/a3/modules/@apostrophecms/notification/index.js.html +1315 -0
  111. package/coverage/a3/modules/@apostrophecms/oembed/index.html +116 -0
  112. package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +781 -0
  113. package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +161 -0
  114. package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +178 -0
  115. package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +124 -0
  116. package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +256 -0
  117. package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +322 -0
  118. package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +116 -0
  119. package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +268 -0
  120. package/coverage/a3/modules/@apostrophecms/page/index.html +116 -0
  121. package/coverage/a3/modules/@apostrophecms/page/index.js.html +6955 -0
  122. package/coverage/a3/modules/@apostrophecms/page/lib/index.html +116 -0
  123. package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +568 -0
  124. package/coverage/a3/modules/@apostrophecms/page-type/index.html +116 -0
  125. package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +1501 -0
  126. package/coverage/a3/modules/@apostrophecms/pager/index.html +116 -0
  127. package/coverage/a3/modules/@apostrophecms/pager/index.js.html +232 -0
  128. package/coverage/a3/modules/@apostrophecms/permission/index.html +116 -0
  129. package/coverage/a3/modules/@apostrophecms/permission/index.js.html +1057 -0
  130. package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +116 -0
  131. package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +160 -0
  132. package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +116 -0
  133. package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +1051 -0
  134. package/coverage/a3/modules/@apostrophecms/piece-type/index.html +116 -0
  135. package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +3103 -0
  136. package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +116 -0
  137. package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +157 -0
  138. package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +116 -0
  139. package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +1363 -0
  140. package/coverage/a3/modules/@apostrophecms/schema/index.html +116 -0
  141. package/coverage/a3/modules/@apostrophecms/schema/index.js.html +4603 -0
  142. package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +3502 -0
  143. package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +131 -0
  144. package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +703 -0
  145. package/coverage/a3/modules/@apostrophecms/search/index.html +116 -0
  146. package/coverage/a3/modules/@apostrophecms/search/index.js.html +1222 -0
  147. package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +116 -0
  148. package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +343 -0
  149. package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +116 -0
  150. package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +595 -0
  151. package/coverage/a3/modules/@apostrophecms/task/index.html +116 -0
  152. package/coverage/a3/modules/@apostrophecms/task/index.js.html +1147 -0
  153. package/coverage/a3/modules/@apostrophecms/template/index.html +116 -0
  154. package/coverage/a3/modules/@apostrophecms/template/index.js.html +2731 -0
  155. package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +559 -0
  156. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +310 -0
  157. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +325 -0
  158. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +146 -0
  159. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +490 -0
  160. package/coverage/a3/modules/@apostrophecms/template/lib/index.html +131 -0
  161. package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +658 -0
  162. package/coverage/a3/modules/@apostrophecms/ui/index.html +116 -0
  163. package/coverage/a3/modules/@apostrophecms/ui/index.js.html +181 -0
  164. package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +116 -0
  165. package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +286 -0
  166. package/coverage/a3/modules/@apostrophecms/url/index.html +116 -0
  167. package/coverage/a3/modules/@apostrophecms/url/index.js.html +733 -0
  168. package/coverage/a3/modules/@apostrophecms/user/index.html +116 -0
  169. package/coverage/a3/modules/@apostrophecms/user/index.js.html +1684 -0
  170. package/coverage/a3/modules/@apostrophecms/user/lib/index.html +116 -0
  171. package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +157 -0
  172. package/coverage/a3/modules/@apostrophecms/util/index.html +116 -0
  173. package/coverage/a3/modules/@apostrophecms/util/index.js.html +3424 -0
  174. package/coverage/a3/modules/@apostrophecms/util/lib/index.html +116 -0
  175. package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +319 -0
  176. package/coverage/a3/modules/@apostrophecms/video-widget/index.html +116 -0
  177. package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +178 -0
  178. package/coverage/a3/modules/@apostrophecms/widget-type/index.html +116 -0
  179. package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +1225 -0
  180. package/coverage/a3/test-lib/index.html +131 -0
  181. package/coverage/a3/test-lib/test.js.html +232 -0
  182. package/coverage/a3/test-lib/util.js.html +373 -0
  183. package/coverage/base.css +224 -0
  184. package/coverage/block-navigation.js +87 -0
  185. package/coverage/favicon.png +0 -0
  186. package/coverage/index.html +1256 -0
  187. package/coverage/prettify.css +1 -0
  188. package/coverage/prettify.js +2 -0
  189. package/coverage/sort-arrow-sprite.png +0 -0
  190. package/coverage/sorter.js +196 -0
  191. package/lib/modules/apostrophe-assets/index.js +3 -1
  192. package/lib/modules/apostrophe-doc-type-manager/lib/routes.js +8 -1
  193. package/lib/modules/apostrophe-global/index.js +6 -0
  194. package/lib/modules/apostrophe-login/index.js +1 -1
  195. package/lib/modules/apostrophe-modal/public/css/components/modal-tabs.less +0 -1
  196. package/lib/modules/apostrophe-modal/views/batch.html +1 -1
  197. package/lib/modules/apostrophe-pages/lib/api.js +8 -6
  198. package/lib/modules/apostrophe-schemas/index.js +50 -44
  199. package/package.json +4 -5
  200. package/test/login-throttle.js +4 -0
  201. package/test/package.json +0 -75
@@ -0,0 +1,3982 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for a3/modules/@apostrophecms/asset/index.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">a3/modules/@apostrophecms/asset</a> index.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">88.76% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>387/436</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">80.83% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>194/240</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">87.05% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>74/85</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">88.65% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>383/432</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 high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a>
720
+ <a name='L655'></a><a href='#L655'>655</a>
721
+ <a name='L656'></a><a href='#L656'>656</a>
722
+ <a name='L657'></a><a href='#L657'>657</a>
723
+ <a name='L658'></a><a href='#L658'>658</a>
724
+ <a name='L659'></a><a href='#L659'>659</a>
725
+ <a name='L660'></a><a href='#L660'>660</a>
726
+ <a name='L661'></a><a href='#L661'>661</a>
727
+ <a name='L662'></a><a href='#L662'>662</a>
728
+ <a name='L663'></a><a href='#L663'>663</a>
729
+ <a name='L664'></a><a href='#L664'>664</a>
730
+ <a name='L665'></a><a href='#L665'>665</a>
731
+ <a name='L666'></a><a href='#L666'>666</a>
732
+ <a name='L667'></a><a href='#L667'>667</a>
733
+ <a name='L668'></a><a href='#L668'>668</a>
734
+ <a name='L669'></a><a href='#L669'>669</a>
735
+ <a name='L670'></a><a href='#L670'>670</a>
736
+ <a name='L671'></a><a href='#L671'>671</a>
737
+ <a name='L672'></a><a href='#L672'>672</a>
738
+ <a name='L673'></a><a href='#L673'>673</a>
739
+ <a name='L674'></a><a href='#L674'>674</a>
740
+ <a name='L675'></a><a href='#L675'>675</a>
741
+ <a name='L676'></a><a href='#L676'>676</a>
742
+ <a name='L677'></a><a href='#L677'>677</a>
743
+ <a name='L678'></a><a href='#L678'>678</a>
744
+ <a name='L679'></a><a href='#L679'>679</a>
745
+ <a name='L680'></a><a href='#L680'>680</a>
746
+ <a name='L681'></a><a href='#L681'>681</a>
747
+ <a name='L682'></a><a href='#L682'>682</a>
748
+ <a name='L683'></a><a href='#L683'>683</a>
749
+ <a name='L684'></a><a href='#L684'>684</a>
750
+ <a name='L685'></a><a href='#L685'>685</a>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a>
792
+ <a name='L727'></a><a href='#L727'>727</a>
793
+ <a name='L728'></a><a href='#L728'>728</a>
794
+ <a name='L729'></a><a href='#L729'>729</a>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a>
1027
+ <a name='L962'></a><a href='#L962'>962</a>
1028
+ <a name='L963'></a><a href='#L963'>963</a>
1029
+ <a name='L964'></a><a href='#L964'>964</a>
1030
+ <a name='L965'></a><a href='#L965'>965</a>
1031
+ <a name='L966'></a><a href='#L966'>966</a>
1032
+ <a name='L967'></a><a href='#L967'>967</a>
1033
+ <a name='L968'></a><a href='#L968'>968</a>
1034
+ <a name='L969'></a><a href='#L969'>969</a>
1035
+ <a name='L970'></a><a href='#L970'>970</a>
1036
+ <a name='L971'></a><a href='#L971'>971</a>
1037
+ <a name='L972'></a><a href='#L972'>972</a>
1038
+ <a name='L973'></a><a href='#L973'>973</a>
1039
+ <a name='L974'></a><a href='#L974'>974</a>
1040
+ <a name='L975'></a><a href='#L975'>975</a>
1041
+ <a name='L976'></a><a href='#L976'>976</a>
1042
+ <a name='L977'></a><a href='#L977'>977</a>
1043
+ <a name='L978'></a><a href='#L978'>978</a>
1044
+ <a name='L979'></a><a href='#L979'>979</a>
1045
+ <a name='L980'></a><a href='#L980'>980</a>
1046
+ <a name='L981'></a><a href='#L981'>981</a>
1047
+ <a name='L982'></a><a href='#L982'>982</a>
1048
+ <a name='L983'></a><a href='#L983'>983</a>
1049
+ <a name='L984'></a><a href='#L984'>984</a>
1050
+ <a name='L985'></a><a href='#L985'>985</a>
1051
+ <a name='L986'></a><a href='#L986'>986</a>
1052
+ <a name='L987'></a><a href='#L987'>987</a>
1053
+ <a name='L988'></a><a href='#L988'>988</a>
1054
+ <a name='L989'></a><a href='#L989'>989</a>
1055
+ <a name='L990'></a><a href='#L990'>990</a>
1056
+ <a name='L991'></a><a href='#L991'>991</a>
1057
+ <a name='L992'></a><a href='#L992'>992</a>
1058
+ <a name='L993'></a><a href='#L993'>993</a>
1059
+ <a name='L994'></a><a href='#L994'>994</a>
1060
+ <a name='L995'></a><a href='#L995'>995</a>
1061
+ <a name='L996'></a><a href='#L996'>996</a>
1062
+ <a name='L997'></a><a href='#L997'>997</a>
1063
+ <a name='L998'></a><a href='#L998'>998</a>
1064
+ <a name='L999'></a><a href='#L999'>999</a>
1065
+ <a name='L1000'></a><a href='#L1000'>1000</a>
1066
+ <a name='L1001'></a><a href='#L1001'>1001</a>
1067
+ <a name='L1002'></a><a href='#L1002'>1002</a>
1068
+ <a name='L1003'></a><a href='#L1003'>1003</a>
1069
+ <a name='L1004'></a><a href='#L1004'>1004</a>
1070
+ <a name='L1005'></a><a href='#L1005'>1005</a>
1071
+ <a name='L1006'></a><a href='#L1006'>1006</a>
1072
+ <a name='L1007'></a><a href='#L1007'>1007</a>
1073
+ <a name='L1008'></a><a href='#L1008'>1008</a>
1074
+ <a name='L1009'></a><a href='#L1009'>1009</a>
1075
+ <a name='L1010'></a><a href='#L1010'>1010</a>
1076
+ <a name='L1011'></a><a href='#L1011'>1011</a>
1077
+ <a name='L1012'></a><a href='#L1012'>1012</a>
1078
+ <a name='L1013'></a><a href='#L1013'>1013</a>
1079
+ <a name='L1014'></a><a href='#L1014'>1014</a>
1080
+ <a name='L1015'></a><a href='#L1015'>1015</a>
1081
+ <a name='L1016'></a><a href='#L1016'>1016</a>
1082
+ <a name='L1017'></a><a href='#L1017'>1017</a>
1083
+ <a name='L1018'></a><a href='#L1018'>1018</a>
1084
+ <a name='L1019'></a><a href='#L1019'>1019</a>
1085
+ <a name='L1020'></a><a href='#L1020'>1020</a>
1086
+ <a name='L1021'></a><a href='#L1021'>1021</a>
1087
+ <a name='L1022'></a><a href='#L1022'>1022</a>
1088
+ <a name='L1023'></a><a href='#L1023'>1023</a>
1089
+ <a name='L1024'></a><a href='#L1024'>1024</a>
1090
+ <a name='L1025'></a><a href='#L1025'>1025</a>
1091
+ <a name='L1026'></a><a href='#L1026'>1026</a>
1092
+ <a name='L1027'></a><a href='#L1027'>1027</a>
1093
+ <a name='L1028'></a><a href='#L1028'>1028</a>
1094
+ <a name='L1029'></a><a href='#L1029'>1029</a>
1095
+ <a name='L1030'></a><a href='#L1030'>1030</a>
1096
+ <a name='L1031'></a><a href='#L1031'>1031</a>
1097
+ <a name='L1032'></a><a href='#L1032'>1032</a>
1098
+ <a name='L1033'></a><a href='#L1033'>1033</a>
1099
+ <a name='L1034'></a><a href='#L1034'>1034</a>
1100
+ <a name='L1035'></a><a href='#L1035'>1035</a>
1101
+ <a name='L1036'></a><a href='#L1036'>1036</a>
1102
+ <a name='L1037'></a><a href='#L1037'>1037</a>
1103
+ <a name='L1038'></a><a href='#L1038'>1038</a>
1104
+ <a name='L1039'></a><a href='#L1039'>1039</a>
1105
+ <a name='L1040'></a><a href='#L1040'>1040</a>
1106
+ <a name='L1041'></a><a href='#L1041'>1041</a>
1107
+ <a name='L1042'></a><a href='#L1042'>1042</a>
1108
+ <a name='L1043'></a><a href='#L1043'>1043</a>
1109
+ <a name='L1044'></a><a href='#L1044'>1044</a>
1110
+ <a name='L1045'></a><a href='#L1045'>1045</a>
1111
+ <a name='L1046'></a><a href='#L1046'>1046</a>
1112
+ <a name='L1047'></a><a href='#L1047'>1047</a>
1113
+ <a name='L1048'></a><a href='#L1048'>1048</a>
1114
+ <a name='L1049'></a><a href='#L1049'>1049</a>
1115
+ <a name='L1050'></a><a href='#L1050'>1050</a>
1116
+ <a name='L1051'></a><a href='#L1051'>1051</a>
1117
+ <a name='L1052'></a><a href='#L1052'>1052</a>
1118
+ <a name='L1053'></a><a href='#L1053'>1053</a>
1119
+ <a name='L1054'></a><a href='#L1054'>1054</a>
1120
+ <a name='L1055'></a><a href='#L1055'>1055</a>
1121
+ <a name='L1056'></a><a href='#L1056'>1056</a>
1122
+ <a name='L1057'></a><a href='#L1057'>1057</a>
1123
+ <a name='L1058'></a><a href='#L1058'>1058</a>
1124
+ <a name='L1059'></a><a href='#L1059'>1059</a>
1125
+ <a name='L1060'></a><a href='#L1060'>1060</a>
1126
+ <a name='L1061'></a><a href='#L1061'>1061</a>
1127
+ <a name='L1062'></a><a href='#L1062'>1062</a>
1128
+ <a name='L1063'></a><a href='#L1063'>1063</a>
1129
+ <a name='L1064'></a><a href='#L1064'>1064</a>
1130
+ <a name='L1065'></a><a href='#L1065'>1065</a>
1131
+ <a name='L1066'></a><a href='#L1066'>1066</a>
1132
+ <a name='L1067'></a><a href='#L1067'>1067</a>
1133
+ <a name='L1068'></a><a href='#L1068'>1068</a>
1134
+ <a name='L1069'></a><a href='#L1069'>1069</a>
1135
+ <a name='L1070'></a><a href='#L1070'>1070</a>
1136
+ <a name='L1071'></a><a href='#L1071'>1071</a>
1137
+ <a name='L1072'></a><a href='#L1072'>1072</a>
1138
+ <a name='L1073'></a><a href='#L1073'>1073</a>
1139
+ <a name='L1074'></a><a href='#L1074'>1074</a>
1140
+ <a name='L1075'></a><a href='#L1075'>1075</a>
1141
+ <a name='L1076'></a><a href='#L1076'>1076</a>
1142
+ <a name='L1077'></a><a href='#L1077'>1077</a>
1143
+ <a name='L1078'></a><a href='#L1078'>1078</a>
1144
+ <a name='L1079'></a><a href='#L1079'>1079</a>
1145
+ <a name='L1080'></a><a href='#L1080'>1080</a>
1146
+ <a name='L1081'></a><a href='#L1081'>1081</a>
1147
+ <a name='L1082'></a><a href='#L1082'>1082</a>
1148
+ <a name='L1083'></a><a href='#L1083'>1083</a>
1149
+ <a name='L1084'></a><a href='#L1084'>1084</a>
1150
+ <a name='L1085'></a><a href='#L1085'>1085</a>
1151
+ <a name='L1086'></a><a href='#L1086'>1086</a>
1152
+ <a name='L1087'></a><a href='#L1087'>1087</a>
1153
+ <a name='L1088'></a><a href='#L1088'>1088</a>
1154
+ <a name='L1089'></a><a href='#L1089'>1089</a>
1155
+ <a name='L1090'></a><a href='#L1090'>1090</a>
1156
+ <a name='L1091'></a><a href='#L1091'>1091</a>
1157
+ <a name='L1092'></a><a href='#L1092'>1092</a>
1158
+ <a name='L1093'></a><a href='#L1093'>1093</a>
1159
+ <a name='L1094'></a><a href='#L1094'>1094</a>
1160
+ <a name='L1095'></a><a href='#L1095'>1095</a>
1161
+ <a name='L1096'></a><a href='#L1096'>1096</a>
1162
+ <a name='L1097'></a><a href='#L1097'>1097</a>
1163
+ <a name='L1098'></a><a href='#L1098'>1098</a>
1164
+ <a name='L1099'></a><a href='#L1099'>1099</a>
1165
+ <a name='L1100'></a><a href='#L1100'>1100</a>
1166
+ <a name='L1101'></a><a href='#L1101'>1101</a>
1167
+ <a name='L1102'></a><a href='#L1102'>1102</a>
1168
+ <a name='L1103'></a><a href='#L1103'>1103</a>
1169
+ <a name='L1104'></a><a href='#L1104'>1104</a>
1170
+ <a name='L1105'></a><a href='#L1105'>1105</a>
1171
+ <a name='L1106'></a><a href='#L1106'>1106</a>
1172
+ <a name='L1107'></a><a href='#L1107'>1107</a>
1173
+ <a name='L1108'></a><a href='#L1108'>1108</a>
1174
+ <a name='L1109'></a><a href='#L1109'>1109</a>
1175
+ <a name='L1110'></a><a href='#L1110'>1110</a>
1176
+ <a name='L1111'></a><a href='#L1111'>1111</a>
1177
+ <a name='L1112'></a><a href='#L1112'>1112</a>
1178
+ <a name='L1113'></a><a href='#L1113'>1113</a>
1179
+ <a name='L1114'></a><a href='#L1114'>1114</a>
1180
+ <a name='L1115'></a><a href='#L1115'>1115</a>
1181
+ <a name='L1116'></a><a href='#L1116'>1116</a>
1182
+ <a name='L1117'></a><a href='#L1117'>1117</a>
1183
+ <a name='L1118'></a><a href='#L1118'>1118</a>
1184
+ <a name='L1119'></a><a href='#L1119'>1119</a>
1185
+ <a name='L1120'></a><a href='#L1120'>1120</a>
1186
+ <a name='L1121'></a><a href='#L1121'>1121</a>
1187
+ <a name='L1122'></a><a href='#L1122'>1122</a>
1188
+ <a name='L1123'></a><a href='#L1123'>1123</a>
1189
+ <a name='L1124'></a><a href='#L1124'>1124</a>
1190
+ <a name='L1125'></a><a href='#L1125'>1125</a>
1191
+ <a name='L1126'></a><a href='#L1126'>1126</a>
1192
+ <a name='L1127'></a><a href='#L1127'>1127</a>
1193
+ <a name='L1128'></a><a href='#L1128'>1128</a>
1194
+ <a name='L1129'></a><a href='#L1129'>1129</a>
1195
+ <a name='L1130'></a><a href='#L1130'>1130</a>
1196
+ <a name='L1131'></a><a href='#L1131'>1131</a>
1197
+ <a name='L1132'></a><a href='#L1132'>1132</a>
1198
+ <a name='L1133'></a><a href='#L1133'>1133</a>
1199
+ <a name='L1134'></a><a href='#L1134'>1134</a>
1200
+ <a name='L1135'></a><a href='#L1135'>1135</a>
1201
+ <a name='L1136'></a><a href='#L1136'>1136</a>
1202
+ <a name='L1137'></a><a href='#L1137'>1137</a>
1203
+ <a name='L1138'></a><a href='#L1138'>1138</a>
1204
+ <a name='L1139'></a><a href='#L1139'>1139</a>
1205
+ <a name='L1140'></a><a href='#L1140'>1140</a>
1206
+ <a name='L1141'></a><a href='#L1141'>1141</a>
1207
+ <a name='L1142'></a><a href='#L1142'>1142</a>
1208
+ <a name='L1143'></a><a href='#L1143'>1143</a>
1209
+ <a name='L1144'></a><a href='#L1144'>1144</a>
1210
+ <a name='L1145'></a><a href='#L1145'>1145</a>
1211
+ <a name='L1146'></a><a href='#L1146'>1146</a>
1212
+ <a name='L1147'></a><a href='#L1147'>1147</a>
1213
+ <a name='L1148'></a><a href='#L1148'>1148</a>
1214
+ <a name='L1149'></a><a href='#L1149'>1149</a>
1215
+ <a name='L1150'></a><a href='#L1150'>1150</a>
1216
+ <a name='L1151'></a><a href='#L1151'>1151</a>
1217
+ <a name='L1152'></a><a href='#L1152'>1152</a>
1218
+ <a name='L1153'></a><a href='#L1153'>1153</a>
1219
+ <a name='L1154'></a><a href='#L1154'>1154</a>
1220
+ <a name='L1155'></a><a href='#L1155'>1155</a>
1221
+ <a name='L1156'></a><a href='#L1156'>1156</a>
1222
+ <a name='L1157'></a><a href='#L1157'>1157</a>
1223
+ <a name='L1158'></a><a href='#L1158'>1158</a>
1224
+ <a name='L1159'></a><a href='#L1159'>1159</a>
1225
+ <a name='L1160'></a><a href='#L1160'>1160</a>
1226
+ <a name='L1161'></a><a href='#L1161'>1161</a>
1227
+ <a name='L1162'></a><a href='#L1162'>1162</a>
1228
+ <a name='L1163'></a><a href='#L1163'>1163</a>
1229
+ <a name='L1164'></a><a href='#L1164'>1164</a>
1230
+ <a name='L1165'></a><a href='#L1165'>1165</a>
1231
+ <a name='L1166'></a><a href='#L1166'>1166</a>
1232
+ <a name='L1167'></a><a href='#L1167'>1167</a>
1233
+ <a name='L1168'></a><a href='#L1168'>1168</a>
1234
+ <a name='L1169'></a><a href='#L1169'>1169</a>
1235
+ <a name='L1170'></a><a href='#L1170'>1170</a>
1236
+ <a name='L1171'></a><a href='#L1171'>1171</a>
1237
+ <a name='L1172'></a><a href='#L1172'>1172</a>
1238
+ <a name='L1173'></a><a href='#L1173'>1173</a>
1239
+ <a name='L1174'></a><a href='#L1174'>1174</a>
1240
+ <a name='L1175'></a><a href='#L1175'>1175</a>
1241
+ <a name='L1176'></a><a href='#L1176'>1176</a>
1242
+ <a name='L1177'></a><a href='#L1177'>1177</a>
1243
+ <a name='L1178'></a><a href='#L1178'>1178</a>
1244
+ <a name='L1179'></a><a href='#L1179'>1179</a>
1245
+ <a name='L1180'></a><a href='#L1180'>1180</a>
1246
+ <a name='L1181'></a><a href='#L1181'>1181</a>
1247
+ <a name='L1182'></a><a href='#L1182'>1182</a>
1248
+ <a name='L1183'></a><a href='#L1183'>1183</a>
1249
+ <a name='L1184'></a><a href='#L1184'>1184</a>
1250
+ <a name='L1185'></a><a href='#L1185'>1185</a>
1251
+ <a name='L1186'></a><a href='#L1186'>1186</a>
1252
+ <a name='L1187'></a><a href='#L1187'>1187</a>
1253
+ <a name='L1188'></a><a href='#L1188'>1188</a>
1254
+ <a name='L1189'></a><a href='#L1189'>1189</a>
1255
+ <a name='L1190'></a><a href='#L1190'>1190</a>
1256
+ <a name='L1191'></a><a href='#L1191'>1191</a>
1257
+ <a name='L1192'></a><a href='#L1192'>1192</a>
1258
+ <a name='L1193'></a><a href='#L1193'>1193</a>
1259
+ <a name='L1194'></a><a href='#L1194'>1194</a>
1260
+ <a name='L1195'></a><a href='#L1195'>1195</a>
1261
+ <a name='L1196'></a><a href='#L1196'>1196</a>
1262
+ <a name='L1197'></a><a href='#L1197'>1197</a>
1263
+ <a name='L1198'></a><a href='#L1198'>1198</a>
1264
+ <a name='L1199'></a><a href='#L1199'>1199</a>
1265
+ <a name='L1200'></a><a href='#L1200'>1200</a>
1266
+ <a name='L1201'></a><a href='#L1201'>1201</a>
1267
+ <a name='L1202'></a><a href='#L1202'>1202</a>
1268
+ <a name='L1203'></a><a href='#L1203'>1203</a>
1269
+ <a name='L1204'></a><a href='#L1204'>1204</a>
1270
+ <a name='L1205'></a><a href='#L1205'>1205</a>
1271
+ <a name='L1206'></a><a href='#L1206'>1206</a>
1272
+ <a name='L1207'></a><a href='#L1207'>1207</a>
1273
+ <a name='L1208'></a><a href='#L1208'>1208</a>
1274
+ <a name='L1209'></a><a href='#L1209'>1209</a>
1275
+ <a name='L1210'></a><a href='#L1210'>1210</a>
1276
+ <a name='L1211'></a><a href='#L1211'>1211</a>
1277
+ <a name='L1212'></a><a href='#L1212'>1212</a>
1278
+ <a name='L1213'></a><a href='#L1213'>1213</a>
1279
+ <a name='L1214'></a><a href='#L1214'>1214</a>
1280
+ <a name='L1215'></a><a href='#L1215'>1215</a>
1281
+ <a name='L1216'></a><a href='#L1216'>1216</a>
1282
+ <a name='L1217'></a><a href='#L1217'>1217</a>
1283
+ <a name='L1218'></a><a href='#L1218'>1218</a>
1284
+ <a name='L1219'></a><a href='#L1219'>1219</a>
1285
+ <a name='L1220'></a><a href='#L1220'>1220</a>
1286
+ <a name='L1221'></a><a href='#L1221'>1221</a>
1287
+ <a name='L1222'></a><a href='#L1222'>1222</a>
1288
+ <a name='L1223'></a><a href='#L1223'>1223</a>
1289
+ <a name='L1224'></a><a href='#L1224'>1224</a>
1290
+ <a name='L1225'></a><a href='#L1225'>1225</a>
1291
+ <a name='L1226'></a><a href='#L1226'>1226</a>
1292
+ <a name='L1227'></a><a href='#L1227'>1227</a>
1293
+ <a name='L1228'></a><a href='#L1228'>1228</a>
1294
+ <a name='L1229'></a><a href='#L1229'>1229</a>
1295
+ <a name='L1230'></a><a href='#L1230'>1230</a>
1296
+ <a name='L1231'></a><a href='#L1231'>1231</a>
1297
+ <a name='L1232'></a><a href='#L1232'>1232</a>
1298
+ <a name='L1233'></a><a href='#L1233'>1233</a>
1299
+ <a name='L1234'></a><a href='#L1234'>1234</a>
1300
+ <a name='L1235'></a><a href='#L1235'>1235</a>
1301
+ <a name='L1236'></a><a href='#L1236'>1236</a>
1302
+ <a name='L1237'></a><a href='#L1237'>1237</a>
1303
+ <a name='L1238'></a><a href='#L1238'>1238</a>
1304
+ <a name='L1239'></a><a href='#L1239'>1239</a>
1305
+ <a name='L1240'></a><a href='#L1240'>1240</a>
1306
+ <a name='L1241'></a><a href='#L1241'>1241</a>
1307
+ <a name='L1242'></a><a href='#L1242'>1242</a>
1308
+ <a name='L1243'></a><a href='#L1243'>1243</a>
1309
+ <a name='L1244'></a><a href='#L1244'>1244</a>
1310
+ <a name='L1245'></a><a href='#L1245'>1245</a>
1311
+ <a name='L1246'></a><a href='#L1246'>1246</a>
1312
+ <a name='L1247'></a><a href='#L1247'>1247</a>
1313
+ <a name='L1248'></a><a href='#L1248'>1248</a>
1314
+ <a name='L1249'></a><a href='#L1249'>1249</a>
1315
+ <a name='L1250'></a><a href='#L1250'>1250</a>
1316
+ <a name='L1251'></a><a href='#L1251'>1251</a>
1317
+ <a name='L1252'></a><a href='#L1252'>1252</a>
1318
+ <a name='L1253'></a><a href='#L1253'>1253</a>
1319
+ <a name='L1254'></a><a href='#L1254'>1254</a>
1320
+ <a name='L1255'></a><a href='#L1255'>1255</a>
1321
+ <a name='L1256'></a><a href='#L1256'>1256</a>
1322
+ <a name='L1257'></a><a href='#L1257'>1257</a>
1323
+ <a name='L1258'></a><a href='#L1258'>1258</a>
1324
+ <a name='L1259'></a><a href='#L1259'>1259</a>
1325
+ <a name='L1260'></a><a href='#L1260'>1260</a>
1326
+ <a name='L1261'></a><a href='#L1261'>1261</a>
1327
+ <a name='L1262'></a><a href='#L1262'>1262</a>
1328
+ <a name='L1263'></a><a href='#L1263'>1263</a>
1329
+ <a name='L1264'></a><a href='#L1264'>1264</a>
1330
+ <a name='L1265'></a><a href='#L1265'>1265</a>
1331
+ <a name='L1266'></a><a href='#L1266'>1266</a>
1332
+ <a name='L1267'></a><a href='#L1267'>1267</a>
1333
+ <a name='L1268'></a><a href='#L1268'>1268</a>
1334
+ <a name='L1269'></a><a href='#L1269'>1269</a>
1335
+ <a name='L1270'></a><a href='#L1270'>1270</a>
1336
+ <a name='L1271'></a><a href='#L1271'>1271</a>
1337
+ <a name='L1272'></a><a href='#L1272'>1272</a>
1338
+ <a name='L1273'></a><a href='#L1273'>1273</a>
1339
+ <a name='L1274'></a><a href='#L1274'>1274</a>
1340
+ <a name='L1275'></a><a href='#L1275'>1275</a>
1341
+ <a name='L1276'></a><a href='#L1276'>1276</a>
1342
+ <a name='L1277'></a><a href='#L1277'>1277</a>
1343
+ <a name='L1278'></a><a href='#L1278'>1278</a>
1344
+ <a name='L1279'></a><a href='#L1279'>1279</a>
1345
+ <a name='L1280'></a><a href='#L1280'>1280</a>
1346
+ <a name='L1281'></a><a href='#L1281'>1281</a>
1347
+ <a name='L1282'></a><a href='#L1282'>1282</a>
1348
+ <a name='L1283'></a><a href='#L1283'>1283</a>
1349
+ <a name='L1284'></a><a href='#L1284'>1284</a>
1350
+ <a name='L1285'></a><a href='#L1285'>1285</a>
1351
+ <a name='L1286'></a><a href='#L1286'>1286</a>
1352
+ <a name='L1287'></a><a href='#L1287'>1287</a>
1353
+ <a name='L1288'></a><a href='#L1288'>1288</a>
1354
+ <a name='L1289'></a><a href='#L1289'>1289</a>
1355
+ <a name='L1290'></a><a href='#L1290'>1290</a>
1356
+ <a name='L1291'></a><a href='#L1291'>1291</a>
1357
+ <a name='L1292'></a><a href='#L1292'>1292</a>
1358
+ <a name='L1293'></a><a href='#L1293'>1293</a>
1359
+ <a name='L1294'></a><a href='#L1294'>1294</a>
1360
+ <a name='L1295'></a><a href='#L1295'>1295</a>
1361
+ <a name='L1296'></a><a href='#L1296'>1296</a>
1362
+ <a name='L1297'></a><a href='#L1297'>1297</a>
1363
+ <a name='L1298'></a><a href='#L1298'>1298</a>
1364
+ <a name='L1299'></a><a href='#L1299'>1299</a>
1365
+ <a name='L1300'></a><a href='#L1300'>1300</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">90x</span>
1366
+ <span class="cline-any cline-yes">90x</span>
1367
+ <span class="cline-any cline-yes">90x</span>
1368
+ <span class="cline-any cline-yes">90x</span>
1369
+ <span class="cline-any cline-yes">90x</span>
1370
+ <span class="cline-any cline-yes">90x</span>
1371
+ <span class="cline-any cline-yes">90x</span>
1372
+ <span class="cline-any cline-yes">90x</span>
1373
+ <span class="cline-any cline-yes">90x</span>
1374
+ <span class="cline-any cline-yes">90x</span>
1375
+ <span class="cline-any cline-yes">90x</span>
1376
+ <span class="cline-any cline-yes">90x</span>
1377
+ <span class="cline-any cline-yes">90x</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-neutral">&nbsp;</span>
1382
+ <span class="cline-any cline-neutral">&nbsp;</span>
1383
+ <span class="cline-any cline-neutral">&nbsp;</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-yes">90x</span>
1386
+ <span class="cline-any cline-neutral">&nbsp;</span>
1387
+ <span class="cline-any cline-yes">90x</span>
1388
+ <span class="cline-any cline-neutral">&nbsp;</span>
1389
+ <span class="cline-any cline-neutral">&nbsp;</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-neutral">&nbsp;</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-neutral">&nbsp;</span>
1394
+ <span class="cline-any cline-neutral">&nbsp;</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-neutral">&nbsp;</span>
1401
+ <span class="cline-any cline-neutral">&nbsp;</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-neutral">&nbsp;</span>
1406
+ <span class="cline-any cline-neutral">&nbsp;</span>
1407
+ <span class="cline-any cline-neutral">&nbsp;</span>
1408
+ <span class="cline-any cline-neutral">&nbsp;</span>
1409
+ <span class="cline-any cline-yes">90x</span>
1410
+ <span class="cline-any cline-yes">90x</span>
1411
+ <span class="cline-any cline-neutral">&nbsp;</span>
1412
+ <span class="cline-any cline-neutral">&nbsp;</span>
1413
+ <span class="cline-any cline-yes">90x</span>
1414
+ <span class="cline-any cline-yes">90x</span>
1415
+ <span class="cline-any cline-neutral">&nbsp;</span>
1416
+ <span class="cline-any cline-yes">90x</span>
1417
+ <span class="cline-any cline-neutral">&nbsp;</span>
1418
+ <span class="cline-any cline-neutral">&nbsp;</span>
1419
+ <span class="cline-any cline-neutral">&nbsp;</span>
1420
+ <span class="cline-any cline-neutral">&nbsp;</span>
1421
+ <span class="cline-any cline-yes">90x</span>
1422
+ <span class="cline-any cline-yes">90x</span>
1423
+ <span class="cline-any cline-yes">90x</span>
1424
+ <span class="cline-any cline-yes">90x</span>
1425
+ <span class="cline-any cline-yes">90x</span>
1426
+ <span class="cline-any cline-yes">90x</span>
1427
+ <span class="cline-any cline-neutral">&nbsp;</span>
1428
+ <span class="cline-any cline-neutral">&nbsp;</span>
1429
+ <span class="cline-any cline-yes">90x</span>
1430
+ <span class="cline-any cline-neutral">&nbsp;</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-yes">90x</span>
1433
+ <span class="cline-any cline-yes">90x</span>
1434
+ <span class="cline-any cline-yes">10x</span>
1435
+ <span class="cline-any cline-neutral">&nbsp;</span>
1436
+ <span class="cline-any cline-neutral">&nbsp;</span>
1437
+ <span class="cline-any cline-neutral">&nbsp;</span>
1438
+ <span class="cline-any cline-yes">90x</span>
1439
+ <span class="cline-any cline-yes">90x</span>
1440
+ <span class="cline-any cline-neutral">&nbsp;</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span>
1443
+ <span class="cline-any cline-neutral">&nbsp;</span>
1444
+ <span class="cline-any cline-yes">90x</span>
1445
+ <span class="cline-any cline-no">&nbsp;</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-neutral">&nbsp;</span>
1448
+ <span class="cline-any cline-neutral">&nbsp;</span>
1449
+ <span class="cline-any cline-yes">90x</span>
1450
+ <span class="cline-any cline-yes">8x</span>
1451
+ <span class="cline-any cline-yes">8x</span>
1452
+ <span class="cline-any cline-neutral">&nbsp;</span>
1453
+ <span class="cline-any cline-neutral">&nbsp;</span>
1454
+ <span class="cline-any cline-neutral">&nbsp;</span>
1455
+ <span class="cline-any cline-neutral">&nbsp;</span>
1456
+ <span class="cline-any cline-neutral">&nbsp;</span>
1457
+ <span class="cline-any cline-neutral">&nbsp;</span>
1458
+ <span class="cline-any cline-yes">90x</span>
1459
+ <span class="cline-any cline-neutral">&nbsp;</span>
1460
+ <span class="cline-any cline-yes">22x</span>
1461
+ <span class="cline-any cline-neutral">&nbsp;</span>
1462
+ <span class="cline-any cline-yes">22x</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-yes">22x</span>
1465
+ <span class="cline-any cline-neutral">&nbsp;</span>
1466
+ <span class="cline-any cline-neutral">&nbsp;</span>
1467
+ <span class="cline-any cline-neutral">&nbsp;</span>
1468
+ <span class="cline-any cline-neutral">&nbsp;</span>
1469
+ <span class="cline-any cline-yes">22x</span>
1470
+ <span class="cline-any cline-neutral">&nbsp;</span>
1471
+ <span class="cline-any cline-yes">22x</span>
1472
+ <span class="cline-any cline-neutral">&nbsp;</span>
1473
+ <span class="cline-any cline-yes">22x</span>
1474
+ <span class="cline-any cline-neutral">&nbsp;</span>
1475
+ <span class="cline-any cline-neutral">&nbsp;</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span>
1477
+ <span class="cline-any cline-neutral">&nbsp;</span>
1478
+ <span class="cline-any cline-neutral">&nbsp;</span>
1479
+ <span class="cline-any cline-neutral">&nbsp;</span>
1480
+ <span class="cline-any cline-yes">90x</span>
1481
+ <span class="cline-any cline-neutral">&nbsp;</span>
1482
+ <span class="cline-any cline-neutral">&nbsp;</span>
1483
+ <span class="cline-any cline-neutral">&nbsp;</span>
1484
+ <span class="cline-any cline-neutral">&nbsp;</span>
1485
+ <span class="cline-any cline-neutral">&nbsp;</span>
1486
+ <span class="cline-any cline-neutral">&nbsp;</span>
1487
+ <span class="cline-any cline-yes">30x</span>
1488
+ <span class="cline-any cline-yes">30x</span>
1489
+ <span class="cline-any cline-yes">30x</span>
1490
+ <span class="cline-any cline-yes">30x</span>
1491
+ <span class="cline-any cline-yes">30x</span>
1492
+ <span class="cline-any cline-neutral">&nbsp;</span>
1493
+ <span class="cline-any cline-yes">30x</span>
1494
+ <span class="cline-any cline-neutral">&nbsp;</span>
1495
+ <span class="cline-any cline-neutral">&nbsp;</span>
1496
+ <span class="cline-any cline-yes">30x</span>
1497
+ <span class="cline-any cline-neutral">&nbsp;</span>
1498
+ <span class="cline-any cline-yes">16x</span>
1499
+ <span class="cline-any cline-neutral">&nbsp;</span>
1500
+ <span class="cline-any cline-neutral">&nbsp;</span>
1501
+ <span class="cline-any cline-neutral">&nbsp;</span>
1502
+ <span class="cline-any cline-neutral">&nbsp;</span>
1503
+ <span class="cline-any cline-yes">30x</span>
1504
+ <span class="cline-any cline-neutral">&nbsp;</span>
1505
+ <span class="cline-any cline-neutral">&nbsp;</span>
1506
+ <span class="cline-any cline-yes">30x</span>
1507
+ <span class="cline-any cline-yes">30x</span>
1508
+ <span class="cline-any cline-neutral">&nbsp;</span>
1509
+ <span class="cline-any cline-neutral">&nbsp;</span>
1510
+ <span class="cline-any cline-neutral">&nbsp;</span>
1511
+ <span class="cline-any cline-neutral">&nbsp;</span>
1512
+ <span class="cline-any cline-neutral">&nbsp;</span>
1513
+ <span class="cline-any cline-yes">30x</span>
1514
+ <span class="cline-any cline-neutral">&nbsp;</span>
1515
+ <span class="cline-any cline-yes">30x</span>
1516
+ <span class="cline-any cline-neutral">&nbsp;</span>
1517
+ <span class="cline-any cline-yes">102x</span>
1518
+ <span class="cline-any cline-neutral">&nbsp;</span>
1519
+ <span class="cline-any cline-yes">102x</span>
1520
+ <span class="cline-any cline-yes">35x</span>
1521
+ <span class="cline-any cline-yes">67x</span>
1522
+ <span class="cline-any cline-yes">34x</span>
1523
+ <span class="cline-any cline-neutral">&nbsp;</span>
1524
+ <span class="cline-any cline-neutral">&nbsp;</span>
1525
+ <span class="cline-any cline-neutral">&nbsp;</span>
1526
+ <span class="cline-any cline-neutral">&nbsp;</span>
1527
+ <span class="cline-any cline-neutral">&nbsp;</span>
1528
+ <span class="cline-any cline-yes">34x</span>
1529
+ <span class="cline-any cline-yes">10x</span>
1530
+ <span class="cline-any cline-neutral">&nbsp;</span>
1531
+ <span class="cline-any cline-yes">10x</span>
1532
+ <span class="cline-any cline-no">&nbsp;</span>
1533
+ <span class="cline-any cline-neutral">&nbsp;</span>
1534
+ <span class="cline-any cline-neutral">&nbsp;</span>
1535
+ <span class="cline-any cline-yes">10x</span>
1536
+ <span class="cline-any cline-yes">10x</span>
1537
+ <span class="cline-any cline-neutral">&nbsp;</span>
1538
+ <span class="cline-any cline-neutral">&nbsp;</span>
1539
+ <span class="cline-any cline-yes">10x</span>
1540
+ <span class="cline-any cline-neutral">&nbsp;</span>
1541
+ <span class="cline-any cline-neutral">&nbsp;</span>
1542
+ <span class="cline-any cline-yes">10x</span>
1543
+ <span class="cline-any cline-no">&nbsp;</span>
1544
+ <span class="cline-any cline-neutral">&nbsp;</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-no">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
+ <span class="cline-any cline-neutral">&nbsp;</span>
1550
+ <span class="cline-any cline-neutral">&nbsp;</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-yes">24x</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
1555
+ <span class="cline-any cline-neutral">&nbsp;</span>
1556
+ <span class="cline-any cline-neutral">&nbsp;</span>
1557
+ <span class="cline-any cline-yes">102x</span>
1558
+ <span class="cline-any cline-yes">68x</span>
1559
+ <span class="cline-any cline-yes">68x</span>
1560
+ <span class="cline-any cline-neutral">&nbsp;</span>
1561
+ <span class="cline-any cline-neutral">&nbsp;</span>
1562
+ <span class="cline-any cline-neutral">&nbsp;</span>
1563
+ <span class="cline-any cline-yes">67x</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-neutral">&nbsp;</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-neutral">&nbsp;</span>
1569
+ <span class="cline-any cline-neutral">&nbsp;</span>
1570
+ <span class="cline-any cline-neutral">&nbsp;</span>
1571
+ <span class="cline-any cline-yes">29x</span>
1572
+ <span class="cline-any cline-neutral">&nbsp;</span>
1573
+ <span class="cline-any cline-yes">10x</span>
1574
+ <span class="cline-any cline-yes">10x</span>
1575
+ <span class="cline-any cline-yes">10x</span>
1576
+ <span class="cline-any cline-neutral">&nbsp;</span>
1577
+ <span class="cline-any cline-neutral">&nbsp;</span>
1578
+ <span class="cline-any cline-neutral">&nbsp;</span>
1579
+ <span class="cline-any cline-neutral">&nbsp;</span>
1580
+ <span class="cline-any cline-neutral">&nbsp;</span>
1581
+ <span class="cline-any cline-yes">67x</span>
1582
+ <span class="cline-any cline-neutral">&nbsp;</span>
1583
+ <span class="cline-any cline-neutral">&nbsp;</span>
1584
+ <span class="cline-any cline-yes">19x</span>
1585
+ <span class="cline-any cline-neutral">&nbsp;</span>
1586
+ <span class="cline-any cline-neutral">&nbsp;</span>
1587
+ <span class="cline-any cline-no">&nbsp;</span>
1588
+ <span class="cline-any cline-neutral">&nbsp;</span>
1589
+ <span class="cline-any cline-yes">19x</span>
1590
+ <span class="cline-any cline-neutral">&nbsp;</span>
1591
+ <span class="cline-any cline-neutral">&nbsp;</span>
1592
+ <span class="cline-any cline-neutral">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-neutral">&nbsp;</span>
1595
+ <span class="cline-any cline-yes">19x</span>
1596
+ <span class="cline-any cline-neutral">&nbsp;</span>
1597
+ <span class="cline-any cline-yes">19x</span>
1598
+ <span class="cline-any cline-no">&nbsp;</span>
1599
+ <span class="cline-any cline-neutral">&nbsp;</span>
1600
+ <span class="cline-any cline-neutral">&nbsp;</span>
1601
+ <span class="cline-any cline-neutral">&nbsp;</span>
1602
+ <span class="cline-any cline-neutral">&nbsp;</span>
1603
+ <span class="cline-any cline-neutral">&nbsp;</span>
1604
+ <span class="cline-any cline-neutral">&nbsp;</span>
1605
+ <span class="cline-any cline-yes">98x</span>
1606
+ <span class="cline-any cline-yes">98x</span>
1607
+ <span class="cline-any cline-yes">98x</span>
1608
+ <span class="cline-any cline-yes">98x</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-neutral">&nbsp;</span>
1611
+ <span class="cline-any cline-yes">98x</span>
1612
+ <span class="cline-any cline-yes">5100x</span>
1613
+ <span class="cline-any cline-yes">5100x</span>
1614
+ <span class="cline-any cline-yes">5100x</span>
1615
+ <span class="cline-any cline-yes">26292x</span>
1616
+ <span class="cline-any cline-yes">26292x</span>
1617
+ <span class="cline-any cline-yes">26292x</span>
1618
+ <span class="cline-any cline-yes">26292x</span>
1619
+ <span class="cline-any cline-yes">26292x</span>
1620
+ <span class="cline-any cline-yes">87858x</span>
1621
+ <span class="cline-any cline-yes">50976x</span>
1622
+ <span class="cline-any cline-neutral">&nbsp;</span>
1623
+ <span class="cline-any cline-neutral">&nbsp;</span>
1624
+ <span class="cline-any cline-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-neutral">&nbsp;</span>
1626
+ <span class="cline-any cline-yes">98x</span>
1627
+ <span class="cline-any cline-yes">98x</span>
1628
+ <span class="cline-any cline-yes">11096x</span>
1629
+ <span class="cline-any cline-yes">11096x</span>
1630
+ <span class="cline-any cline-yes">50976x</span>
1631
+ <span class="cline-any cline-yes">50976x</span>
1632
+ <span class="cline-any cline-yes">1224x</span>
1633
+ <span class="cline-any cline-neutral">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-neutral">&nbsp;</span>
1636
+ <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-neutral">&nbsp;</span>
1639
+ <span class="cline-any cline-neutral">&nbsp;</span>
1640
+ <span class="cline-any cline-neutral">&nbsp;</span>
1641
+ <span class="cline-any cline-yes">68x</span>
1642
+ <span class="cline-any cline-neutral">&nbsp;</span>
1643
+ <span class="cline-any cline-neutral">&nbsp;</span>
1644
+ <span class="cline-any cline-yes">68x</span>
1645
+ <span class="cline-any cline-yes">68x</span>
1646
+ <span class="cline-any cline-yes">68x</span>
1647
+ <span class="cline-any cline-neutral">&nbsp;</span>
1648
+ <span class="cline-any cline-neutral">&nbsp;</span>
1649
+ <span class="cline-any cline-yes">68x</span>
1650
+ <span class="cline-any cline-yes">10x</span>
1651
+ <span class="cline-any cline-yes">10x</span>
1652
+ <span class="cline-any cline-neutral">&nbsp;</span>
1653
+ <span class="cline-any cline-neutral">&nbsp;</span>
1654
+ <span class="cline-any cline-neutral">&nbsp;</span>
1655
+ <span class="cline-any cline-yes">10x</span>
1656
+ <span class="cline-any cline-yes">10x</span>
1657
+ <span class="cline-any cline-neutral">&nbsp;</span>
1658
+ <span class="cline-any cline-neutral">&nbsp;</span>
1659
+ <span class="cline-any cline-neutral">&nbsp;</span>
1660
+ <span class="cline-any cline-neutral">&nbsp;</span>
1661
+ <span class="cline-any cline-neutral">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span>
1663
+ <span class="cline-any cline-yes">68x</span>
1664
+ <span class="cline-any cline-yes">38x</span>
1665
+ <span class="cline-any cline-neutral">&nbsp;</span>
1666
+ <span class="cline-any cline-neutral">&nbsp;</span>
1667
+ <span class="cline-any cline-neutral">&nbsp;</span>
1668
+ <span class="cline-any cline-neutral">&nbsp;</span>
1669
+ <span class="cline-any cline-neutral">&nbsp;</span>
1670
+ <span class="cline-any cline-yes">38x</span>
1671
+ <span class="cline-any cline-neutral">&nbsp;</span>
1672
+ <span class="cline-any cline-neutral">&nbsp;</span>
1673
+ <span class="cline-any cline-neutral">&nbsp;</span>
1674
+ <span class="cline-any cline-neutral">&nbsp;</span>
1675
+ <span class="cline-any cline-neutral">&nbsp;</span>
1676
+ <span class="cline-any cline-yes">68x</span>
1677
+ <span class="cline-any cline-yes">48x</span>
1678
+ <span class="cline-any cline-neutral">&nbsp;</span>
1679
+ <span class="cline-any cline-yes">48x</span>
1680
+ <span class="cline-any cline-neutral">&nbsp;</span>
1681
+ <span class="cline-any cline-neutral">&nbsp;</span>
1682
+ <span class="cline-any cline-neutral">&nbsp;</span>
1683
+ <span class="cline-any cline-neutral">&nbsp;</span>
1684
+ <span class="cline-any cline-neutral">&nbsp;</span>
1685
+ <span class="cline-any cline-neutral">&nbsp;</span>
1686
+ <span class="cline-any cline-neutral">&nbsp;</span>
1687
+ <span class="cline-any cline-neutral">&nbsp;</span>
1688
+ <span class="cline-any cline-neutral">&nbsp;</span>
1689
+ <span class="cline-any cline-neutral">&nbsp;</span>
1690
+ <span class="cline-any cline-yes">48x</span>
1691
+ <span class="cline-any cline-neutral">&nbsp;</span>
1692
+ <span class="cline-any cline-neutral">&nbsp;</span>
1693
+ <span class="cline-any cline-yes">48x</span>
1694
+ <span class="cline-any cline-yes">48x</span>
1695
+ <span class="cline-any cline-yes">48x</span>
1696
+ <span class="cline-any cline-yes">48x</span>
1697
+ <span class="cline-any cline-yes">48x</span>
1698
+ <span class="cline-any cline-neutral">&nbsp;</span>
1699
+ <span class="cline-any cline-yes">48x</span>
1700
+ <span class="cline-any cline-neutral">&nbsp;</span>
1701
+ <span class="cline-any cline-neutral">&nbsp;</span>
1702
+ <span class="cline-any cline-neutral">&nbsp;</span>
1703
+ <span class="cline-any cline-neutral">&nbsp;</span>
1704
+ <span class="cline-any cline-neutral">&nbsp;</span>
1705
+ <span class="cline-any cline-neutral">&nbsp;</span>
1706
+ <span class="cline-any cline-neutral">&nbsp;</span>
1707
+ <span class="cline-any cline-neutral">&nbsp;</span>
1708
+ <span class="cline-any cline-yes">48x</span>
1709
+ <span class="cline-any cline-neutral">&nbsp;</span>
1710
+ <span class="cline-any cline-neutral">&nbsp;</span>
1711
+ <span class="cline-any cline-neutral">&nbsp;</span>
1712
+ <span class="cline-any cline-neutral">&nbsp;</span>
1713
+ <span class="cline-any cline-neutral">&nbsp;</span>
1714
+ <span class="cline-any cline-neutral">&nbsp;</span>
1715
+ <span class="cline-any cline-neutral">&nbsp;</span>
1716
+ <span class="cline-any cline-yes">48x</span>
1717
+ <span class="cline-any cline-neutral">&nbsp;</span>
1718
+ <span class="cline-any cline-neutral">&nbsp;</span>
1719
+ <span class="cline-any cline-neutral">&nbsp;</span>
1720
+ <span class="cline-any cline-neutral">&nbsp;</span>
1721
+ <span class="cline-any cline-yes">48x</span>
1722
+ <span class="cline-any cline-yes">48x</span>
1723
+ <span class="cline-any cline-neutral">&nbsp;</span>
1724
+ <span class="cline-any cline-yes">48x</span>
1725
+ <span class="cline-any cline-yes">48x</span>
1726
+ <span class="cline-any cline-neutral">&nbsp;</span>
1727
+ <span class="cline-any cline-yes">48x</span>
1728
+ <span class="cline-any cline-neutral">&nbsp;</span>
1729
+ <span class="cline-any cline-yes">1x</span>
1730
+ <span class="cline-any cline-yes">47x</span>
1731
+ <span class="cline-any cline-yes">1x</span>
1732
+ <span class="cline-any cline-yes">46x</span>
1733
+ <span class="cline-any cline-no">&nbsp;</span>
1734
+ <span class="cline-any cline-neutral">&nbsp;</span>
1735
+ <span class="cline-any cline-yes">47x</span>
1736
+ <span class="cline-any cline-yes">10x</span>
1737
+ <span class="cline-any cline-neutral">&nbsp;</span>
1738
+ <span class="cline-any cline-neutral">&nbsp;</span>
1739
+ <span class="cline-any cline-neutral">&nbsp;</span>
1740
+ <span class="cline-any cline-yes">47x</span>
1741
+ <span class="cline-any cline-yes">10x</span>
1742
+ <span class="cline-any cline-yes">10x</span>
1743
+ <span class="cline-any cline-neutral">&nbsp;</span>
1744
+ <span class="cline-any cline-neutral">&nbsp;</span>
1745
+ <span class="cline-any cline-yes">20x</span>
1746
+ <span class="cline-any cline-neutral">&nbsp;</span>
1747
+ <span class="cline-any cline-neutral">&nbsp;</span>
1748
+ <span class="cline-any cline-neutral">&nbsp;</span>
1749
+ <span class="cline-any cline-neutral">&nbsp;</span>
1750
+ <span class="cline-any cline-neutral">&nbsp;</span>
1751
+ <span class="cline-any cline-neutral">&nbsp;</span>
1752
+ <span class="cline-any cline-neutral">&nbsp;</span>
1753
+ <span class="cline-any cline-neutral">&nbsp;</span>
1754
+ <span class="cline-any cline-yes">20x</span>
1755
+ <span class="cline-any cline-yes">20x</span>
1756
+ <span class="cline-any cline-neutral">&nbsp;</span>
1757
+ <span class="cline-any cline-neutral">&nbsp;</span>
1758
+ <span class="cline-any cline-yes">5x</span>
1759
+ <span class="cline-any cline-neutral">&nbsp;</span>
1760
+ <span class="cline-any cline-neutral">&nbsp;</span>
1761
+ <span class="cline-any cline-neutral">&nbsp;</span>
1762
+ <span class="cline-any cline-yes">20x</span>
1763
+ <span class="cline-any cline-yes">20x</span>
1764
+ <span class="cline-any cline-yes">20x</span>
1765
+ <span class="cline-any cline-neutral">&nbsp;</span>
1766
+ <span class="cline-any cline-yes">5x</span>
1767
+ <span class="cline-any cline-neutral">&nbsp;</span>
1768
+ <span class="cline-any cline-neutral">&nbsp;</span>
1769
+ <span class="cline-any cline-neutral">&nbsp;</span>
1770
+ <span class="cline-any cline-neutral">&nbsp;</span>
1771
+ <span class="cline-any cline-neutral">&nbsp;</span>
1772
+ <span class="cline-any cline-neutral">&nbsp;</span>
1773
+ <span class="cline-any cline-yes">67x</span>
1774
+ <span class="cline-any cline-neutral">&nbsp;</span>
1775
+ <span class="cline-any cline-neutral">&nbsp;</span>
1776
+ <span class="cline-any cline-neutral">&nbsp;</span>
1777
+ <span class="cline-any cline-neutral">&nbsp;</span>
1778
+ <span class="cline-any cline-neutral">&nbsp;</span>
1779
+ <span class="cline-any cline-neutral">&nbsp;</span>
1780
+ <span class="cline-any cline-neutral">&nbsp;</span>
1781
+ <span class="cline-any cline-neutral">&nbsp;</span>
1782
+ <span class="cline-any cline-neutral">&nbsp;</span>
1783
+ <span class="cline-any cline-neutral">&nbsp;</span>
1784
+ <span class="cline-any cline-neutral">&nbsp;</span>
1785
+ <span class="cline-any cline-neutral">&nbsp;</span>
1786
+ <span class="cline-any cline-neutral">&nbsp;</span>
1787
+ <span class="cline-any cline-neutral">&nbsp;</span>
1788
+ <span class="cline-any cline-yes">90x</span>
1789
+ <span class="cline-any cline-neutral">&nbsp;</span>
1790
+ <span class="cline-any cline-neutral">&nbsp;</span>
1791
+ <span class="cline-any cline-neutral">&nbsp;</span>
1792
+ <span class="cline-any cline-neutral">&nbsp;</span>
1793
+ <span class="cline-any cline-neutral">&nbsp;</span>
1794
+ <span class="cline-any cline-neutral">&nbsp;</span>
1795
+ <span class="cline-any cline-neutral">&nbsp;</span>
1796
+ <span class="cline-any cline-neutral">&nbsp;</span>
1797
+ <span class="cline-any cline-neutral">&nbsp;</span>
1798
+ <span class="cline-any cline-neutral">&nbsp;</span>
1799
+ <span class="cline-any cline-neutral">&nbsp;</span>
1800
+ <span class="cline-any cline-neutral">&nbsp;</span>
1801
+ <span class="cline-any cline-neutral">&nbsp;</span>
1802
+ <span class="cline-any cline-neutral">&nbsp;</span>
1803
+ <span class="cline-any cline-neutral">&nbsp;</span>
1804
+ <span class="cline-any cline-neutral">&nbsp;</span>
1805
+ <span class="cline-any cline-neutral">&nbsp;</span>
1806
+ <span class="cline-any cline-neutral">&nbsp;</span>
1807
+ <span class="cline-any cline-neutral">&nbsp;</span>
1808
+ <span class="cline-any cline-neutral">&nbsp;</span>
1809
+ <span class="cline-any cline-neutral">&nbsp;</span>
1810
+ <span class="cline-any cline-neutral">&nbsp;</span>
1811
+ <span class="cline-any cline-neutral">&nbsp;</span>
1812
+ <span class="cline-any cline-neutral">&nbsp;</span>
1813
+ <span class="cline-any cline-neutral">&nbsp;</span>
1814
+ <span class="cline-any cline-yes">10x</span>
1815
+ <span class="cline-any cline-yes">528x</span>
1816
+ <span class="cline-any cline-neutral">&nbsp;</span>
1817
+ <span class="cline-any cline-neutral">&nbsp;</span>
1818
+ <span class="cline-any cline-neutral">&nbsp;</span>
1819
+ <span class="cline-any cline-neutral">&nbsp;</span>
1820
+ <span class="cline-any cline-yes">528x</span>
1821
+ <span class="cline-any cline-yes">2736x</span>
1822
+ <span class="cline-any cline-neutral">&nbsp;</span>
1823
+ <span class="cline-any cline-neutral">&nbsp;</span>
1824
+ <span class="cline-any cline-neutral">&nbsp;</span>
1825
+ <span class="cline-any cline-neutral">&nbsp;</span>
1826
+ <span class="cline-any cline-no">&nbsp;</span>
1827
+ <span class="cline-any cline-neutral">&nbsp;</span>
1828
+ <span class="cline-any cline-yes">2736x</span>
1829
+ <span class="cline-any cline-neutral">&nbsp;</span>
1830
+ <span class="cline-any cline-neutral">&nbsp;</span>
1831
+ <span class="cline-any cline-neutral">&nbsp;</span>
1832
+ <span class="cline-any cline-neutral">&nbsp;</span>
1833
+ <span class="cline-any cline-yes">10x</span>
1834
+ <span class="cline-any cline-neutral">&nbsp;</span>
1835
+ <span class="cline-any cline-neutral">&nbsp;</span>
1836
+ <span class="cline-any cline-neutral">&nbsp;</span>
1837
+ <span class="cline-any cline-neutral">&nbsp;</span>
1838
+ <span class="cline-any cline-yes">10x</span>
1839
+ <span class="cline-any cline-yes">900x</span>
1840
+ <span class="cline-any cline-no">&nbsp;</span>
1841
+ <span class="cline-any cline-neutral">&nbsp;</span>
1842
+ <span class="cline-any cline-yes">900x</span>
1843
+ <span class="cline-any cline-neutral">&nbsp;</span>
1844
+ <span class="cline-any cline-yes">900x</span>
1845
+ <span class="cline-any cline-neutral">&nbsp;</span>
1846
+ <span class="cline-any cline-neutral">&nbsp;</span>
1847
+ <span class="cline-any cline-yes">10x</span>
1848
+ <span class="cline-any cline-neutral">&nbsp;</span>
1849
+ <span class="cline-any cline-neutral">&nbsp;</span>
1850
+ <span class="cline-any cline-neutral">&nbsp;</span>
1851
+ <span class="cline-any cline-yes">29x</span>
1852
+ <span class="cline-any cline-yes">55x</span>
1853
+ <span class="cline-any cline-yes">55x</span>
1854
+ <span class="cline-any cline-yes">55x</span>
1855
+ <span class="cline-any cline-neutral">&nbsp;</span>
1856
+ <span class="cline-any cline-yes">55x</span>
1857
+ <span class="cline-any cline-neutral">&nbsp;</span>
1858
+ <span class="cline-any cline-neutral">&nbsp;</span>
1859
+ <span class="cline-any cline-neutral">&nbsp;</span>
1860
+ <span class="cline-any cline-neutral">&nbsp;</span>
1861
+ <span class="cline-any cline-yes">55x</span>
1862
+ <span class="cline-any cline-neutral">&nbsp;</span>
1863
+ <span class="cline-any cline-neutral">&nbsp;</span>
1864
+ <span class="cline-any cline-neutral">&nbsp;</span>
1865
+ <span class="cline-any cline-neutral">&nbsp;</span>
1866
+ <span class="cline-any cline-yes">55x</span>
1867
+ <span class="cline-any cline-neutral">&nbsp;</span>
1868
+ <span class="cline-any cline-neutral">&nbsp;</span>
1869
+ <span class="cline-any cline-neutral">&nbsp;</span>
1870
+ <span class="cline-any cline-neutral">&nbsp;</span>
1871
+ <span class="cline-any cline-neutral">&nbsp;</span>
1872
+ <span class="cline-any cline-yes">55x</span>
1873
+ <span class="cline-any cline-neutral">&nbsp;</span>
1874
+ <span class="cline-any cline-neutral">&nbsp;</span>
1875
+ <span class="cline-any cline-neutral">&nbsp;</span>
1876
+ <span class="cline-any cline-neutral">&nbsp;</span>
1877
+ <span class="cline-any cline-neutral">&nbsp;</span>
1878
+ <span class="cline-any cline-neutral">&nbsp;</span>
1879
+ <span class="cline-any cline-neutral">&nbsp;</span>
1880
+ <span class="cline-any cline-neutral">&nbsp;</span>
1881
+ <span class="cline-any cline-neutral">&nbsp;</span>
1882
+ <span class="cline-any cline-neutral">&nbsp;</span>
1883
+ <span class="cline-any cline-neutral">&nbsp;</span>
1884
+ <span class="cline-any cline-yes">165x</span>
1885
+ <span class="cline-any cline-yes">165x</span>
1886
+ <span class="cline-any cline-neutral">&nbsp;</span>
1887
+ <span class="cline-any cline-neutral">&nbsp;</span>
1888
+ <span class="cline-any cline-yes">570x</span>
1889
+ <span class="cline-any cline-neutral">&nbsp;</span>
1890
+ <span class="cline-any cline-neutral">&nbsp;</span>
1891
+ <span class="cline-any cline-neutral">&nbsp;</span>
1892
+ <span class="cline-any cline-neutral">&nbsp;</span>
1893
+ <span class="cline-any cline-yes">165x</span>
1894
+ <span class="cline-any cline-yes">570x</span>
1895
+ <span class="cline-any cline-neutral">&nbsp;</span>
1896
+ <span class="cline-any cline-yes">328x</span>
1897
+ <span class="cline-any cline-yes">328x</span>
1898
+ <span class="cline-any cline-neutral">&nbsp;</span>
1899
+ <span class="cline-any cline-yes">328x</span>
1900
+ <span class="cline-any cline-yes">110x</span>
1901
+ <span class="cline-any cline-neutral">&nbsp;</span>
1902
+ <span class="cline-any cline-neutral">&nbsp;</span>
1903
+ <span class="cline-any cline-neutral">&nbsp;</span>
1904
+ <span class="cline-any cline-neutral">&nbsp;</span>
1905
+ <span class="cline-any cline-yes">218x</span>
1906
+ <span class="cline-any cline-neutral">&nbsp;</span>
1907
+ <span class="cline-any cline-neutral">&nbsp;</span>
1908
+ <span class="cline-any cline-yes">165x</span>
1909
+ <span class="cline-any cline-neutral">&nbsp;</span>
1910
+ <span class="cline-any cline-neutral">&nbsp;</span>
1911
+ <span class="cline-any cline-neutral">&nbsp;</span>
1912
+ <span class="cline-any cline-neutral">&nbsp;</span>
1913
+ <span class="cline-any cline-neutral">&nbsp;</span>
1914
+ <span class="cline-any cline-neutral">&nbsp;</span>
1915
+ <span class="cline-any cline-neutral">&nbsp;</span>
1916
+ <span class="cline-any cline-neutral">&nbsp;</span>
1917
+ <span class="cline-any cline-neutral">&nbsp;</span>
1918
+ <span class="cline-any cline-neutral">&nbsp;</span>
1919
+ <span class="cline-any cline-neutral">&nbsp;</span>
1920
+ <span class="cline-any cline-neutral">&nbsp;</span>
1921
+ <span class="cline-any cline-neutral">&nbsp;</span>
1922
+ <span class="cline-any cline-neutral">&nbsp;</span>
1923
+ <span class="cline-any cline-neutral">&nbsp;</span>
1924
+ <span class="cline-any cline-yes">19x</span>
1925
+ <span class="cline-any cline-yes">18x</span>
1926
+ <span class="cline-any cline-neutral">&nbsp;</span>
1927
+ <span class="cline-any cline-neutral">&nbsp;</span>
1928
+ <span class="cline-any cline-neutral">&nbsp;</span>
1929
+ <span class="cline-any cline-yes">1x</span>
1930
+ <span class="cline-any cline-yes">1x</span>
1931
+ <span class="cline-any cline-neutral">&nbsp;</span>
1932
+ <span class="cline-any cline-neutral">&nbsp;</span>
1933
+ <span class="cline-any cline-no">&nbsp;</span>
1934
+ <span class="cline-any cline-no">&nbsp;</span>
1935
+ <span class="cline-any cline-neutral">&nbsp;</span>
1936
+ <span class="cline-any cline-neutral">&nbsp;</span>
1937
+ <span class="cline-any cline-neutral">&nbsp;</span>
1938
+ <span class="cline-any cline-yes">1x</span>
1939
+ <span class="cline-any cline-yes">1x</span>
1940
+ <span class="cline-any cline-yes">1x</span>
1941
+ <span class="cline-any cline-neutral">&nbsp;</span>
1942
+ <span class="cline-any cline-yes">1x</span>
1943
+ <span class="cline-any cline-yes">9x</span>
1944
+ <span class="cline-any cline-yes">9x</span>
1945
+ <span class="cline-any cline-yes">9x</span>
1946
+ <span class="cline-any cline-neutral">&nbsp;</span>
1947
+ <span class="cline-any cline-neutral">&nbsp;</span>
1948
+ <span class="cline-any cline-neutral">&nbsp;</span>
1949
+ <span class="cline-any cline-neutral">&nbsp;</span>
1950
+ <span class="cline-any cline-yes">9x</span>
1951
+ <span class="cline-any cline-yes">9x</span>
1952
+ <span class="cline-any cline-yes">9x</span>
1953
+ <span class="cline-any cline-neutral">&nbsp;</span>
1954
+ <span class="cline-any cline-neutral">&nbsp;</span>
1955
+ <span class="cline-any cline-neutral">&nbsp;</span>
1956
+ <span class="cline-any cline-yes">146x</span>
1957
+ <span class="cline-any cline-yes">146x</span>
1958
+ <span class="cline-any cline-yes">146x</span>
1959
+ <span class="cline-any cline-yes">7614x</span>
1960
+ <span class="cline-any cline-yes">7614x</span>
1961
+ <span class="cline-any cline-yes">39282x</span>
1962
+ <span class="cline-any cline-yes">22722x</span>
1963
+ <span class="cline-any cline-neutral">&nbsp;</span>
1964
+ <span class="cline-any cline-yes">16560x</span>
1965
+ <span class="cline-any cline-yes">16560x</span>
1966
+ <span class="cline-any cline-neutral">&nbsp;</span>
1967
+ <span class="cline-any cline-neutral">&nbsp;</span>
1968
+ <span class="cline-any cline-neutral">&nbsp;</span>
1969
+ <span class="cline-any cline-yes">146x</span>
1970
+ <span class="cline-any cline-neutral">&nbsp;</span>
1971
+ <span class="cline-any cline-neutral">&nbsp;</span>
1972
+ <span class="cline-any cline-neutral">&nbsp;</span>
1973
+ <span class="cline-any cline-neutral">&nbsp;</span>
1974
+ <span class="cline-any cline-yes">10x</span>
1975
+ <span class="cline-any cline-yes">10x</span>
1976
+ <span class="cline-any cline-yes">10x</span>
1977
+ <span class="cline-any cline-yes">1201x</span>
1978
+ <span class="cline-any cline-yes">1201x</span>
1979
+ <span class="cline-any cline-no">&nbsp;</span>
1980
+ <span class="cline-any cline-neutral">&nbsp;</span>
1981
+ <span class="cline-any cline-yes">1201x</span>
1982
+ <span class="cline-any cline-yes">1201x</span>
1983
+ <span class="cline-any cline-neutral">&nbsp;</span>
1984
+ <span class="cline-any cline-neutral">&nbsp;</span>
1985
+ <span class="cline-any cline-yes">10x</span>
1986
+ <span class="cline-any cline-neutral">&nbsp;</span>
1987
+ <span class="cline-any cline-neutral">&nbsp;</span>
1988
+ <span class="cline-any cline-yes">146x</span>
1989
+ <span class="cline-any cline-neutral">&nbsp;</span>
1990
+ <span class="cline-any cline-neutral">&nbsp;</span>
1991
+ <span class="cline-any cline-neutral">&nbsp;</span>
1992
+ <span class="cline-any cline-yes">230x</span>
1993
+ <span class="cline-any cline-neutral">&nbsp;</span>
1994
+ <span class="cline-any cline-neutral">&nbsp;</span>
1995
+ <span class="cline-any cline-neutral">&nbsp;</span>
1996
+ <span class="cline-any cline-neutral">&nbsp;</span>
1997
+ <span class="cline-any cline-neutral">&nbsp;</span>
1998
+ <span class="cline-any cline-neutral">&nbsp;</span>
1999
+ <span class="cline-any cline-yes">230x</span>
2000
+ <span class="cline-any cline-yes">1559x</span>
2001
+ <span class="cline-any cline-yes">167x</span>
2002
+ <span class="cline-any cline-no">&nbsp;</span>
2003
+ <span class="cline-any cline-neutral">&nbsp;</span>
2004
+ <span class="cline-any cline-neutral">&nbsp;</span>
2005
+ <span class="cline-any cline-neutral">&nbsp;</span>
2006
+ <span class="cline-any cline-neutral">&nbsp;</span>
2007
+ <span class="cline-any cline-neutral">&nbsp;</span>
2008
+ <span class="cline-any cline-neutral">&nbsp;</span>
2009
+ <span class="cline-any cline-neutral">&nbsp;</span>
2010
+ <span class="cline-any cline-yes">1559x</span>
2011
+ <span class="cline-any cline-yes">1559x</span>
2012
+ <span class="cline-any cline-yes">1559x</span>
2013
+ <span class="cline-any cline-yes">1559x</span>
2014
+ <span class="cline-any cline-neutral">&nbsp;</span>
2015
+ <span class="cline-any cline-neutral">&nbsp;</span>
2016
+ <span class="cline-any cline-neutral">&nbsp;</span>
2017
+ <span class="cline-any cline-yes">1559x</span>
2018
+ <span class="cline-any cline-yes">1559x</span>
2019
+ <span class="cline-any cline-neutral">&nbsp;</span>
2020
+ <span class="cline-any cline-yes">1559x</span>
2021
+ <span class="cline-any cline-yes">1201x</span>
2022
+ <span class="cline-any cline-neutral">&nbsp;</span>
2023
+ <span class="cline-any cline-neutral">&nbsp;</span>
2024
+ <span class="cline-any cline-yes">1559x</span>
2025
+ <span class="cline-any cline-yes">60x</span>
2026
+ <span class="cline-any cline-neutral">&nbsp;</span>
2027
+ <span class="cline-any cline-neutral">&nbsp;</span>
2028
+ <span class="cline-any cline-neutral">&nbsp;</span>
2029
+ <span class="cline-any cline-neutral">&nbsp;</span>
2030
+ <span class="cline-any cline-yes">1559x</span>
2031
+ <span class="cline-any cline-yes">257x</span>
2032
+ <span class="cline-any cline-neutral">&nbsp;</span>
2033
+ <span class="cline-any cline-neutral">&nbsp;</span>
2034
+ <span class="cline-any cline-neutral">&nbsp;</span>
2035
+ <span class="cline-any cline-yes">230x</span>
2036
+ <span class="cline-any cline-neutral">&nbsp;</span>
2037
+ <span class="cline-any cline-neutral">&nbsp;</span>
2038
+ <span class="cline-any cline-neutral">&nbsp;</span>
2039
+ <span class="cline-any cline-yes">10x</span>
2040
+ <span class="cline-any cline-neutral">&nbsp;</span>
2041
+ <span class="cline-any cline-yes">10x</span>
2042
+ <span class="cline-any cline-yes">10x</span>
2043
+ <span class="cline-any cline-yes">10x</span>
2044
+ <span class="cline-any cline-neutral">&nbsp;</span>
2045
+ <span class="cline-any cline-neutral">&nbsp;</span>
2046
+ <span class="cline-any cline-yes">10x</span>
2047
+ <span class="cline-any cline-neutral">&nbsp;</span>
2048
+ <span class="cline-any cline-yes">10x</span>
2049
+ <span class="cline-any cline-neutral">&nbsp;</span>
2050
+ <span class="cline-any cline-neutral">&nbsp;</span>
2051
+ <span class="cline-any cline-neutral">&nbsp;</span>
2052
+ <span class="cline-any cline-yes">38x</span>
2053
+ <span class="cline-any cline-yes">38x</span>
2054
+ <span class="cline-any cline-yes">38x</span>
2055
+ <span class="cline-any cline-yes">38x</span>
2056
+ <span class="cline-any cline-no">&nbsp;</span>
2057
+ <span class="cline-any cline-no">&nbsp;</span>
2058
+ <span class="cline-any cline-neutral">&nbsp;</span>
2059
+ <span class="cline-any cline-no">&nbsp;</span>
2060
+ <span class="cline-any cline-neutral">&nbsp;</span>
2061
+ <span class="cline-any cline-neutral">&nbsp;</span>
2062
+ <span class="cline-any cline-neutral">&nbsp;</span>
2063
+ <span class="cline-any cline-neutral">&nbsp;</span>
2064
+ <span class="cline-any cline-yes">2760x</span>
2065
+ <span class="cline-any cline-neutral">&nbsp;</span>
2066
+ <span class="cline-any cline-neutral">&nbsp;</span>
2067
+ <span class="cline-any cline-neutral">&nbsp;</span>
2068
+ <span class="cline-any cline-neutral">&nbsp;</span>
2069
+ <span class="cline-any cline-neutral">&nbsp;</span>
2070
+ <span class="cline-any cline-neutral">&nbsp;</span>
2071
+ <span class="cline-any cline-neutral">&nbsp;</span>
2072
+ <span class="cline-any cline-neutral">&nbsp;</span>
2073
+ <span class="cline-any cline-neutral">&nbsp;</span>
2074
+ <span class="cline-any cline-yes">1x</span>
2075
+ <span class="cline-any cline-neutral">&nbsp;</span>
2076
+ <span class="cline-any cline-neutral">&nbsp;</span>
2077
+ <span class="cline-any cline-neutral">&nbsp;</span>
2078
+ <span class="cline-any cline-neutral">&nbsp;</span>
2079
+ <span class="cline-any cline-neutral">&nbsp;</span>
2080
+ <span class="cline-any cline-neutral">&nbsp;</span>
2081
+ <span class="cline-any cline-neutral">&nbsp;</span>
2082
+ <span class="cline-any cline-neutral">&nbsp;</span>
2083
+ <span class="cline-any cline-neutral">&nbsp;</span>
2084
+ <span class="cline-any cline-yes">48x</span>
2085
+ <span class="cline-any cline-neutral">&nbsp;</span>
2086
+ <span class="cline-any cline-yes">48x</span>
2087
+ <span class="cline-any cline-yes">28x</span>
2088
+ <span class="cline-any cline-yes">28x</span>
2089
+ <span class="cline-any cline-neutral">&nbsp;</span>
2090
+ <span class="cline-any cline-neutral">&nbsp;</span>
2091
+ <span class="cline-any cline-no">&nbsp;</span>
2092
+ <span class="cline-any cline-neutral">&nbsp;</span>
2093
+ <span class="cline-any cline-yes">28x</span>
2094
+ <span class="cline-any cline-neutral">&nbsp;</span>
2095
+ <span class="cline-any cline-neutral">&nbsp;</span>
2096
+ <span class="cline-any cline-neutral">&nbsp;</span>
2097
+ <span class="cline-any cline-neutral">&nbsp;</span>
2098
+ <span class="cline-any cline-neutral">&nbsp;</span>
2099
+ <span class="cline-any cline-neutral">&nbsp;</span>
2100
+ <span class="cline-any cline-neutral">&nbsp;</span>
2101
+ <span class="cline-any cline-neutral">&nbsp;</span>
2102
+ <span class="cline-any cline-neutral">&nbsp;</span>
2103
+ <span class="cline-any cline-neutral">&nbsp;</span>
2104
+ <span class="cline-any cline-yes">48x</span>
2105
+ <span class="cline-any cline-yes">48x</span>
2106
+ <span class="cline-any cline-yes">58x</span>
2107
+ <span class="cline-any cline-yes">58x</span>
2108
+ <span class="cline-any cline-yes">58x</span>
2109
+ <span class="cline-any cline-neutral">&nbsp;</span>
2110
+ <span class="cline-any cline-yes">58x</span>
2111
+ <span class="cline-any cline-yes">58x</span>
2112
+ <span class="cline-any cline-yes">58x</span>
2113
+ <span class="cline-any cline-yes">58x</span>
2114
+ <span class="cline-any cline-neutral">&nbsp;</span>
2115
+ <span class="cline-any cline-yes">48x</span>
2116
+ <span class="cline-any cline-yes">48x</span>
2117
+ <span class="cline-any cline-neutral">&nbsp;</span>
2118
+ <span class="cline-any cline-neutral">&nbsp;</span>
2119
+ <span class="cline-any cline-neutral">&nbsp;</span>
2120
+ <span class="cline-any cline-neutral">&nbsp;</span>
2121
+ <span class="cline-any cline-yes">48x</span>
2122
+ <span class="cline-any cline-neutral">&nbsp;</span>
2123
+ <span class="cline-any cline-neutral">&nbsp;</span>
2124
+ <span class="cline-any cline-yes">48x</span>
2125
+ <span class="cline-any cline-neutral">&nbsp;</span>
2126
+ <span class="cline-any cline-yes">48x</span>
2127
+ <span class="cline-any cline-neutral">&nbsp;</span>
2128
+ <span class="cline-any cline-neutral">&nbsp;</span>
2129
+ <span class="cline-any cline-neutral">&nbsp;</span>
2130
+ <span class="cline-any cline-neutral">&nbsp;</span>
2131
+ <span class="cline-any cline-neutral">&nbsp;</span>
2132
+ <span class="cline-any cline-neutral">&nbsp;</span>
2133
+ <span class="cline-any cline-neutral">&nbsp;</span>
2134
+ <span class="cline-any cline-neutral">&nbsp;</span>
2135
+ <span class="cline-any cline-neutral">&nbsp;</span>
2136
+ <span class="cline-any cline-yes">48x</span>
2137
+ <span class="cline-any cline-yes">48x</span>
2138
+ <span class="cline-any cline-yes">48x</span>
2139
+ <span class="cline-any cline-yes">48x</span>
2140
+ <span class="cline-any cline-neutral">&nbsp;</span>
2141
+ <span class="cline-any cline-neutral">&nbsp;</span>
2142
+ <span class="cline-any cline-neutral">&nbsp;</span>
2143
+ <span class="cline-any cline-neutral">&nbsp;</span>
2144
+ <span class="cline-any cline-neutral">&nbsp;</span>
2145
+ <span class="cline-any cline-yes">48x</span>
2146
+ <span class="cline-any cline-neutral">&nbsp;</span>
2147
+ <span class="cline-any cline-neutral">&nbsp;</span>
2148
+ <span class="cline-any cline-neutral">&nbsp;</span>
2149
+ <span class="cline-any cline-neutral">&nbsp;</span>
2150
+ <span class="cline-any cline-neutral">&nbsp;</span>
2151
+ <span class="cline-any cline-neutral">&nbsp;</span>
2152
+ <span class="cline-any cline-neutral">&nbsp;</span>
2153
+ <span class="cline-any cline-neutral">&nbsp;</span>
2154
+ <span class="cline-any cline-neutral">&nbsp;</span>
2155
+ <span class="cline-any cline-neutral">&nbsp;</span>
2156
+ <span class="cline-any cline-neutral">&nbsp;</span>
2157
+ <span class="cline-any cline-yes">11x</span>
2158
+ <span class="cline-any cline-yes">16x</span>
2159
+ <span class="cline-any cline-yes">814x</span>
2160
+ <span class="cline-any cline-yes">14x</span>
2161
+ <span class="cline-any cline-neutral">&nbsp;</span>
2162
+ <span class="cline-any cline-neutral">&nbsp;</span>
2163
+ <span class="cline-any cline-yes">2x</span>
2164
+ <span class="cline-any cline-neutral">&nbsp;</span>
2165
+ <span class="cline-any cline-neutral">&nbsp;</span>
2166
+ <span class="cline-any cline-neutral">&nbsp;</span>
2167
+ <span class="cline-any cline-neutral">&nbsp;</span>
2168
+ <span class="cline-any cline-neutral">&nbsp;</span>
2169
+ <span class="cline-any cline-neutral">&nbsp;</span>
2170
+ <span class="cline-any cline-neutral">&nbsp;</span>
2171
+ <span class="cline-any cline-yes">35x</span>
2172
+ <span class="cline-any cline-yes">35x</span>
2173
+ <span class="cline-any cline-yes">35x</span>
2174
+ <span class="cline-any cline-yes">40x</span>
2175
+ <span class="cline-any cline-yes">11x</span>
2176
+ <span class="cline-any cline-neutral">&nbsp;</span>
2177
+ <span class="cline-any cline-neutral">&nbsp;</span>
2178
+ <span class="cline-any cline-yes">24x</span>
2179
+ <span class="cline-any cline-neutral">&nbsp;</span>
2180
+ <span class="cline-any cline-neutral">&nbsp;</span>
2181
+ <span class="cline-any cline-neutral">&nbsp;</span>
2182
+ <span class="cline-any cline-neutral">&nbsp;</span>
2183
+ <span class="cline-any cline-neutral">&nbsp;</span>
2184
+ <span class="cline-any cline-neutral">&nbsp;</span>
2185
+ <span class="cline-any cline-neutral">&nbsp;</span>
2186
+ <span class="cline-any cline-neutral">&nbsp;</span>
2187
+ <span class="cline-any cline-yes">1x</span>
2188
+ <span class="cline-any cline-neutral">&nbsp;</span>
2189
+ <span class="cline-any cline-yes">1x</span>
2190
+ <span class="cline-any cline-yes">1x</span>
2191
+ <span class="cline-any cline-neutral">&nbsp;</span>
2192
+ <span class="cline-any cline-neutral">&nbsp;</span>
2193
+ <span class="cline-any cline-neutral">&nbsp;</span>
2194
+ <span class="cline-any cline-neutral">&nbsp;</span>
2195
+ <span class="cline-any cline-neutral">&nbsp;</span>
2196
+ <span class="cline-any cline-neutral">&nbsp;</span>
2197
+ <span class="cline-any cline-neutral">&nbsp;</span>
2198
+ <span class="cline-any cline-yes">90x</span>
2199
+ <span class="cline-any cline-neutral">&nbsp;</span>
2200
+ <span class="cline-any cline-neutral">&nbsp;</span>
2201
+ <span class="cline-any cline-neutral">&nbsp;</span>
2202
+ <span class="cline-any cline-neutral">&nbsp;</span>
2203
+ <span class="cline-any cline-neutral">&nbsp;</span>
2204
+ <span class="cline-any cline-neutral">&nbsp;</span>
2205
+ <span class="cline-any cline-neutral">&nbsp;</span>
2206
+ <span class="cline-any cline-yes">90x</span>
2207
+ <span class="cline-any cline-neutral">&nbsp;</span>
2208
+ <span class="cline-any cline-yes">90x</span>
2209
+ <span class="cline-any cline-no">&nbsp;</span>
2210
+ <span class="cline-any cline-neutral">&nbsp;</span>
2211
+ <span class="cline-any cline-yes">90x</span>
2212
+ <span class="cline-any cline-neutral">&nbsp;</span>
2213
+ <span class="cline-any cline-neutral">&nbsp;</span>
2214
+ <span class="cline-any cline-neutral">&nbsp;</span>
2215
+ <span class="cline-any cline-yes">22x</span>
2216
+ <span class="cline-any cline-neutral">&nbsp;</span>
2217
+ <span class="cline-any cline-neutral">&nbsp;</span>
2218
+ <span class="cline-any cline-yes">22x</span>
2219
+ <span class="cline-any cline-neutral">&nbsp;</span>
2220
+ <span class="cline-any cline-neutral">&nbsp;</span>
2221
+ <span class="cline-any cline-yes">112x</span>
2222
+ <span class="cline-any cline-neutral">&nbsp;</span>
2223
+ <span class="cline-any cline-neutral">&nbsp;</span>
2224
+ <span class="cline-any cline-neutral">&nbsp;</span>
2225
+ <span class="cline-any cline-neutral">&nbsp;</span>
2226
+ <span class="cline-any cline-neutral">&nbsp;</span>
2227
+ <span class="cline-any cline-neutral">&nbsp;</span>
2228
+ <span class="cline-any cline-neutral">&nbsp;</span>
2229
+ <span class="cline-any cline-neutral">&nbsp;</span>
2230
+ <span class="cline-any cline-neutral">&nbsp;</span>
2231
+ <span class="cline-any cline-neutral">&nbsp;</span>
2232
+ <span class="cline-any cline-neutral">&nbsp;</span>
2233
+ <span class="cline-any cline-neutral">&nbsp;</span>
2234
+ <span class="cline-any cline-neutral">&nbsp;</span>
2235
+ <span class="cline-any cline-neutral">&nbsp;</span>
2236
+ <span class="cline-any cline-neutral">&nbsp;</span>
2237
+ <span class="cline-any cline-neutral">&nbsp;</span>
2238
+ <span class="cline-any cline-neutral">&nbsp;</span>
2239
+ <span class="cline-any cline-neutral">&nbsp;</span>
2240
+ <span class="cline-any cline-neutral">&nbsp;</span>
2241
+ <span class="cline-any cline-yes">44x</span>
2242
+ <span class="cline-any cline-yes">44x</span>
2243
+ <span class="cline-any cline-no">&nbsp;</span>
2244
+ <span class="cline-any cline-neutral">&nbsp;</span>
2245
+ <span class="cline-any cline-yes">44x</span>
2246
+ <span class="cline-any cline-yes">44x</span>
2247
+ <span class="cline-any cline-neutral">&nbsp;</span>
2248
+ <span class="cline-any cline-neutral">&nbsp;</span>
2249
+ <span class="cline-any cline-neutral">&nbsp;</span>
2250
+ <span class="cline-any cline-yes">44x</span>
2251
+ <span class="cline-any cline-neutral">&nbsp;</span>
2252
+ <span class="cline-any cline-yes">44x</span>
2253
+ <span class="cline-any cline-yes">44x</span>
2254
+ <span class="cline-any cline-no">&nbsp;</span>
2255
+ <span class="cline-any cline-neutral">&nbsp;</span>
2256
+ <span class="cline-any cline-yes">44x</span>
2257
+ <span class="cline-any cline-yes">44x</span>
2258
+ <span class="cline-any cline-neutral">&nbsp;</span>
2259
+ <span class="cline-any cline-neutral">&nbsp;</span>
2260
+ <span class="cline-any cline-yes">44x</span>
2261
+ <span class="cline-any cline-neutral">&nbsp;</span>
2262
+ <span class="cline-any cline-no">&nbsp;</span>
2263
+ <span class="cline-any cline-neutral">&nbsp;</span>
2264
+ <span class="cline-any cline-neutral">&nbsp;</span>
2265
+ <span class="cline-any cline-neutral">&nbsp;</span>
2266
+ <span class="cline-any cline-neutral">&nbsp;</span>
2267
+ <span class="cline-any cline-neutral">&nbsp;</span>
2268
+ <span class="cline-any cline-neutral">&nbsp;</span>
2269
+ <span class="cline-any cline-neutral">&nbsp;</span>
2270
+ <span class="cline-any cline-neutral">&nbsp;</span>
2271
+ <span class="cline-any cline-neutral">&nbsp;</span>
2272
+ <span class="cline-any cline-neutral">&nbsp;</span>
2273
+ <span class="cline-any cline-neutral">&nbsp;</span>
2274
+ <span class="cline-any cline-neutral">&nbsp;</span>
2275
+ <span class="cline-any cline-neutral">&nbsp;</span>
2276
+ <span class="cline-any cline-neutral">&nbsp;</span>
2277
+ <span class="cline-any cline-yes">321x</span>
2278
+ <span class="cline-any cline-neutral">&nbsp;</span>
2279
+ <span class="cline-any cline-neutral">&nbsp;</span>
2280
+ <span class="cline-any cline-yes">195x</span>
2281
+ <span class="cline-any cline-yes">195x</span>
2282
+ <span class="cline-any cline-no">&nbsp;</span>
2283
+ <span class="cline-any cline-no">&nbsp;</span>
2284
+ <span class="cline-any cline-no">&nbsp;</span>
2285
+ <span class="cline-any cline-no">&nbsp;</span>
2286
+ <span class="cline-any cline-neutral">&nbsp;</span>
2287
+ <span class="cline-any cline-no">&nbsp;</span>
2288
+ <span class="cline-any cline-neutral">&nbsp;</span>
2289
+ <span class="cline-any cline-neutral">&nbsp;</span>
2290
+ <span class="cline-any cline-yes">195x</span>
2291
+ <span class="cline-any cline-neutral">&nbsp;</span>
2292
+ <span class="cline-any cline-neutral">&nbsp;</span>
2293
+ <span class="cline-any cline-neutral">&nbsp;</span>
2294
+ <span class="cline-any cline-yes">49x</span>
2295
+ <span class="cline-any cline-neutral">&nbsp;</span>
2296
+ <span class="cline-any cline-neutral">&nbsp;</span>
2297
+ <span class="cline-any cline-neutral">&nbsp;</span>
2298
+ <span class="cline-any cline-neutral">&nbsp;</span>
2299
+ <span class="cline-any cline-neutral">&nbsp;</span>
2300
+ <span class="cline-any cline-neutral">&nbsp;</span>
2301
+ <span class="cline-any cline-neutral">&nbsp;</span>
2302
+ <span class="cline-any cline-neutral">&nbsp;</span>
2303
+ <span class="cline-any cline-neutral">&nbsp;</span>
2304
+ <span class="cline-any cline-neutral">&nbsp;</span>
2305
+ <span class="cline-any cline-neutral">&nbsp;</span>
2306
+ <span class="cline-any cline-neutral">&nbsp;</span>
2307
+ <span class="cline-any cline-neutral">&nbsp;</span>
2308
+ <span class="cline-any cline-neutral">&nbsp;</span>
2309
+ <span class="cline-any cline-neutral">&nbsp;</span>
2310
+ <span class="cline-any cline-yes">7x</span>
2311
+ <span class="cline-any cline-neutral">&nbsp;</span>
2312
+ <span class="cline-any cline-neutral">&nbsp;</span>
2313
+ <span class="cline-any cline-neutral">&nbsp;</span>
2314
+ <span class="cline-any cline-neutral">&nbsp;</span>
2315
+ <span class="cline-any cline-neutral">&nbsp;</span>
2316
+ <span class="cline-any cline-neutral">&nbsp;</span>
2317
+ <span class="cline-any cline-neutral">&nbsp;</span>
2318
+ <span class="cline-any cline-neutral">&nbsp;</span>
2319
+ <span class="cline-any cline-neutral">&nbsp;</span>
2320
+ <span class="cline-any cline-neutral">&nbsp;</span>
2321
+ <span class="cline-any cline-neutral">&nbsp;</span>
2322
+ <span class="cline-any cline-neutral">&nbsp;</span>
2323
+ <span class="cline-any cline-neutral">&nbsp;</span>
2324
+ <span class="cline-any cline-yes">101x</span>
2325
+ <span class="cline-any cline-neutral">&nbsp;</span>
2326
+ <span class="cline-any cline-yes">101x</span>
2327
+ <span class="cline-any cline-neutral">&nbsp;</span>
2328
+ <span class="cline-any cline-neutral">&nbsp;</span>
2329
+ <span class="cline-any cline-neutral">&nbsp;</span>
2330
+ <span class="cline-any cline-neutral">&nbsp;</span>
2331
+ <span class="cline-any cline-neutral">&nbsp;</span>
2332
+ <span class="cline-any cline-neutral">&nbsp;</span>
2333
+ <span class="cline-any cline-neutral">&nbsp;</span>
2334
+ <span class="cline-any cline-yes">21x</span>
2335
+ <span class="cline-any cline-neutral">&nbsp;</span>
2336
+ <span class="cline-any cline-neutral">&nbsp;</span>
2337
+ <span class="cline-any cline-yes">21x</span>
2338
+ <span class="cline-any cline-neutral">&nbsp;</span>
2339
+ <span class="cline-any cline-neutral">&nbsp;</span>
2340
+ <span class="cline-any cline-yes">11x</span>
2341
+ <span class="cline-any cline-neutral">&nbsp;</span>
2342
+ <span class="cline-any cline-yes">21x</span>
2343
+ <span class="cline-any cline-neutral">&nbsp;</span>
2344
+ <span class="cline-any cline-neutral">&nbsp;</span>
2345
+ <span class="cline-any cline-neutral">&nbsp;</span>
2346
+ <span class="cline-any cline-yes">20x</span>
2347
+ <span class="cline-any cline-neutral">&nbsp;</span>
2348
+ <span class="cline-any cline-yes">100x</span>
2349
+ <span class="cline-any cline-neutral">&nbsp;</span>
2350
+ <span class="cline-any cline-neutral">&nbsp;</span>
2351
+ <span class="cline-any cline-neutral">&nbsp;</span>
2352
+ <span class="cline-any cline-neutral">&nbsp;</span>
2353
+ <span class="cline-any cline-neutral">&nbsp;</span>
2354
+ <span class="cline-any cline-neutral">&nbsp;</span>
2355
+ <span class="cline-any cline-neutral">&nbsp;</span>
2356
+ <span class="cline-any cline-neutral">&nbsp;</span>
2357
+ <span class="cline-any cline-neutral">&nbsp;</span>
2358
+ <span class="cline-any cline-neutral">&nbsp;</span>
2359
+ <span class="cline-any cline-neutral">&nbsp;</span>
2360
+ <span class="cline-any cline-neutral">&nbsp;</span>
2361
+ <span class="cline-any cline-neutral">&nbsp;</span>
2362
+ <span class="cline-any cline-yes">11x</span>
2363
+ <span class="cline-any cline-neutral">&nbsp;</span>
2364
+ <span class="cline-any cline-neutral">&nbsp;</span>
2365
+ <span class="cline-any cline-yes">11x</span>
2366
+ <span class="cline-any cline-neutral">&nbsp;</span>
2367
+ <span class="cline-any cline-neutral">&nbsp;</span>
2368
+ <span class="cline-any cline-neutral">&nbsp;</span>
2369
+ <span class="cline-any cline-neutral">&nbsp;</span>
2370
+ <span class="cline-any cline-neutral">&nbsp;</span>
2371
+ <span class="cline-any cline-yes">11x</span>
2372
+ <span class="cline-any cline-yes">11x</span>
2373
+ <span class="cline-any cline-yes">11x</span>
2374
+ <span class="cline-any cline-yes">16x</span>
2375
+ <span class="cline-any cline-yes">16x</span>
2376
+ <span class="cline-any cline-neutral">&nbsp;</span>
2377
+ <span class="cline-any cline-neutral">&nbsp;</span>
2378
+ <span class="cline-any cline-yes">11x</span>
2379
+ <span class="cline-any cline-no">&nbsp;</span>
2380
+ <span class="cline-any cline-neutral">&nbsp;</span>
2381
+ <span class="cline-any cline-yes">11x</span>
2382
+ <span class="cline-any cline-yes">11x</span>
2383
+ <span class="cline-any cline-yes">10x</span>
2384
+ <span class="cline-any cline-yes">9x</span>
2385
+ <span class="cline-any cline-neutral">&nbsp;</span>
2386
+ <span class="cline-any cline-yes">10x</span>
2387
+ <span class="cline-any cline-neutral">&nbsp;</span>
2388
+ <span class="cline-any cline-neutral">&nbsp;</span>
2389
+ <span class="cline-any cline-neutral">&nbsp;</span>
2390
+ <span class="cline-any cline-neutral">&nbsp;</span>
2391
+ <span class="cline-any cline-neutral">&nbsp;</span>
2392
+ <span class="cline-any cline-neutral">&nbsp;</span>
2393
+ <span class="cline-any cline-neutral">&nbsp;</span>
2394
+ <span class="cline-any cline-yes">1x</span>
2395
+ <span class="cline-any cline-neutral">&nbsp;</span>
2396
+ <span class="cline-any cline-neutral">&nbsp;</span>
2397
+ <span class="cline-any cline-yes">1x</span>
2398
+ <span class="cline-any cline-neutral">&nbsp;</span>
2399
+ <span class="cline-any cline-neutral">&nbsp;</span>
2400
+ <span class="cline-any cline-neutral">&nbsp;</span>
2401
+ <span class="cline-any cline-neutral">&nbsp;</span>
2402
+ <span class="cline-any cline-neutral">&nbsp;</span>
2403
+ <span class="cline-any cline-neutral">&nbsp;</span>
2404
+ <span class="cline-any cline-neutral">&nbsp;</span>
2405
+ <span class="cline-any cline-neutral">&nbsp;</span>
2406
+ <span class="cline-any cline-yes">10x</span>
2407
+ <span class="cline-any cline-yes">2x</span>
2408
+ <span class="cline-any cline-neutral">&nbsp;</span>
2409
+ <span class="cline-any cline-neutral">&nbsp;</span>
2410
+ <span class="cline-any cline-yes">8x</span>
2411
+ <span class="cline-any cline-yes">8x</span>
2412
+ <span class="cline-any cline-neutral">&nbsp;</span>
2413
+ <span class="cline-any cline-neutral">&nbsp;</span>
2414
+ <span class="cline-any cline-yes">8x</span>
2415
+ <span class="cline-any cline-yes">8x</span>
2416
+ <span class="cline-any cline-yes">36x</span>
2417
+ <span class="cline-any cline-yes">8x</span>
2418
+ <span class="cline-any cline-yes">8x</span>
2419
+ <span class="cline-any cline-neutral">&nbsp;</span>
2420
+ <span class="cline-any cline-neutral">&nbsp;</span>
2421
+ <span class="cline-any cline-yes">8x</span>
2422
+ <span class="cline-any cline-yes">8x</span>
2423
+ <span class="cline-any cline-yes">8x</span>
2424
+ <span class="cline-any cline-yes">8x</span>
2425
+ <span class="cline-any cline-neutral">&nbsp;</span>
2426
+ <span class="cline-any cline-neutral">&nbsp;</span>
2427
+ <span class="cline-any cline-yes">8x</span>
2428
+ <span class="cline-any cline-neutral">&nbsp;</span>
2429
+ <span class="cline-any cline-yes">8x</span>
2430
+ <span class="cline-any cline-neutral">&nbsp;</span>
2431
+ <span class="cline-any cline-neutral">&nbsp;</span>
2432
+ <span class="cline-any cline-neutral">&nbsp;</span>
2433
+ <span class="cline-any cline-yes">8x</span>
2434
+ <span class="cline-any cline-yes">16x</span>
2435
+ <span class="cline-any cline-yes">16x</span>
2436
+ <span class="cline-any cline-neutral">&nbsp;</span>
2437
+ <span class="cline-any cline-neutral">&nbsp;</span>
2438
+ <span class="cline-any cline-yes">8x</span>
2439
+ <span class="cline-any cline-yes">7x</span>
2440
+ <span class="cline-any cline-yes">7x</span>
2441
+ <span class="cline-any cline-neutral">&nbsp;</span>
2442
+ <span class="cline-any cline-neutral">&nbsp;</span>
2443
+ <span class="cline-any cline-neutral">&nbsp;</span>
2444
+ <span class="cline-any cline-neutral">&nbsp;</span>
2445
+ <span class="cline-any cline-yes">21x</span>
2446
+ <span class="cline-any cline-neutral">&nbsp;</span>
2447
+ <span class="cline-any cline-neutral">&nbsp;</span>
2448
+ <span class="cline-any cline-neutral">&nbsp;</span>
2449
+ <span class="cline-any cline-neutral">&nbsp;</span>
2450
+ <span class="cline-any cline-neutral">&nbsp;</span>
2451
+ <span class="cline-any cline-neutral">&nbsp;</span>
2452
+ <span class="cline-any cline-neutral">&nbsp;</span>
2453
+ <span class="cline-any cline-neutral">&nbsp;</span>
2454
+ <span class="cline-any cline-neutral">&nbsp;</span>
2455
+ <span class="cline-any cline-neutral">&nbsp;</span>
2456
+ <span class="cline-any cline-neutral">&nbsp;</span>
2457
+ <span class="cline-any cline-yes">7x</span>
2458
+ <span class="cline-any cline-neutral">&nbsp;</span>
2459
+ <span class="cline-any cline-neutral">&nbsp;</span>
2460
+ <span class="cline-any cline-neutral">&nbsp;</span>
2461
+ <span class="cline-any cline-neutral">&nbsp;</span>
2462
+ <span class="cline-any cline-neutral">&nbsp;</span>
2463
+ <span class="cline-any cline-yes">8x</span>
2464
+ <span class="cline-any cline-neutral">&nbsp;</span>
2465
+ <span class="cline-any cline-neutral">&nbsp;</span>
2466
+ <span class="cline-any cline-neutral">&nbsp;</span>
2467
+ <span class="cline-any cline-neutral">&nbsp;</span>
2468
+ <span class="cline-any cline-neutral">&nbsp;</span>
2469
+ <span class="cline-any cline-no">&nbsp;</span>
2470
+ <span class="cline-any cline-yes">36x</span>
2471
+ <span class="cline-any cline-neutral">&nbsp;</span>
2472
+ <span class="cline-any cline-neutral">&nbsp;</span>
2473
+ <span class="cline-any cline-neutral">&nbsp;</span>
2474
+ <span class="cline-any cline-neutral">&nbsp;</span>
2475
+ <span class="cline-any cline-neutral">&nbsp;</span>
2476
+ <span class="cline-any cline-yes">11x</span>
2477
+ <span class="cline-any cline-no">&nbsp;</span>
2478
+ <span class="cline-any cline-neutral">&nbsp;</span>
2479
+ <span class="cline-any cline-yes">11x</span>
2480
+ <span class="cline-any cline-yes">11x</span>
2481
+ <span class="cline-any cline-neutral">&nbsp;</span>
2482
+ <span class="cline-any cline-neutral">&nbsp;</span>
2483
+ <span class="cline-any cline-yes">22x</span>
2484
+ <span class="cline-any cline-yes">11x</span>
2485
+ <span class="cline-any cline-yes">11x</span>
2486
+ <span class="cline-any cline-neutral">&nbsp;</span>
2487
+ <span class="cline-any cline-yes">11x</span>
2488
+ <span class="cline-any cline-yes">11x</span>
2489
+ <span class="cline-any cline-yes">11x</span>
2490
+ <span class="cline-any cline-yes">11x</span>
2491
+ <span class="cline-any cline-neutral">&nbsp;</span>
2492
+ <span class="cline-any cline-neutral">&nbsp;</span>
2493
+ <span class="cline-any cline-yes">11x</span>
2494
+ <span class="cline-any cline-yes">11x</span>
2495
+ <span class="cline-any cline-yes">11x</span>
2496
+ <span class="cline-any cline-neutral">&nbsp;</span>
2497
+ <span class="cline-any cline-neutral">&nbsp;</span>
2498
+ <span class="cline-any cline-neutral">&nbsp;</span>
2499
+ <span class="cline-any cline-neutral">&nbsp;</span>
2500
+ <span class="cline-any cline-neutral">&nbsp;</span>
2501
+ <span class="cline-any cline-neutral">&nbsp;</span>
2502
+ <span class="cline-any cline-neutral">&nbsp;</span>
2503
+ <span class="cline-any cline-neutral">&nbsp;</span>
2504
+ <span class="cline-any cline-neutral">&nbsp;</span>
2505
+ <span class="cline-any cline-yes">90x</span>
2506
+ <span class="cline-any cline-neutral">&nbsp;</span>
2507
+ <span class="cline-any cline-neutral">&nbsp;</span>
2508
+ <span class="cline-any cline-neutral">&nbsp;</span>
2509
+ <span class="cline-any cline-neutral">&nbsp;</span>
2510
+ <span class="cline-any cline-neutral">&nbsp;</span>
2511
+ <span class="cline-any cline-neutral">&nbsp;</span>
2512
+ <span class="cline-any cline-neutral">&nbsp;</span>
2513
+ <span class="cline-any cline-neutral">&nbsp;</span>
2514
+ <span class="cline-any cline-neutral">&nbsp;</span>
2515
+ <span class="cline-any cline-neutral">&nbsp;</span>
2516
+ <span class="cline-any cline-neutral">&nbsp;</span>
2517
+ <span class="cline-any cline-neutral">&nbsp;</span>
2518
+ <span class="cline-any cline-neutral">&nbsp;</span>
2519
+ <span class="cline-any cline-neutral">&nbsp;</span>
2520
+ <span class="cline-any cline-neutral">&nbsp;</span>
2521
+ <span class="cline-any cline-neutral">&nbsp;</span>
2522
+ <span class="cline-any cline-yes">90x</span>
2523
+ <span class="cline-any cline-neutral">&nbsp;</span>
2524
+ <span class="cline-any cline-neutral">&nbsp;</span>
2525
+ <span class="cline-any cline-neutral">&nbsp;</span>
2526
+ <span class="cline-any cline-neutral">&nbsp;</span>
2527
+ <span class="cline-any cline-neutral">&nbsp;</span>
2528
+ <span class="cline-any cline-neutral">&nbsp;</span>
2529
+ <span class="cline-any cline-neutral">&nbsp;</span>
2530
+ <span class="cline-any cline-neutral">&nbsp;</span>
2531
+ <span class="cline-any cline-neutral">&nbsp;</span>
2532
+ <span class="cline-any cline-neutral">&nbsp;</span>
2533
+ <span class="cline-any cline-neutral">&nbsp;</span>
2534
+ <span class="cline-any cline-neutral">&nbsp;</span>
2535
+ <span class="cline-any cline-neutral">&nbsp;</span>
2536
+ <span class="cline-any cline-neutral">&nbsp;</span>
2537
+ <span class="cline-any cline-neutral">&nbsp;</span>
2538
+ <span class="cline-any cline-neutral">&nbsp;</span>
2539
+ <span class="cline-any cline-neutral">&nbsp;</span>
2540
+ <span class="cline-any cline-neutral">&nbsp;</span>
2541
+ <span class="cline-any cline-neutral">&nbsp;</span>
2542
+ <span class="cline-any cline-neutral">&nbsp;</span>
2543
+ <span class="cline-any cline-neutral">&nbsp;</span>
2544
+ <span class="cline-any cline-neutral">&nbsp;</span>
2545
+ <span class="cline-any cline-neutral">&nbsp;</span>
2546
+ <span class="cline-any cline-neutral">&nbsp;</span>
2547
+ <span class="cline-any cline-neutral">&nbsp;</span>
2548
+ <span class="cline-any cline-neutral">&nbsp;</span>
2549
+ <span class="cline-any cline-neutral">&nbsp;</span>
2550
+ <span class="cline-any cline-neutral">&nbsp;</span>
2551
+ <span class="cline-any cline-neutral">&nbsp;</span>
2552
+ <span class="cline-any cline-neutral">&nbsp;</span>
2553
+ <span class="cline-any cline-neutral">&nbsp;</span>
2554
+ <span class="cline-any cline-neutral">&nbsp;</span>
2555
+ <span class="cline-any cline-neutral">&nbsp;</span>
2556
+ <span class="cline-any cline-neutral">&nbsp;</span>
2557
+ <span class="cline-any cline-neutral">&nbsp;</span>
2558
+ <span class="cline-any cline-neutral">&nbsp;</span>
2559
+ <span class="cline-any cline-neutral">&nbsp;</span>
2560
+ <span class="cline-any cline-neutral">&nbsp;</span>
2561
+ <span class="cline-any cline-neutral">&nbsp;</span>
2562
+ <span class="cline-any cline-neutral">&nbsp;</span>
2563
+ <span class="cline-any cline-neutral">&nbsp;</span>
2564
+ <span class="cline-any cline-neutral">&nbsp;</span>
2565
+ <span class="cline-any cline-neutral">&nbsp;</span>
2566
+ <span class="cline-any cline-neutral">&nbsp;</span>
2567
+ <span class="cline-any cline-neutral">&nbsp;</span>
2568
+ <span class="cline-any cline-neutral">&nbsp;</span>
2569
+ <span class="cline-any cline-neutral">&nbsp;</span>
2570
+ <span class="cline-any cline-neutral">&nbsp;</span>
2571
+ <span class="cline-any cline-neutral">&nbsp;</span>
2572
+ <span class="cline-any cline-neutral">&nbsp;</span>
2573
+ <span class="cline-any cline-neutral">&nbsp;</span>
2574
+ <span class="cline-any cline-neutral">&nbsp;</span>
2575
+ <span class="cline-any cline-neutral">&nbsp;</span>
2576
+ <span class="cline-any cline-neutral">&nbsp;</span>
2577
+ <span class="cline-any cline-neutral">&nbsp;</span>
2578
+ <span class="cline-any cline-neutral">&nbsp;</span>
2579
+ <span class="cline-any cline-neutral">&nbsp;</span>
2580
+ <span class="cline-any cline-yes">90x</span>
2581
+ <span class="cline-any cline-yes">82x</span>
2582
+ <span class="cline-any cline-neutral">&nbsp;</span>
2583
+ <span class="cline-any cline-neutral">&nbsp;</span>
2584
+ <span class="cline-any cline-neutral">&nbsp;</span>
2585
+ <span class="cline-any cline-neutral">&nbsp;</span>
2586
+ <span class="cline-any cline-neutral">&nbsp;</span>
2587
+ <span class="cline-any cline-neutral">&nbsp;</span>
2588
+ <span class="cline-any cline-yes">15x</span>
2589
+ <span class="cline-any cline-no">&nbsp;</span>
2590
+ <span class="cline-any cline-no">&nbsp;</span>
2591
+ <span class="cline-any cline-neutral">&nbsp;</span>
2592
+ <span class="cline-any cline-no">&nbsp;</span>
2593
+ <span class="cline-any cline-neutral">&nbsp;</span>
2594
+ <span class="cline-any cline-neutral">&nbsp;</span>
2595
+ <span class="cline-any cline-neutral">&nbsp;</span>
2596
+ <span class="cline-any cline-neutral">&nbsp;</span>
2597
+ <span class="cline-any cline-yes">15x</span>
2598
+ <span class="cline-any cline-no">&nbsp;</span>
2599
+ <span class="cline-any cline-neutral">&nbsp;</span>
2600
+ <span class="cline-any cline-yes">15x</span>
2601
+ <span class="cline-any cline-no">&nbsp;</span>
2602
+ <span class="cline-any cline-neutral">&nbsp;</span>
2603
+ <span class="cline-any cline-yes">15x</span>
2604
+ <span class="cline-any cline-no">&nbsp;</span>
2605
+ <span class="cline-any cline-neutral">&nbsp;</span>
2606
+ <span class="cline-any cline-yes">15x</span>
2607
+ <span class="cline-any cline-neutral">&nbsp;</span>
2608
+ <span class="cline-any cline-neutral">&nbsp;</span>
2609
+ <span class="cline-any cline-neutral">&nbsp;</span>
2610
+ <span class="cline-any cline-neutral">&nbsp;</span>
2611
+ <span class="cline-any cline-yes">90x</span>
2612
+ <span class="cline-any cline-neutral">&nbsp;</span>
2613
+ <span class="cline-any cline-yes">22x</span>
2614
+ <span class="cline-any cline-neutral">&nbsp;</span>
2615
+ <span class="cline-any cline-neutral">&nbsp;</span>
2616
+ <span class="cline-any cline-yes">22x</span>
2617
+ <span class="cline-any cline-neutral">&nbsp;</span>
2618
+ <span class="cline-any cline-neutral">&nbsp;</span>
2619
+ <span class="cline-any cline-yes">22x</span>
2620
+ <span class="cline-any cline-yes">22x</span>
2621
+ <span class="cline-any cline-neutral">&nbsp;</span>
2622
+ <span class="cline-any cline-no">&nbsp;</span>
2623
+ <span class="cline-any cline-neutral">&nbsp;</span>
2624
+ <span class="cline-any cline-neutral">&nbsp;</span>
2625
+ <span class="cline-any cline-no">&nbsp;</span>
2626
+ <span class="cline-any cline-neutral">&nbsp;</span>
2627
+ <span class="cline-any cline-neutral">&nbsp;</span>
2628
+ <span class="cline-any cline-neutral">&nbsp;</span>
2629
+ <span class="cline-any cline-neutral">&nbsp;</span>
2630
+ <span class="cline-any cline-yes">90x</span>
2631
+ <span class="cline-any cline-yes">90x</span>
2632
+ <span class="cline-any cline-neutral">&nbsp;</span>
2633
+ <span class="cline-any cline-no">&nbsp;</span>
2634
+ <span class="cline-any cline-neutral">&nbsp;</span>
2635
+ <span class="cline-any cline-neutral">&nbsp;</span>
2636
+ <span class="cline-any cline-no">&nbsp;</span>
2637
+ <span class="cline-any cline-no">&nbsp;</span>
2638
+ <span class="cline-any cline-neutral">&nbsp;</span>
2639
+ <span class="cline-any cline-neutral">&nbsp;</span>
2640
+ <span class="cline-any cline-neutral">&nbsp;</span>
2641
+ <span class="cline-any cline-neutral">&nbsp;</span>
2642
+ <span class="cline-any cline-neutral">&nbsp;</span>
2643
+ <span class="cline-any cline-neutral">&nbsp;</span>
2644
+ <span class="cline-any cline-neutral">&nbsp;</span>
2645
+ <span class="cline-any cline-neutral">&nbsp;</span>
2646
+ <span class="cline-any cline-neutral">&nbsp;</span>
2647
+ <span class="cline-any cline-no">&nbsp;</span>
2648
+ <span class="cline-any cline-no">&nbsp;</span>
2649
+ <span class="cline-any cline-neutral">&nbsp;</span>
2650
+ <span class="cline-any cline-neutral">&nbsp;</span>
2651
+ <span class="cline-any cline-no">&nbsp;</span>
2652
+ <span class="cline-any cline-no">&nbsp;</span>
2653
+ <span class="cline-any cline-no">&nbsp;</span>
2654
+ <span class="cline-any cline-no">&nbsp;</span>
2655
+ <span class="cline-any cline-no">&nbsp;</span>
2656
+ <span class="cline-any cline-no">&nbsp;</span>
2657
+ <span class="cline-any cline-neutral">&nbsp;</span>
2658
+ <span class="cline-any cline-no">&nbsp;</span>
2659
+ <span class="cline-any cline-neutral">&nbsp;</span>
2660
+ <span class="cline-any cline-neutral">&nbsp;</span>
2661
+ <span class="cline-any cline-neutral">&nbsp;</span>
2662
+ <span class="cline-any cline-neutral">&nbsp;</span>
2663
+ <span class="cline-any cline-neutral">&nbsp;</span>
2664
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const glob = require('glob');
2665
+ const fs = require('fs-extra');
2666
+ const Promise = require('bluebird');
2667
+ const webpackModule = require('webpack');
2668
+ const globalIcons = require('./lib/globalIcons');
2669
+ const path = require('path');
2670
+ const util = require('util');
2671
+ const express = require('express');
2672
+ const { stripIndent } = require('common-tags');
2673
+ const { merge: webpackMerge } = require('webpack-merge');
2674
+ const cuid = require('cuid');
2675
+ const chokidar = require('chokidar');
2676
+ const _ = require('lodash');
2677
+ const {
2678
+ checkModulesWebpackConfig,
2679
+ getWebpackExtensions,
2680
+ fillExtraBundles,
2681
+ getBundlesNames,
2682
+ writeBundlesImportFiles,
2683
+ findNodeModulesSymlinks
2684
+ } = require('./lib/webpack/utils');
2685
+ &nbsp;
2686
+ module.exports = {
2687
+ &nbsp;
2688
+ options: {
2689
+ alias: 'asset',
2690
+ // If true, create both modern JavaScript and ES5 (IE11) compatibility
2691
+ // builds of the ui/src browser code in each module, and serve them
2692
+ // to the appropriate browsers without overhead for modern browsers.
2693
+ // This does not attempt to compile the admin UI (ui/apos) for ES5.
2694
+ es5: false,
2695
+ // If this option is true and process.env.NODE_ENV is not `production`,
2696
+ // the browser will refresh when the Apostrophe application
2697
+ // restarts. A useful companion to `nodemon`.
2698
+ refreshOnRestart: false,
2699
+ // If false no UI assets sources will be watched in development.
2700
+ // This option has no effect in production (watch disabled).
2701
+ watch: true,
2702
+ // Miliseconds to wait between asset sources changes before
2703
+ // performing a build.
2704
+ watchDebounceMs: 1000
2705
+ },
2706
+ &nbsp;
2707
+ async init(self) {
2708
+ self.restartId = self.apos.util.generateId();
2709
+ self.iconMap = {
2710
+ ...globalIcons
2711
+ };
2712
+ self.configureBuilds();
2713
+ self.initUploadfs();
2714
+ &nbsp;
2715
+ const { extensions, verifiedBundles } = await getWebpackExtensions({
2716
+ getMetadata: self.apos.synth.getMetadata,
2717
+ modulesToInstantiate: self.apos.modulesToBeInstantiated()
2718
+ });
2719
+ &nbsp;
2720
+ self.extraBundles = fillExtraBundles(verifiedBundles);
2721
+ self.webpackExtensions = extensions;
2722
+ self.verifiedBundles = verifiedBundles;
2723
+ self.buildWatcherEnable = process.env.APOS_ASSET_WATCH !== '0' &amp;&amp; self.options.watch !== false;
2724
+ self.buildWatcherDebounceMs = parseInt(self.options.watchDebounceMs || <span class="branch-1 cbranch-no" title="branch not covered" >1000,</span> 10);
2725
+ self.buildWatcher = null;
2726
+ },
2727
+ handlers (self) {
2728
+ return {
2729
+ 'apostrophe:modulesRegistered': {
2730
+ async runUiBuildTask() {
2731
+ const ran = await self.autorunUiBuildTask();
2732
+ if (ran) {
2733
+ await self.watchUiAndRebuild();
2734
+ }
2735
+ },
2736
+ injectAssetsPlaceholders() {
2737
+ self.apos.template.prepend('head', '@apostrophecms/asset:stylesheets');
2738
+ self.apos.template.append('body', '@apostrophecms/asset:scripts');
2739
+ }
2740
+ },
2741
+ 'apostrophe:destroy': {
2742
+ async destroyUploadfs() {
2743
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (self.uploadfs &amp;&amp; (self.uploadfs !== self.apos.uploadfs)) {
2744
+ <span class="cstat-no" title="statement not covered" > await Promise.promisify(self.uploadfs.destroy)();</span>
2745
+ }
2746
+ },
2747
+ async destroyBuildWatcher() {
2748
+ if (self.buildWatcher) {
2749
+ await self.buildWatcher.close();
2750
+ self.buildWatcher = null;
2751
+ }
2752
+ }
2753
+ }
2754
+ };
2755
+ },
2756
+ components(self) {
2757
+ return {
2758
+ scripts(req, data) {
2759
+ const placeholder = `[scripts-placeholder:${cuid()}]`;
2760
+ &nbsp;
2761
+ req.scriptsPlaceholder = placeholder;
2762
+ &nbsp;
2763
+ return {
2764
+ placeholder
2765
+ };
2766
+ },
2767
+ stylesheets(req, data) {
2768
+ const placeholder = `[stylesheets-placeholder:${cuid()}]`;
2769
+ &nbsp;
2770
+ req.stylesheetsPlaceholder = placeholder;
2771
+ &nbsp;
2772
+ return {
2773
+ placeholder
2774
+ };
2775
+ }
2776
+ };
2777
+ },
2778
+ tasks(self) {
2779
+ return {
2780
+ build: {
2781
+ usage: 'Build Apostrophe frontend CSS and JS bundles',
2782
+ afterModuleInit: true,
2783
+ async task(argv = {}) {
2784
+ // The lock could become huge, cache it, see computeCacheMeta()
2785
+ let packageLockContentCached;
2786
+ const req = self.apos.task.getReq();
2787
+ const namespace = self.getNamespace();
2788
+ const buildDir = `${self.apos.rootDir}/apos-build/${namespace}`;
2789
+ const bundleDir = `${self.apos.rootDir}/public/apos-frontend/${namespace}`;
2790
+ const modulesToInstantiate = self.apos.modulesToBeInstantiated();
2791
+ // Make it clear if builds should detect changes
2792
+ const detectChanges = typeof argv.changes === 'string';
2793
+ // Remove invalid changes. `argv.changes` is a comma separated list of relative
2794
+ // to `apos.rootDir` files or folders
2795
+ const sourceChanges = detectChanges
2796
+ ? filterValidChanges(
2797
+ argv.changes.split(',').map(p =&gt; p.trim()),
2798
+ Object.keys(self.apos.modules)
2799
+ )
2800
+ : [];
2801
+ // Keep track of the executed builds
2802
+ const buildsExecuted = [];
2803
+ &nbsp;
2804
+ // Don't clutter up with previous builds.
2805
+ await fs.remove(buildDir);
2806
+ await fs.mkdirp(buildDir);
2807
+ &nbsp;
2808
+ // Static asset files in `public` subdirs of each module are copied
2809
+ // to the same relative path `/public/apos-frontend/namespace/modules/modulename`.
2810
+ // Inherited files are also copied, with the deepest subclass overriding in the
2811
+ // event of a conflict
2812
+ await moduleOverrides(`${bundleDir}/modules`, 'public');
2813
+ &nbsp;
2814
+ for (const [ name, options ] of Object.entries(self.builds)) {
2815
+ // If the option is not present always rebuild everything...
2816
+ let rebuild = argv &amp;&amp; !argv['check-apos-build'];
2817
+ // ...but only when not in a watcher mode
2818
+ if (detectChanges) {
2819
+ rebuild = shouldRebuildFor(name, options, sourceChanges);
2820
+ } else if (!rebuild) {
2821
+ let checkTimestamp = false;
2822
+ &nbsp;
2823
+ // Only builds contributing to the apos admin UI (currently just "apos")
2824
+ // are candidates to skip the build simply because package-lock.json is
2825
+ // older than the bundle. All other builds frequently contain
2826
+ // project level code
2827
+ if (options.apos) {
2828
+ const bundleExists = await fs.pathExists(bundleDir);
2829
+ &nbsp;
2830
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!bundleExists) {
2831
+ <span class="cstat-no" title="statement not covered" > rebuild = true;</span>
2832
+ }
2833
+ &nbsp;
2834
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!process.env.APOS_DEV) {
2835
+ checkTimestamp = await fs.pathExists(`${bundleDir}/${name}-build-timestamp.txt`);
2836
+ }
2837
+ &nbsp;
2838
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (checkTimestamp) {
2839
+ // If we have a UI build timestamp file compare against the app's
2840
+ // package.json modified time.
2841
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (await lockFileIsNewer(name)) {
2842
+ <span class="cstat-no" title="statement not covered" > rebuild = true;</span>
2843
+ }
2844
+ } else {
2845
+ <span class="cstat-no" title="statement not covered" > rebuild = true;</span>
2846
+ }
2847
+ } else {
2848
+ // Always redo the other builds,
2849
+ // which are quick and typically contain
2850
+ // project level code not detectable by
2851
+ // comparing package-lock timestamps
2852
+ rebuild = true;
2853
+ }
2854
+ }
2855
+ &nbsp;
2856
+ if (rebuild) {
2857
+ await fs.mkdirp(bundleDir);
2858
+ await build({
2859
+ name,
2860
+ options
2861
+ });
2862
+ buildsExecuted.push(name);
2863
+ }
2864
+ }
2865
+ &nbsp;
2866
+ // No need of deploy if in a watcher mode.
2867
+ // Also we return an array of build names that
2868
+ // have been triggered - this is required by the watcher
2869
+ // so that page refresh is issued only when needed.
2870
+ if (detectChanges) {
2871
+ // merge the scenes that have been built
2872
+ const scenes = [ ...new Set(buildsExecuted.map(name =&gt; self.builds[name].scenes).flat()) ];
2873
+ merge(scenes);
2874
+ return buildsExecuted;
2875
+ }
2876
+ &nbsp;
2877
+ // Discover the set of unique asset scenes that exist (currently
2878
+ // just `public` and `apos`) by examining those specified as
2879
+ // targets for the various builds
2880
+ const scenes = [ ...new Set(Object.values(self.builds).map(options =&gt; options.scenes).flat()) ];
2881
+ &nbsp;
2882
+ // enumerate public assets and include them in deployment if appropriate
2883
+ const publicAssets = glob.sync('modules/**/*', {
2884
+ cwd: bundleDir,
2885
+ mark: true
2886
+ }).filter(<span class="fstat-no" title="function not covered" >ma</span>tch =&gt; <span class="cstat-no" title="statement not covered" >!match.endsWith('/'))</span>;
2887
+ &nbsp;
2888
+ const deployFiles = [
2889
+ ...publicAssets,
2890
+ ...merge(scenes),
2891
+ ...getBundlesNames(self.extraBundles, self.options.es5)
2892
+ ];
2893
+ &nbsp;
2894
+ await deploy(deployFiles);
2895
+ &nbsp;
2896
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.APOS_BUNDLE_ANALYZER) {
2897
+ <span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) =&gt; {</span>
2898
+ // Intentionally never resolve it, so the task never exits
2899
+ // and the UI stays up
2900
+ });
2901
+ }
2902
+ &nbsp;
2903
+ async function moduleOverrides(modulesDir, source) {
2904
+ await fs.remove(modulesDir);
2905
+ await fs.mkdirp(modulesDir);
2906
+ let names = {};
2907
+ const directories = {};
2908
+ // Most other modules are not actually instantiated yet, but
2909
+ // we can access their metadata, which is sufficient
2910
+ for (const name of modulesToInstantiate) {
2911
+ const ancestorDirectories = [];
2912
+ const metadata = self.apos.synth.getMetadata(name);
2913
+ for (const entry of metadata.__meta.chain) {
2914
+ const effectiveName = entry.name.replace(/^my-/, '');
2915
+ names[effectiveName] = true;
2916
+ ancestorDirectories.push(entry.dirname);
2917
+ directories[effectiveName] = directories[effectiveName] || [];
2918
+ for (const dir of ancestorDirectories) {
2919
+ if (!directories[effectiveName].includes(dir)) {
2920
+ directories[effectiveName].push(dir);
2921
+ }
2922
+ }
2923
+ }
2924
+ }
2925
+ names = Object.keys(names);
2926
+ for (const name of names) {
2927
+ const moduleDir = `${modulesDir}/${name}`;
2928
+ for (const dir of directories[name]) {
2929
+ const srcDir = `${dir}/${source}`;
2930
+ if (fs.existsSync(srcDir)) {
2931
+ await fs.copy(srcDir, moduleDir);
2932
+ }
2933
+ }
2934
+ }
2935
+ }
2936
+ &nbsp;
2937
+ async function build({
2938
+ name, options
2939
+ }) {
2940
+ self.apos.util.log(req.t('apostrophe:assetTypeBuilding', {
2941
+ label: req.t(options.label)
2942
+ }));
2943
+ const modulesDir = `${buildDir}/${name}/modules`;
2944
+ const source = options.source || name;
2945
+ await moduleOverrides(modulesDir, `ui/${source}`);
2946
+ &nbsp;
2947
+ let iconImports, componentImports, tiptapExtensionImports, appImports, indexJsImports, indexSassImports;
2948
+ if (options.apos) {
2949
+ iconImports = getIcons();
2950
+ componentImports = getImports(`${source}/components`, '*.vue', {
2951
+ registerComponents: true,
2952
+ importLastVersion: true
2953
+ });
2954
+ tiptapExtensionImports = getImports(`${source}/tiptap-extensions`, '*.js', { registerTiptapExtensions: true });
2955
+ appImports = getImports(`${source}/apps`, '*.js', {
2956
+ invokeApps: true,
2957
+ enumerateImports: true,
2958
+ importSuffix: 'App'
2959
+ });
2960
+ }
2961
+ &nbsp;
2962
+ if (options.index) {
2963
+ indexJsImports = getImports(source, 'index.js', {
2964
+ invokeApps: true,
2965
+ enumerateImports: true,
2966
+ importSuffix: 'App',
2967
+ requireDefaultExport: true
2968
+ });
2969
+ indexSassImports = getImports(source, 'index.scss', {
2970
+ importSuffix: 'Stylesheet',
2971
+ enumerateImports: true
2972
+ });
2973
+ }
2974
+ &nbsp;
2975
+ if (options.webpack) {
2976
+ const importFile = `${buildDir}/${name}-import.js`;
2977
+ &nbsp;
2978
+ writeImportFile({
2979
+ importFile,
2980
+ prologue: options.prologue,
2981
+ icon: iconImports,
2982
+ components: componentImports,
2983
+ tiptap: tiptapExtensionImports,
2984
+ app: appImports,
2985
+ indexJs: indexJsImports,
2986
+ indexSass: indexSassImports
2987
+ });
2988
+ &nbsp;
2989
+ const outputFilename = `${name}-build.js`;
2990
+ // Remove previous build artifacts, as some pipelines won't build all artifacts
2991
+ // if there is no input, and we don't want stale output in the bundle
2992
+ fs.removeSync(`${bundleDir}/${outputFilename}`);
2993
+ const cssPath = `${bundleDir}/${outputFilename}`.replace(/\.js$/, '.css');
2994
+ fs.removeSync(cssPath);
2995
+ const webpack = Promise.promisify(webpackModule);
2996
+ const webpackBaseConfig = require(`./lib/webpack/${name}/webpack.config`);
2997
+ &nbsp;
2998
+ const webpackExtraBundles = writeBundlesImportFiles({
2999
+ name,
3000
+ buildDir,
3001
+ mainBundleName: outputFilename.replace('.js', ''),
3002
+ verifiedBundles: self.verifiedBundles,
3003
+ getImportFileOutput,
3004
+ writeImportFile
3005
+ });
3006
+ &nbsp;
3007
+ const webpackInstanceConfig = webpackBaseConfig({
3008
+ importFile,
3009
+ modulesDir,
3010
+ outputPath: bundleDir,
3011
+ outputFilename,
3012
+ bundles: webpackExtraBundles
3013
+ }, self.apos);
3014
+ &nbsp;
3015
+ const webpackInstanceConfigMerged = self.webpackExtensions
3016
+ ? webpackMerge(webpackInstanceConfig, ...Object.values(self.webpackExtensions))
3017
+ : <span class="branch-1 cbranch-no" title="branch not covered" >webpackInstanceConfig;</span>
3018
+ &nbsp;
3019
+ // Inject the cache location at the end - we need the merged
3020
+ const cacheMeta = await computeCacheMeta(name, webpackInstanceConfigMerged);
3021
+ webpackInstanceConfigMerged.cache.cacheLocation = cacheMeta.location;
3022
+ &nbsp;
3023
+ const result = await webpack(webpackInstanceConfigMerged);
3024
+ await writeCacheMeta(name, cacheMeta);
3025
+ &nbsp;
3026
+ if (result.compilation.errors.length) {
3027
+ // Throwing a string is appropriate in a command line task
3028
+ throw cleanErrors(result.toString('errors'));
3029
+ } else if (result.compilation.warnings.length) {
3030
+ self.apos.util.warn(result.toString('errors-warnings'));
3031
+ } else <span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.APOS_WEBPACK_VERBOSE) {
3032
+ <span class="cstat-no" title="statement not covered" > self.apos.util.info(result.toString('verbose'));</span>
3033
+ }
3034
+ if (fs.existsSync(cssPath)) {
3035
+ fs.writeFileSync(cssPath, self.filterCss(fs.readFileSync(cssPath, 'utf8'), {
3036
+ modulesPrefix: `${self.getAssetBaseUrl()}/modules`
3037
+ }));
3038
+ }
3039
+ if (options.apos) {
3040
+ const now = Date.now().toString();
3041
+ fs.writeFileSync(`${bundleDir}/${name}-build-timestamp.txt`, now);
3042
+ }
3043
+ } else {
3044
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (options.outputs.includes('js')) {
3045
+ // We do not use an import file here because import is not
3046
+ // an ES5 feature and it is contrary to the spirit of ES5 code
3047
+ // to force-fit that type of code. We do not mandate ES6 in
3048
+ // "public" code (loaded for logged-out users who might have
3049
+ // old browsers).
3050
+ //
3051
+ // Of course, developers can push an "public" asset that is
3052
+ // the output of an ES6 pipeline.
3053
+ const publicImports = getImports(name, '*.js');
3054
+ fs.writeFileSync(`${bundleDir}/${name}-build.js`,
3055
+ (((options.prologue || '') + '\n') || <span class="branch-1 cbranch-no" title="branch not covered" >'')</span> +
3056
+ publicImports.paths.map(path =&gt; {
3057
+ return fs.readFileSync(path, 'utf8');
3058
+ }).join('\n')
3059
+ );
3060
+ }
3061
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (options.outputs.includes('css')) {
3062
+ const publicImports = getImports(name, '*.css');
3063
+ fs.writeFileSync(`${bundleDir}/${name}-build.css`,
3064
+ publicImports.paths.map(path =&gt; {
3065
+ return self.filterCss(fs.readFileSync(path, 'utf8'), {
3066
+ modulesPrefix: `${self.getAssetBaseUrl()}/modules`
3067
+ });
3068
+ }).join('\n')
3069
+ );
3070
+ }
3071
+ }
3072
+ self.apos.util.log(req.t('apostrophe:assetTypeBuildComplete', {
3073
+ label: req.t(options.label)
3074
+ }));
3075
+ }
3076
+ &nbsp;
3077
+ function writeImportFile ({
3078
+ importFile,
3079
+ prologue,
3080
+ icon,
3081
+ components,
3082
+ tiptap,
3083
+ app,
3084
+ indexJs,
3085
+ indexSass
3086
+ }) {
3087
+ fs.writeFileSync(importFile, (prologue || '') + stripIndent`
3088
+ ${(icon &amp;&amp; icon.importCode) || ''}
3089
+ ${(icon &amp;&amp; icon.registerCode) || ''}
3090
+ ${(components &amp;&amp; components.importCode) || ''}
3091
+ ${(tiptap &amp;&amp; tiptap.importCode) || ''}
3092
+ ${(app &amp;&amp; app.importCode) || ''}
3093
+ ${(indexJs &amp;&amp; indexJs.importCode) || ''}
3094
+ ${(indexSass &amp;&amp; indexSass.importCode) || ''}
3095
+ ${(icon &amp;&amp; icon.registerCode) || ''}
3096
+ ${(components &amp;&amp; components.registerCode) || ''}
3097
+ ${(tiptap &amp;&amp; tiptap.registerCode) || ''}
3098
+ ` +
3099
+ (app ? stripIndent`
3100
+ setTimeout(() =&gt; {
3101
+ ${app.invokeCode}
3102
+ }, 0);
3103
+ ` : '') +
3104
+ // No delay on these, they expect to run early like ui/public code
3105
+ // and the first ones invoked set up expected stuff like apos.http
3106
+ (indexJs ? stripIndent`
3107
+ ${indexJs.invokeCode}
3108
+ ` : '')
3109
+ );
3110
+ }
3111
+ &nbsp;
3112
+ function getIcons() {
3113
+ for (const name of modulesToInstantiate) {
3114
+ const metadata = self.apos.synth.getMetadata(name);
3115
+ // icons is an unparsed section, so getMetadata gives it back
3116
+ // to us as an object with a property for each class in the
3117
+ // inheritance tree, root first. Just keep merging in
3118
+ // icons from that
3119
+ for (const [ name, layer ] of Object.entries(metadata.icons)) {
3120
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((typeof layer) === 'function') {
3121
+ // We should not support invoking a function to define the icons
3122
+ // because the developer would expect `(self)` to behave
3123
+ // normally, and they won't during an asset build. So we only
3124
+ // accept a simple object with the icon mappings
3125
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Error in ${name} module: the "icons" property may not be a function.`);</span>
3126
+ }
3127
+ Object.assign(self.iconMap, layer || {});
3128
+ }
3129
+ }
3130
+ &nbsp;
3131
+ // Load global vue icon components.
3132
+ const output = {
3133
+ importCode: '',
3134
+ registerCode: ''
3135
+ };
3136
+ &nbsp;
3137
+ for (const [ registerAs, importFrom ] of Object.entries(self.iconMap)) {
3138
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (importFrom.substring(0, 1) === '~') {
3139
+ <span class="cstat-no" title="statement not covered" > output.importCode += `import ${importFrom}Icon from '${importFrom.substring(1)}';\n`;</span>
3140
+ } else {
3141
+ output.importCode += `import ${importFrom}Icon from 'vue-material-design-icons/${importFrom}.vue';\n`;
3142
+ }
3143
+ output.registerCode += `Vue.component('${registerAs}', ${importFrom}Icon);\n`;
3144
+ }
3145
+ &nbsp;
3146
+ return output;
3147
+ }
3148
+ &nbsp;
3149
+ function merge(scenes) {
3150
+ return scenes.reduce((acc, scene) =&gt; {
3151
+ const jsModules = `${scene}-module-bundle.js`;
3152
+ const jsNoModules = `${scene}-nomodule-bundle.js`;
3153
+ const css = `${scene}-bundle.css`;
3154
+ &nbsp;
3155
+ writeSceneBundle({
3156
+ scene,
3157
+ filePath: jsModules,
3158
+ jsCondition: 'module'
3159
+ });
3160
+ writeSceneBundle({
3161
+ scene,
3162
+ filePath: jsNoModules,
3163
+ jsCondition: 'nomodule'
3164
+ });
3165
+ writeSceneBundle({
3166
+ scene,
3167
+ filePath: css,
3168
+ checkForFile: true
3169
+ });
3170
+ &nbsp;
3171
+ return [
3172
+ ...acc,
3173
+ jsModules,
3174
+ jsNoModules,
3175
+ css
3176
+ ];
3177
+ }, []);
3178
+ }
3179
+ &nbsp;
3180
+ function writeSceneBundle ({
3181
+ scene, filePath, jsCondition, checkForFile = false
3182
+ }) {
3183
+ const [ _ext, fileExt ] = filePath.match(/\.(\w+)$/);
3184
+ const filterBuilds = ({
3185
+ scenes, outputs, condition
3186
+ }) =&gt; {
3187
+ return outputs.includes(fileExt) &amp;&amp;
3188
+ ((!condition || !jsCondition) || condition === jsCondition) &amp;&amp;
3189
+ scenes.includes(scene);
3190
+ };
3191
+ &nbsp;
3192
+ const filesContent = Object.entries(self.builds)
3193
+ .filter(([ _, options ]) =&gt; filterBuilds(options))
3194
+ .map(([ name ]) =&gt; {
3195
+ const file = `${bundleDir}/${name}-build.${fileExt}`;
3196
+ const readFile = (n, f) =&gt; `/* BUILD: ${n} */\n${fs.readFileSync(f, 'utf8')}`;
3197
+ &nbsp;
3198
+ if (checkForFile) {
3199
+ return fs.existsSync(file)
3200
+ ? readFile(name, file)
3201
+ : '';
3202
+ }
3203
+ &nbsp;
3204
+ return readFile(name, file);
3205
+ }).join('\n');
3206
+ &nbsp;
3207
+ fs.writeFileSync(`${bundleDir}/${filePath}`, filesContent);
3208
+ }
3209
+ &nbsp;
3210
+ // If NODE_ENV is production, this function will copy the given
3211
+ // array of asset files from `${bundleDir}/${file}` to
3212
+ // the same relative location in the appropriate release subdirectory in
3213
+ // `/public/apos-frontend/releases`, or in `/apos-frontend/releases` in
3214
+ // uploadfs if `APOS_UPLOADFS_ASSETS` is present.
3215
+ //
3216
+ // If NODE_ENV is not production this function does nothing and
3217
+ // the assets are served directly from `/public/apos-frontend/${file}`.
3218
+ //
3219
+ // The namespace (e.g. default) should be part of each filename given.
3220
+ // A leading slash should NOT be passed.
3221
+ &nbsp;
3222
+ async function deploy(files) {
3223
+ if (process.env.NODE_ENV !== 'production') {
3224
+ return;
3225
+ }
3226
+ let copyIn;
3227
+ let releaseDir;
3228
+ const releaseId = self.getReleaseId();
3229
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.APOS_UPLOADFS_ASSETS) {
3230
+ // The right choice if uploadfs is mapped to S3, Azure, etc.,
3231
+ // not the local filesystem
3232
+ <span class="cstat-no" title="statement not covered" > copyIn = require('util').promisify(self.uploadfs.copyIn);</span>
3233
+ <span class="cstat-no" title="statement not covered" > releaseDir = `/apos-frontend/releases/${releaseId}/${namespace}`;</span>
3234
+ } else {
3235
+ // The right choice with Docker if uploadfs is just the local filesystem
3236
+ // mapped to a volume (a Docker build step can't access that)
3237
+ copyIn = fsCopyIn;
3238
+ releaseDir = `${self.apos.rootDir}/public/apos-frontend/releases/${releaseId}/${namespace}`;
3239
+ await fs.mkdirp(releaseDir);
3240
+ }
3241
+ for (const file of files) {
3242
+ const src = `${bundleDir}/${file}`;
3243
+ await copyIn(src, `${releaseDir}/${file}`);
3244
+ await fs.remove(src);
3245
+ }
3246
+ }
3247
+ &nbsp;
3248
+ async function fsCopyIn(from, to) {
3249
+ const base = path.dirname(to);
3250
+ await fs.mkdirp(base);
3251
+ return fs.copyFile(from, to);
3252
+ }
3253
+ &nbsp;
3254
+ function getImports(folder, pattern, options = {}) {
3255
+ let components = [];
3256
+ const seen = {};
3257
+ for (const name of modulesToInstantiate) {
3258
+ const metadata = self.apos.synth.getMetadata(name);
3259
+ for (const entry of metadata.__meta.chain) {
3260
+ if (seen[entry.dirname]) {
3261
+ continue;
3262
+ }
3263
+ components = components.concat(glob.sync(`${entry.dirname}/ui/${folder}/${pattern}`));
3264
+ seen[entry.dirname] = true;
3265
+ }
3266
+ }
3267
+ &nbsp;
3268
+ if (options.importLastVersion) {
3269
+ // Reverse the list so we can easily find the last configured import
3270
+ // of a given component, allowing "improve" modules to win over
3271
+ // the originals when shipping an override of a Vue component
3272
+ // with the same name, and filter out earlier versions
3273
+ components.reverse();
3274
+ const seen = new Set();
3275
+ components = components.filter(component =&gt; {
3276
+ const name = getComponentName(component, options);
3277
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (seen.has(name)) {
3278
+ <span class="cstat-no" title="statement not covered" > return false;</span>
3279
+ }
3280
+ seen.add(name);
3281
+ return true;
3282
+ });
3283
+ // Put the components back in their original order
3284
+ components.reverse();
3285
+ }
3286
+ &nbsp;
3287
+ return getImportFileOutput(components, options);
3288
+ }
3289
+ &nbsp;
3290
+ function getImportFileOutput (components, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
3291
+ const output = {
3292
+ importCode: '',
3293
+ registerCode: '',
3294
+ invokeCode: '',
3295
+ paths: []
3296
+ };
3297
+ &nbsp;
3298
+ components.forEach((component, i) =&gt; {
3299
+ if (options.requireDefaultExport) {
3300
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!fs.readFileSync(component, 'utf8').match(/export[\s\n]+default/)) {
3301
+ <span class="cstat-no" title="statement not covered" > throw new Error(stripIndent`</span>
3302
+ The file ${component} does not have a default export.
3303
+ &nbsp;
3304
+ Any ui/src/index.js file that does not have a function as
3305
+ its default export will cause the build to fail in production.
3306
+ `);
3307
+ }
3308
+ }
3309
+ const jsFilename = JSON.stringify(component);
3310
+ const name = getComponentName(component, options, i);
3311
+ const jsName = JSON.stringify(name);
3312
+ const importCode = `
3313
+ import ${name}${options.importSuffix || ''} from ${jsFilename};
3314
+ `;
3315
+ &nbsp;
3316
+ output.paths.push(component);
3317
+ output.importCode += `${importCode}\n`;
3318
+ &nbsp;
3319
+ if (options.registerComponents) {
3320
+ output.registerCode += `Vue.component(${jsName}, ${name});\n`;
3321
+ }
3322
+ &nbsp;
3323
+ if (options.registerTiptapExtensions) {
3324
+ output.registerCode += stripIndent`
3325
+ apos.tiptapExtensions = apos.tiptapExtensions || [];
3326
+ apos.tiptapExtensions.push(${name});
3327
+ `;
3328
+ }
3329
+ if (options.invokeApps) {
3330
+ output.invokeCode += `${name}${options.importSuffix || ''}();\n`;
3331
+ }
3332
+ });
3333
+ &nbsp;
3334
+ return output;
3335
+ }
3336
+ &nbsp;
3337
+ async function lockFileIsNewer(name) {
3338
+ const timestamp = fs.readFileSync(`${bundleDir}/${name}-build-timestamp.txt`, 'utf8');
3339
+ let pkgStats;
3340
+ const packageLock = await findPackageLock();
3341
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (packageLock) {
3342
+ pkgStats = await fs.stat(packageLock);
3343
+ }
3344
+ &nbsp;
3345
+ const pkgTimestamp = pkgStats &amp;&amp; pkgStats.mtimeMs;
3346
+ &nbsp;
3347
+ return pkgTimestamp &gt; parseInt(timestamp);
3348
+ }
3349
+ &nbsp;
3350
+ async function findPackageLock() {
3351
+ const packageLockPath = path.join(self.apos.npmRootDir, 'package-lock.json');
3352
+ const yarnPath = path.join(self.apos.npmRootDir, 'yarn.lock');
3353
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (await fs.pathExists(packageLockPath)) {
3354
+ return packageLockPath;
3355
+ } else <span class="cstat-no" title="statement not covered" >if (await fs.pathExists(yarnPath)) {</span>
3356
+ <span class="cstat-no" title="statement not covered" > return yarnPath;</span>
3357
+ } else {
3358
+ <span class="cstat-no" title="statement not covered" > return false;</span>
3359
+ }
3360
+ }
3361
+ &nbsp;
3362
+ function getComponentName(component, { enumerateImports } = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> i) {
3363
+ return path
3364
+ .basename(component)
3365
+ .replace(/-/g, '_')
3366
+ .replace(/\.\w+/, '') + (enumerateImports ? `_${i}` : '');
3367
+ }
3368
+ &nbsp;
3369
+ function cleanErrors(errors) {
3370
+ // Dev experience: remove confusing and inaccurate webpack warning about module loaders
3371
+ // when straightforward JS parse errors occur, stackoverflow is full of people
3372
+ // confused by this
3373
+ return errors.replace(/(ERROR in[\s\S]*?Module parse failed[\s\S]*)You may need an appropriate loader.*/, '$1');
3374
+ }
3375
+ &nbsp;
3376
+ // A (CPU intensive) webpack cache helper to compute a hash and build paths.
3377
+ // Cache the result when possible.
3378
+ // The base cache path is by default `data/temp/webpack-cache`
3379
+ // but it can be overridden by an APOS_ASSET_CACHE environment.
3380
+ // In order to compute an accurate hash, this helper needs
3381
+ // the final, merged webpack configuration.
3382
+ async function computeCacheMeta(name, webpackConfig) {
3383
+ const cacheBase = self.getCacheBasePath();
3384
+ &nbsp;
3385
+ if (!packageLockContentCached) {
3386
+ const packageLock = await findPackageLock();
3387
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (packageLock === false) {
3388
+ // this should happen only when testing and
3389
+ // we don't want to break all non-core module tests
3390
+ <span class="cstat-no" title="statement not covered" > packageLockContentCached = 'none';</span>
3391
+ } else {
3392
+ packageLockContentCached = await fs.readFile(packageLock, 'utf8');
3393
+ }
3394
+ }
3395
+ &nbsp;
3396
+ // Plugins can output timestamps or other random information as
3397
+ // configuration (e.g. StylelintWebpackPlugin). As we don't have
3398
+ // control over plugins, we need to remove their configuration values.
3399
+ // We keep only the plugin name and config keys sorted list.
3400
+ // Additionally plugins are sorted by their constructor names.
3401
+ // A shallow clone is enough to avoid modification of the original
3402
+ // config.
3403
+ const config = { ...webpackConfig };
3404
+ config.plugins = (config.plugins || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.map(p =&gt; {
3405
+ const result = [];
3406
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (p.constructor &amp;&amp; p.constructor.name) {
3407
+ result.push(p.constructor.name);
3408
+ }
3409
+ const keys = Object.keys(p);
3410
+ keys.sort();
3411
+ result.push(...keys);
3412
+ return result;
3413
+ });
3414
+ config.plugins.sort((a, b) =&gt; (a[0] || <span class="branch-1 cbranch-no" title="branch not covered" >'')</span>.localeCompare(b[0]));
3415
+ const configString = util.inspect(config, {
3416
+ depth: 10,
3417
+ compact: true,
3418
+ breakLength: Infinity
3419
+ });
3420
+ const hash = self.apos.util.md5(
3421
+ `${self.getNamespace()}:${name}:${packageLockContentCached}:${configString}`
3422
+ );
3423
+ const location = path.resolve(cacheBase, hash);
3424
+ &nbsp;
3425
+ return {
3426
+ base: cacheBase,
3427
+ hash,
3428
+ location
3429
+ };
3430
+ }
3431
+ &nbsp;
3432
+ // Add .apos, useful for debugging, testing and cache invalidation.
3433
+ // It also keeps in sync the modified time of the cache folder.
3434
+ async function writeCacheMeta(name, cacheMeta) {
3435
+ try {
3436
+ const cachePath = path.join(cacheMeta.location, '.apos');
3437
+ const lastModified = new Date();
3438
+ await fs.writeFile(
3439
+ cachePath,
3440
+ `${lastModified.toISOString()} ${self.getNamespace()}:${name}`,
3441
+ 'utf8'
3442
+ );
3443
+ // should be the same as the meta
3444
+ await fs.utimes(cachePath, lastModified, lastModified);
3445
+ } catch (e) {
3446
+ // Build probably failed, path is missing, ignore
3447
+ }
3448
+ }
3449
+ &nbsp;
3450
+ // Given a set of changes, leave only those that belong to an active
3451
+ // Apostrophe module. This would avoid unnecessary builds for non-active
3452
+ // watched files (e.g. in multi instance mode).
3453
+ // It's an expensive brute force O(n^2), so we do it once for all builds
3454
+ // and we rely on the fact that mass changes happen rarely.
3455
+ function filterValidChanges(all, modules) {
3456
+ return all.filter(c =&gt; {
3457
+ for (const module of modules) {
3458
+ if (c.includes(module)) {
3459
+ return true;
3460
+ }
3461
+ }
3462
+ return false;
3463
+ });
3464
+ }
3465
+ &nbsp;
3466
+ // Detect if a build should be executed based on the changed
3467
+ // paths. This function is invoked only when the appropriate `argv.changes`
3468
+ // is passed to the task.
3469
+ function shouldRebuildFor(buildName, buildOptions, changes) {
3470
+ const name = buildOptions.source || buildName;
3471
+ const id = `/ui/${name}/`;
3472
+ for (const change of changes) {
3473
+ if (change.includes(id)) {
3474
+ return true;
3475
+ }
3476
+ }
3477
+ return false;
3478
+ }
3479
+ }
3480
+ },
3481
+ &nbsp;
3482
+ 'clear-cache': {
3483
+ usage: 'Clear build cache',
3484
+ afterModuleInit: true,
3485
+ async task(argv) {
3486
+ const cacheBaseDir = self.getCacheBasePath();
3487
+ &nbsp;
3488
+ await fs.emptyDir(cacheBaseDir);
3489
+ self.apos.util.log(
3490
+ self.apos.task.getReq().t('apostrophe:assetWebpackCacheCleared')
3491
+ );
3492
+ }
3493
+ }
3494
+ };
3495
+ },
3496
+ middleware(self) {
3497
+ return {
3498
+ serveStaticAssets: {
3499
+ before: '@apostrophecms/express',
3500
+ middleware: express.static(self.apos.rootDir + '/public', self.options.static || {})
3501
+ }
3502
+ };
3503
+ },
3504
+ methods(self) {
3505
+ return {
3506
+ async initUploadfs() {
3507
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (self.options.uploadfs) {
3508
+ <span class="cstat-no" title="statement not covered" > self.uploadfs = await self.apos.modules['@apostrophecms/uploadfs'].getInstance(self.options.uploadfs);</span>
3509
+ } else {
3510
+ self.uploadfs = self.apos.uploadfs;
3511
+ }
3512
+ },
3513
+ stylesheetsHelper(when) {
3514
+ return '';
3515
+ },
3516
+ scriptsHelper(when) {
3517
+ return '';
3518
+ },
3519
+ shouldRefreshOnRestart() {
3520
+ return self.options.refreshOnRestart &amp;&amp; (<span class="branch-1 cbranch-no" title="branch not covered" >process.env.NODE_ENV !== 'production')</span>;
3521
+ },
3522
+ // Returns a unique identifier for the current version of the
3523
+ // codebase (the current release). Checks for a release-id file
3524
+ // (ideal for webpack which can create such a file in a build step),
3525
+ // HEROKU_RELEASE_VERSION (for Heroku), PLATFORM_TREE_ID (for platform.sh),
3526
+ // APOS_RELEASE_ID (for custom cases), a directory component containing at
3527
+ // least YYYY-MM-DD (for stagecoach), and finally the git hash, if the project
3528
+ // root is a git checkout (useful when debugging production builds locally,
3529
+ // and some people do deploy this way).
3530
+ //
3531
+ // If none of these are found, throws an error demanding that APOS_RELEASE_ID
3532
+ // or release-id be set up.
3533
+ //
3534
+ // TODO: auto-detect more cases, such as Azure app service. In the meantime
3535
+ // you can set APOS_RELEASE_ID from whatever you have before running Apostrophe.
3536
+ //
3537
+ // The identifier should be reasonably short and must be URL-friendly. It must
3538
+ // be available both when running the asset build task and when running the site.
3539
+ getReleaseId() {
3540
+ const viaEnv = process.env.APOS_RELEASE_ID || process.env.HEROKU_RELEASE_VERSION || process.env.PLATFORM_TREE_ID;
3541
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (viaEnv) {
3542
+ <span class="cstat-no" title="statement not covered" > return viaEnv;</span>
3543
+ }
3544
+ try {
3545
+ return fs.readFileSync(`${self.apos.rootDir}/release-id`, 'utf8').trim();
3546
+ } catch (e) {
3547
+ // OK, consider fallbacks instead
3548
+ }
3549
+ const realPath = fs.realpathSync(self.apos.rootDir);
3550
+ // Stagecoach and similar: find a release timestamp in the path and use that
3551
+ const matches = realPath.match(/\/(\d\d\d\d-\d\d-\d\d[^/]+)/);
3552
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (matches) {
3553
+ <span class="cstat-no" title="statement not covered" > return matches[1];</span>
3554
+ }
3555
+ try {
3556
+ const fromGit = require('child_process').execSync('git rev-parse --short HEAD', {
3557
+ encoding: 'utf8'
3558
+ }).trim();
3559
+ return fromGit;
3560
+ } catch (e) {
3561
+ <span class="cstat-no" title="statement not covered" > throw new Error(stripIndent`</span>
3562
+ When running in production you must set the APOS_RELEASE_ID
3563
+ environment variable to a short, unique string identifying this
3564
+ particular release of the application, or write it to the file
3565
+ release-id. Apostrophe will also autodetect HEROKU_RELEASE_VERSION,
3566
+ PLATFORM_TREE_ID or the current git commit if your deployment is a
3567
+ git checkout.
3568
+ `);
3569
+ }
3570
+ },
3571
+ // Can be overridden to namespace several asset bundles
3572
+ // in a single codebase.
3573
+ //
3574
+ // Env var option is for unit testing only
3575
+ getNamespace() {
3576
+ return process.env.APOS_DEBUG_NAMESPACE || 'default';
3577
+ },
3578
+ getAssetBaseUrl() {
3579
+ const namespace = self.getNamespace();
3580
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.NODE_ENV === 'production') {
3581
+ const releaseId = <span class="cstat-no" title="statement not covered" >self.getReleaseId();</span>
3582
+ const releaseDir = <span class="cstat-no" title="statement not covered" >`/apos-frontend/releases/${releaseId}/${namespace}`;</span>
3583
+ <span class="cstat-no" title="statement not covered" > if (process.env.APOS_UPLOADFS_ASSETS) {</span>
3584
+ <span class="cstat-no" title="statement not covered" > return `${self.uploadfs.getUrl()}${releaseDir}`;</span>
3585
+ } else {
3586
+ <span class="cstat-no" title="statement not covered" > return releaseDir;</span>
3587
+ }
3588
+ } else {
3589
+ return `/apos-frontend/${namespace}`;
3590
+ }
3591
+ },
3592
+ getCacheBasePath() {
3593
+ return process.env.APOS_ASSET_CACHE ||
3594
+ path.join(self.apos.rootDir, 'data/temp/webpack-cache');
3595
+ },
3596
+ &nbsp;
3597
+ // Override to set externally a build watcher (a `chokidar` instance).
3598
+ // This method will be invoked only if/when needed.
3599
+ // Example:
3600
+ // ```js
3601
+ // registerBuildWatcher() {
3602
+ // self.buildWatcher = chokidar.watch(pathsToWatch, {
3603
+ // cwd: self.apos.rootDir,
3604
+ // ignoreInitial: true
3605
+ // });
3606
+ // }
3607
+ // ```
3608
+ registerBuildWatcher() {
3609
+ self.buildWatcher = null;
3610
+ },
3611
+ &nbsp;
3612
+ // Run build task automatically when appropriate.
3613
+ // If `changes` is provided (array of modified files/folders, relative
3614
+ // to the application root), this method will return the result of the
3615
+ // build task (array of builds that have been triggered by the changes).
3616
+ // If `changes` is not provided (falsy value), a boolean will be returned,
3617
+ // indicating if the build task has been invoked or not.
3618
+ // IMPORTANT: Be cautious when changing the return type behavior.
3619
+ // The build watcher initialization (event triggered) depends on a Boolean value,
3620
+ // and the rebuild handler (triggered by the build watcher on
3621
+ // detected change) depends on an Array value.
3622
+ async autorunUiBuildTask(changes) {
3623
+ let result = changes ? [] : false;
3624
+ let _changes;
3625
+ if (
3626
+ // Do not automatically build the UI if we're starting from a task
3627
+ !self.apos.isTask() &amp;&amp;
3628
+ // Or if we're in production
3629
+ process.env.NODE_ENV !== 'production' &amp;&amp;
3630
+ // Or if we've set an app option to skip the auto build
3631
+ self.apos.options.autoBuild !== false
3632
+ ) {
3633
+ checkModulesWebpackConfig(self.apos.modules, self.apos.task.getReq().t);
3634
+ // If starting up normally, run the build task, checking if we
3635
+ // really need to update the apos build
3636
+ if (changes) {
3637
+ // Important: don't pass empty string, it will cause the task
3638
+ // to enter selective build mode and do nothing. Undefined is OK.
3639
+ _changes = changes.join(',');
3640
+ }
3641
+ const buildsTriggered = await self.apos.task.invoke('@apostrophecms/asset:build', {
3642
+ 'check-apos-build': true,
3643
+ changes: _changes
3644
+ });
3645
+ result = _changes ? buildsTriggered : true;
3646
+ }
3647
+ return result;
3648
+ },
3649
+ &nbsp;
3650
+ // The rebuild handler triggered (debounced) by the build watcher.
3651
+ // The `changes` argument is a reference to a central pool of changes.
3652
+ // It contains relative to the application root file paths.
3653
+ // The pool is being exhausted before triggering the build task.
3654
+ // Array manipulations are sync only, so no race condition is possible.
3655
+ // `rebuildCallback` is used for testing and debug purposes. It allows
3656
+ // access to the changes processed by the build task,
3657
+ // the new restartId and the build names that the changes have triggered.
3658
+ // This handler has no watcher dependencies and it's safe to be invoked
3659
+ // by any code base.
3660
+ async rebuild(changes, rebuildCallback) {
3661
+ rebuildCallback = typeof rebuildCallback === 'function'
3662
+ ? rebuildCallback
3663
+ : <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >()</span> =&gt; {};</span>
3664
+ const result = {
3665
+ changes: [],
3666
+ restartId: self.restartId,
3667
+ builds: []
3668
+ };
3669
+ &nbsp;
3670
+ const pulledChanges = [];
3671
+ let change = changes.pop();
3672
+ while (change) {
3673
+ pulledChanges.push(change);
3674
+ change = changes.pop();
3675
+ }
3676
+ // No changes - should never happen.
3677
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (pulledChanges.length === 0) {
3678
+ <span class="cstat-no" title="statement not covered" > return rebuildCallback(result);</span>
3679
+ }
3680
+ try {
3681
+ const buildsTriggered = await self.autorunUiBuildTask(pulledChanges);
3682
+ if (buildsTriggered.length &gt; 0) {
3683
+ self.restartId = self.apos.util.generateId();
3684
+ }
3685
+ return rebuildCallback({
3686
+ changes: pulledChanges,
3687
+ restartId: self.restartId,
3688
+ builds: buildsTriggered
3689
+ });
3690
+ } catch (e) {
3691
+ // The build error is detailed enough, no message
3692
+ // on our end.
3693
+ self.apos.util.error(e);
3694
+ }
3695
+ &nbsp;
3696
+ rebuildCallback(result);
3697
+ },
3698
+ &nbsp;
3699
+ // Start watching assets from `modules/` and
3700
+ // every symlinked package found in `node_modules/`.
3701
+ // `rebuildCallback` is invoked with queue length argument
3702
+ // on actual build attempt only.
3703
+ // It's there mainly for testing and debugging purposes.
3704
+ async watchUiAndRebuild(rebuildCallback) {
3705
+ if (!self.buildWatcherEnable) {
3706
+ return;
3707
+ }
3708
+ // Allow custom watcher registration
3709
+ self.registerBuildWatcher();
3710
+ const rootDir = self.apos.rootDir;
3711
+ // chokidar may invoke ready event multiple times,
3712
+ // we want one "watch enabled" message.
3713
+ let loggedOnce = false;
3714
+ const logOnce = (...msg) =&gt; {
3715
+ if (!loggedOnce) {
3716
+ self.apos.util.log(...msg);
3717
+ loggedOnce = true;
3718
+ }
3719
+ };
3720
+ const error = self.apos.util.error;
3721
+ const queue = [];
3722
+ let queueLength = 0;
3723
+ let queueRunning = false;
3724
+ // The pool of changes - it HAS to be exhausted by the rebuild handler
3725
+ // or we'll end up with a memory leak in development.
3726
+ const changesPool = [];
3727
+ &nbsp;
3728
+ const debounceRebuild = _.debounce(chain, self.buildWatcherDebounceMs, {
3729
+ leading: false,
3730
+ trailing: true
3731
+ });
3732
+ const addChangeAndDebounceRebuild = (fileOrDir) =&gt; {
3733
+ changesPool.push(fileOrDir);
3734
+ return debounceRebuild();
3735
+ };
3736
+ &nbsp;
3737
+ if (!self.buildWatcher) {
3738
+ const symLinkModules = await findNodeModulesSymlinks(rootDir);
3739
+ const watchDirs = [
3740
+ './modules/**/ui/apos/**',
3741
+ './modules/**/ui/src/**',
3742
+ './modules/**/ui/public/**',
3743
+ ...symLinkModules.reduce(
3744
+ (prev, m) =&gt; [
3745
+ ...prev,
3746
+ `./node_modules/${m}/ui/apos/**`,
3747
+ `./node_modules/${m}/ui/src/**`,
3748
+ `./node_modules/${m}/ui/public/**`,
3749
+ `./node_modules/${m}/modules/**/ui/apos/**`,
3750
+ `./node_modules/${m}/modules/**/ui/src/**`,
3751
+ `./node_modules/${m}/modules/**/ui/public/**`
3752
+ ],
3753
+ []
3754
+ )
3755
+ ];
3756
+ self.buildWatcher = chokidar.watch(watchDirs, {
3757
+ cwd: rootDir,
3758
+ ignoreInitial: true
3759
+ });
3760
+ }
3761
+ &nbsp;
3762
+ self.buildWatcher
3763
+ .on('add', addChangeAndDebounceRebuild)
3764
+ .on('change', addChangeAndDebounceRebuild)
3765
+ .on('unlink', addChangeAndDebounceRebuild)
3766
+ .on('addDir', addChangeAndDebounceRebuild)
3767
+ .on('unlinkDir', addChangeAndDebounceRebuild)
3768
+ .on('error', <span class="fstat-no" title="function not covered" >e </span>=&gt; <span class="cstat-no" title="statement not covered" >error(`Watcher error: ${e}`))</span>
3769
+ .on('ready', () =&gt; logOnce(
3770
+ self.apos.task.getReq().t('apostrophe:assetBuildWatchStarted')
3771
+ ));
3772
+ &nbsp;
3773
+ // Simple, capped, self-exhausting queue implementation.
3774
+ function enqueue(fn) {
3775
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (queueLength === 2) {
3776
+ <span class="cstat-no" title="statement not covered" > return;</span>
3777
+ }
3778
+ queue.push(fn);
3779
+ queueLength++;
3780
+ };
3781
+ async function dequeue() {
3782
+ if (!queueLength) {
3783
+ queueRunning = false;
3784
+ return;
3785
+ }
3786
+ queueRunning = true;
3787
+ await queue.pop()(changesPool, rebuildCallback);
3788
+ queueLength--;
3789
+ await dequeue();
3790
+ }
3791
+ async function chain() {
3792
+ enqueue(self.rebuild);
3793
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!queueRunning) {
3794
+ await dequeue();
3795
+ }
3796
+ }
3797
+ },
3798
+ &nbsp;
3799
+ // An implementation method that you should not need to call.
3800
+ // Sets a predetermined configuration for the frontend builds.
3801
+ // If you are trying to enable IE11 support for ui/src, use the
3802
+ // `es5: true` option (es5 builds are disabled by default).
3803
+ configureBuilds() {
3804
+ const srcPrologue = stripIndent`
3805
+ (function() {
3806
+ window.apos = window.apos || {};
3807
+ var data = document.body &amp;&amp; document.body.getAttribute('data-apos');
3808
+ Object.assign(window.apos, JSON.parse(data || '{}'));
3809
+ if (data) {
3810
+ document.body.removeAttribute('data-apos');
3811
+ }
3812
+ if (window.apos.modules) {
3813
+ for (const module of Object.values(window.apos.modules)) {
3814
+ if (module.alias) {
3815
+ window.apos[module.alias] = module;
3816
+ }
3817
+ }
3818
+ }
3819
+ })();
3820
+ `;
3821
+ self.builds = {
3822
+ src: {
3823
+ scenes: [ 'public', 'apos' ],
3824
+ webpack: true,
3825
+ outputs: [ 'css', 'js' ],
3826
+ label: 'apostrophe:modernBuild',
3827
+ // Load index.js and index.scss from each module
3828
+ index: true,
3829
+ // Load only in browsers that support ES6 modules
3830
+ condition: 'module',
3831
+ prologue: srcPrologue
3832
+ },
3833
+ 'src-es5': {
3834
+ // An alternative build from the same sources for IE11
3835
+ source: 'src',
3836
+ webpack: true,
3837
+ scenes: [ 'public', 'apos' ],
3838
+ // The CSS from the src build is identical, do not duplicate it
3839
+ outputs: [ 'js' ],
3840
+ label: 'apostrophe:ie11Build',
3841
+ // Load index.js and index.scss from each module
3842
+ index: true,
3843
+ // The polyfills babel will be expecting
3844
+ prologue: stripIndent`
3845
+ import "core-js/stable";
3846
+ import "regenerator-runtime/runtime";
3847
+ ${srcPrologue}
3848
+ `,
3849
+ // Load only in browsers that do not support ES6 modules
3850
+ condition: 'nomodule'
3851
+ },
3852
+ public: {
3853
+ scenes: [ 'public', 'apos' ],
3854
+ outputs: [ 'css', 'js' ],
3855
+ label: 'apostrophe:rawCssAndJs',
3856
+ // Just concatenates
3857
+ webpack: false
3858
+ },
3859
+ apos: {
3860
+ scenes: [ 'apos' ],
3861
+ outputs: [ 'js' ],
3862
+ webpack: true,
3863
+ label: 'apostrophe:apostropheAdminUi',
3864
+ // Only rebuilt on npm updates unless APOS_DEV is set in the environment
3865
+ // to indicate that the dev writes project level or npm linked admin UI
3866
+ // code of their own which might be newer than package-lock.json
3867
+ apos: true,
3868
+ prologue: stripIndent`
3869
+ import 'Modules/@apostrophecms/ui/scss/global/import-all.scss';
3870
+ import Vue from 'Modules/@apostrophecms/ui/lib/vue';
3871
+ window.apos.bus = new Vue();
3872
+ `,
3873
+ // Load only in browsers that support ES6 modules
3874
+ condition: 'module'
3875
+ }
3876
+ // We could add an apos-ie11 bundle that just pushes a "sorry charlie" prologue,
3877
+ // if we chose
3878
+ };
3879
+ if (!self.options.es5) {
3880
+ delete self.builds['src-es5'];
3881
+ }
3882
+ },
3883
+ // Filter the given css performing any necessary transformations,
3884
+ // such as support for the /modules path regardless of where
3885
+ // static assets are actually deployed
3886
+ filterCss(css, { modulesPrefix }) {
3887
+ return self.filterCssUrls(css, <span class="fstat-no" title="function not covered" >ur</span>l =&gt; {
3888
+ <span class="cstat-no" title="statement not covered" > if (url.startsWith('/modules')) {</span>
3889
+ <span class="cstat-no" title="statement not covered" > return url.replace('/modules', modulesPrefix);</span>
3890
+ }
3891
+ <span class="cstat-no" title="statement not covered" > return url;</span>
3892
+ });
3893
+ },
3894
+ // Run all URLs in CSS through a filter function
3895
+ filterCssUrls(css, filter) {
3896
+ css = css.replace(/url\(([^'"].*?)\)/g, <span class="fstat-no" title="function not covered" >fu</span>nction(s, url) {
3897
+ <span class="cstat-no" title="statement not covered" > return 'url(' + filter(url) + ')';</span>
3898
+ });
3899
+ css = css.replace(/url\("([^"]+?)"\)/g, <span class="fstat-no" title="function not covered" >fu</span>nction(s, url) {
3900
+ <span class="cstat-no" title="statement not covered" > return 'url("' + filter(url) + '")';</span>
3901
+ });
3902
+ css = css.replace(/url\('([^']+?)'\)/g, <span class="fstat-no" title="function not covered" >fu</span>nction(s, url) {
3903
+ <span class="cstat-no" title="statement not covered" > return 'url(\'' + filter(url) + '\')';</span>
3904
+ });
3905
+ return css;
3906
+ }
3907
+ };
3908
+ },
3909
+ helpers(self) {
3910
+ return {
3911
+ stylesheets: function (when) {
3912
+ return self.stylesheetsHelper(when);
3913
+ },
3914
+ scripts: function (when) {
3915
+ return self.scriptsHelper(when);
3916
+ },
3917
+ refreshOnRestart() {
3918
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!self.shouldRefreshOnRestart()) {
3919
+ return '';
3920
+ }
3921
+ <span class="cstat-no" title="statement not covered" > return self.apos.template.safe(`&lt;script data-apos-refresh-on-restart="${self.action}/restart-id" src="${self.action}/refresh-on-restart"&gt;&lt;/script&gt;`);</span>
3922
+ },
3923
+ <span class="fstat-no" title="function not covered" > ur</span>l(path) {
3924
+ <span class="cstat-no" title="statement not covered" > return `${self.getAssetBaseUrl()}${path}`;</span>
3925
+ }
3926
+ };
3927
+ },
3928
+ apiRoutes(self) {
3929
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!self.shouldRefreshOnRestart()) {
3930
+ return;
3931
+ }
3932
+ <span class="cstat-no" title="statement not covered" > return {</span>
3933
+ get: {
3934
+ <span class="fstat-no" title="function not covered" > re</span>freshOnRestart(req) {
3935
+ <span class="cstat-no" title="statement not covered" > req.res.setHeader('content-type', 'text/javascript');</span>
3936
+ <span class="cstat-no" title="statement not covered" > return fs.readFileSync(path.join(__dirname, '/lib/refresh-on-restart.js'), 'utf8');</span>
3937
+ }
3938
+ },
3939
+ // Use a POST route so IE11 doesn't cache it
3940
+ post: {
3941
+ <span class="fstat-no" title="function not covered" > as</span>ync restartId(req) {
3942
+ // Long polling: keep the logs quiet by responding slowly, except the
3943
+ // first time. If we restart, the request will fail immediately,
3944
+ // and the client will know to try again with `fast`. The client also
3945
+ // uses `fast` the first time.
3946
+ <span class="cstat-no" title="statement not covered" > if (req.query.fast) {</span>
3947
+ <span class="cstat-no" title="statement not covered" > return self.restartId;</span>
3948
+ }
3949
+ // Long polling will be interrupted if restartId changes.
3950
+ let delay = <span class="cstat-no" title="statement not covered" >30000;</span>
3951
+ const step = <span class="cstat-no" title="statement not covered" >300;</span>
3952
+ const oldRestartId = <span class="cstat-no" title="statement not covered" >self.restartId;</span>
3953
+ <span class="cstat-no" title="statement not covered" > while (delay &gt; 0 &amp;&amp; oldRestartId === self.restartId) {</span>
3954
+ <span class="cstat-no" title="statement not covered" > delay -= step;</span>
3955
+ <span class="cstat-no" title="statement not covered" > await Promise.delay(step);</span>
3956
+ }
3957
+ <span class="cstat-no" title="statement not covered" > return self.restartId;</span>
3958
+ }
3959
+ }
3960
+ };
3961
+ }
3962
+ };
3963
+ &nbsp;</pre></td></tr></table></pre>
3964
+
3965
+ <div class='push'></div><!-- for sticky footer -->
3966
+ </div><!-- /wrapper -->
3967
+ <div class='footer quiet pad2 space-top1 center small'>
3968
+ Code coverage generated by
3969
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3970
+ at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
3971
+ </div>
3972
+ <script src="../../../../prettify.js"></script>
3973
+ <script>
3974
+ window.onload = function () {
3975
+ prettyPrint();
3976
+ };
3977
+ </script>
3978
+ <script src="../../../../sorter.js"></script>
3979
+ <script src="../../../../block-navigation.js"></script>
3980
+ </body>
3981
+ </html>
3982
+