@lcap/nasl 3.7.3-beta.4 → 3.7.4-beta.1

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 (311) hide show
  1. package/out/concepts/BindAttribute__.js +5 -4
  2. package/out/concepts/BindAttribute__.js.map +1 -1
  3. package/out/concepts/BindDirective__.js +3 -3
  4. package/out/concepts/BindDirective__.js.map +1 -1
  5. package/out/concepts/StringLiteral__.js +3 -3
  6. package/out/concepts/StringLiteral__.js.map +1 -1
  7. package/out/concepts/ViewElement__.d.ts +2 -0
  8. package/out/concepts/ViewElement__.js.map +1 -1
  9. package/out/natural/transformTS2UI.js +3 -5
  10. package/out/natural/transformTS2UI.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/concepts/BindAttribute__.ts +5 -4
  13. package/src/concepts/BindDirective__.ts +3 -3
  14. package/src/concepts/StringLiteral__.ts +3 -3
  15. package/src/concepts/ViewElement__.ts +2 -0
  16. package/src/natural/transformTS2UI.ts +3 -3
  17. package/.nyc_output/943352aa-23df-44e0-863b-3dcd3e8bf57a.json +0 -1
  18. package/.nyc_output/processinfo/943352aa-23df-44e0-863b-3dcd3e8bf57a.json +0 -1
  19. package/.nyc_output/processinfo/index.json +0 -1
  20. package/coverage/base.css +0 -224
  21. package/coverage/block-navigation.js +0 -87
  22. package/coverage/cobertura-coverage.xml +0 -72356
  23. package/coverage/favicon.png +0 -0
  24. package/coverage/index.html +0 -161
  25. package/coverage/prettify.css +0 -1
  26. package/coverage/prettify.js +0 -2
  27. package/coverage/sort-arrow-sprite.png +0 -0
  28. package/coverage/sorter.js +0 -196
  29. package/coverage/src/automate/engine/index.html +0 -116
  30. package/coverage/src/automate/engine/utils.js.html +0 -1414
  31. package/coverage/src/bak/index.html +0 -116
  32. package/coverage/src/bak/translator.js.html +0 -622
  33. package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +0 -175
  34. package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +0 -169
  35. package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +0 -1246
  36. package/coverage/src/breakpoint/generator/CallbackNode.ts.html +0 -145
  37. package/coverage/src/breakpoint/generator/index.html +0 -176
  38. package/coverage/src/breakpoint/generator/index.ts.html +0 -508
  39. package/coverage/src/breakpoint/index.html +0 -116
  40. package/coverage/src/breakpoint/index.ts.html +0 -94
  41. package/coverage/src/breakpoint/shared/constants.ts.html +0 -436
  42. package/coverage/src/breakpoint/shared/index.html +0 -176
  43. package/coverage/src/breakpoint/shared/index.ts.html +0 -94
  44. package/coverage/src/breakpoint/shared/operations.ts.html +0 -160
  45. package/coverage/src/breakpoint/shared/socket.ts.html +0 -1297
  46. package/coverage/src/breakpoint/shared/utils.ts.html +0 -1087
  47. package/coverage/src/breakpoint/store/core.ts.html +0 -1600
  48. package/coverage/src/breakpoint/store/dock.ts.html +0 -733
  49. package/coverage/src/breakpoint/store/index.html +0 -146
  50. package/coverage/src/breakpoint/store/index.ts.html +0 -91
  51. package/coverage/src/common/BaseNode.ts.html +0 -3874
  52. package/coverage/src/common/Command.ts.html +0 -310
  53. package/coverage/src/common/EventEmitter.ts.html +0 -370
  54. package/coverage/src/common/Messager.ts.html +0 -820
  55. package/coverage/src/common/asyncFuncMap.ts.html +0 -127
  56. package/coverage/src/common/index.html +0 -191
  57. package/coverage/src/common/index.ts.html +0 -94
  58. package/coverage/src/concepts/Abort__.ts.html +0 -328
  59. package/coverage/src/concepts/Anchor__.ts.html +0 -646
  60. package/coverage/src/concepts/AnonymousFunction__.ts.html +0 -2029
  61. package/coverage/src/concepts/App__.ts.html +0 -13252
  62. package/coverage/src/concepts/Argument__.ts.html +0 -964
  63. package/coverage/src/concepts/Assignee__.ts.html +0 -2236
  64. package/coverage/src/concepts/AssignmentLine__.ts.html +0 -409
  65. package/coverage/src/concepts/Assignment__.ts.html +0 -1123
  66. package/coverage/src/concepts/Attribute__.ts.html +0 -733
  67. package/coverage/src/concepts/AuthInterface__.ts.html +0 -367
  68. package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +0 -1984
  69. package/coverage/src/concepts/AuthLogic__.ts.html +0 -781
  70. package/coverage/src/concepts/BackendVariable__.ts.html +0 -1483
  71. package/coverage/src/concepts/Backend__.ts.html +0 -1165
  72. package/coverage/src/concepts/BatchAssignment__.ts.html +0 -3301
  73. package/coverage/src/concepts/BinaryExpression__.ts.html +0 -1441
  74. package/coverage/src/concepts/BindAttribute__.ts.html +0 -3835
  75. package/coverage/src/concepts/BindDirective__.ts.html +0 -1921
  76. package/coverage/src/concepts/BindEvent__.ts.html +0 -3406
  77. package/coverage/src/concepts/BindStyle__.ts.html +0 -1612
  78. package/coverage/src/concepts/BooleanLiteral__.ts.html +0 -418
  79. package/coverage/src/concepts/CallAuthInterface__.ts.html +0 -1615
  80. package/coverage/src/concepts/CallConnector__.ts.html +0 -922
  81. package/coverage/src/concepts/CallFunction__.ts.html +0 -2122
  82. package/coverage/src/concepts/CallInterface__.ts.html +0 -2719
  83. package/coverage/src/concepts/CallLogic__.ts.html +0 -4807
  84. package/coverage/src/concepts/CallQueryComponent__.ts.html +0 -5308
  85. package/coverage/src/concepts/Comment__.ts.html +0 -394
  86. package/coverage/src/concepts/CompletionProperty__.ts.html +0 -925
  87. package/coverage/src/concepts/ConfigGroup__.ts.html +0 -1105
  88. package/coverage/src/concepts/ConfigPropertyValue__.ts.html +0 -424
  89. package/coverage/src/concepts/ConfigProperty__.ts.html +0 -1348
  90. package/coverage/src/concepts/Configuration__.ts.html +0 -1027
  91. package/coverage/src/concepts/Connection__.ts.html +0 -1360
  92. package/coverage/src/concepts/ConnectorTrigger__.ts.html +0 -595
  93. package/coverage/src/concepts/Connector__.ts.html +0 -4255
  94. package/coverage/src/concepts/Constant__.ts.html +0 -913
  95. package/coverage/src/concepts/DataSource__.ts.html +0 -1771
  96. package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +0 -331
  97. package/coverage/src/concepts/Destination__.ts.html +0 -2731
  98. package/coverage/src/concepts/End__.ts.html +0 -433
  99. package/coverage/src/concepts/EntityIndex__.ts.html +0 -787
  100. package/coverage/src/concepts/EntityProperty__.ts.html +0 -2668
  101. package/coverage/src/concepts/Entity__.ts.html +0 -2950
  102. package/coverage/src/concepts/EnumItem__.ts.html +0 -550
  103. package/coverage/src/concepts/Enum__.ts.html +0 -1231
  104. package/coverage/src/concepts/Event__.ts.html +0 -1084
  105. package/coverage/src/concepts/ExternalDestination__.ts.html +0 -1033
  106. package/coverage/src/concepts/ForEachStatement__.ts.html +0 -1957
  107. package/coverage/src/concepts/FrontendLibrary__.ts.html +0 -1711
  108. package/coverage/src/concepts/FrontendVariable__.ts.html +0 -292
  109. package/coverage/src/concepts/Frontend__.ts.html +0 -3961
  110. package/coverage/src/concepts/Function__.ts.html +0 -3598
  111. package/coverage/src/concepts/Identifier__.ts.html +0 -1057
  112. package/coverage/src/concepts/IfStatement__.ts.html +0 -1594
  113. package/coverage/src/concepts/Integration__.ts.html +0 -1228
  114. package/coverage/src/concepts/InterfaceParam__.ts.html +0 -1087
  115. package/coverage/src/concepts/Interface__.ts.html +0 -3394
  116. package/coverage/src/concepts/JSBlock__.ts.html +0 -421
  117. package/coverage/src/concepts/JavaLogic__.ts.html +0 -460
  118. package/coverage/src/concepts/LogicItem__.ts.html +0 -1171
  119. package/coverage/src/concepts/Logic__.ts.html +0 -7408
  120. package/coverage/src/concepts/MatchCase__.ts.html +0 -2929
  121. package/coverage/src/concepts/Match__.ts.html +0 -2455
  122. package/coverage/src/concepts/MemberExpression__.ts.html +0 -1726
  123. package/coverage/src/concepts/MicroApp__.ts.html +0 -436
  124. package/coverage/src/concepts/Module__.ts.html +0 -9220
  125. package/coverage/src/concepts/MsgTriggerEvent__.ts.html +0 -1045
  126. package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +0 -1018
  127. package/coverage/src/concepts/Namespace__.ts.html +0 -7942
  128. package/coverage/src/concepts/NewComposite__.ts.html +0 -4729
  129. package/coverage/src/concepts/NewList__.ts.html +0 -1618
  130. package/coverage/src/concepts/NewMap__.ts.html +0 -2326
  131. package/coverage/src/concepts/New__.ts.html +0 -289
  132. package/coverage/src/concepts/NullLiteral__.ts.html +0 -349
  133. package/coverage/src/concepts/NumericLiteral__.ts.html +0 -676
  134. package/coverage/src/concepts/OqlQueryComponent__.ts.html +0 -1141
  135. package/coverage/src/concepts/OverriddenLogic__.ts.html +0 -6817
  136. package/coverage/src/concepts/Param__.ts.html +0 -1726
  137. package/coverage/src/concepts/Point__.ts.html +0 -331
  138. package/coverage/src/concepts/ProcessComponent__.ts.html +0 -1666
  139. package/coverage/src/concepts/ProcessElement__.ts.html +0 -5884
  140. package/coverage/src/concepts/ProcessOutcome__.ts.html +0 -352
  141. package/coverage/src/concepts/ProcessOutcomes__.ts.html +0 -343
  142. package/coverage/src/concepts/Process__.ts.html +0 -4768
  143. package/coverage/src/concepts/QueryAggregateExpression__.ts.html +0 -568
  144. package/coverage/src/concepts/QueryFieldExpression__.ts.html +0 -583
  145. package/coverage/src/concepts/QueryFromExpression__.ts.html +0 -910
  146. package/coverage/src/concepts/QueryGroupByExpression__.ts.html +0 -559
  147. package/coverage/src/concepts/QueryJoinExpression__.ts.html +0 -1567
  148. package/coverage/src/concepts/QueryLimitExpression__.ts.html +0 -637
  149. package/coverage/src/concepts/QueryOrderByExpression__.ts.html +0 -679
  150. package/coverage/src/concepts/QuerySelectExpression__.ts.html +0 -1714
  151. package/coverage/src/concepts/Rect__.ts.html +0 -373
  152. package/coverage/src/concepts/Return__.ts.html +0 -1312
  153. package/coverage/src/concepts/Role__.ts.html +0 -601
  154. package/coverage/src/concepts/SelectMembers__.ts.html +0 -1246
  155. package/coverage/src/concepts/Slot__.ts.html +0 -628
  156. package/coverage/src/concepts/SqlQueryComponent__.ts.html +0 -982
  157. package/coverage/src/concepts/Start__.ts.html +0 -304
  158. package/coverage/src/concepts/StringInterpolation__.ts.html +0 -1129
  159. package/coverage/src/concepts/StringLiteral__.ts.html +0 -505
  160. package/coverage/src/concepts/StructureProperty__.ts.html +0 -1132
  161. package/coverage/src/concepts/Structure__.ts.html +0 -2092
  162. package/coverage/src/concepts/SwitchCase__.ts.html +0 -1174
  163. package/coverage/src/concepts/SwitchStatement__.ts.html +0 -877
  164. package/coverage/src/concepts/Theme__.ts.html +0 -358
  165. package/coverage/src/concepts/Transactional__.ts.html +0 -628
  166. package/coverage/src/concepts/TriggerEvent__.ts.html +0 -1012
  167. package/coverage/src/concepts/TriggerLauncher__.ts.html +0 -775
  168. package/coverage/src/concepts/TypeAnnotation__.ts.html +0 -3718
  169. package/coverage/src/concepts/TypeParam__.ts.html +0 -319
  170. package/coverage/src/concepts/UnaryExpression__.ts.html +0 -697
  171. package/coverage/src/concepts/Unparsed__.ts.html +0 -394
  172. package/coverage/src/concepts/UseComponent__.ts.html +0 -331
  173. package/coverage/src/concepts/ValidationRule__.ts.html +0 -1840
  174. package/coverage/src/concepts/Variable__.ts.html +0 -1489
  175. package/coverage/src/concepts/ViewBlock__.ts.html +0 -352
  176. package/coverage/src/concepts/ViewComponent__.ts.html +0 -4180
  177. package/coverage/src/concepts/ViewElement__.ts.html +0 -8803
  178. package/coverage/src/concepts/View__.ts.html +0 -8620
  179. package/coverage/src/concepts/WhileStatement__.ts.html +0 -1063
  180. package/coverage/src/concepts/basics/stdlib/index.html +0 -356
  181. package/coverage/src/concepts/basics/stdlib/index.ts.html +0 -208
  182. package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +0 -565
  183. package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +0 -517
  184. package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +0 -226
  185. package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +0 -172
  186. package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +0 -214
  187. package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +0 -145
  188. package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +0 -589
  189. package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +0 -214
  190. package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +0 -229
  191. package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +0 -268
  192. package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +0 -1999
  193. package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +0 -3259
  194. package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +0 -6844
  195. package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +0 -1768
  196. package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +0 -163
  197. package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +0 -664
  198. package/coverage/src/concepts/basics/types/coreTypeList.ts.html +0 -121
  199. package/coverage/src/concepts/basics/types/index.html +0 -131
  200. package/coverage/src/concepts/basics/types/index.ts.html +0 -160
  201. package/coverage/src/concepts/index.html +0 -1961
  202. package/coverage/src/concepts/index.ts.html +0 -103
  203. package/coverage/src/concepts/index__.ts.html +0 -451
  204. package/coverage/src/config.ts.html +0 -343
  205. package/coverage/src/decorators/index.html +0 -131
  206. package/coverage/src/decorators/index.ts.html +0 -739
  207. package/coverage/src/decorators/promise.ts.html +0 -169
  208. package/coverage/src/eventBus.ts.html +0 -100
  209. package/coverage/src/generator/compileComponent.ts.html +0 -142
  210. package/coverage/src/generator/genBundleFiles.ts.html +0 -1828
  211. package/coverage/src/generator/genHash.ts.html +0 -124
  212. package/coverage/src/generator/genMetaData.ts.html +0 -1042
  213. package/coverage/src/generator/genReleaseBody.ts.html +0 -1282
  214. package/coverage/src/generator/icestark.ts.html +0 -220
  215. package/coverage/src/generator/index.html +0 -266
  216. package/coverage/src/generator/index.ts.html +0 -106
  217. package/coverage/src/generator/microApp.ts.html +0 -172
  218. package/coverage/src/generator/permission.ts.html +0 -1036
  219. package/coverage/src/generator/qiankun.ts.html +0 -232
  220. package/coverage/src/generator/styleReplacer.ts.html +0 -199
  221. package/coverage/src/index.html +0 -116
  222. package/coverage/src/index.ts.html +0 -121
  223. package/coverage/src/manager/diagnostic.ts.html +0 -442
  224. package/coverage/src/manager/index.html +0 -131
  225. package/coverage/src/manager/stepRecorder.ts.html +0 -457
  226. package/coverage/src/natural/genNaturalTS.ts.html +0 -355
  227. package/coverage/src/natural/index.html +0 -161
  228. package/coverage/src/natural/index.ts.html +0 -91
  229. package/coverage/src/natural/naslStdlibMap.ts.html +0 -157
  230. package/coverage/src/natural/transformTSCode.ts.html +0 -2647
  231. package/coverage/src/sentry/index.html +0 -116
  232. package/coverage/src/sentry/index.ts.html +0 -676
  233. package/coverage/src/server/createUiTs.ts.html +0 -910
  234. package/coverage/src/server/entity2LogicNamespace.ts.html +0 -1294
  235. package/coverage/src/server/event.js.html +0 -526
  236. package/coverage/src/server/extendBaseNode.ts.html +0 -1762
  237. package/coverage/src/server/formatTsUtils.ts.html +0 -2689
  238. package/coverage/src/server/getConnector.ts.html +0 -316
  239. package/coverage/src/server/getExtensionModules.ts.html +0 -178
  240. package/coverage/src/server/getFunctions.ts.html +0 -133
  241. package/coverage/src/server/getInterfaces.ts.html +0 -229
  242. package/coverage/src/server/getLogging.ts.html +0 -100
  243. package/coverage/src/server/getLogics.ts.html +0 -1363
  244. package/coverage/src/server/getMemberIdentifier.ts.html +0 -1561
  245. package/coverage/src/server/getProcessComponents.ts.html +0 -112
  246. package/coverage/src/server/getProcesses.ts.html +0 -2023
  247. package/coverage/src/server/getValidates.ts.html +0 -115
  248. package/coverage/src/server/index.html +0 -401
  249. package/coverage/src/server/index.ts.html +0 -229
  250. package/coverage/src/server/naslServer.ts.html +0 -14401
  251. package/coverage/src/server/naslStdlibMap.ts.html +0 -241
  252. package/coverage/src/server/process2LogicNamespace.ts.html +0 -454
  253. package/coverage/src/server/translator.ts.html +0 -2566
  254. package/coverage/src/service/creator/add.configs.js.html +0 -379
  255. package/coverage/src/service/creator/errHandles.js.html +0 -322
  256. package/coverage/src/service/creator/index.html +0 -146
  257. package/coverage/src/service/creator/index.js.html +0 -352
  258. package/coverage/src/service/datasource/api.js.html +0 -118
  259. package/coverage/src/service/datasource/index.html +0 -131
  260. package/coverage/src/service/datasource/index.js.html +0 -103
  261. package/coverage/src/service/logic/api.js.html +0 -109
  262. package/coverage/src/service/logic/index.html +0 -131
  263. package/coverage/src/service/logic/index.js.html +0 -103
  264. package/coverage/src/service/storage/api.js.html +0 -202
  265. package/coverage/src/service/storage/index.html +0 -206
  266. package/coverage/src/service/storage/index.ts.html +0 -103
  267. package/coverage/src/service/storage/init.ts.html +0 -2761
  268. package/coverage/src/service/storage/jsoner.ts.html +0 -502
  269. package/coverage/src/service/storage/map.ts.html +0 -256
  270. package/coverage/src/service/storage/service.ts.html +0 -331
  271. package/coverage/src/service/storage/storagePoint.ts.html +0 -304
  272. package/coverage/src/templator/genCallComponentLogic.ts.html +0 -163
  273. package/coverage/src/templator/genCreateBlock.ts.html +0 -1093
  274. package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +0 -1609
  275. package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +0 -2254
  276. package/coverage/src/templator/genEditTableBlock.ts.html +0 -955
  277. package/coverage/src/templator/genEnumSelectBlock.ts.html +0 -178
  278. package/coverage/src/templator/genGetBlock.ts.html +0 -451
  279. package/coverage/src/templator/genGridViewBlock.ts.html +0 -1114
  280. package/coverage/src/templator/genListViewBlock.ts.html +0 -475
  281. package/coverage/src/templator/genQueryComponent.ts.html +0 -1207
  282. package/coverage/src/templator/genSelectBlock.ts.html +0 -1243
  283. package/coverage/src/templator/genTableBlock.ts.html +0 -910
  284. package/coverage/src/templator/genUpdateBlock.ts.html +0 -1192
  285. package/coverage/src/templator/index.html +0 -326
  286. package/coverage/src/templator/index.ts.html +0 -154
  287. package/coverage/src/templator/utils.ts.html +0 -1861
  288. package/coverage/src/translator/constant.ts.html +0 -106
  289. package/coverage/src/translator/index.html +0 -146
  290. package/coverage/src/translator/index.ts.html +0 -94
  291. package/coverage/src/translator/utils.ts.html +0 -436
  292. package/coverage/src/utils/cookie.ts.html +0 -265
  293. package/coverage/src/utils/env.ts.html +0 -91
  294. package/coverage/src/utils/index.html +0 -206
  295. package/coverage/src/utils/index.ts.html +0 -1429
  296. package/coverage/src/utils/logger.ts.html +0 -145
  297. package/coverage/src/utils/sortTsString.ts.html +0 -187
  298. package/coverage/src/utils/string.ts.html +0 -544
  299. package/coverage/src/utils/time-slicing/controller.ts.html +0 -1144
  300. package/coverage/src/utils/time-slicing/index.html +0 -221
  301. package/coverage/src/utils/time-slicing/index.ts.html +0 -103
  302. package/coverage/src/utils/time-slicing/page-state.ts.html +0 -121
  303. package/coverage/src/utils/time-slicing/performance.ts.html +0 -253
  304. package/coverage/src/utils/time-slicing/runner.ts.html +0 -241
  305. package/coverage/src/utils/time-slicing/tool.ts.html +0 -220
  306. package/coverage/src/utils/time-slicing/utils.ts.html +0 -355
  307. package/coverage/src/utils/time-slicing/wrapper.ts.html +0 -259
  308. package/coverage/src/utils/time-slicing.ts.html +0 -418
  309. package/coverage/src/utils/traverse.ts.html +0 -568
  310. package/coverage/src/utils/types.ts.html +0 -133
  311. package/coverage/src/utils/window.ts.html +0 -112
