@budibase/server 2.3.14-alpha.0 → 2.3.14

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 (550) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.a534ca24.css → index.4488f38d.css} +1 -1
  3. package/builder/assets/{index.d7529be1.js → index.c07b0111.js} +235 -235
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +6679 -11409
  6. package/coverage/coverage-final.json +271 -356
  7. package/coverage/lcov-report/index.html +195 -420
  8. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +6 -6
  9. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
  10. package/coverage/lcov-report/src/api/controllers/application.ts.html +140 -140
  11. package/coverage/lcov-report/src/api/controllers/auth.ts.html +9 -9
  12. package/coverage/lcov-report/src/api/controllers/automation.ts.html +47 -47
  13. package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
  14. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +26 -26
  15. package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
  16. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +37 -37
  17. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
  18. package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
  19. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +81 -81
  20. package/coverage/lcov-report/src/api/controllers/dev.ts.html +26 -26
  21. package/coverage/lcov-report/src/api/controllers/index.html +37 -37
  22. package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
  23. package/coverage/lcov-report/src/api/controllers/layout.ts.html +15 -15
  24. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
  25. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
  26. package/coverage/lcov-report/src/api/controllers/permission.ts.html +34 -34
  27. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +2 -2
  28. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +4 -4
  29. package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
  30. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +18 -18
  31. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +5 -5
  32. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +5 -5
  33. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +3 -3
  34. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +3 -3
  35. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +6 -6
  36. package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
  37. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
  38. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
  39. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
  40. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
  41. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
  42. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
  43. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
  44. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +4 -4
  45. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +5 -5
  46. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +4 -4
  47. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +6 -6
  48. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +4 -4
  49. package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
  50. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +7 -7
  51. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
  52. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +3 -3
  53. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
  54. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +7 -7
  55. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
  56. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +9 -9
  57. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +13 -13
  58. package/coverage/lcov-report/src/api/controllers/query/index.html +10 -10
  59. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +55 -61
  60. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +9 -9
  61. package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
  62. package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
  63. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +419 -431
  64. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +175 -211
  65. package/coverage/lcov-report/src/api/controllers/row/index.html +42 -42
  66. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +79 -79
  67. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +34 -34
  68. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +6 -6
  69. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +22 -22
  70. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +31 -31
  71. package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
  72. package/coverage/lcov-report/src/api/controllers/script.ts.html +2 -2
  73. package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
  74. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +22 -22
  75. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +51 -51
  76. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +195 -198
  77. package/coverage/lcov-report/src/api/controllers/table/index.html +47 -47
  78. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +42 -42
  79. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +61 -61
  80. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +63 -63
  81. package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
  82. package/coverage/lcov-report/src/api/controllers/user.ts.html +28 -28
  83. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +2 -2
  84. package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
  85. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +16 -16
  86. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +5 -5
  87. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +7 -7
  88. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +25 -25
  89. package/coverage/lcov-report/src/api/index.html +1 -1
  90. package/coverage/lcov-report/src/api/index.ts.html +27 -27
  91. package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
  92. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
  93. package/coverage/lcov-report/src/api/routes/application.ts.html +10 -10
  94. package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
  95. package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
  96. package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
  97. package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
  98. package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
  99. package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
  100. package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
  101. package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
  102. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  103. package/coverage/lcov-report/src/api/routes/index.ts.html +35 -35
  104. package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
  105. package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
  106. package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
  107. package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
  108. package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
  109. package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
  110. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +17 -14
  111. package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
  112. package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
  113. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
  114. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +4 -4
  115. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
  116. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
  117. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
  118. package/coverage/lcov-report/src/api/routes/public/tests/index.html +12 -42
  119. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +27 -78
  120. package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
  121. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
  122. package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
  123. package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
  124. package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
  125. package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
  126. package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
  127. package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
  128. package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
  129. package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
  130. package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
  131. package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
  132. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +41 -110
  133. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +19 -19
  134. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +23 -29
  135. package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
  136. package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
  137. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
  138. package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
  139. package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
  140. package/coverage/lcov-report/src/app.ts.html +37 -40
  141. package/coverage/lcov-report/src/automations/actions.ts.html +24 -24
  142. package/coverage/lcov-report/src/automations/automationUtils.ts.html +4 -4
  143. package/coverage/lcov-report/src/automations/bullboard.ts.html +9 -9
  144. package/coverage/lcov-report/src/automations/index.html +27 -27
  145. package/coverage/lcov-report/src/automations/index.ts.html +5 -5
  146. package/coverage/lcov-report/src/automations/logging/index.html +1 -1
  147. package/coverage/lcov-report/src/automations/logging/index.ts.html +10 -10
  148. package/coverage/lcov-report/src/automations/steps/bash.ts.html +8 -8
  149. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
  150. package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
  151. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
  152. package/coverage/lcov-report/src/automations/steps/discord.ts.html +8 -8
  153. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +7 -7
  154. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +7 -7
  155. package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
  156. package/coverage/lcov-report/src/automations/steps/index.html +1 -1
  157. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
  158. package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
  159. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +9 -9
  160. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +13 -13
  161. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +6 -6
  162. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +4 -4
  163. package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
  164. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
  165. package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
  166. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +6 -6
  167. package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
  168. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
  169. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
  170. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
  171. package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
  172. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
  173. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
  174. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
  175. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
  176. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
  177. package/coverage/lcov-report/src/automations/triggers.ts.html +44 -44
  178. package/coverage/lcov-report/src/automations/utils.ts.html +63 -63
  179. package/coverage/lcov-report/src/constants/index.html +16 -16
  180. package/coverage/lcov-report/src/constants/index.ts.html +99 -33
  181. package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
  182. package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
  183. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +45 -33
  184. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
  185. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
  186. package/coverage/lcov-report/src/db/defaultData/index.html +11 -11
  187. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
  188. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
  189. package/coverage/lcov-report/src/db/dynamoClient.ts.html +15 -15
  190. package/coverage/lcov-report/src/db/inMemoryView.ts.html +4 -4
  191. package/coverage/lcov-report/src/db/index.html +16 -16
  192. package/coverage/lcov-report/src/db/index.ts.html +19 -19
  193. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +23 -26
  194. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
  195. package/coverage/lcov-report/src/db/linkedRows/index.html +10 -10
  196. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +23 -23
  197. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +10 -10
  198. package/coverage/lcov-report/src/db/newid.ts.html +4 -4
  199. package/coverage/lcov-report/src/db/utils.ts.html +52 -52
  200. package/coverage/lcov-report/src/definitions/automations.ts.html +2 -2
  201. package/coverage/lcov-report/src/definitions/index.html +1 -1
  202. package/coverage/lcov-report/src/environment.ts.html +31 -31
  203. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
  204. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +6 -6
  205. package/coverage/lcov-report/src/events/index.html +1 -1
  206. package/coverage/lcov-report/src/events/index.ts.html +4 -4
  207. package/coverage/lcov-report/src/events/utils.ts.html +10 -10
  208. package/coverage/lcov-report/src/index.html +16 -16
  209. package/coverage/lcov-report/src/index.ts.html +1 -1
  210. package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
  211. package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
  212. package/coverage/lcov-report/src/integrations/base/index.html +30 -30
  213. package/coverage/lcov-report/src/integrations/base/query.ts.html +9 -9
  214. package/coverage/lcov-report/src/integrations/base/sql.ts.html +223 -214
  215. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +107 -107
  216. package/coverage/lcov-report/src/integrations/base/utils.ts.html +5 -5
  217. package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
  218. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
  219. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
  220. package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
  221. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
  222. package/coverage/lcov-report/src/integrations/index.html +27 -27
  223. package/coverage/lcov-report/src/integrations/index.ts.html +40 -40
  224. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
  225. package/coverage/lcov-report/src/integrations/mongodb.ts.html +11 -11
  226. package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
  227. package/coverage/lcov-report/src/integrations/oracle.ts.html +14 -14
  228. package/coverage/lcov-report/src/integrations/postgres.ts.html +68 -68
  229. package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
  230. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +8 -8
  231. package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
  232. package/coverage/lcov-report/src/integrations/rest.ts.html +15 -15
  233. package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
  234. package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
  235. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
  236. package/coverage/lcov-report/src/integrations/tests/index.html +5 -230
  237. package/coverage/lcov-report/src/integrations/utils.ts.html +77 -77
  238. package/coverage/lcov-report/src/middleware/appInfo.ts.html +5 -5
  239. package/coverage/lcov-report/src/middleware/authorized.ts.html +29 -29
  240. package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
  241. package/coverage/lcov-report/src/middleware/currentapp.ts.html +53 -53
  242. package/coverage/lcov-report/src/middleware/index.html +15 -15
  243. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
  244. package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
  245. package/coverage/lcov-report/src/middleware/resourceId.ts.html +28 -28
  246. package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
  247. package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
  248. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
  249. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
  250. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
  251. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
  252. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
  253. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
  254. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
  255. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
  256. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
  257. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
  258. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +6 -6
  259. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
  260. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
  261. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
  262. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
  263. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
  264. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
  265. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
  266. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  267. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
  268. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
  269. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
  270. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
  271. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
  272. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
  273. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
  274. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
  275. package/coverage/lcov-report/src/migrations/index.html +1 -1
  276. package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
  277. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
  278. package/coverage/lcov-report/src/migrations/tests/index.html +8 -23
  279. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
  280. package/coverage/lcov-report/src/sdk/app/applications/index.html +1 -1
  281. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
  282. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +22 -22
  283. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
  284. package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
  285. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
  286. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +10 -10
  287. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
  288. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +23 -41
  289. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +18 -18
  290. package/coverage/lcov-report/src/sdk/app/backups/index.html +10 -10
  291. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
  292. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +7 -7
  293. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +60 -69
  294. package/coverage/lcov-report/src/sdk/app/datasources/index.html +19 -19
  295. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +3 -3
  296. package/coverage/lcov-report/src/sdk/app/queries/index.html +1 -1
  297. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +3 -3
  298. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +11 -11
  299. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +6 -6
  300. package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
  301. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
  302. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
  303. package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
  304. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +10 -10
  305. package/coverage/lcov-report/src/sdk/index.html +1 -1
  306. package/coverage/lcov-report/src/sdk/index.ts.html +11 -11
  307. package/coverage/lcov-report/src/sdk/users/index.html +1 -1
  308. package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
  309. package/coverage/lcov-report/src/sdk/users/utils.ts.html +31 -31
  310. package/coverage/lcov-report/src/sdk/utils/index.html +1 -1
  311. package/coverage/lcov-report/src/sdk/utils/index.ts.html +11 -11
  312. package/coverage/lcov-report/src/startup.ts.html +42 -42
  313. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +193 -421
  314. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
  315. package/coverage/lcov-report/src/tests/utilities/index.html +28 -28
  316. package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
  317. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +35 -77
  318. package/coverage/lcov-report/src/threads/automation.ts.html +22 -22
  319. package/coverage/lcov-report/src/threads/index.html +1 -1
  320. package/coverage/lcov-report/src/threads/index.ts.html +24 -24
  321. package/coverage/lcov-report/src/threads/query.ts.html +76 -76
  322. package/coverage/lcov-report/src/threads/utils.ts.html +12 -12
  323. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
  324. package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
  325. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +17 -17
  326. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
  327. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +25 -25
  328. package/coverage/lcov-report/src/utilities/fileSystem/index.html +1 -1
  329. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
  330. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
  331. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
  332. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
  333. package/coverage/lcov-report/src/utilities/global.ts.html +40 -40
  334. package/coverage/lcov-report/src/utilities/index.html +19 -34
  335. package/coverage/lcov-report/src/utilities/index.ts.html +26 -26
  336. package/coverage/lcov-report/src/utilities/redis.ts.html +12 -12
  337. package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
  338. package/coverage/lcov-report/src/utilities/routing/index.ts.html +4 -4
  339. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +19 -19
  340. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +49 -49
  341. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
  342. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
  343. package/coverage/lcov-report/src/utilities/schema.ts.html +3 -3
  344. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +5 -5
  345. package/coverage/lcov-report/src/utilities/security.ts.html +22 -22
  346. package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
  347. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
  348. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
  349. package/coverage/lcov-report/src/utilities/users.ts.html +4 -4
  350. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +15 -15
  351. package/coverage/lcov-report/src/watch.ts.html +7 -7
  352. package/coverage/lcov-report/src/websocket.ts.html +5 -5
  353. package/coverage/lcov.info +12121 -19834
  354. package/dist/api/controllers/query/index.js +0 -2
  355. package/dist/api/controllers/row/ExternalRequest.js +2 -4
  356. package/dist/api/controllers/row/external.js +1 -12
  357. package/dist/api/controllers/table/external.js +8 -8
  358. package/dist/api/routes/public/tests/utils.js +2 -29
  359. package/dist/app.js +1 -1
  360. package/dist/constants/index.js +24 -4
  361. package/dist/db/defaultData/datasource_bb_default.js +5 -6
  362. package/dist/db/linkedRows/LinkController.js +8 -9
  363. package/dist/integrations/base/sql.js +14 -10
  364. package/dist/package.json +0 -2
  365. package/dist/sdk/app/backups/exports.js +2 -8
  366. package/dist/sdk/app/datasources/datasources.js +0 -3
  367. package/dist/tsconfig.build.tsbuildinfo +1 -1
  368. package/jest.config.ts +11 -28
  369. package/package.json +6 -8
  370. package/specs/openapi.json +6 -6
  371. package/specs/openapi.yaml +3 -3
  372. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  373. package/src/api/controllers/query/index.ts +0 -2
  374. package/src/api/controllers/row/ExternalRequest.ts +2 -6
  375. package/src/api/controllers/row/external.ts +1 -13
  376. package/src/api/controllers/table/external.ts +2 -3
  377. package/src/api/routes/public/applications.ts +1 -0
  378. package/src/api/routes/public/tests/compare.spec.js +1 -1
  379. package/src/api/routes/public/tests/users.spec.js +1 -1
  380. package/src/api/routes/public/tests/utils.ts +8 -25
  381. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  382. package/src/api/routes/tests/analytics.spec.js +1 -4
  383. package/src/api/routes/tests/apikeys.spec.js +1 -1
  384. package/src/api/routes/tests/application.spec.ts +6 -20
  385. package/src/api/routes/tests/auth.spec.js +2 -2
  386. package/src/api/routes/tests/automation.spec.js +2 -6
  387. package/src/api/routes/tests/backup.spec.ts +13 -4
  388. package/src/api/routes/tests/{cloud.seq.spec.ts → cloud.spec.ts} +15 -11
  389. package/src/api/routes/tests/component.spec.js +1 -1
  390. package/src/api/routes/tests/datasource.spec.ts +3 -20
  391. package/src/api/routes/tests/dev.spec.js +1 -1
  392. package/src/api/routes/tests/integration.spec.js +1 -1
  393. package/src/api/routes/tests/layout.spec.js +1 -1
  394. package/src/api/routes/tests/metadata.spec.js +1 -1
  395. package/src/api/routes/tests/misc.spec.js +1 -1
  396. package/src/api/routes/tests/permissions.spec.js +1 -4
  397. package/src/api/routes/tests/{query.seq.spec.js → query.spec.js} +1 -22
  398. package/src/api/routes/tests/role.spec.js +1 -6
  399. package/src/api/routes/tests/routing.spec.js +1 -1
  400. package/src/api/routes/tests/row.spec.js +3 -11
  401. package/src/api/routes/tests/screen.spec.js +1 -1
  402. package/src/api/routes/tests/static.spec.js +1 -2
  403. package/src/api/routes/tests/table.spec.js +1 -1
  404. package/src/api/routes/tests/templates.spec.js +1 -1
  405. package/src/api/routes/tests/user.spec.js +12 -12
  406. package/src/api/routes/tests/utilities/TestFunctions.ts +2 -25
  407. package/src/api/routes/tests/utilities/index.ts +3 -5
  408. package/src/api/routes/tests/view.spec.js +1 -4
  409. package/src/api/routes/tests/webhook.spec.js +2 -11
  410. package/src/app.ts +1 -2
  411. package/src/automations/tests/automation.spec.js +4 -4
  412. package/src/automations/tests/bash.spec.js +1 -1
  413. package/src/automations/tests/discord.spec.js +1 -1
  414. package/src/automations/tests/executeQuery.spec.js +3 -2
  415. package/src/automations/tests/executeScript.spec.js +1 -1
  416. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  417. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  418. package/src/automations/tests/serverLog.spec.js +1 -1
  419. package/src/automations/tests/updateRow.spec.js +1 -1
  420. package/src/automations/tests/zapier.spec.js +1 -1
  421. package/src/constants/index.ts +23 -1
  422. package/src/db/defaultData/datasource_bb_default.ts +10 -6
  423. package/src/db/linkedRows/LinkController.ts +1 -2
  424. package/src/db/tests/linkController.spec.js +1 -4
  425. package/src/db/tests/linkTests.spec.js +1 -1
  426. package/src/integrations/base/sql.ts +18 -15
  427. package/src/integrations/oracle.ts +1 -1
  428. package/src/integrations/tests/sql.spec.ts +38 -0
  429. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  430. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  431. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  432. package/src/migrations/tests/index.spec.ts +20 -13
  433. package/src/sdk/app/backups/exports.ts +2 -8
  434. package/src/sdk/app/datasources/datasources.ts +0 -3
  435. package/src/tests/jestEnv.ts +6 -2
  436. package/src/tests/jestSetup.ts +7 -8
  437. package/src/tests/utilities/TestConfiguration.ts +50 -126
  438. package/src/tests/utilities/structures.ts +2 -16
  439. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/curl.spec.js.html +0 -391
  440. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/curl/index.html +0 -116
  441. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/index.html +0 -116
  442. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js.html +0 -796
  443. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/index.html +0 -116
  444. package/coverage/lcov-report/src/api/controllers/query/import/sources/tests/openapi3/openapi3.spec.js.html +0 -805
  445. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.html +0 -116
  446. package/coverage/lcov-report/src/api/controllers/query/import/tests/index.spec.js.html +0 -568
  447. package/coverage/lcov-report/src/api/controllers/view/tests/index.html +0 -116
  448. package/coverage/lcov-report/src/api/controllers/view/tests/viewBuilder.spec.js.html +0 -277
  449. package/coverage/lcov-report/src/api/routes/public/tests/compare.spec.js.html +0 -583
  450. package/coverage/lcov-report/src/api/routes/public/tests/users.spec.js.html +0 -199
  451. package/coverage/lcov-report/src/api/routes/tests/analytics.spec.js.html +0 -271
  452. package/coverage/lcov-report/src/api/routes/tests/apikeys.spec.js.html +0 -259
  453. package/coverage/lcov-report/src/api/routes/tests/application.spec.ts.html +0 -1066
  454. package/coverage/lcov-report/src/api/routes/tests/auth.spec.js.html +0 -154
  455. package/coverage/lcov-report/src/api/routes/tests/automation.spec.js.html +0 -1123
  456. package/coverage/lcov-report/src/api/routes/tests/backup.spec.ts.html +0 -223
  457. package/coverage/lcov-report/src/api/routes/tests/cloud.seq.spec.ts.html +0 -268
  458. package/coverage/lcov-report/src/api/routes/tests/component.spec.js.html +0 -178
  459. package/coverage/lcov-report/src/api/routes/tests/datasource.spec.ts.html +0 -799
  460. package/coverage/lcov-report/src/api/routes/tests/dev.spec.js.html +0 -202
  461. package/coverage/lcov-report/src/api/routes/tests/environmentVariables.spec.ts.html +0 -517
  462. package/coverage/lcov-report/src/api/routes/tests/index.html +0 -536
  463. package/coverage/lcov-report/src/api/routes/tests/integration.spec.js.html +0 -238
  464. package/coverage/lcov-report/src/api/routes/tests/internalSearch.spec.js.html +0 -670
  465. package/coverage/lcov-report/src/api/routes/tests/layout.spec.js.html +0 -259
  466. package/coverage/lcov-report/src/api/routes/tests/metadata.spec.js.html +0 -280
  467. package/coverage/lcov-report/src/api/routes/tests/misc.spec.js.html +0 -358
  468. package/coverage/lcov-report/src/api/routes/tests/permissions.spec.js.html +0 -484
  469. package/coverage/lcov-report/src/api/routes/tests/plugin.spec.ts.html +0 -622
  470. package/coverage/lcov-report/src/api/routes/tests/query.seq.spec.js.html +0 -1699
  471. package/coverage/lcov-report/src/api/routes/tests/role.spec.js.html +0 -478
  472. package/coverage/lcov-report/src/api/routes/tests/routing.spec.js.html +0 -430
  473. package/coverage/lcov-report/src/api/routes/tests/row.spec.js.html +0 -1804
  474. package/coverage/lcov-report/src/api/routes/tests/screen.spec.js.html +0 -391
  475. package/coverage/lcov-report/src/api/routes/tests/static.spec.js.html +0 -541
  476. package/coverage/lcov-report/src/api/routes/tests/table.spec.js.html +0 -991
  477. package/coverage/lcov-report/src/api/routes/tests/templates.spec.js.html +0 -154
  478. package/coverage/lcov-report/src/api/routes/tests/user.spec.js.html +0 -679
  479. package/coverage/lcov-report/src/api/routes/tests/view.spec.js.html +0 -1342
  480. package/coverage/lcov-report/src/api/routes/tests/webhook.spec.js.html +0 -484
  481. package/coverage/lcov-report/src/automations/tests/automation.spec.js.html +0 -337
  482. package/coverage/lcov-report/src/automations/tests/bash.spec.js.html +0 -187
  483. package/coverage/lcov-report/src/automations/tests/createRow.spec.ts.html +0 -223
  484. package/coverage/lcov-report/src/automations/tests/delay.spec.js.html +0 -133
  485. package/coverage/lcov-report/src/automations/tests/deleteRow.spec.ts.html +0 -250
  486. package/coverage/lcov-report/src/automations/tests/discord.spec.js.html +0 -166
  487. package/coverage/lcov-report/src/automations/tests/executeQuery.spec.js.html +0 -229
  488. package/coverage/lcov-report/src/automations/tests/executeScript.spec.js.html +0 -229
  489. package/coverage/lcov-report/src/automations/tests/filter.spec.js.html +0 -232
  490. package/coverage/lcov-report/src/automations/tests/index.html +0 -341
  491. package/coverage/lcov-report/src/automations/tests/loop.spec.ts.html +0 -220
  492. package/coverage/lcov-report/src/automations/tests/outgoingWebhook.spec.js.html +0 -202
  493. package/coverage/lcov-report/src/automations/tests/queryRows.spec.js.html +0 -436
  494. package/coverage/lcov-report/src/automations/tests/sendSmtpEmail.spec.js.html +0 -298
  495. package/coverage/lcov-report/src/automations/tests/serverLog.spec.js.html +0 -151
  496. package/coverage/lcov-report/src/automations/tests/updateRow.spec.js.html +0 -217
  497. package/coverage/lcov-report/src/automations/tests/zapier.spec.js.html +0 -166
  498. package/coverage/lcov-report/src/automations/unitTests/automationUtils.spec.ts.html +0 -280
  499. package/coverage/lcov-report/src/automations/unitTests/index.html +0 -116
  500. package/coverage/lcov-report/src/db/tests/index.html +0 -131
  501. package/coverage/lcov-report/src/db/tests/linkController.spec.js.html +0 -793
  502. package/coverage/lcov-report/src/db/tests/linkTests.spec.js.html +0 -277
  503. package/coverage/lcov-report/src/integration-test/index.html +0 -116
  504. package/coverage/lcov-report/src/integration-test/postgres.spec.ts.html +0 -2341
  505. package/coverage/lcov-report/src/integrations/tests/airtable.spec.ts.html +0 -310
  506. package/coverage/lcov-report/src/integrations/tests/arangodb.spec.ts.html +0 -199
  507. package/coverage/lcov-report/src/integrations/tests/couchdb.spec.ts.html +0 -349
  508. package/coverage/lcov-report/src/integrations/tests/dynamodb.spec.ts.html +0 -550
  509. package/coverage/lcov-report/src/integrations/tests/elasticsearch.spec.ts.html +0 -331
  510. package/coverage/lcov-report/src/integrations/tests/firebase.spec.ts.html +0 -376
  511. package/coverage/lcov-report/src/integrations/tests/microsoftSqlServer.spec.ts.html +0 -253
  512. package/coverage/lcov-report/src/integrations/tests/mongo.spec.ts.html +0 -1087
  513. package/coverage/lcov-report/src/integrations/tests/mysql.spec.ts.html +0 -484
  514. package/coverage/lcov-report/src/integrations/tests/oracle.spec.ts.html +0 -373
  515. package/coverage/lcov-report/src/integrations/tests/postgres.spec.ts.html +0 -328
  516. package/coverage/lcov-report/src/integrations/tests/redis.spec.ts.html +0 -337
  517. package/coverage/lcov-report/src/integrations/tests/rest.spec.ts.html +0 -1870
  518. package/coverage/lcov-report/src/integrations/tests/s3.spec.ts.html +0 -421
  519. package/coverage/lcov-report/src/integrations/tests/sql.spec.ts.html +0 -1753
  520. package/coverage/lcov-report/src/middleware/tests/authorized.spec.js.html +0 -574
  521. package/coverage/lcov-report/src/middleware/tests/currentapp.spec.js.html +0 -814
  522. package/coverage/lcov-report/src/middleware/tests/index.html +0 -161
  523. package/coverage/lcov-report/src/middleware/tests/resourceId.spec.js.html +0 -397
  524. package/coverage/lcov-report/src/middleware/tests/selfhost.spec.js.html +0 -214
  525. package/coverage/lcov-report/src/migrations/functions/tests/appUrls.spec.js.html +0 -163
  526. package/coverage/lcov-report/src/migrations/functions/tests/index.html +0 -161
  527. package/coverage/lcov-report/src/migrations/functions/tests/syncQuotas.spec.js.html +0 -163
  528. package/coverage/lcov-report/src/migrations/functions/tests/tableSettings.spec.ts.html +0 -517
  529. package/coverage/lcov-report/src/migrations/functions/tests/userEmailViewCasing.spec.js.html +0 -190
  530. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/index.html +0 -131
  531. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncApps.spec.ts.html +0 -190
  532. package/coverage/lcov-report/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts.html +0 -244
  533. package/coverage/lcov-report/src/migrations/tests/index.spec.ts.html +0 -511
  534. package/coverage/lcov-report/src/sdk/tests/attachments.spec.ts.html +0 -313
  535. package/coverage/lcov-report/src/sdk/tests/index.html +0 -116
  536. package/coverage/lcov-report/src/utilities/retry.ts.html +0 -139
  537. package/coverage/lcov-report/src/utilities/rowProcessor/tests/index.html +0 -116
  538. package/coverage/lcov-report/src/utilities/rowProcessor/tests/utils.spec.ts.html +0 -256
  539. package/dist/api/routes/tests/utilities/index.js +0 -131
  540. package/dist/tests/utilities/TestConfiguration.js +0 -626
  541. package/dist/tests/utilities/controllers.js +0 -40
  542. package/dist/tests/utilities/structures.js +0 -234
  543. package/dist/utilities/retry.js +0 -30
  544. package/jest-testcontainers-config.js +0 -8
  545. package/scripts/load/create-many-apps.js +0 -24
  546. package/scripts/load/create-many-rows.js +0 -30
  547. package/scripts/load/utils.js +0 -66
  548. package/src/api/routes/tests/environmentVariables.spec.ts +0 -144
  549. package/src/integration-test/postgres.spec.ts +0 -752
  550. package/src/utilities/retry.ts +0 -18