@@ -1,2689 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/server/formatTsUtils.ts</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">src/server</a> formatTsUtils.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">2.47% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>11/444</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/256</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/53</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">2.6% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>11/423</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-yes">1x</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-no">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-yes">1x</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-no">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-no">&nbsp;</span>
1005
- <span class="cline-any cline-no">&nbsp;</span>
1006
- <span class="cline-any cline-no">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-no">&nbsp;</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-no">&nbsp;</span>
1022
- <span class="cline-any cline-no">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-no">&nbsp;</span>
1025
- <span class="cline-any cline-no">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-no">&nbsp;</span>
1028
- <span class="cline-any cline-no">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-no">&nbsp;</span>
1034
- <span class="cline-any cline-no">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-no">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-no">&nbsp;</span>
1042
- <span class="cline-any cline-no">&nbsp;</span>
1043
- <span class="cline-any cline-no">&nbsp;</span>
1044
- <span class="cline-any cline-no">&nbsp;</span>
1045
- <span class="cline-any cline-no">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-no">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-no">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-yes">1x</span>
1067
- <span class="cline-any cline-no">&nbsp;</span>
1068
- <span class="cline-any cline-no">&nbsp;</span>
1069
- <span class="cline-any cline-no">&nbsp;</span>
1070
- <span class="cline-any cline-no">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-no">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-no">&nbsp;</span>
1080
- <span class="cline-any cline-no">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-no">&nbsp;</span>
1084
- <span class="cline-any cline-no">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-no">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-no">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-no">&nbsp;</span>
1100
- <span class="cline-any cline-no">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-no">&nbsp;</span>
1104
- <span class="cline-any cline-no">&nbsp;</span>
1105
- <span class="cline-any cline-no">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-no">&nbsp;</span>
1110
- <span class="cline-any cline-no">&nbsp;</span>
1111
- <span class="cline-any cline-no">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-no">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-no">&nbsp;</span>
1117
- <span class="cline-any cline-no">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-no">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-no">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-no">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-no">&nbsp;</span>
1130
- <span class="cline-any cline-no">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-no">&nbsp;</span>
1133
- <span class="cline-any cline-no">&nbsp;</span>
1134
- <span class="cline-any cline-no">&nbsp;</span>
1135
- <span class="cline-any cline-no">&nbsp;</span>
1136
- <span class="cline-any cline-no">&nbsp;</span>
1137
- <span class="cline-any cline-no">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-no">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-no">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-no">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-no">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-no">&nbsp;</span>
1151
- <span class="cline-any cline-no">&nbsp;</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-no">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-no">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-yes">1x</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-no">&nbsp;</span>
1166
- <span class="cline-any cline-no">&nbsp;</span>
1167
- <span class="cline-any cline-no">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-no">&nbsp;</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-no">&nbsp;</span>
1173
- <span class="cline-any cline-no">&nbsp;</span>
1174
- <span class="cline-any cline-no">&nbsp;</span>
1175
- <span class="cline-any cline-no">&nbsp;</span>
1176
- <span class="cline-any cline-no">&nbsp;</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-no">&nbsp;</span>
1180
- <span class="cline-any cline-no">&nbsp;</span>
1181
- <span class="cline-any cline-no">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-no">&nbsp;</span>
1184
- <span class="cline-any cline-no">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-no">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-yes">1x</span>
1190
- <span class="cline-any cline-no">&nbsp;</span>
1191
- <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-no">&nbsp;</span>
1195
- <span class="cline-any cline-no">&nbsp;</span>
1196
- <span class="cline-any cline-no">&nbsp;</span>
1197
- <span class="cline-any cline-no">&nbsp;</span>
1198
- <span class="cline-any cline-no">&nbsp;</span>
1199
- <span class="cline-any cline-no">&nbsp;</span>
1200
- <span class="cline-any cline-no">&nbsp;</span>
1201
- <span class="cline-any cline-no">&nbsp;</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-no">&nbsp;</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-no">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-yes">1x</span>
1215
- <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-no">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-no">&nbsp;</span>
1219
- <span class="cline-any cline-no">&nbsp;</span>
1220
- <span class="cline-any cline-no">&nbsp;</span>
1221
- <span class="cline-any cline-no">&nbsp;</span>
1222
- <span class="cline-any cline-no">&nbsp;</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-no">&nbsp;</span>
1226
- <span class="cline-any cline-no">&nbsp;</span>
1227
- <span class="cline-any cline-no">&nbsp;</span>
1228
- <span class="cline-any cline-no">&nbsp;</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-no">&nbsp;</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-neutral">&nbsp;</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-neutral">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-no">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-no">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-no">&nbsp;</span>
1259
- <span class="cline-any cline-no">&nbsp;</span>
1260
- <span class="cline-any cline-no">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-no">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-no">&nbsp;</span>
1266
- <span class="cline-any cline-no">&nbsp;</span>
1267
- <span class="cline-any cline-no">&nbsp;</span>
1268
- <span class="cline-any cline-no">&nbsp;</span>
1269
- <span class="cline-any cline-no">&nbsp;</span>
1270
- <span class="cline-any cline-no">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-no">&nbsp;</span>
1273
- <span class="cline-any cline-no">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-no">&nbsp;</span>
1278
- <span class="cline-any cline-no">&nbsp;</span>
1279
- <span class="cline-any cline-no">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-no">&nbsp;</span>
1282
- <span class="cline-any cline-no">&nbsp;</span>
1283
- <span class="cline-any cline-no">&nbsp;</span>
1284
- <span class="cline-any cline-no">&nbsp;</span>
1285
- <span class="cline-any cline-no">&nbsp;</span>
1286
- <span class="cline-any cline-no">&nbsp;</span>
1287
- <span class="cline-any cline-no">&nbsp;</span>
1288
- <span class="cline-any cline-no">&nbsp;</span>
1289
- <span class="cline-any cline-no">&nbsp;</span>
1290
- <span class="cline-any cline-no">&nbsp;</span>
1291
- <span class="cline-any cline-no">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-no">&nbsp;</span>
1295
- <span class="cline-any cline-no">&nbsp;</span>
1296
- <span class="cline-any cline-no">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-no">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-no">&nbsp;</span>
1305
- <span class="cline-any cline-no">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-no">&nbsp;</span>
1308
- <span class="cline-any cline-no">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-no">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-no">&nbsp;</span>
1315
- <span class="cline-any cline-no">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-no">&nbsp;</span>
1318
- <span class="cline-any cline-no">&nbsp;</span>
1319
- <span class="cline-any cline-no">&nbsp;</span>
1320
- <span class="cline-any cline-no">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-no">&nbsp;</span>
1323
- <span class="cline-any cline-no">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-no">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-no">&nbsp;</span>
1333
- <span class="cline-any cline-no">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-neutral">&nbsp;</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-neutral">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-no">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-neutral">&nbsp;</span>
1353
- <span class="cline-any cline-no">&nbsp;</span>
1354
- <span class="cline-any cline-no">&nbsp;</span>
1355
- <span class="cline-any cline-no">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-no">&nbsp;</span>
1358
- <span class="cline-any cline-no">&nbsp;</span>
1359
- <span class="cline-any cline-no">&nbsp;</span>
1360
- <span class="cline-any cline-no">&nbsp;</span>
1361
- <span class="cline-any cline-no">&nbsp;</span>
1362
- <span class="cline-any cline-no">&nbsp;</span>
1363
- <span class="cline-any cline-no">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-no">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-no">&nbsp;</span>
1373
- <span class="cline-any cline-no">&nbsp;</span>
1374
- <span class="cline-any cline-no">&nbsp;</span>
1375
- <span class="cline-any cline-no">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-no">&nbsp;</span>
1378
- <span class="cline-any cline-no">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-no">&nbsp;</span>
1381
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-no">&nbsp;</span>
1388
- <span class="cline-any cline-no">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-no">&nbsp;</span>
1391
- <span class="cline-any cline-no">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-no">&nbsp;</span>
1394
- <span class="cline-any cline-no">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-no">&nbsp;</span>
1397
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1401
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1405
- <span class="cline-any cline-no">&nbsp;</span>
1406
- <span class="cline-any cline-neutral">&nbsp;</span>
1407
- <span class="cline-any cline-no">&nbsp;</span>
1408
- <span class="cline-any cline-no">&nbsp;</span>
1409
- <span class="cline-any cline-no">&nbsp;</span>
1410
- <span class="cline-any cline-no">&nbsp;</span>
1411
- <span class="cline-any cline-no">&nbsp;</span>
1412
- <span class="cline-any cline-no">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-no">&nbsp;</span>
1415
- <span class="cline-any cline-no">&nbsp;</span>
1416
- <span class="cline-any cline-no">&nbsp;</span>
1417
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-no">&nbsp;</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
1430
- <span class="cline-any cline-no">&nbsp;</span>
1431
- <span class="cline-any cline-no">&nbsp;</span>
1432
- <span class="cline-any cline-no">&nbsp;</span>
1433
- <span class="cline-any cline-no">&nbsp;</span>
1434
- <span class="cline-any cline-no">&nbsp;</span>
1435
- <span class="cline-any cline-no">&nbsp;</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-no">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-no">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-no">&nbsp;</span>
1443
- <span class="cline-any cline-no">&nbsp;</span>
1444
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-no">&nbsp;</span>
1450
- <span class="cline-any cline-no">&nbsp;</span>
1451
- <span class="cline-any cline-no">&nbsp;</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-no">&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-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-no">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-no">&nbsp;</span>
1464
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-no">&nbsp;</span>
1472
- <span class="cline-any cline-no">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-no">&nbsp;</span>
1483
- <span class="cline-any cline-no">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-no">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-no">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-no">&nbsp;</span>
1493
- <span class="cline-any cline-no">&nbsp;</span>
1494
- <span class="cline-any cline-no">&nbsp;</span>
1495
- <span class="cline-any cline-no">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-neutral">&nbsp;</span>
1499
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-no">&nbsp;</span>
1506
- <span class="cline-any cline-no">&nbsp;</span>
1507
- <span class="cline-any cline-no">&nbsp;</span>
1508
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-no">&nbsp;</span>
1515
- <span class="cline-any cline-no">&nbsp;</span>
1516
- <span class="cline-any cline-no">&nbsp;</span>
1517
- <span class="cline-any cline-no">&nbsp;</span>
1518
- <span class="cline-any cline-no">&nbsp;</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-no">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-no">&nbsp;</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-yes">1x</span>
1526
- <span class="cline-any cline-no">&nbsp;</span>
1527
- <span class="cline-any cline-no">&nbsp;</span>
1528
- <span class="cline-any cline-no">&nbsp;</span>
1529
- <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-no">&nbsp;</span>
1532
- <span class="cline-any cline-no">&nbsp;</span>
1533
- <span class="cline-any cline-no">&nbsp;</span>
1534
- <span class="cline-any cline-no">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-no">&nbsp;</span>
1538
- <span class="cline-any cline-no">&nbsp;</span>
1539
- <span class="cline-any cline-no">&nbsp;</span>
1540
- <span class="cline-any cline-no">&nbsp;</span>
1541
- <span class="cline-any cline-no">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-no">&nbsp;</span>
1544
- <span class="cline-any cline-no">&nbsp;</span>
1545
- <span class="cline-any cline-no">&nbsp;</span>
1546
- <span class="cline-any cline-no">&nbsp;</span>
1547
- <span class="cline-any cline-no">&nbsp;</span>
1548
- <span class="cline-any cline-no">&nbsp;</span>
1549
- <span class="cline-any cline-no">&nbsp;</span>
1550
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-no">&nbsp;</span>
1555
- <span class="cline-any cline-no">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-no">&nbsp;</span>
1558
- <span class="cline-any cline-no">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-no">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-no">&nbsp;</span>
1564
- <span class="cline-any cline-no">&nbsp;</span>
1565
- <span class="cline-any cline-no">&nbsp;</span>
1566
- <span class="cline-any cline-no">&nbsp;</span>
1567
- <span class="cline-any cline-no">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-no">&nbsp;</span>
1570
- <span class="cline-any cline-no">&nbsp;</span>
1571
- <span class="cline-any cline-no">&nbsp;</span>
1572
- <span class="cline-any cline-neutral">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-no">&nbsp;</span>
1576
- <span class="cline-any cline-no">&nbsp;</span>
1577
- <span class="cline-any cline-no">&nbsp;</span>
1578
- <span class="cline-any cline-neutral">&nbsp;</span>
1579
- <span class="cline-any cline-no">&nbsp;</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-no">&nbsp;</span>
1583
- <span class="cline-any cline-no">&nbsp;</span>
1584
- <span class="cline-any cline-no">&nbsp;</span>
1585
- <span class="cline-any cline-no">&nbsp;</span>
1586
- <span class="cline-any cline-no">&nbsp;</span>
1587
- <span class="cline-any cline-no">&nbsp;</span>
1588
- <span class="cline-any cline-no">&nbsp;</span>
1589
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
1593
- <span class="cline-any cline-no">&nbsp;</span>
1594
- <span class="cline-any cline-neutral">&nbsp;</span>
1595
- <span class="cline-any cline-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-no">&nbsp;</span>
1597
- <span class="cline-any cline-no">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-no">&nbsp;</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-no">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-no">&nbsp;</span>
1605
- <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-no">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
1612
- <span class="cline-any cline-neutral">&nbsp;</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-neutral">&nbsp;</span>
1615
- <span class="cline-any cline-no">&nbsp;</span>
1616
- <span class="cline-any cline-no">&nbsp;</span>
1617
- <span class="cline-any cline-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-no">&nbsp;</span>
1620
- <span class="cline-any cline-neutral">&nbsp;</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
1626
- <span class="cline-any cline-no">&nbsp;</span>
1627
- <span class="cline-any cline-no">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-no">&nbsp;</span>
1630
- <span class="cline-any cline-no">&nbsp;</span>
1631
- <span class="cline-any cline-no">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-no">&nbsp;</span>
1634
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1639
- <span class="cline-any cline-neutral">&nbsp;</span>
1640
- <span class="cline-any cline-no">&nbsp;</span>
1641
- <span class="cline-any cline-neutral">&nbsp;</span>
1642
- <span class="cline-any cline-no">&nbsp;</span>
1643
- <span class="cline-any cline-no">&nbsp;</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-neutral">&nbsp;</span>
1647
- <span class="cline-any cline-no">&nbsp;</span>
1648
- <span class="cline-any cline-no">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-no">&nbsp;</span>
1651
- <span class="cline-any cline-no">&nbsp;</span>
1652
- <span class="cline-any cline-no">&nbsp;</span>
1653
- <span class="cline-any cline-no">&nbsp;</span>
1654
- <span class="cline-any cline-no">&nbsp;</span>
1655
- <span class="cline-any cline-no">&nbsp;</span>
1656
- <span class="cline-any cline-neutral">&nbsp;</span>
1657
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1661
- <span class="cline-any cline-no">&nbsp;</span>
1662
- <span class="cline-any cline-no">&nbsp;</span>
1663
- <span class="cline-any cline-no">&nbsp;</span>
1664
- <span class="cline-any cline-neutral">&nbsp;</span>
1665
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-no">&nbsp;</span>
1672
- <span class="cline-any cline-no">&nbsp;</span>
1673
- <span class="cline-any cline-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-no">&nbsp;</span>
1675
- <span class="cline-any cline-no">&nbsp;</span>
1676
- <span class="cline-any cline-neutral">&nbsp;</span>
1677
- <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-neutral">&nbsp;</span>
1679
- <span class="cline-any cline-no">&nbsp;</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-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&nbsp;</span>
1692
- <span class="cline-any cline-no">&nbsp;</span>
1693
- <span class="cline-any cline-no">&nbsp;</span>
1694
- <span class="cline-any cline-no">&nbsp;</span>
1695
- <span class="cline-any cline-no">&nbsp;</span>
1696
- <span class="cline-any cline-no">&nbsp;</span>
1697
- <span class="cline-any cline-no">&nbsp;</span>
1698
- <span class="cline-any cline-no">&nbsp;</span>
1699
- <span class="cline-any cline-no">&nbsp;</span>
1700
- <span class="cline-any cline-no">&nbsp;</span>
1701
- <span class="cline-any cline-no">&nbsp;</span>
1702
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1707
- <span class="cline-any cline-no">&nbsp;</span>
1708
- <span class="cline-any cline-no">&nbsp;</span>
1709
- <span class="cline-any cline-no">&nbsp;</span>
1710
- <span class="cline-any cline-no">&nbsp;</span>
1711
- <span class="cline-any cline-no">&nbsp;</span>
1712
- <span class="cline-any cline-no">&nbsp;</span>
1713
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1717
- <span class="cline-any cline-no">&nbsp;</span>
1718
- <span class="cline-any cline-no">&nbsp;</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-yes">1x</span>
1721
- <span class="cline-any cline-no">&nbsp;</span>
1722
- <span class="cline-any cline-no">&nbsp;</span>
1723
- <span class="cline-any cline-no">&nbsp;</span>
1724
- <span class="cline-any cline-neutral">&nbsp;</span>
1725
- <span class="cline-any cline-neutral">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-neutral">&nbsp;</span>
1728
- <span class="cline-any cline-neutral">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-no">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-no">&nbsp;</span>
1734
- <span class="cline-any cline-no">&nbsp;</span>
1735
- <span class="cline-any cline-neutral">&nbsp;</span>
1736
- <span class="cline-any cline-no">&nbsp;</span>
1737
- <span class="cline-any cline-no">&nbsp;</span>
1738
- <span class="cline-any cline-no">&nbsp;</span>
1739
- <span class="cline-any cline-neutral">&nbsp;</span>
1740
- <span class="cline-any cline-no">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-yes">1x</span>
1743
- <span class="cline-any cline-no">&nbsp;</span>
1744
- <span class="cline-any cline-no">&nbsp;</span>
1745
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-no">&nbsp;</span>
1756
- <span class="cline-any cline-no">&nbsp;</span>
1757
- <span class="cline-any cline-neutral">&nbsp;</span>
1758
- <span class="cline-any cline-no">&nbsp;</span>
1759
- <span class="cline-any cline-no">&nbsp;</span>
1760
- <span class="cline-any cline-no">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-no">&nbsp;</span>
1763
- <span class="cline-any cline-neutral">&nbsp;</span>
1764
- <span class="cline-any cline-neutral">&nbsp;</span>
1765
- <span class="cline-any cline-yes">1x</span>
1766
- <span class="cline-any cline-no">&nbsp;</span>
1767
- <span class="cline-any cline-no">&nbsp;</span>
1768
- <span class="cline-any cline-neutral">&nbsp;</span>
1769
- <span class="cline-any cline-no">&nbsp;</span>
1770
- <span class="cline-any cline-no">&nbsp;</span>
1771
- <span class="cline-any cline-no">&nbsp;</span>
1772
- <span class="cline-any cline-neutral">&nbsp;</span>
1773
- <span class="cline-any cline-neutral">&nbsp;</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-no">&nbsp;</span>
1783
- <span class="cline-any cline-neutral">&nbsp;</span>
1784
- <span class="cline-any cline-no">&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-neutral">&nbsp;</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-no">&nbsp;</span>
1801
- <span class="cline-any cline-neutral">&nbsp;</span>
1802
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
1803
- BaseNode,
1804
- Identifier,
1805
- TypeAnnotation,
1806
- StructureProperty,
1807
- Structure,
1808
- EntityProperty,
1809
- Param,
1810
- MemberExpression,
1811
- CompletionProperty,
1812
- Variable,
1813
- Logic,
1814
- ConfigProperty,
1815
- App,
1816
- SynatxNode,
1817
- BindAttribute,
1818
- Interface,
1819
- CallLogic,
1820
- BackendVariable,
1821
- AuthLogic,
1822
- AuthLogicForCallInterface,
1823
- } from '..';
1824
- import { getNaslNodeByNodeCallee } from '../automate/engine/utils';
1825
- &nbsp;
1826
- interface variableItem {
1827
- text: string;
1828
- completionDetail: any;
1829
- children?: variableItem[] | any;
1830
- name?: string;
1831
- value?: string;
1832
- expression: MemberExpression | Identifier;
1833
- }
1834
- /**
1835
- * 把ts返回的详细信息截取成一个类型字符串
1836
- * @param displayParts ts返回的key value
1837
- * // 0: {text: 'let', kind: 'keyword'}
1838
- // 1: {text: ' ', kind: 'space'}
1839
- // 2: {text: 'bindRoles', kind: 'text'}
1840
- // 3: {text: ':', kind: 'punctuation'}
1841
- // 4: {text: ' ', kind: 'space'}
1842
- // 5: {text: 'roles', kind: 'moduleName'}
1843
- // 6: {text: '.', kind: 'punctuation'}
1844
- // 7: {text: 'DEV_AdminRole', kind: 'enumName'}
1845
- * @returns type roles.DEV_AdminRole
1846
- */
1847
- function <span class="fstat-no" title="function not covered" >formatTs2TypeString(</span>displayParts: Array&lt;{ text: string; kind: string }&gt;) {
1848
- let str = <span class="cstat-no" title="statement not covered" >'';</span>
1849
- <span class="cstat-no" title="statement not covered" > displayParts?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
1850
- <span class="cstat-no" title="statement not covered" > str += item.text;</span>
1851
- });
1852
- <span class="cstat-no" title="statement not covered" > return str;</span>
1853
- }
1854
- &nbsp;
1855
- function <span class="fstat-no" title="function not covered" >isValidName(</span>str: string) {
1856
- const regex = <span class="cstat-no" title="statement not covered" >/^[a-zA-Z][a-zA-Z0-9_]*$/;</span>
1857
- <span class="cstat-no" title="statement not covered" > return regex.test(str);</span>
1858
- }
1859
- /**
1860
- * 解析 Completion 和 QuickInfo 的 displayString
1861
- * 生成 TypeAnnotation
1862
- * @param displayString
1863
- * @returns TypeAnnotation
1864
- */
1865
- export function <span class="fstat-no" title="function not covered" >type2TypeAnnotation(</span>oldType: Array&lt;any&gt; | {}): TypeAnnotation {
1866
- <span class="cstat-no" title="statement not covered" > if (!oldType) <span class="cstat-no" title="statement not covered" >return null;</span></span>
1867
- let type = <span class="cstat-no" title="statement not covered" >oldType;</span>
1868
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(oldType)) {</span>
1869
- <span class="cstat-no" title="statement not covered" > type = oldType[0];</span>
1870
- }
1871
- let typeAnnotation: TypeAnnotation;
1872
- <span class="cstat-no" title="statement not covered" > try {</span>
1873
- const { typeName, typeNamespace, typeArguments, typeKind, properties } = <span class="cstat-no" title="statement not covered" >type as any;</span>
1874
- <span class="cstat-no" title="statement not covered" > if (typeKind === 'anonymousStructure') {</span>
1875
- // 自定义类型
1876
- const newProperties: StructureProperty[] = <span class="cstat-no" title="statement not covered" >[];</span>
1877
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(properties) &amp;&amp; properties.length) {</span>
1878
- <span class="cstat-no" title="statement not covered" > properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
1879
- <span class="cstat-no" title="statement not covered" > if (!item?.name?.startsWith('__')) {</span>
1880
- // 如果没有获取到类型,就默认塞一个string
1881
- const itemType = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');</span>
1882
- const structureProperty = <span class="cstat-no" title="statement not covered" >StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');</span>
1883
- <span class="cstat-no" title="statement not covered" > newProperties.push(structureProperty);</span>
1884
- }
1885
- });
1886
- }
1887
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);</span>
1888
- } else <span class="cstat-no" title="statement not covered" >if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {</span>
1889
- <span class="cstat-no" title="statement not covered" > return null;</span>
1890
- } else <span class="cstat-no" title="statement not covered" >if (typeName === 'String' || typeName === 'Boolean') {</span>
1891
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
1892
- } else <span class="cstat-no" title="statement not covered" >if (typeName === 'Union') {</span>
1893
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive('Union');</span>
1894
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [];</span>
1895
- <span class="cstat-no" title="statement not covered" > typeArguments.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {</span>
1896
- const typeItem = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item);</span>
1897
- <span class="cstat-no" title="statement not covered" > if (typeItem) {</span>
1898
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArgumentsPush(typeItem);</span>
1899
- }
1900
- });
1901
- } else <span class="cstat-no" title="statement not covered" >if (typeNamespace &amp;&amp; typeNamespace.startsWith('nasl.core')) {</span>
1902
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
1903
- } else <span class="cstat-no" title="statement not covered" >if (typeNamespace &amp;&amp; typeArguments?.length) {</span>
1904
- // 泛型类型
1905
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createGeneric(typeName, {</span>
1906
- typeNamespace,
1907
- });
1908
- // 如果有泛型处理泛型
1909
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [];</span>
1910
- <span class="cstat-no" title="statement not covered" > typeArguments.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {</span>
1911
- const typeItem = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item);</span>
1912
- <span class="cstat-no" title="statement not covered" > if (typeItem) {</span>
1913
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArgumentsPush(typeItem);</span>
1914
- }
1915
- });
1916
- } else {
1917
- // 其余的引用类型
1918
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
1919
- typeNamespace,
1920
- });
1921
- }
1922
- } catch (err) {
1923
- <span class="cstat-no" title="statement not covered" > console.log(err, type);</span>
1924
- }
1925
- <span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
1926
- }
1927
- &nbsp;
1928
- /**
1929
- * 解析 Completion 和 QuickInfo 的 displayString
1930
- * 生成 TypeAnnotation
1931
- * @param displayString
1932
- * @returns TypeAnnotation
1933
- */
1934
- export function <span class="fstat-no" title="function not covered" >displayString2TypeAnnotation(</span>typeStr: string, parentPrefix?: string): TypeAnnotation {
1935
- let type = <span class="cstat-no" title="statement not covered" >'';</span>
1936
- <span class="cstat-no" title="statement not covered" > if (typeStr?.includes(': ')) {</span>
1937
- const lastIndexOf = <span class="cstat-no" title="statement not covered" >typeStr.lastIndexOf(': ');</span>
1938
- <span class="cstat-no" title="statement not covered" > type = typeStr.substring(lastIndexOf + 2, typeStr.length);</span>
1939
- } else {
1940
- <span class="cstat-no" title="statement not covered" > type = typeStr;</span>
1941
- }
1942
- <span class="cstat-no" title="statement not covered" > if (!type) <span class="cstat-no" title="statement not covered" >return;</span></span>
1943
- <span class="cstat-no" title="statement not covered" > type = type.replaceAll(' ', '');</span>
1944
- <span class="cstat-no" title="statement not covered" > if (type === 'Promise&lt;void&gt;') <span class="cstat-no" title="statement not covered" >return null;</span></span>
1945
- // 把后面结尾里带()的比如
1946
- // 'function nasl.core.add(left: nasl.core.Long, right: nasl.core.Long): nasl.core.Long (+12 overloads)'
1947
- <span class="cstat-no" title="statement not covered" > if (type.includes('(') &amp;&amp; type.includes(')')) {</span>
1948
- <span class="cstat-no" title="statement not covered" > type = type.replace(/\([^)]*\)/g, '');</span>
1949
- }
1950
- let typeAnnotation;
1951
- <span class="cstat-no" title="statement not covered" > try {</span>
1952
- <span class="cstat-no" title="statement not covered" > if (type.includes('&lt;') &amp;&amp; type.includes('&gt;')) {</span>
1953
- // 泛型的处理
1954
- <span class="cstat-no" title="statement not covered" > typeAnnotation = createGenericTypeAnnotation(type, parentPrefix);</span>
1955
- } else {
1956
- <span class="cstat-no" title="statement not covered" > typeAnnotation = createType2Annotation(type, parentPrefix);</span>
1957
- }
1958
- } catch (err) {
1959
- <span class="cstat-no" title="statement not covered" > console.log(err);</span>
1960
- }
1961
- <span class="cstat-no" title="statement not covered" > return typeAnnotation as TypeAnnotation;</span>
1962
- }
1963
- &nbsp;
1964
- function <span class="fstat-no" title="function not covered" >createGenericTypeAnnotation(</span>type: string, parentPrefix?: string) {
1965
- // 取出匹配的内容
1966
- &nbsp;
1967
- const childType = <span class="cstat-no" title="statement not covered" >type.substring(0, type.indexOf('&lt;'));</span>
1968
- const typeAnnotation = <span class="cstat-no" title="statement not covered" >createType2Annotation(childType);</span>
1969
- // 如果还有匹配到的多层泛型;
1970
- // 取出匹配到的内容
1971
- const types = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(type);</span>
1972
- <span class="cstat-no" title="statement not covered" > if (types === null) <span class="cstat-no" title="statement not covered" >return types;</span></span>
1973
- const newtext = <span class="cstat-no" title="statement not covered" >types[1];</span>
1974
- // 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
1975
- const newTypes = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(newtext);</span>
1976
- // 如果是的话就去递归
1977
- <span class="cstat-no" title="statement not covered" > if (newTypes) {</span>
1978
- const argTypeAnnotation = <span class="cstat-no" title="statement not covered" >createGenericTypeAnnotation(newtext, parentPrefix);</span>
1979
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [argTypeAnnotation as TypeAnnotation];</span>
1980
- } else {
1981
- const argTypeAnnotation = <span class="cstat-no" title="statement not covered" >createType2Annotation(newtext, parentPrefix);</span>
1982
- &nbsp;
1983
- // 如果不是就创造内部的真正类型
1984
- <span class="cstat-no" title="statement not covered" > if (newtext.includes(',')) {</span>
1985
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = newtext.split(',').map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >createType2Annotation(item))</span>;</span>
1986
- } else {
1987
- <span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [argTypeAnnotation];</span>
1988
- }
1989
- }
1990
- <span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
1991
- }
1992
- function <span class="fstat-no" title="function not covered" >createType2Annotation(</span>type: string, parentPrefix?: string): TypeAnnotation {
1993
- let typeAnnotation;
1994
- // 没有泛型类型的
1995
- const types = <span class="cstat-no" title="statement not covered" >type.split('.');</span>
1996
- // 长度等于1就说明是
1997
- <span class="cstat-no" title="statement not covered" > if (types.length === 1) {</span>
1998
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(types[0]);</span>
1999
- } else {
2000
- const typeName = <span class="cstat-no" title="statement not covered" >types.pop();</span>
2001
- const typeNamespace = <span class="cstat-no" title="statement not covered" >types.join('.');</span>
2002
- <span class="cstat-no" title="statement not covered" > if (type.startsWith('nasl.core')) {</span>
2003
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
2004
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.ui')) {</span>
2005
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2006
- typeNamespace,
2007
- });
2008
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.process')) {</span>
2009
- // nasl的引用类型
2010
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2011
- typeNamespace,
2012
- });
2013
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.collection')) {</span>
2014
- // nasl的泛型类型
2015
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createGeneric(typeName, {</span>
2016
- typeNamespace,
2017
- });
2018
- } else <span class="cstat-no" title="statement not covered" >if (type.startsWith('dataSources.') || type.startsWith('structures.') || type.startsWith('enums.')) {</span>
2019
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2020
- typeNamespace: (parentPrefix || 'app.') + typeNamespace,
2021
- });
2022
- } else {
2023
- <span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
2024
- typeNamespace,
2025
- });
2026
- }
2027
- }
2028
- <span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
2029
- }
2030
- export function <span class="fstat-no" title="function not covered" >getPlatformType(</span>type: string): string {
2031
- let tsType = <span class="cstat-no" title="statement not covered" >'';</span>
2032
- &nbsp;
2033
- <span class="cstat-no" title="statement not covered" > if (type?.includes(': ')) {</span>
2034
- const lastIndexOf = <span class="cstat-no" title="statement not covered" >type.lastIndexOf(': ');</span>
2035
- <span class="cstat-no" title="statement not covered" > tsType = type.substring(lastIndexOf + 2, type.length);</span>
2036
- } else {
2037
- <span class="cstat-no" title="statement not covered" > tsType = type;</span>
2038
- }
2039
- <span class="cstat-no" title="statement not covered" > tsType = tsType.replaceAll(' ', '');</span>
2040
- const namespacePrefix = <span class="cstat-no" title="statement not covered" >['app', 'extensions', 'apis', 'components', 'nasl'];</span>
2041
- <span class="cstat-no" title="statement not covered" > if (tsType === 'String') {</span>
2042
- <span class="cstat-no" title="statement not covered" > return 'nasl.core.String';</span>
2043
- } else <span class="cstat-no" title="statement not covered" >if (tsType === 'Boolean') {</span>
2044
- <span class="cstat-no" title="statement not covered" > return 'nasl.core.Boolean';</span>
2045
- }
2046
- &nbsp;
2047
- const strTypes = <span class="cstat-no" title="statement not covered" >tsType.split('.');</span>
2048
- <span class="cstat-no" title="statement not covered" > if (strTypes.length) {</span>
2049
- const first = <span class="cstat-no" title="statement not covered" >strTypes[0];</span>
2050
- // 如果不是这几个前缀就加一个namespace
2051
- <span class="cstat-no" title="statement not covered" > if (!namespacePrefix.includes(first)) {</span>
2052
- <span class="cstat-no" title="statement not covered" > return 'app.' + tsType;</span>
2053
- }
2054
- }
2055
- <span class="cstat-no" title="statement not covered" > return tsType;</span>
2056
- }
2057
- export function <span class="fstat-no" title="function not covered" >isNoChildType(</span>type: String) {
2058
- <span class="cstat-no" title="statement not covered" > return (type?.startsWith('nasl.core') &amp;&amp; !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');</span>
2059
- }
2060
- function <span class="fstat-no" title="function not covered" >findNode(</span>typeKey: string, node: BaseNode) {
2061
- let newType: Structure | Logic;
2062
- <span class="cstat-no" title="statement not covered" > if (typeKey.startsWith('nasl.') &amp;&amp; typeKey.includes('&lt;')) {</span>
2063
- const findGenericsIndex = <span class="cstat-no" title="statement not covered" >typeKey.indexOf('&lt;');</span>
2064
- <span class="cstat-no" title="statement not covered" > typeKey = typeKey.substring(0, findGenericsIndex);</span>
2065
- const typeIndex = <span class="cstat-no" title="statement not covered" >typeKey.lastIndexOf('.');</span>
2066
- <span class="cstat-no" title="statement not covered" > newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));</span>
2067
- } else <span class="cstat-no" title="statement not covered" >if (typeKey.startsWith('nasl.')) {</span>
2068
- const typeIndex = <span class="cstat-no" title="statement not covered" >typeKey.lastIndexOf('.');</span>
2069
- <span class="cstat-no" title="statement not covered" > newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));</span>
2070
- } else {
2071
- <span class="cstat-no" title="statement not covered" > newType = (node as Identifier)?.app?.findNodeByCompleteName(typeKey);</span>
2072
- }
2073
- <span class="cstat-no" title="statement not covered" > return newType;</span>
2074
- }
2075
- &nbsp;
2076
- /**
2077
- * 获取下一级的节点进行递归
2078
- * @param typeKey 当前节点的类型,主要为了取出内部的 T中的实际类型
2079
- * @param item 当前节点的内容
2080
- * @param node 获取变量框的位置
2081
- */
2082
- export function <span class="fstat-no" title="function not covered" >nextFindTypeChild(</span>typeKey: string, item: any, node: SynatxNode) {
2083
- const newType = <span class="cstat-no" title="statement not covered" >findNode(typeKey, node);</span>
2084
- <span class="cstat-no" title="statement not covered" > if ((newType as Structure)?.properties &amp;&amp; (newType as Structure).properties.length) {</span>
2085
- // 处理泛型的内容要取到值
2086
- const StructureJson = <span class="cstat-no" title="statement not covered" >newType.toJSON();</span>
2087
- const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
2088
- <span class="cstat-no" title="statement not covered" > newStructure.properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: StructureProperty | EntityProperty) =&gt; {</span>
2089
- const itemType = <span class="cstat-no" title="statement not covered" >item?.typeAnnotation?.typeKey;</span>
2090
- <span class="cstat-no" title="statement not covered" > if (itemType === 'T' &amp;&amp; /&lt;([^()]+)&gt;/g.exec(typeKey)) {</span>
2091
- const newTypes = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(typeKey);</span>
2092
- // 找到当前原来的类型
2093
- const contentType = <span class="cstat-no" title="statement not covered" >getPlatformType(newTypes[1]);</span>
2094
- const typeNamespace = <span class="cstat-no" title="statement not covered" >contentType.substring(0, contentType.lastIndexOf('.'));</span>
2095
- const typeName = <span class="cstat-no" title="statement not covered" >contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);</span>
2096
- <span class="cstat-no" title="statement not covered" > item.typeAnnotation = new TypeAnnotation({</span>
2097
- typeKind: 'reference',
2098
- typeNamespace,
2099
- typeName,
2100
- });
2101
- }
2102
- });
2103
- <span class="cstat-no" title="statement not covered" > item.children = formatVariableData(newStructure.properties, node, item);</span>
2104
- }
2105
- }
2106
- &nbsp;
2107
- /**
2108
- * 获取scope下一级的展示
2109
- * @param type 返回的字符串如下展示
2110
- * `nasl.ui.Current&lt;{
2111
- __name: "AStructure_dc8bcbaf";
2112
- entity1: dataSources.defaultDS.entities.Entity1;
2113
- lCAPRolePerMapping: dataSources.defaultDS.entities.LCAPRolePerMapping;
2114
- }&gt;`
2115
- */
2116
- function <span class="fstat-no" title="function not covered" >getAStructureScopeType(</span>type: string, parent: any, node: SynatxNode) {
2117
- let newType = <span class="cstat-no" title="statement not covered" >type</span>
2118
- .replaceAll(' ', '')
2119
- .replaceAll('\n', '')
2120
- .replace(/__name:"AStructure_\w{8}";/g, '');
2121
- &nbsp;
2122
- const parentItem: any = <span class="cstat-no" title="statement not covered" >parent;</span>
2123
- // 如果没有父节点就是Identifier
2124
- // value需要拼接生成
2125
- const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: parentItem.text });</span>
2126
- <span class="cstat-no" title="statement not covered" > parentItem.expression = identifier;</span>
2127
- <span class="cstat-no" title="statement not covered" > parentItem.value = parentItem.text;</span>
2128
- <span class="cstat-no" title="statement not covered" > parentItem.name = parentItem.text;</span>
2129
- &nbsp;
2130
- // 处理泛型的内容要取到值
2131
- const newNode = <span class="cstat-no" title="statement not covered" >findNode(newType, node);</span>
2132
- &nbsp;
2133
- const StructureJson = <span class="cstat-no" title="statement not covered" >newNode.toJSON();</span>
2134
- const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
2135
- const children = <span class="cstat-no" title="statement not covered" >newStructure.properties;</span>
2136
- <span class="cstat-no" title="statement not covered" > if (children &amp;&amp; children.length) {</span>
2137
- const newChildren = <span class="cstat-no" title="statement not covered" >children.map(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty) =&gt; {</span>
2138
- const structureItem: any = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
2139
- // 如果没有父节点就是Identifier
2140
- <span class="cstat-no" title="statement not covered" > structureItem.value = `${parentItem.value}.${structureItem.name}`;</span>
2141
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2142
- object: parentItem.expression,
2143
- property: new Identifier({ name: structureItem.name }),
2144
- });
2145
- <span class="cstat-no" title="statement not covered" > structureItem.expression = memberExpression;</span>
2146
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(structureItem);</span>
2147
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2148
- &nbsp;
2149
- <span class="cstat-no" title="statement not covered" > if (structureItem.name === 'item') {</span>
2150
- const context = <span class="cstat-no" title="statement not covered" >/\{([^()]+)\}/.exec(newType);</span>
2151
- <span class="cstat-no" title="statement not covered" > newType = context[1];</span>
2152
- let res: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
2153
- <span class="cstat-no" title="statement not covered" > newType.split(';').forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2154
- <span class="cstat-no" title="statement not covered" > if (item) {</span>
2155
- const itemArr = <span class="cstat-no" title="statement not covered" >item.split(':');</span>
2156
- const name = <span class="cstat-no" title="statement not covered" >itemArr[0];</span>
2157
- let typeKey = <span class="cstat-no" title="statement not covered" >itemArr[1];</span>
2158
- <span class="cstat-no" title="statement not covered" > if (typeKey &amp;&amp; typeKey.startsWith('dataSources')) {</span>
2159
- <span class="cstat-no" title="statement not covered" > typeKey = 'app.' + typeKey;</span>
2160
- }
2161
- // 如果ls传过来的名字是不合法的就隐藏
2162
- <span class="cstat-no" title="statement not covered" > if (!isValidName(name)) {</span>
2163
- <span class="cstat-no" title="statement not covered" > console.warn(item, '获取变量不展示');</span>
2164
- <span class="cstat-no" title="statement not covered" > return null;</span>
2165
- }
2166
- <span class="cstat-no" title="statement not covered" > res.push({</span>
2167
- name,
2168
- typeKey,
2169
- });
2170
- }
2171
- });
2172
- <span class="cstat-no" title="statement not covered" > res = res.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2173
- const newItem: any = <span class="cstat-no" title="statement not covered" >item;</span>
2174
- // 如果没有父节点就是Identifier
2175
- <span class="cstat-no" title="statement not covered" > newItem.value = `${structureItem.value}.${newItem.name}`;</span>
2176
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2177
- object: structureItem.expression,
2178
- property: new Identifier({ name: newItem.name }),
2179
- });
2180
- <span class="cstat-no" title="statement not covered" > newItem.expression = memberExpression;</span>
2181
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
2182
- <span class="cstat-no" title="statement not covered" > if (item.typeKey &amp;&amp; !isNoChildType(item.typeKey)) {</span>
2183
- <span class="cstat-no" title="statement not covered" > newItem.children = nextObjectTypeChild(item.typeKey, newItem, node);</span>
2184
- }
2185
- <span class="cstat-no" title="statement not covered" > newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);</span>
2186
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2187
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2188
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2189
- });
2190
- <span class="cstat-no" title="statement not covered" > completionProperty.children = res;</span>
2191
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2192
- } else {
2193
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2194
- }
2195
- });
2196
- <span class="cstat-no" title="statement not covered" > parentItem.children = newChildren;</span>
2197
- }
2198
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(parentItem);</span>
2199
- // 变量 param return 在这里添加图标
2200
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
2201
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2202
- }
2203
- /**
2204
- * 获取对象类型的下一级展示
2205
- * @param type 返回的字符串如下展示
2206
- * `{
2207
- __name: "AStructure_bf19c4d5";
2208
- list: nasl.collection.List&lt;{
2209
- __name: "AStructure_dc8bcbaf";
2210
- entity1: app.dataSources.defaultDS.entities.Entity1;
2211
- lCAPRolePerMapping: app.dataSources.defaultDS.entities.LCAPRolePerMapping;
2212
- }&gt;;
2213
- total: nasl.core.Long;
2214
- }`
2215
- */
2216
- function <span class="fstat-no" title="function not covered" >getAStructureObjectStringType(</span>type: string, parent: any, node: SynatxNode) {
2217
- let newType = <span class="cstat-no" title="statement not covered" >type</span>
2218
- .replaceAll(' ', '')
2219
- .replaceAll('\n', '')
2220
- .replace(/__name:"AStructure_\w{8}";/g, '');
2221
- <span class="cstat-no" title="statement not covered" > newType = newType.substring(1, newType.length - 1);</span>
2222
- <span class="cstat-no" title="statement not covered" > if (/\{([^()]+)\}/.exec(newType)) {</span>
2223
- <span class="cstat-no" title="statement not covered" > newType = newType.replace(/\{([^()]+)\}/, '');</span>
2224
- }
2225
- let res: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
2226
- <span class="cstat-no" title="statement not covered" > newType.split(';').forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2227
- <span class="cstat-no" title="statement not covered" > if (item) {</span>
2228
- const itemArr = <span class="cstat-no" title="statement not covered" >item.split(':');</span>
2229
- const name = <span class="cstat-no" title="statement not covered" >itemArr[0];</span>
2230
- const typeKey = <span class="cstat-no" title="statement not covered" >itemArr[1];</span>
2231
- <span class="cstat-no" title="statement not covered" > res.push({</span>
2232
- name,
2233
- typeKey,
2234
- });
2235
- }
2236
- });
2237
- const parentItem: any = <span class="cstat-no" title="statement not covered" >parent;</span>
2238
- // 如果没有父节点就是Identifier
2239
- // value需要拼接生成
2240
- const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: parentItem.text });</span>
2241
- <span class="cstat-no" title="statement not covered" > parentItem.expression = identifier;</span>
2242
- <span class="cstat-no" title="statement not covered" > parentItem.value = parentItem.text;</span>
2243
- <span class="cstat-no" title="statement not covered" > parentItem.name = parentItem.text;</span>
2244
- &nbsp;
2245
- <span class="cstat-no" title="statement not covered" > res = res.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2246
- const newItem: any = <span class="cstat-no" title="statement not covered" >item;</span>
2247
- // 如果没有父节点就是Identifier
2248
- <span class="cstat-no" title="statement not covered" > newItem.value = `${parentItem.value}.${newItem.name}`;</span>
2249
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2250
- object: parentItem.expression,
2251
- property: new Identifier({ name: newItem.name }),
2252
- });
2253
- <span class="cstat-no" title="statement not covered" > newItem.expression = memberExpression;</span>
2254
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
2255
- <span class="cstat-no" title="statement not covered" > if (item.typeKey &amp;&amp; !isNoChildType(item.typeKey)) {</span>
2256
- <span class="cstat-no" title="statement not covered" > newItem.children = nextObjectTypeChild(getPlatformType(item.typeKey), newItem, node);</span>
2257
- }
2258
- <span class="cstat-no" title="statement not covered" > newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);</span>
2259
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2260
- &nbsp;
2261
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2262
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2263
- });
2264
- <span class="cstat-no" title="statement not covered" > parentItem.children = res;</span>
2265
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(parentItem);</span>
2266
- &nbsp;
2267
- // 变量 param return 在这里添加图标
2268
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
2269
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2270
- }
2271
- function <span class="fstat-no" title="function not covered" >nextObjectTypeChild(</span>typeKey: string, item: any, node: SynatxNode) {
2272
- const newType = <span class="cstat-no" title="statement not covered" >findNode(typeKey, node);</span>
2273
- <span class="cstat-no" title="statement not covered" > if ((newType as Structure)?.properties &amp;&amp; (newType as Structure).properties.length) {</span>
2274
- // 处理泛型的内容要取到值
2275
- const StructureJson = <span class="cstat-no" title="statement not covered" >newType.toJSON();</span>
2276
- const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
2277
- <span class="cstat-no" title="statement not covered" > newStructure.properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: StructureProperty | EntityProperty) =&gt; {</span>
2278
- const itemType = <span class="cstat-no" title="statement not covered" >item?.typeAnnotation?.typeKey;</span>
2279
- <span class="cstat-no" title="statement not covered" > if (itemType === 'T' &amp;&amp; /&lt;([^()]+)&gt;/g.exec(typeKey)) {</span>
2280
- const newTypes = <span class="cstat-no" title="statement not covered" >/&lt;([^()]+)&gt;/g.exec(typeKey);</span>
2281
- // 找到当前原来的类型
2282
- const contentType = <span class="cstat-no" title="statement not covered" >getPlatformType(newTypes[1]);</span>
2283
- const typeNamespace = <span class="cstat-no" title="statement not covered" >contentType.substring(0, contentType.lastIndexOf('.'));</span>
2284
- const typeName = <span class="cstat-no" title="statement not covered" >contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);</span>
2285
- <span class="cstat-no" title="statement not covered" > item.typeAnnotation = new TypeAnnotation({</span>
2286
- typeKind: 'reference',
2287
- typeNamespace,
2288
- typeName,
2289
- });
2290
- }
2291
- });
2292
- <span class="cstat-no" title="statement not covered" > return formatVariableData(newStructure.properties, node, item);</span>
2293
- }
2294
- }
2295
- &nbsp;
2296
- function <span class="fstat-no" title="function not covered" >getNodeTypeVariableData(</span>nodeType: any, item: any, node: SynatxNode) {
2297
- <span class="cstat-no" title="statement not covered" > item.value = item.text;</span>
2298
- <span class="cstat-no" title="statement not covered" > item.name = item.text;</span>
2299
- const parentExpression = <span class="cstat-no" title="statement not covered" >new Identifier({ name: item.text });</span>
2300
- <span class="cstat-no" title="statement not covered" > item.expression = parentExpression;</span>
2301
- <span class="cstat-no" title="statement not covered" > if (nodeType) {</span>
2302
- const typeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(nodeType);</span>
2303
- const typeKeyMap = <span class="cstat-no" title="statement not covered" >new Map();</span>
2304
- const app = <span class="cstat-no" title="statement not covered" >node.rootNode as App;</span>
2305
- let structure: any = <span class="cstat-no" title="statement not covered" >{};</span>
2306
- &nbsp;
2307
- // 有类型在进行下一步运算
2308
- <span class="cstat-no" title="statement not covered" > if (typeAnnotation) {</span>
2309
- // 数据查询没有输出参数,特殊处理
2310
- <span class="cstat-no" title="statement not covered" > if (typeAnnotation.typeKind === 'anonymousStructure') {</span>
2311
- <span class="cstat-no" title="statement not covered" > structure = { properties: typeAnnotation.properties };</span>
2312
- } else <span class="cstat-no" title="statement not covered" >if (typeAnnotation.typeArguments) {</span>
2313
- <span class="cstat-no" title="statement not covered" > structure = { properties: app.getSelectRef(typeAnnotation, true) };</span>
2314
- } else {
2315
- <span class="cstat-no" title="statement not covered" > structure = app.findNodeByCompleteName(typeAnnotation.typeNamespace + '.' + typeAnnotation.typeName);</span>
2316
- }
2317
- <span class="cstat-no" title="statement not covered" > structure?.properties?.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty: StructureProperty) =&gt; {</span>
2318
- const { name, typeAnnotation } = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
2319
- const expression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2320
- object: parentExpression,
2321
- property: new Identifier({ name }),
2322
- });
2323
- const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty({</span>
2324
- name,
2325
- value: name,
2326
- expression,
2327
- children: [],
2328
- });
2329
- <span class="cstat-no" title="statement not covered" > completionData.icon = 'refProperty';</span>
2330
- &nbsp;
2331
- <span class="cstat-no" title="statement not covered" > item.children.push(completionData);</span>
2332
- <span class="cstat-no" title="statement not covered" > recursionProperty(typeAnnotation, completionData, node, typeKeyMap);</span>
2333
- });
2334
- }
2335
- }
2336
- &nbsp;
2337
- const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty(item);</span>
2338
- // 变量 param return 在这里添加图标
2339
- <span class="cstat-no" title="statement not covered" > completionData.icon = getNodeiconFromLogic(completionData, node);</span>
2340
- <span class="cstat-no" title="statement not covered" > return completionData;</span>
2341
- }
2342
- function <span class="fstat-no" title="function not covered" >recursionProperty(</span>
2343
- structureTypeAnnotation: TypeAnnotation,
2344
- parentCompletion: CompletionProperty,
2345
- node: BaseNode,
2346
- typeKeyMap: Map&lt;string, number&gt;
2347
- ) {
2348
- const app = <span class="cstat-no" title="statement not covered" >node.rootNode as App;</span>
2349
- let structure;
2350
- <span class="cstat-no" title="statement not covered" > if (structureTypeAnnotation.typeArguments) {</span>
2351
- <span class="cstat-no" title="statement not covered" > structure = { properties: app.getSelectRef(structureTypeAnnotation, true) };</span>
2352
- } else {
2353
- <span class="cstat-no" title="statement not covered" > if (structureTypeAnnotation.typeKind === 'anonymousStructure') {</span>
2354
- <span class="cstat-no" title="statement not covered" > structure = { properties: structureTypeAnnotation.properties };</span>
2355
- } else {
2356
- <span class="cstat-no" title="statement not covered" > structure = app.findNodeByCompleteName(structureTypeAnnotation.typeNamespace + '.' + structureTypeAnnotation.typeName);</span>
2357
- }
2358
- }
2359
- &nbsp;
2360
- <span class="cstat-no" title="statement not covered" > structure?.properties?.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty: StructureProperty) =&gt; {</span>
2361
- const { name, typeAnnotation } = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
2362
- const object = <span class="cstat-no" title="statement not covered" >BaseNode.from({ ...parentCompletion.expression.toJSON() }) as any;</span>
2363
- const expression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2364
- object,
2365
- property: new Identifier({ name }),
2366
- });
2367
- const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty({</span>
2368
- name,
2369
- value: name,
2370
- expression,
2371
- children: [],
2372
- });
2373
- <span class="cstat-no" title="statement not covered" > completionData.icon = 'refProperty';</span>
2374
- <span class="cstat-no" title="statement not covered" > parentCompletion.children.push(completionData);</span>
2375
- <span class="cstat-no" title="statement not covered" > if (getNextFlag(typeAnnotation.typeKey, typeKeyMap)) {</span>
2376
- <span class="cstat-no" title="statement not covered" > recursionProperty(typeAnnotation, completionData, node, typeKeyMap);</span>
2377
- }
2378
- });
2379
- }
2380
- &nbsp;
2381
- function <span class="fstat-no" title="function not covered" >getNextFlag(</span>typeKey: string, typeKeyMap: Map&lt;string, number&gt;) {
2382
- <span class="cstat-no" title="statement not covered" > if (['nasl.core.String', 'nasl.collection.List', 'nasl.collection.Map'].includes(typeKey)) <span class="cstat-no" title="statement not covered" >return true;</span></span>
2383
- <span class="cstat-no" title="statement not covered" > if (typeKeyMap.get(typeKey) === 3) {</span>
2384
- <span class="cstat-no" title="statement not covered" > return false;</span>
2385
- } else <span class="cstat-no" title="statement not covered" >if (typeKeyMap.get(typeKey) &gt; 0) {</span>
2386
- <span class="cstat-no" title="statement not covered" > typeKeyMap.set(typeKey, typeKeyMap.get(typeKey) + 1);</span>
2387
- } else {
2388
- <span class="cstat-no" title="statement not covered" > typeKeyMap.set(typeKey, 1);</span>
2389
- }
2390
- <span class="cstat-no" title="statement not covered" > return true;</span>
2391
- }
2392
- // 格式化变量数据
2393
- export function <span class="fstat-no" title="function not covered" >formatVariableData(</span>data: unknown | variableItem[], node: SynatxNode, parent?: any) {
2394
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(data)) {</span>
2395
- let result = <span class="cstat-no" title="statement not covered" >data.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2396
- <span class="cstat-no" title="statement not covered" > item.children = [];</span>
2397
- // 当前的类型如 app.entitys.entity1 nasl.core.String
2398
- let typeKey: string;
2399
- <span class="cstat-no" title="statement not covered" > if (item.completionDetail) {</span>
2400
- <span class="cstat-no" title="statement not covered" > if (item.completionDetail?.hasOwnProperty('nodeType') || item.completionDetail?.hasOwnProperty('newNodeType')) {</span>
2401
- const completionProperty = <span class="cstat-no" title="statement not covered" >getNodeTypeVariableData(item.completionDetail?.nodeType || item.completionDetail?.newNodeType, item, node);</span>
2402
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2403
- } else {
2404
- // 当前节点的完整类型,主要是在有T的内容使用 nasl.list&lt;Enum1&gt; 内部匹配内容给里面子集的T赋值类型
2405
- let currentType: string = <span class="cstat-no" title="statement not covered" >formatTs2TypeString(item.completionDetail.displayParts as Array&lt;{ text: string; kind: string }&gt;);</span>
2406
- <span class="cstat-no" title="statement not covered" > if (currentType) {</span>
2407
- <span class="cstat-no" title="statement not covered" > if (currentType?.includes(': ')) {</span>
2408
- const indexOf = <span class="cstat-no" title="statement not covered" >currentType.indexOf(': ');</span>
2409
- const newCurrentType = <span class="cstat-no" title="statement not covered" >currentType.substring(indexOf + 2, currentType.length);</span>
2410
- // 如果是对象形式的就单独处理
2411
- <span class="cstat-no" title="statement not covered" > if (newCurrentType.startsWith('{') &amp;&amp; newCurrentType.endsWith('}')) {</span>
2412
- const completionProperty = <span class="cstat-no" title="statement not covered" >getAStructureObjectStringType(newCurrentType, item, node);</span>
2413
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2414
- } else <span class="cstat-no" title="statement not covered" >if (newCurrentType.startsWith('nasl.ui.Current&lt;{')) {</span>
2415
- const completionProperty = <span class="cstat-no" title="statement not covered" >getAStructureScopeType(newCurrentType, item, node);</span>
2416
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2417
- } else <span class="cstat-no" title="statement not covered" >if (newCurrentType.startsWith('nasl.collection.List&lt;{') &amp;&amp; newCurrentType.endsWith('}&gt;')) {</span>
2418
- <span class="cstat-no" title="statement not covered" > currentType = 'nasl.collection.List&lt;nasl.core.Any&gt;';</span>
2419
- }
2420
- }
2421
- }
2422
- <span class="cstat-no" title="statement not covered" > typeKey = getPlatformType(currentType);</span>
2423
- <span class="cstat-no" title="statement not covered" > item.typeAnnotation = displayString2TypeAnnotation(typeKey);</span>
2424
- }
2425
- } else <span class="cstat-no" title="statement not covered" >if (item instanceof StructureProperty || item instanceof EntityProperty) {</span>
2426
- <span class="cstat-no" title="statement not covered" > typeKey = item?.typeAnnotation?.typeKey;</span>
2427
- }
2428
- // 如果没有父节点就是Identifier
2429
- <span class="cstat-no" title="statement not covered" > if (!parent) {</span>
2430
- // value需要拼接生成
2431
- <span class="cstat-no" title="statement not covered" > item.value = parent ? `${parent.value}.${item.text}` : item.text;</span>
2432
- <span class="cstat-no" title="statement not covered" > item.name = item.text;</span>
2433
- const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: item.name });</span>
2434
- <span class="cstat-no" title="statement not covered" > item.expression = identifier;</span>
2435
- <span class="cstat-no" title="statement not covered" > item.typeKey = typeKey;</span>
2436
- } else {
2437
- <span class="cstat-no" title="statement not covered" > item.value = `${parent.value}.${item.name}`;</span>
2438
- const object: any = <span class="cstat-no" title="statement not covered" >BaseNode.from(parent.expression.toJSON());</span>
2439
- const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
2440
- object,
2441
- property: new Identifier({ name: item.name }),
2442
- });
2443
- <span class="cstat-no" title="statement not covered" > item.expression = memberExpression;</span>
2444
- <span class="cstat-no" title="statement not covered" > item.variableParent = parent;</span>
2445
- <span class="cstat-no" title="statement not covered" > item.typeKey = typeKey;</span>
2446
- // 标记实体属性是否是符合类型
2447
- <span class="cstat-no" title="statement not covered" > item.isComplexType = item.typeAnnotation?.isComplexType();</span>
2448
- }
2449
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
2450
- <span class="cstat-no" title="statement not covered" > if (typeKey &amp;&amp; !isNoChildType(typeKey)) {</span>
2451
- let currentParent = <span class="cstat-no" title="statement not covered" >item;</span>
2452
- let typeKeyIndex = <span class="cstat-no" title="statement not covered" >0;</span>
2453
- <span class="cstat-no" title="statement not covered" > while (currentParent.variableParent) {</span>
2454
- <span class="cstat-no" title="statement not covered" > currentParent = currentParent.variableParent;</span>
2455
- <span class="cstat-no" title="statement not covered" > if (currentParent.typeKey === typeKey) {</span>
2456
- <span class="cstat-no" title="statement not covered" > typeKeyIndex++;</span>
2457
- }
2458
- }
2459
- // 向上找到3次一样的就结束
2460
- <span class="cstat-no" title="statement not covered" > if (typeKeyIndex &lt; 3) {</span>
2461
- <span class="cstat-no" title="statement not covered" > nextFindTypeChild(typeKey, item, node);</span>
2462
- }
2463
- }
2464
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(item);</span>
2465
- <span class="cstat-no" title="statement not covered" > completionProperty.jsonName = item.jsonName;</span>
2466
- // 标记实体属性是否是符合类型
2467
- <span class="cstat-no" title="statement not covered" > if (typeof item.isComplexType === 'boolean') {</span>
2468
- <span class="cstat-no" title="statement not covered" > Object.assign(completionProperty, { isComplexType: item.isComplexType });</span>
2469
- }
2470
- <span class="cstat-no" title="statement not covered" > if (!parent) {</span>
2471
- // 变量 param return 在这里添加图标
2472
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
2473
- } else {
2474
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
2475
- }
2476
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2477
- });
2478
- &nbsp;
2479
- /**
2480
- * 排序result
2481
- * 如果没有父级就是第一集就排序一下当前result,用户体验优化
2482
- */
2483
- <span class="cstat-no" title="statement not covered" > if (!parent) {</span>
2484
- <span class="cstat-no" title="statement not covered" > result = sortFirstVariableData(result, node);</span>
2485
- }
2486
- &nbsp;
2487
- <span class="cstat-no" title="statement not covered" > return result.filter(Boolean);</span>
2488
- }
2489
- }
2490
- &nbsp;
2491
- // 从logic获取节点的icon
2492
- function <span class="fstat-no" title="function not covered" >getNodeiconFromLogic(</span>completionProperty: CompletionProperty, node: SynatxNode): string {
2493
- const { name: propName } = <span class="cstat-no" title="statement not covered" >completionProperty;</span>
2494
- const { view } = <span class="cstat-no" title="statement not covered" >node as Param;</span>
2495
- const logic = (<span class="cstat-no" title="statement not covered" >node as Param).logic || (node as Param).OverriddenLogic || (node as Param).AuthLogic || (node as Param).AuthLogicForCallInterface;</span>
2496
- &nbsp;
2497
- <span class="cstat-no" title="statement not covered" > if (node.concept === 'Identifier' || node.concept === 'BindAttribute' || node.concept === 'MemberExpression') {</span>
2498
- const callLogic = <span class="cstat-no" title="statement not covered" >node.getAncestor&lt;CallLogic&gt;('CallLogic');</span>
2499
- const originLogic = <span class="cstat-no" title="statement not covered" >callLogic?.getCallNode() as Logic;</span>
2500
- &nbsp;
2501
- <span class="cstat-no" title="statement not covered" > if (originLogic?.params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2502
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2503
- }
2504
- }
2505
- &nbsp;
2506
- <span class="cstat-no" title="statement not covered" > if (view) {</span>
2507
- // 前端逻辑调用
2508
- const { params } = <span class="cstat-no" title="statement not covered" >view;</span>
2509
- &nbsp;
2510
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2511
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2512
- }
2513
- }
2514
- &nbsp;
2515
- <span class="cstat-no" title="statement not covered" > if (logic) {</span>
2516
- const { params, returns } = <span class="cstat-no" title="statement not covered" >logic;</span>
2517
- &nbsp;
2518
- <span class="cstat-no" title="statement not covered" > if (logic instanceof AuthLogicForCallInterface) {</span>
2519
- const { authParams } = <span class="cstat-no" title="statement not covered" >logic;</span>
2520
- <span class="cstat-no" title="statement not covered" > if (authParams.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
2521
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
2522
- } else <span class="cstat-no" title="statement not covered" >if (logic instanceof AuthLogic) {</span>
2523
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
2524
- } else {
2525
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'param';</span></span>
2526
- }
2527
- &nbsp;
2528
- <span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2529
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2530
- } else <span class="cstat-no" title="statement not covered" >if (returns.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2531
- <span class="cstat-no" title="statement not covered" > return 'return';</span>
2532
- } else {
2533
- <span class="cstat-no" title="statement not covered" > return 'variable';</span>
2534
- }
2535
- }
2536
- &nbsp;
2537
- const bindAttr = <span class="cstat-no" title="statement not covered" >node.getAncestor&lt;BindAttribute&gt;('BindAttribute');</span>
2538
- &nbsp;
2539
- <span class="cstat-no" title="statement not covered" > if (bindAttr) {</span>
2540
- const interfaceInstance = <span class="cstat-no" title="statement not covered" >bindAttr.getAncestor&lt;Interface&gt;('Interface');</span>
2541
- &nbsp;
2542
- <span class="cstat-no" title="statement not covered" > if (interfaceInstance?.params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
2543
- <span class="cstat-no" title="statement not covered" > return 'param';</span>
2544
- }
2545
- }
2546
- &nbsp;
2547
- <span class="cstat-no" title="statement not covered" > return 'variable';</span>
2548
- }
2549
- &nbsp;
2550
- /**
2551
- * 把要返回去的数据做一下排序
2552
- * @param result 要返回数据
2553
- * @param node 当前内容的上下级
2554
- * @returns 返回排序后的数组
2555
- * 因为ts会按照 a-z的顺序进行排序
2556
- * 但是影响用户体验,需要先按照页面排序,其次按照logic进行排序
2557
- * 流程的韬哥自己解决了,所以先解决这两部分
2558
- */
2559
- function <span class="fstat-no" title="function not covered" >sortFirstVariableData(</span>result: CompletionProperty[], node: BaseNode) {
2560
- const newResult: CompletionProperty[] = <span class="cstat-no" title="statement not covered" >[];</span>
2561
- const logic = (<span class="cstat-no" title="statement not covered" >node as Param).logic;</span>
2562
- const view = (<span class="cstat-no" title="statement not covered" >node as Param).view;</span>
2563
- <span class="cstat-no" title="statement not covered" > if (view) {</span>
2564
- const { params, variables } = <span class="cstat-no" title="statement not covered" >view;</span>
2565
- const list = <span class="cstat-no" title="statement not covered" >[...params, ...variables];</span>
2566
- <span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2567
- const findIndex = <span class="cstat-no" title="statement not covered" >result.findIndex(<span class="fstat-no" title="function not covered" >(f</span>indItem) =&gt; <span class="cstat-no" title="statement not covered" >findItem.name === item.name)</span>;</span>
2568
- <span class="cstat-no" title="statement not covered" > if (findIndex !== -1) {</span>
2569
- <span class="cstat-no" title="statement not covered" > newResult.push(result[findIndex]);</span>
2570
- <span class="cstat-no" title="statement not covered" > result.splice(findIndex, 1);</span>
2571
- }
2572
- });
2573
- }
2574
- <span class="cstat-no" title="statement not covered" > if (logic) {</span>
2575
- const { params, returns, variables } = <span class="cstat-no" title="statement not covered" >logic;</span>
2576
- const list = <span class="cstat-no" title="statement not covered" >[...params, ...returns, ...variables];</span>
2577
- <span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; {</span>
2578
- const findIndex = <span class="cstat-no" title="statement not covered" >result.findIndex(<span class="fstat-no" title="function not covered" >(f</span>indItem) =&gt; <span class="cstat-no" title="statement not covered" >findItem.name === item.name)</span>;</span>
2579
- <span class="cstat-no" title="statement not covered" > if (findIndex !== -1) {</span>
2580
- <span class="cstat-no" title="statement not covered" > newResult.push(result[findIndex]);</span>
2581
- <span class="cstat-no" title="statement not covered" > result.splice(findIndex, 1);</span>
2582
- }
2583
- });
2584
- }
2585
- <span class="cstat-no" title="statement not covered" > newResult.push(...result);</span>
2586
- <span class="cstat-no" title="statement not covered" > return newResult;</span>
2587
- }
2588
- export function <span class="fstat-no" title="function not covered" >formatBackendVariables(</span>variables: Array&lt;BackendVariable&gt;) {
2589
- const result = <span class="cstat-no" title="statement not covered" >variables.map(<span class="fstat-no" title="function not covered" >(i</span>temNode) =&gt; {</span>
2590
- const namespace = <span class="cstat-no" title="statement not covered" >itemNode.getNamespace();</span>
2591
- const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
2592
- name: itemNode.name,
2593
- value: itemNode.name,
2594
- expression: new Identifier({
2595
- name: itemNode.name,
2596
- namespace,
2597
- }),
2598
- };
2599
- const noChildType = <span class="cstat-no" title="statement not covered" >isNoChildType(itemNode.typeAnnotation?.typeKey);</span>
2600
- &nbsp;
2601
- <span class="cstat-no" title="statement not covered" > if (!noChildType) {</span>
2602
- <span class="cstat-no" title="statement not covered" > nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);</span>
2603
- }
2604
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2605
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'backendVariable';</span>
2606
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2607
- });
2608
- <span class="cstat-no" title="statement not covered" > return result;</span>
2609
- }
2610
- export function <span class="fstat-no" title="function not covered" >formatFrontEndVariables(</span>frontEndVariables: Array&lt;Variable&gt;) {
2611
- const result = <span class="cstat-no" title="statement not covered" >frontEndVariables.map(<span class="fstat-no" title="function not covered" >(i</span>temNode) =&gt; {</span>
2612
- const namespace = <span class="cstat-no" title="statement not covered" >itemNode.getNamespace();</span>
2613
- const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
2614
- name: itemNode.name,
2615
- value: itemNode.name,
2616
- expression: new Identifier({
2617
- name: itemNode.name,
2618
- namespace,
2619
- }),
2620
- };
2621
- const noChildType = <span class="cstat-no" title="statement not covered" >isNoChildType(itemNode.typeAnnotation?.typeKey);</span>
2622
- &nbsp;
2623
- <span class="cstat-no" title="statement not covered" > if (!noChildType) {</span>
2624
- <span class="cstat-no" title="statement not covered" > nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);</span>
2625
- }
2626
- const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
2627
- <span class="cstat-no" title="statement not covered" > completionProperty.icon = 'frontendVariable';</span>
2628
- <span class="cstat-no" title="statement not covered" > return completionProperty;</span>
2629
- });
2630
- <span class="cstat-no" title="statement not covered" > return result;</span>
2631
- }
2632
- &nbsp;
2633
- export function <span class="fstat-no" title="function not covered" >formatConfigProperties(</span>configProperties: Array&lt;ConfigProperty&gt;, isView: Boolean) {
2634
- const result = <span class="cstat-no" title="statement not covered" >configProperties.reduce(<span class="fstat-no" title="function not covered" >(p</span>re: any, item) =&gt; {</span>
2635
- const { isPrivate = <span class="branch-0 cbranch-no" title="branch not covered" >false </span>} = <span class="cstat-no" title="statement not covered" >item;</span>
2636
- &nbsp;
2637
- <span class="cstat-no" title="statement not covered" > if (!isPrivate || !isView) {</span>
2638
- const namespace = <span class="cstat-no" title="statement not covered" >item.getNamespace();</span>
2639
- const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
2640
- name: item.name,
2641
- value: item.name,
2642
- expression: new Identifier({
2643
- name: item.name,
2644
- namespace,
2645
- }),
2646
- icon: 'configProperty',
2647
- calleewholeKey: item.calleewholeKey,
2648
- };
2649
- &nbsp;
2650
- <span class="cstat-no" title="statement not covered" > pre.push(newItem);</span>
2651
- }
2652
- <span class="cstat-no" title="statement not covered" > return pre;</span>
2653
- }, []);
2654
- // const result = configProperties.map((item) =&gt; {
2655
- // const namespace = item.getNamespace();
2656
- // const newItem: any = {
2657
- // name: item.name,
2658
- // value: item.name,
2659
- // expression: new Identifier({
2660
- // name: item.name,
2661
- // namespace,
2662
- // }),
2663
- // icon: 'configProperty',
2664
- // calleewholeKey: item.calleewholeKey,
2665
- // };
2666
- // return newItem;
2667
- // });
2668
- <span class="cstat-no" title="statement not covered" > return result;</span>
2669
- }
2670
- &nbsp;</pre></td></tr></table></pre>
2671
-
2672
- <div class='push'></div><!-- for sticky footer -->
2673
- </div><!-- /wrapper -->
2674
- <div class='footer quiet pad2 space-top1 center small'>
2675
- Code coverage generated by
2676
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2677
- at 2023-10-18T11:36:07.885Z
2678
- </div>
2679
- <script src="../../prettify.js"></script>
2680
- <script>
2681
- window.onload = function () {
2682
- prettyPrint();
2683
- };
2684
- </script>
2685
- <script src="../../sorter.js"></script>
2686
- <script src="../../block-navigation.js"></script>
2687
- </body>
2688
- </html>
2689
-