@@ -1,1870 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/integrations/tests/rest.spec.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/integrations/tests</a> rest.spec.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/218</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/7</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/48</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/217</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></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-no">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-no">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-no">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
696
- <span class="cline-any cline-no">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-no">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-no">&nbsp;</span>
707
- <span class="cline-any cline-no">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-no">&nbsp;</span>
717
- <span class="cline-any cline-no">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-no">&nbsp;</span>
725
- <span class="cline-any cline-no">&nbsp;</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-no">&nbsp;</span>
733
- <span class="cline-any cline-no">&nbsp;</span>
734
- <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-no">&nbsp;</span>
742
- <span class="cline-any cline-no">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-no">&nbsp;</span>
754
- <span class="cline-any cline-no">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-no">&nbsp;</span>
762
- <span class="cline-any cline-no">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-no">&nbsp;</span>
774
- <span class="cline-any cline-no">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-no">&nbsp;</span>
782
- <span class="cline-any cline-no">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-no">&nbsp;</span>
785
- <span class="cline-any cline-no">&nbsp;</span>
786
- <span class="cline-any cline-no">&nbsp;</span>
787
- <span class="cline-any cline-no">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-no">&nbsp;</span>
791
- <span class="cline-any cline-no">&nbsp;</span>
792
- <span class="cline-any cline-no">&nbsp;</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-no">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-no">&nbsp;</span>
798
- <span class="cline-any cline-no">&nbsp;</span>
799
- <span class="cline-any cline-no">&nbsp;</span>
800
- <span class="cline-any cline-no">&nbsp;</span>
801
- <span class="cline-any cline-no">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-no">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-no">&nbsp;</span>
807
- <span class="cline-any cline-no">&nbsp;</span>
808
- <span class="cline-any cline-no">&nbsp;</span>
809
- <span class="cline-any cline-no">&nbsp;</span>
810
- <span class="cline-any cline-no">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-no">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-no">&nbsp;</span>
816
- <span class="cline-any cline-no">&nbsp;</span>
817
- <span class="cline-any cline-no">&nbsp;</span>
818
- <span class="cline-any cline-no">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-no">&nbsp;</span>
822
- <span class="cline-any cline-no">&nbsp;</span>
823
- <span class="cline-any cline-no">&nbsp;</span>
824
- <span class="cline-any cline-no">&nbsp;</span>
825
- <span class="cline-any cline-no">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-no">&nbsp;</span>
829
- <span class="cline-any cline-no">&nbsp;</span>
830
- <span class="cline-any cline-no">&nbsp;</span>
831
- <span class="cline-any cline-no">&nbsp;</span>
832
- <span class="cline-any cline-no">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-no">&nbsp;</span>
836
- <span class="cline-any cline-no">&nbsp;</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-no">&nbsp;</span>
842
- <span class="cline-any cline-no">&nbsp;</span>
843
- <span class="cline-any cline-no">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-no">&nbsp;</span>
848
- <span class="cline-any cline-neutral">&nbsp;</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-no">&nbsp;</span>
852
- <span class="cline-any cline-no">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-no">&nbsp;</span>
855
- <span class="cline-any cline-no">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-no">&nbsp;</span>
861
- <span class="cline-any cline-no">&nbsp;</span>
862
- <span class="cline-any cline-no">&nbsp;</span>
863
- <span class="cline-any cline-no">&nbsp;</span>
864
- <span class="cline-any cline-no">&nbsp;</span>
865
- <span class="cline-any cline-no">&nbsp;</span>
866
- <span class="cline-any cline-no">&nbsp;</span>
867
- <span class="cline-any cline-no">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-no">&nbsp;</span>
871
- <span class="cline-any cline-no">&nbsp;</span>
872
- <span class="cline-any cline-no">&nbsp;</span>
873
- <span class="cline-any cline-no">&nbsp;</span>
874
- <span class="cline-any cline-no">&nbsp;</span>
875
- <span class="cline-any cline-no">&nbsp;</span>
876
- <span class="cline-any cline-no">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-no">&nbsp;</span>
880
- <span class="cline-any cline-no">&nbsp;</span>
881
- <span class="cline-any cline-no">&nbsp;</span>
882
- <span class="cline-any cline-no">&nbsp;</span>
883
- <span class="cline-any cline-no">&nbsp;</span>
884
- <span class="cline-any cline-no">&nbsp;</span>
885
- <span class="cline-any cline-no">&nbsp;</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-no">&nbsp;</span>
890
- <span class="cline-any cline-no">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-no">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-no">&nbsp;</span>
910
- <span class="cline-any cline-no">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-no">&nbsp;</span>
917
- <span class="cline-any cline-no">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-no">&nbsp;</span>
921
- <span class="cline-any cline-no">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-no">&nbsp;</span>
930
- <span class="cline-any cline-no">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-no">&nbsp;</span>
934
- <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-no">&nbsp;</span>
947
- <span class="cline-any cline-no">&nbsp;</span>
948
- <span class="cline-any cline-no">&nbsp;</span>
949
- <span class="cline-any cline-no">&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-neutral">&nbsp;</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-no">&nbsp;</span>
963
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
973
- <span class="cline-any cline-no">&nbsp;</span>
974
- <span class="cline-any cline-no">&nbsp;</span>
975
- <span class="cline-any cline-no">&nbsp;</span>
976
- <span class="cline-any cline-no">&nbsp;</span>
977
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-no">&nbsp;</span>
992
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-neutral">&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-no">&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-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-no">&nbsp;</span>
1032
- <span class="cline-any cline-no">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-no">&nbsp;</span>
1037
- <span class="cline-any cline-no">&nbsp;</span>
1038
- <span class="cline-any cline-no">&nbsp;</span>
1039
- <span class="cline-any cline-no">&nbsp;</span>
1040
- <span class="cline-any cline-no">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&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-neutral">&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-no">&nbsp;</span>
1062
- <span class="cline-any cline-no">&nbsp;</span>
1063
- <span class="cline-any cline-no">&nbsp;</span>
1064
- <span class="cline-any cline-no">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-no">&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-neutral">&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-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-no">&nbsp;</span>
1090
- <span class="cline-any cline-no">&nbsp;</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-no">&nbsp;</span>
1101
- <span class="cline-any cline-no">&nbsp;</span>
1102
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-no">&nbsp;</span>
1121
- <span class="cline-any cline-no">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1139
- <span class="cline-any cline-no">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-neutral">&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-no">&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-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-no">&nbsp;</span>
1162
- <span class="cline-any cline-no">&nbsp;</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-no">&nbsp;</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-no">&nbsp;</span>
1168
- <span class="cline-any cline-no">&nbsp;</span>
1169
- <span class="cline-any cline-no">&nbsp;</span>
1170
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1189
- <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-neutral">&nbsp;</span>
1202
- <span class="cline-any cline-no">&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-neutral">&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-no">&nbsp;</span>
1213
- <span class="cline-any cline-no">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1226
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
1239
- <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
1247
- <span class="cline-any cline-no">&nbsp;</span>
1248
- <span class="cline-any cline-no">&nbsp;</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-no">&nbsp;</span>
1251
- <span class="cline-any cline-no">&nbsp;</span>
1252
- <span class="cline-any cline-no">&nbsp;</span>
1253
- <span class="cline-any cline-no">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >jest.mock("node-fetch", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1257
- <span class="cstat-no" title="statement not covered" > return jest.fn(<span class="fstat-no" title="function not covered" >() =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span></span>
1258
- headers: {
1259
- raw: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
1260
- <span class="cstat-no" title="statement not covered" > return { "content-type": ["application/json"] }</span>
1261
- },
1262
- get: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >[</span>"application/json"],</span>
1263
- },
1264
- json: jest.fn(<span class="fstat-no" title="function not covered" >() =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
1265
- my_next_cursor: 123,
1266
- })),
1267
- text: jest.fn(),
1268
- }))
1269
- })
1270
- &nbsp;
1271
- import fetch from "node-fetch"
1272
- import { default as RestIntegration } from "../rest"
1273
- import { RestAuthType } from "@budibase/types"
1274
- const FormData = <span class="cstat-no" title="statement not covered" >require("form-data")</span>
1275
- const { URLSearchParams } = <span class="cstat-no" title="statement not covered" >require("url")</span>
1276
- &nbsp;
1277
- const HEADERS = <span class="cstat-no" title="statement not covered" >{</span>
1278
- Accept: "application/json",
1279
- "Content-Type": "application/json",
1280
- }
1281
- &nbsp;
1282
- class TestConfiguration {
1283
- integration: any
1284
- &nbsp;
1285
- <span class="fstat-no" title="function not covered" > constructor(c</span>onfig: any = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
1286
- <span class="cstat-no" title="statement not covered" > this.integration = new RestIntegration.integration(config)</span>
1287
- }
1288
- }
1289
- &nbsp;
1290
- <span class="cstat-no" title="statement not covered" >describe("REST Integration", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1291
- const BASE_URL = <span class="cstat-no" title="statement not covered" >"https://myapi.com"</span>
1292
- let config: any
1293
- &nbsp;
1294
- <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1295
- <span class="cstat-no" title="statement not covered" > config = new TestConfiguration({</span>
1296
- url: BASE_URL,
1297
- })
1298
- <span class="cstat-no" title="statement not covered" > jest.clearAllMocks()</span>
1299
- })
1300
- &nbsp;
1301
- <span class="cstat-no" title="statement not covered" > it("calls the create method with the correct params", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1302
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1303
- path: "api",
1304
- queryString: "test=1",
1305
- headers: HEADERS,
1306
- bodyType: "json",
1307
- requestBody: JSON.stringify({
1308
- name: "test",
1309
- }),
1310
- }
1311
- <span class="cstat-no" title="statement not covered" > await config.integration.create(query)</span>
1312
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {</span>
1313
- method: "POST",
1314
- body: '{"name":"test"}',
1315
- headers: HEADERS,
1316
- })
1317
- })
1318
- &nbsp;
1319
- <span class="cstat-no" title="statement not covered" > it("calls the read method with the correct params", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1320
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1321
- path: "api",
1322
- queryString: "test=1",
1323
- headers: {
1324
- Accept: "text/html",
1325
- },
1326
- }
1327
- const response = <span class="cstat-no" title="statement not covered" >await config.integration.read(query)</span>
1328
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {</span>
1329
- headers: {
1330
- Accept: "text/html",
1331
- },
1332
- method: "GET",
1333
- })
1334
- })
1335
- &nbsp;
1336
- <span class="cstat-no" title="statement not covered" > it("calls the update method with the correct params", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1337
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1338
- path: "api",
1339
- queryString: "test=1",
1340
- headers: {
1341
- Accept: "application/json",
1342
- },
1343
- bodyType: "json",
1344
- requestBody: JSON.stringify({
1345
- name: "test",
1346
- }),
1347
- }
1348
- const response = <span class="cstat-no" title="statement not covered" >await config.integration.update(query)</span>
1349
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {</span>
1350
- method: "PUT",
1351
- body: '{"name":"test"}',
1352
- headers: HEADERS,
1353
- })
1354
- })
1355
- &nbsp;
1356
- <span class="cstat-no" title="statement not covered" > it("calls the delete method with the correct params", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1357
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1358
- path: "api",
1359
- queryString: "test=1",
1360
- headers: {
1361
- Accept: "application/json",
1362
- },
1363
- bodyType: "json",
1364
- requestBody: JSON.stringify({
1365
- name: "test",
1366
- }),
1367
- }
1368
- const response = <span class="cstat-no" title="statement not covered" >await config.integration.delete(query)</span>
1369
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1`, {</span>
1370
- method: "DELETE",
1371
- headers: HEADERS,
1372
- body: '{"name":"test"}',
1373
- })
1374
- })
1375
- &nbsp;
1376
- <span class="cstat-no" title="statement not covered" > describe("request body", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1377
- const input = <span class="cstat-no" title="statement not covered" >{ a: 1, b: 2 }</span>
1378
- &nbsp;
1379
- <span class="cstat-no" title="statement not covered" > it("should allow no body", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1380
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("none", null, {})</span>
1381
- <span class="cstat-no" title="statement not covered" > expect(output.body).toBeUndefined()</span>
1382
- <span class="cstat-no" title="statement not covered" > expect(Object.keys(output.headers).length).toEqual(0)</span>
1383
- })
1384
- &nbsp;
1385
- <span class="cstat-no" title="statement not covered" > it("should allow text body", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1386
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("text", "hello world", {})</span>
1387
- <span class="cstat-no" title="statement not covered" > expect(output.body).toEqual("hello world")</span>
1388
- // gets added by fetch
1389
- <span class="cstat-no" title="statement not covered" > expect(Object.keys(output.headers).length).toEqual(0)</span>
1390
- })
1391
- &nbsp;
1392
- <span class="cstat-no" title="statement not covered" > it("should allow form data", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1393
- const FormData = <span class="cstat-no" title="statement not covered" >require("form-data")</span>
1394
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("form", input, {})</span>
1395
- <span class="cstat-no" title="statement not covered" > expect(output.body instanceof FormData).toEqual(true)</span>
1396
- <span class="cstat-no" title="statement not covered" > expect(output.body._valueLength).toEqual(2)</span>
1397
- // gets added by fetch
1398
- <span class="cstat-no" title="statement not covered" > expect(Object.keys(output.headers).length).toEqual(0)</span>
1399
- })
1400
- &nbsp;
1401
- <span class="cstat-no" title="statement not covered" > it("should allow encoded form data", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1402
- const { URLSearchParams } = <span class="cstat-no" title="statement not covered" >require("url")</span>
1403
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("encoded", input, {})</span>
1404
- <span class="cstat-no" title="statement not covered" > expect(output.body instanceof URLSearchParams).toEqual(true)</span>
1405
- <span class="cstat-no" title="statement not covered" > expect(output.body.toString()).toEqual("a=1&amp;b=2")</span>
1406
- // gets added by fetch
1407
- <span class="cstat-no" title="statement not covered" > expect(Object.keys(output.headers).length).toEqual(0)</span>
1408
- })
1409
- &nbsp;
1410
- <span class="cstat-no" title="statement not covered" > it("should allow JSON", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1411
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("json", input, {})</span>
1412
- <span class="cstat-no" title="statement not covered" > expect(output.body).toEqual(JSON.stringify(input))</span>
1413
- <span class="cstat-no" title="statement not covered" > expect(output.headers["Content-Type"]).toEqual("application/json")</span>
1414
- })
1415
- &nbsp;
1416
- <span class="cstat-no" title="statement not covered" > it("should allow raw XML", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1417
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("xml", "&lt;a&gt;1&lt;/a&gt;&lt;b&gt;2&lt;/b&gt;", {})</span>
1418
- <span class="cstat-no" title="statement not covered" > expect(output.body.includes("&lt;a&gt;1&lt;/a&gt;")).toEqual(true)</span>
1419
- <span class="cstat-no" title="statement not covered" > expect(output.body.includes("&lt;b&gt;2&lt;/b&gt;")).toEqual(true)</span>
1420
- <span class="cstat-no" title="statement not covered" > expect(output.headers["Content-Type"]).toEqual("application/xml")</span>
1421
- })
1422
- &nbsp;
1423
- <span class="cstat-no" title="statement not covered" > it("should allow a valid js object and parse the contents to xml", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1424
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody("xml", input, {})</span>
1425
- <span class="cstat-no" title="statement not covered" > expect(output.body.includes("&lt;a&gt;1&lt;/a&gt;")).toEqual(true)</span>
1426
- <span class="cstat-no" title="statement not covered" > expect(output.body.includes("&lt;b&gt;2&lt;/b&gt;")).toEqual(true)</span>
1427
- <span class="cstat-no" title="statement not covered" > expect(output.headers["Content-Type"]).toEqual("application/xml")</span>
1428
- })
1429
- &nbsp;
1430
- <span class="cstat-no" title="statement not covered" > it("should allow a valid json string and parse the contents to xml", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1431
- const output = <span class="cstat-no" title="statement not covered" >config.integration.addBody(</span>
1432
- "xml",
1433
- JSON.stringify(input),
1434
- {}
1435
- )
1436
- <span class="cstat-no" title="statement not covered" > expect(output.body.includes("&lt;a&gt;1&lt;/a&gt;")).toEqual(true)</span>
1437
- <span class="cstat-no" title="statement not covered" > expect(output.body.includes("&lt;b&gt;2&lt;/b&gt;")).toEqual(true)</span>
1438
- <span class="cstat-no" title="statement not covered" > expect(output.headers["Content-Type"]).toEqual("application/xml")</span>
1439
- })
1440
- })
1441
- &nbsp;
1442
- <span class="cstat-no" title="statement not covered" > describe("response", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1443
- function <span class="fstat-no" title="function not covered" >buildInput(j</span>son: any, text: any, header: any) {
1444
- <span class="cstat-no" title="statement not covered" > return {</span>
1445
- status: 200,
1446
- json: json ? <span class="fstat-no" title="function not covered" >async () =&gt; <span class="cstat-no" title="statement not covered" >j</span>son : u</span>ndefined,
1447
- text: text ? <span class="fstat-no" title="function not covered" >async () =&gt; <span class="cstat-no" title="statement not covered" >t</span>ext : u</span>ndefined,
1448
- headers: {
1449
- get: <span class="fstat-no" title="function not covered" >(k</span>ey: any) =&gt; (<span class="cstat-no" title="statement not covered" >key === "content-length" ? 100 : header)</span>,
1450
- raw: <span class="fstat-no" title="function not covered" >() =&gt; (<span class="cstat-no" title="statement not covered" >{</span> "content-type": header }),</span>
1451
- },
1452
- }
1453
- }
1454
- &nbsp;
1455
- <span class="cstat-no" title="statement not covered" > it("should be able to parse JSON response", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1456
- const input = <span class="cstat-no" title="statement not covered" >buildInput({ a: 1 }, null, "application/json")</span>
1457
- const output = <span class="cstat-no" title="statement not covered" >await config.integration.parseResponse(input)</span>
1458
- <span class="cstat-no" title="statement not covered" > expect(output.data).toEqual({ a: 1 })</span>
1459
- <span class="cstat-no" title="statement not covered" > expect(output.info.code).toEqual(200)</span>
1460
- <span class="cstat-no" title="statement not covered" > expect(output.info.size).toEqual("100B")</span>
1461
- <span class="cstat-no" title="statement not covered" > expect(output.extra.raw).toEqual(JSON.stringify({ a: 1 }))</span>
1462
- <span class="cstat-no" title="statement not covered" > expect(output.extra.headers["content-type"]).toEqual("application/json")</span>
1463
- })
1464
- &nbsp;
1465
- <span class="cstat-no" title="statement not covered" > it("should be able to parse text response", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1466
- const text = <span class="cstat-no" title="statement not covered" >"hello world"</span>
1467
- const input = <span class="cstat-no" title="statement not covered" >buildInput(null, text, "text/plain")</span>
1468
- const output = <span class="cstat-no" title="statement not covered" >await config.integration.parseResponse(input)</span>
1469
- <span class="cstat-no" title="statement not covered" > expect(output.data).toEqual(text)</span>
1470
- <span class="cstat-no" title="statement not covered" > expect(output.extra.raw).toEqual(text)</span>
1471
- <span class="cstat-no" title="statement not covered" > expect(output.extra.headers["content-type"]).toEqual("text/plain")</span>
1472
- })
1473
- &nbsp;
1474
- <span class="cstat-no" title="statement not covered" > it("should be able to parse XML response", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1475
- const text = <span class="cstat-no" title="statement not covered" >"&lt;root&gt;&lt;a&gt;1&lt;/a&gt;&lt;b&gt;2&lt;/b&gt;&lt;/root&gt;"</span>
1476
- const input = <span class="cstat-no" title="statement not covered" >buildInput(null, text, "application/xml")</span>
1477
- const output = <span class="cstat-no" title="statement not covered" >await config.integration.parseResponse(input)</span>
1478
- <span class="cstat-no" title="statement not covered" > expect(output.data).toEqual({ a: "1", b: "2" })</span>
1479
- <span class="cstat-no" title="statement not covered" > expect(output.extra.raw).toEqual(text)</span>
1480
- <span class="cstat-no" title="statement not covered" > expect(output.extra.headers["content-type"]).toEqual("application/xml")</span>
1481
- })
1482
- })
1483
- &nbsp;
1484
- <span class="cstat-no" title="statement not covered" > describe("authentication", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1485
- const basicAuth = <span class="cstat-no" title="statement not covered" >{</span>
1486
- _id: "c59c14bd1898a43baa08da68959b24686",
1487
- name: "basic-1",
1488
- type: RestAuthType.BASIC,
1489
- config: {
1490
- username: "user",
1491
- password: "password",
1492
- },
1493
- }
1494
- &nbsp;
1495
- const bearerAuth = <span class="cstat-no" title="statement not covered" >{</span>
1496
- _id: "0d91d732f34e4befabeff50b392a8ff3",
1497
- name: "bearer-1",
1498
- type: RestAuthType.BEARER,
1499
- config: {
1500
- token: "mytoken",
1501
- },
1502
- }
1503
- &nbsp;
1504
- <span class="cstat-no" title="statement not covered" > beforeEach(<span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1505
- <span class="cstat-no" title="statement not covered" > config = new TestConfiguration({</span>
1506
- url: BASE_URL,
1507
- authConfigs: [basicAuth, bearerAuth],
1508
- })
1509
- })
1510
- &nbsp;
1511
- <span class="cstat-no" title="statement not covered" > it("adds basic auth", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1512
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1513
- authConfigId: "c59c14bd1898a43baa08da68959b24686",
1514
- }
1515
- <span class="cstat-no" title="statement not covered" > await config.integration.read(query)</span>
1516
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/`, {</span>
1517
- method: "GET",
1518
- headers: {
1519
- Authorization: "Basic dXNlcjpwYXNzd29yZA==",
1520
- },
1521
- })
1522
- })
1523
- &nbsp;
1524
- <span class="cstat-no" title="statement not covered" > it("adds bearer auth", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1525
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1526
- authConfigId: "0d91d732f34e4befabeff50b392a8ff3",
1527
- }
1528
- <span class="cstat-no" title="statement not covered" > await config.integration.read(query)</span>
1529
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/`, {</span>
1530
- method: "GET",
1531
- headers: {
1532
- Authorization: "Bearer mytoken",
1533
- },
1534
- })
1535
- })
1536
- })
1537
- &nbsp;
1538
- <span class="cstat-no" title="statement not covered" > describe("page based pagination", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1539
- <span class="cstat-no" title="statement not covered" > it("can paginate using query params", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1540
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1541
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1542
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1543
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1544
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1545
- path: "api",
1546
- pagination: {
1547
- type: "page",
1548
- location: "query",
1549
- pageParam,
1550
- sizeParam,
1551
- },
1552
- paginationValues: {
1553
- page: pageValue,
1554
- limit: sizeValue,
1555
- },
1556
- }
1557
- <span class="cstat-no" title="statement not covered" > await config.integration.read(query)</span>
1558
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(</span>
1559
- `${BASE_URL}/api?${pageParam}=${pageValue}&amp;${sizeParam}=${sizeValue}`,
1560
- {
1561
- headers: {},
1562
- method: "GET",
1563
- }
1564
- )
1565
- })
1566
- &nbsp;
1567
- <span class="cstat-no" title="statement not covered" > it("can paginate using JSON request body", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1568
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1569
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1570
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1571
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1572
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1573
- bodyType: "json",
1574
- path: "api",
1575
- pagination: {
1576
- type: "page",
1577
- location: "body",
1578
- pageParam,
1579
- sizeParam,
1580
- },
1581
- paginationValues: {
1582
- page: pageValue,
1583
- limit: sizeValue,
1584
- },
1585
- }
1586
- <span class="cstat-no" title="statement not covered" > await config.integration.create(query)</span>
1587
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api`, {</span>
1588
- body: JSON.stringify({
1589
- [pageParam]: pageValue,
1590
- [sizeParam]: sizeValue,
1591
- }),
1592
- headers: {
1593
- "Content-Type": "application/json",
1594
- },
1595
- method: "POST",
1596
- })
1597
- })
1598
- &nbsp;
1599
- <span class="cstat-no" title="statement not covered" > it("can paginate using form-data request body", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1600
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1601
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1602
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1603
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1604
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1605
- bodyType: "form",
1606
- path: "api",
1607
- pagination: {
1608
- type: "page",
1609
- location: "body",
1610
- pageParam,
1611
- sizeParam,
1612
- },
1613
- paginationValues: {
1614
- page: pageValue,
1615
- limit: sizeValue,
1616
- },
1617
- }
1618
- <span class="cstat-no" title="statement not covered" > await config.integration.create(query)</span>
1619
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api`, {</span>
1620
- body: expect.any(FormData),
1621
- headers: {},
1622
- method: "POST",
1623
- })
1624
- // @ts-ignore
1625
- const sentData = <span class="cstat-no" title="statement not covered" >JSON.stringify(fetch.mock.calls[0][1].body)</span>
1626
- <span class="cstat-no" title="statement not covered" > expect(sentData).toContain(pageParam)</span>
1627
- <span class="cstat-no" title="statement not covered" > expect(sentData).toContain(sizeParam)</span>
1628
- })
1629
- &nbsp;
1630
- <span class="cstat-no" title="statement not covered" > it("can paginate using form-encoded request body", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1631
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1632
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1633
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1634
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1635
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1636
- bodyType: "encoded",
1637
- path: "api",
1638
- pagination: {
1639
- type: "page",
1640
- location: "body",
1641
- pageParam,
1642
- sizeParam,
1643
- },
1644
- paginationValues: {
1645
- page: pageValue,
1646
- limit: sizeValue,
1647
- },
1648
- }
1649
- <span class="cstat-no" title="statement not covered" > await config.integration.create(query)</span>
1650
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api`, {</span>
1651
- body: expect.any(URLSearchParams),
1652
- headers: {},
1653
- method: "POST",
1654
- })
1655
- // @ts-ignore
1656
- const sentData = <span class="cstat-no" title="statement not covered" >fetch.mock.calls[0][1].body</span>
1657
- <span class="cstat-no" title="statement not covered" > expect(sentData.has(pageParam))</span>
1658
- <span class="cstat-no" title="statement not covered" > expect(sentData.get(pageParam)).toEqual(pageValue.toString())</span>
1659
- <span class="cstat-no" title="statement not covered" > expect(sentData.has(sizeParam))</span>
1660
- <span class="cstat-no" title="statement not covered" > expect(sentData.get(sizeParam)).toEqual(sizeValue.toString())</span>
1661
- })
1662
- })
1663
- &nbsp;
1664
- <span class="cstat-no" title="statement not covered" > describe("cursor based pagination", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1665
- <span class="cstat-no" title="statement not covered" > it("can paginate using query params", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1666
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1667
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1668
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1669
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1670
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1671
- path: "api",
1672
- pagination: {
1673
- type: "cursor",
1674
- location: "query",
1675
- pageParam,
1676
- sizeParam,
1677
- responseParam: "my_next_cursor",
1678
- },
1679
- paginationValues: {
1680
- page: pageValue,
1681
- limit: sizeValue,
1682
- },
1683
- }
1684
- const res = <span class="cstat-no" title="statement not covered" >await config.integration.read(query)</span>
1685
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(</span>
1686
- `${BASE_URL}/api?${pageParam}=${pageValue}&amp;${sizeParam}=${sizeValue}`,
1687
- {
1688
- headers: {},
1689
- method: "GET",
1690
- }
1691
- )
1692
- <span class="cstat-no" title="statement not covered" > expect(res.pagination.cursor).toEqual(123)</span>
1693
- })
1694
- &nbsp;
1695
- <span class="cstat-no" title="statement not covered" > it("can paginate using JSON request body", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1696
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1697
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1698
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1699
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1700
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1701
- bodyType: "json",
1702
- path: "api",
1703
- pagination: {
1704
- type: "page",
1705
- location: "body",
1706
- pageParam,
1707
- sizeParam,
1708
- responseParam: "my_next_cursor",
1709
- },
1710
- paginationValues: {
1711
- page: pageValue,
1712
- limit: sizeValue,
1713
- },
1714
- }
1715
- const res = <span class="cstat-no" title="statement not covered" >await config.integration.create(query)</span>
1716
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api`, {</span>
1717
- body: JSON.stringify({
1718
- [pageParam]: pageValue,
1719
- [sizeParam]: sizeValue,
1720
- }),
1721
- headers: {
1722
- "Content-Type": "application/json",
1723
- },
1724
- method: "POST",
1725
- })
1726
- <span class="cstat-no" title="statement not covered" > expect(res.pagination.cursor).toEqual(123)</span>
1727
- })
1728
- &nbsp;
1729
- <span class="cstat-no" title="statement not covered" > it("can paginate using form-data request body", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1730
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1731
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1732
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1733
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1734
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1735
- bodyType: "form",
1736
- path: "api",
1737
- pagination: {
1738
- type: "page",
1739
- location: "body",
1740
- pageParam,
1741
- sizeParam,
1742
- responseParam: "my_next_cursor",
1743
- },
1744
- paginationValues: {
1745
- page: pageValue,
1746
- limit: sizeValue,
1747
- },
1748
- }
1749
- const res = <span class="cstat-no" title="statement not covered" >await config.integration.create(query)</span>
1750
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api`, {</span>
1751
- body: expect.any(FormData),
1752
- headers: {},
1753
- method: "POST",
1754
- })
1755
- // @ts-ignore
1756
- const sentData = <span class="cstat-no" title="statement not covered" >JSON.stringify(fetch.mock.calls[0][1].body)</span>
1757
- <span class="cstat-no" title="statement not covered" > expect(sentData).toContain(pageParam)</span>
1758
- <span class="cstat-no" title="statement not covered" > expect(sentData).toContain(sizeParam)</span>
1759
- <span class="cstat-no" title="statement not covered" > expect(res.pagination.cursor).toEqual(123)</span>
1760
- })
1761
- &nbsp;
1762
- <span class="cstat-no" title="statement not covered" > it("can paginate using form-encoded request body", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1763
- const pageParam = <span class="cstat-no" title="statement not covered" >"my_page_param"</span>
1764
- const sizeParam = <span class="cstat-no" title="statement not covered" >"my_size_param"</span>
1765
- const pageValue = <span class="cstat-no" title="statement not covered" >3</span>
1766
- const sizeValue = <span class="cstat-no" title="statement not covered" >10</span>
1767
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1768
- bodyType: "encoded",
1769
- path: "api",
1770
- pagination: {
1771
- type: "page",
1772
- location: "body",
1773
- pageParam,
1774
- sizeParam,
1775
- responseParam: "my_next_cursor",
1776
- },
1777
- paginationValues: {
1778
- page: pageValue,
1779
- limit: sizeValue,
1780
- },
1781
- }
1782
- const res = <span class="cstat-no" title="statement not covered" >await config.integration.create(query)</span>
1783
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api`, {</span>
1784
- body: expect.any(URLSearchParams),
1785
- headers: {},
1786
- method: "POST",
1787
- })
1788
- // @ts-ignore
1789
- const sentData = <span class="cstat-no" title="statement not covered" >fetch.mock.calls[0][1].body</span>
1790
- <span class="cstat-no" title="statement not covered" > expect(sentData.has(pageParam))</span>
1791
- <span class="cstat-no" title="statement not covered" > expect(sentData.get(pageParam)).toEqual(pageValue.toString())</span>
1792
- <span class="cstat-no" title="statement not covered" > expect(sentData.has(sizeParam))</span>
1793
- <span class="cstat-no" title="statement not covered" > expect(sentData.get(sizeParam)).toEqual(sizeValue.toString())</span>
1794
- <span class="cstat-no" title="statement not covered" > expect(res.pagination.cursor).toEqual(123)</span>
1795
- })
1796
- &nbsp;
1797
- <span class="cstat-no" title="statement not covered" > it("should encode query string correctly", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1798
- const query = <span class="cstat-no" title="statement not covered" >{</span>
1799
- path: "api",
1800
- queryString: "test=1 2",
1801
- headers: HEADERS,
1802
- bodyType: "json",
1803
- requestBody: JSON.stringify({
1804
- name: "test",
1805
- }),
1806
- }
1807
- <span class="cstat-no" title="statement not covered" > await config.integration.create(query)</span>
1808
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/api?test=1%202`, {</span>
1809
- method: "POST",
1810
- body: '{"name":"test"}',
1811
- headers: HEADERS,
1812
- })
1813
- })
1814
- })
1815
- &nbsp;
1816
- <span class="cstat-no" title="statement not covered" > describe("Configuration options", <span class="fstat-no" title="function not covered" >() =&gt; {</span></span>
1817
- <span class="cstat-no" title="statement not covered" > it("Attaches insecureHttpParams when legacy HTTP Parser option is set", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1818
- <span class="cstat-no" title="statement not covered" > config = new TestConfiguration({</span>
1819
- url: BASE_URL,
1820
- legacyHttpParser: true,
1821
- })
1822
- <span class="cstat-no" title="statement not covered" > await config.integration.read({})</span>
1823
- <span class="cstat-no" title="statement not covered" > expect(fetch).toHaveBeenCalledWith(`${BASE_URL}/`, {</span>
1824
- method: "GET",
1825
- headers: {},
1826
- extraHttpOptions: {
1827
- insecureHTTPParser: true,
1828
- },
1829
- })
1830
- })
1831
- })
1832
- &nbsp;
1833
- <span class="cstat-no" title="statement not covered" > it("Attaches custom agent when Reject Unauthorized option is false", <span class="fstat-no" title="function not covered" >async () =&gt; {</span></span>
1834
- <span class="cstat-no" title="statement not covered" > config = new TestConfiguration({</span>
1835
- url: BASE_URL,
1836
- rejectUnauthorized: false,
1837
- })
1838
- <span class="cstat-no" title="statement not covered" > await config.integration.read({})</span>
1839
- &nbsp;
1840
- // @ts-ignore
1841
- const calls: any = <span class="cstat-no" title="statement not covered" >fetch.mock.calls[0]</span>
1842
- const url = <span class="cstat-no" title="statement not covered" >calls[0]</span>
1843
- <span class="cstat-no" title="statement not covered" > expect(url).toBe(`${BASE_URL}/`)</span>
1844
- &nbsp;
1845
- const calledConfig = <span class="cstat-no" title="statement not covered" >calls[1]</span>
1846
- <span class="cstat-no" title="statement not covered" > expect(calledConfig.method).toBe("GET")</span>
1847
- <span class="cstat-no" title="statement not covered" > expect(calledConfig.headers).toEqual({})</span>
1848
- <span class="cstat-no" title="statement not covered" > expect(calledConfig.agent.options.rejectUnauthorized).toBe(false)</span>
1849
- })
1850
- })
1851
- &nbsp;</pre></td></tr></table></pre>
1852
-
1853
- <div class='push'></div><!-- for sticky footer -->
1854
- </div><!-- /wrapper -->
1855
- <div class='footer quiet pad2 space-top1 center small'>
1856
- Code coverage generated by
1857
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1858
- at Tue Feb 14 2023 18:11:53 GMT+0000 (Coordinated Universal Time)
1859
- </div>
1860
- <script src="../../../prettify.js"></script>
1861
- <script>
1862
- window.onload = function () {
1863
- prettyPrint();
1864
- };
1865
- </script>
1866
- <script src="../../../sorter.js"></script>
1867
- <script src="../../../block-navigation.js"></script>
1868
- </body>
1869
- </html>
1870
-