keuss 1.6.10 → 1.6.13

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 (202) hide show
  1. package/Pipeline/Queue.js +12 -2
  2. package/Queue.js +18 -8
  3. package/TODO +0 -1
  4. package/backends/bucket-mongo-safe.js +42 -44
  5. package/backends/bucket-mongo.js +6 -8
  6. package/examples/snippets/06-random-consumer-producer.js +5 -5
  7. package/package.json +6 -6
  8. package/test/backends_bucket-at-least-once.js +43 -35
  9. package/test/backends_deadletter.js +10 -1
  10. package/.nyc_output/ad035de4-a3d3-451b-b2ad-402e8ed517b8.json +0 -1
  11. package/.nyc_output/c8683d6c-e7e6-496b-ab0d-1ff730837d08.json +0 -1
  12. package/.nyc_output/processinfo/ad035de4-a3d3-451b-b2ad-402e8ed517b8.json +0 -1
  13. package/.nyc_output/processinfo/c8683d6c-e7e6-496b-ab0d-1ff730837d08.json +0 -1
  14. package/.nyc_output/processinfo/index.json +0 -1
  15. package/coverage/base.css +0 -224
  16. package/coverage/block-navigation.js +0 -79
  17. package/coverage/index.html +0 -162
  18. package/coverage/keuss/Pipeline/BaseLink.js.html +0 -636
  19. package/coverage/keuss/Pipeline/Builder.js.html +0 -615
  20. package/coverage/keuss/Pipeline/ChoiceLink.js.html +0 -294
  21. package/coverage/keuss/Pipeline/DirectLink.js.html +0 -231
  22. package/coverage/keuss/Pipeline/Pipeline.js.html +0 -258
  23. package/coverage/keuss/Pipeline/Queue.js.html +0 -939
  24. package/coverage/keuss/Pipeline/Sink.js.html +0 -147
  25. package/coverage/keuss/Pipeline/index.html +0 -175
  26. package/coverage/keuss/QFactory-MongoDB-defaults.js.html +0 -219
  27. package/coverage/keuss/QFactory.js.html +0 -459
  28. package/coverage/keuss/Queue.js.html +0 -2274
  29. package/coverage/keuss/Signal.js.html +0 -312
  30. package/coverage/keuss/Stats.js.html +0 -174
  31. package/coverage/keuss/backends/bucket-mongo-safe.js.html +0 -2952
  32. package/coverage/keuss/backends/bucket-mongo.js.html +0 -1167
  33. package/coverage/keuss/backends/index.html +0 -175
  34. package/coverage/keuss/backends/mongo.js.html +0 -897
  35. package/coverage/keuss/backends/pl-mongo.js.html +0 -723
  36. package/coverage/keuss/backends/ps-mongo.js.html +0 -1038
  37. package/coverage/keuss/backends/redis-list.js.html +0 -513
  38. package/coverage/keuss/backends/redis-oq.js.html +0 -543
  39. package/coverage/keuss/bench/all-mongo.js.html +0 -393
  40. package/coverage/keuss/bench/index.html +0 -149
  41. package/coverage/keuss/bench/multi-q.js.html +0 -324
  42. package/coverage/keuss/bench/redis-oq-consumer-producer.js.html +0 -225
  43. package/coverage/keuss/bench/redis-oq-consumer.js.html +0 -189
  44. package/coverage/keuss/bench/redis-oq-producer.js.html +0 -198
  45. package/coverage/keuss/docusaurus/.docusaurus/client-modules.js.html +0 -93
  46. package/coverage/keuss/docusaurus/.docusaurus/docusaurus.config.js.html +0 -402
  47. package/coverage/keuss/docusaurus/.docusaurus/index.html +0 -136
  48. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/01a85c17.4e57aa0a.js.html +0 -69
  49. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/09d5ad39.3009117f.js.html +0 -69
  50. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/1.12cf3eb8.js.html +0 -69
  51. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/12559443.a244228c.js.html +0 -69
  52. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/17896441.5efb3558.js.html +0 -69
  53. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/1be78505.f9c04817.js.html +0 -69
  54. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/2.4e2dc02c.js.html +0 -72
  55. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/3.d549a05d.js.html +0 -69
  56. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/36.db0e809a.js.html +0 -69
  57. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/37637b3c.28c0900b.js.html +0 -69
  58. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/3d8d21df.2228b429.js.html +0 -69
  59. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/45a5cd1f.951da354.js.html +0 -69
  60. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/52c38f7a.785707bc.js.html +0 -69
  61. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/57ffbe3d.04d3e53e.js.html +0 -69
  62. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/5f7c35e9.2fa77599.js.html +0 -69
  63. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6299bd84.ec197a3e.js.html +0 -69
  64. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6875c492.cdf3e939.js.html +0 -69
  65. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/6beec1d2.6873e708.js.html +0 -69
  66. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/7b786ad4.bbce08e6.js.html +0 -69
  67. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/8070e160.400a4e57.js.html +0 -69
  68. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/88c93c54.e868a433.js.html +0 -69
  69. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/8d3e6f9e.aadf6d32.js.html +0 -69
  70. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/9bc74468.516633c5.js.html +0 -69
  71. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/9beb87c2.71e3744d.js.html +0 -69
  72. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/a3732fac.b0f98dbf.js.html +0 -69
  73. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/a6aa9e1f.6ac55e6c.js.html +0 -69
  74. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/baf0d4a2.b50efd2d.js.html +0 -69
  75. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/c4f5d8e4.e9dfd999.js.html +0 -69
  76. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/ccc49370.1831890b.js.html +0 -69
  77. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/d4942345.7d23b349.js.html +0 -69
  78. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/e2244795.4ea3d168.js.html +0 -69
  79. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/e64fe266.308265e8.js.html +0 -69
  80. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/f78725cc.5f3e115d.js.html +0 -69
  81. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/fa8d8063.2312a332.js.html +0 -69
  82. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/index.html +0 -565
  83. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/main.66f1008c.js.html +0 -72
  84. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/runtime~main.7d73b048.js.html +0 -69
  85. package/coverage/keuss/docusaurus/.docusaurus/keuss-gh-pages/styles.b5ee3016.js.html +0 -69
  86. package/coverage/keuss/docusaurus/.docusaurus/registry.js.html +0 -165
  87. package/coverage/keuss/docusaurus/.docusaurus/routes.js.html +0 -447
  88. package/coverage/keuss/docusaurus/build/01a85c17.4e57aa0a.js.html +0 -69
  89. package/coverage/keuss/docusaurus/build/09d5ad39.3009117f.js.html +0 -69
  90. package/coverage/keuss/docusaurus/build/1.12cf3eb8.js.html +0 -69
  91. package/coverage/keuss/docusaurus/build/12559443.a244228c.js.html +0 -69
  92. package/coverage/keuss/docusaurus/build/17896441.5efb3558.js.html +0 -69
  93. package/coverage/keuss/docusaurus/build/1be78505.f9c04817.js.html +0 -69
  94. package/coverage/keuss/docusaurus/build/2.4e2dc02c.js.html +0 -72
  95. package/coverage/keuss/docusaurus/build/3.d549a05d.js.html +0 -69
  96. package/coverage/keuss/docusaurus/build/36.db0e809a.js.html +0 -69
  97. package/coverage/keuss/docusaurus/build/37637b3c.28c0900b.js.html +0 -69
  98. package/coverage/keuss/docusaurus/build/3d8d21df.2228b429.js.html +0 -69
  99. package/coverage/keuss/docusaurus/build/45a5cd1f.951da354.js.html +0 -69
  100. package/coverage/keuss/docusaurus/build/52c38f7a.785707bc.js.html +0 -69
  101. package/coverage/keuss/docusaurus/build/57ffbe3d.04d3e53e.js.html +0 -69
  102. package/coverage/keuss/docusaurus/build/5f7c35e9.2fa77599.js.html +0 -69
  103. package/coverage/keuss/docusaurus/build/6299bd84.ec197a3e.js.html +0 -69
  104. package/coverage/keuss/docusaurus/build/6875c492.cdf3e939.js.html +0 -69
  105. package/coverage/keuss/docusaurus/build/6beec1d2.6873e708.js.html +0 -69
  106. package/coverage/keuss/docusaurus/build/7b786ad4.bbce08e6.js.html +0 -69
  107. package/coverage/keuss/docusaurus/build/8070e160.400a4e57.js.html +0 -69
  108. package/coverage/keuss/docusaurus/build/88c93c54.e868a433.js.html +0 -69
  109. package/coverage/keuss/docusaurus/build/8d3e6f9e.aadf6d32.js.html +0 -69
  110. package/coverage/keuss/docusaurus/build/9bc74468.516633c5.js.html +0 -69
  111. package/coverage/keuss/docusaurus/build/9beb87c2.71e3744d.js.html +0 -69
  112. package/coverage/keuss/docusaurus/build/a3732fac.b0f98dbf.js.html +0 -69
  113. package/coverage/keuss/docusaurus/build/a6aa9e1f.6ac55e6c.js.html +0 -69
  114. package/coverage/keuss/docusaurus/build/baf0d4a2.b50efd2d.js.html +0 -69
  115. package/coverage/keuss/docusaurus/build/c4f5d8e4.e9dfd999.js.html +0 -69
  116. package/coverage/keuss/docusaurus/build/ccc49370.1831890b.js.html +0 -69
  117. package/coverage/keuss/docusaurus/build/d4942345.7d23b349.js.html +0 -69
  118. package/coverage/keuss/docusaurus/build/e2244795.4ea3d168.js.html +0 -69
  119. package/coverage/keuss/docusaurus/build/e64fe266.308265e8.js.html +0 -69
  120. package/coverage/keuss/docusaurus/build/f78725cc.5f3e115d.js.html +0 -69
  121. package/coverage/keuss/docusaurus/build/fa8d8063.2312a332.js.html +0 -69
  122. package/coverage/keuss/docusaurus/build/index.html +0 -565
  123. package/coverage/keuss/docusaurus/build/main.66f1008c.js.html +0 -72
  124. package/coverage/keuss/docusaurus/build/runtime~main.7d73b048.js.html +0 -69
  125. package/coverage/keuss/docusaurus/build/styles.b5ee3016.js.html +0 -69
  126. package/coverage/keuss/docusaurus/docusaurus.config.js.html +0 -360
  127. package/coverage/keuss/docusaurus/index.html +0 -110
  128. package/coverage/keuss/docusaurus/sidebars.js.html +0 -96
  129. package/coverage/keuss/docusaurus/src/pages/index.html +0 -97
  130. package/coverage/keuss/docusaurus/src/pages/index.js.html +0 -450
  131. package/coverage/keuss/examples/pipelines/builder/index.html +0 -97
  132. package/coverage/keuss/examples/pipelines/builder/index.js.html +0 -450
  133. package/coverage/keuss/examples/pipelines/simplest/index.html +0 -97
  134. package/coverage/keuss/examples/pipelines/simplest/index.js.html +0 -183
  135. package/coverage/keuss/examples/pipelines/simulation-fork/index.html +0 -97
  136. package/coverage/keuss/examples/pipelines/simulation-fork/index.js.html +0 -414
  137. package/coverage/keuss/examples/snippets/01-simplest-pop-push.js.html +0 -195
  138. package/coverage/keuss/examples/snippets/02-simplest-reserve-rollback-commit.js.html +0 -201
  139. package/coverage/keuss/examples/snippets/03-simplest-producer-consumer-loops.js.html +0 -300
  140. package/coverage/keuss/examples/snippets/04-bucket-mongo-safe-insert-reserve-commit.js.html +0 -303
  141. package/coverage/keuss/examples/snippets/05-insert-reserve-rollback-deadletter.js.html +0 -384
  142. package/coverage/keuss/examples/snippets/06-random-consumer-producer.js.html +0 -879
  143. package/coverage/keuss/examples/snippets/index.html +0 -188
  144. package/coverage/keuss/examples/snippets/redislabs-consumer-producer.js.html +0 -201
  145. package/coverage/keuss/examples/snippets/with-redis-stats-and-signaller-consumer-producer.js.html +0 -222
  146. package/coverage/keuss/examples/webhooks/app.js.html +0 -279
  147. package/coverage/keuss/examples/webhooks/consumer.js.html +0 -363
  148. package/coverage/keuss/examples/webhooks/index.html +0 -123
  149. package/coverage/keuss/examples/webhooks/index.js.html +0 -234
  150. package/coverage/keuss/index.html +0 -149
  151. package/coverage/keuss/playground/index.html +0 -136
  152. package/coverage/keuss/playground/pl-rollback.js.html +0 -234
  153. package/coverage/keuss/playground/pl1.js.html +0 -291
  154. package/coverage/keuss/playground/q1.js.html +0 -168
  155. package/coverage/keuss/playground/simple-pl.js.html +0 -195
  156. package/coverage/keuss/signal/index.html +0 -123
  157. package/coverage/keuss/signal/local.js.html +0 -306
  158. package/coverage/keuss/signal/mongo-capped.js.html +0 -378
  159. package/coverage/keuss/signal/redis-pubsub.js.html +0 -399
  160. package/coverage/keuss/stats/index.html +0 -123
  161. package/coverage/keuss/stats/mem.js.html +0 -519
  162. package/coverage/keuss/stats/mongo.js.html +0 -930
  163. package/coverage/keuss/stats/redis.js.html +0 -894
  164. package/coverage/keuss/utils/RedisConn.js.html +0 -150
  165. package/coverage/keuss/utils/RedisOrderedQueue.js.html +0 -864
  166. package/coverage/keuss/utils/index.html +0 -110
  167. package/coverage/prettify.css +0 -1
  168. package/coverage/prettify.js +0 -2
  169. package/coverage/sort-arrow-sprite.png +0 -0
  170. package/coverage/sorter.js +0 -170
  171. package/docusaurus/README.md +0 -33
  172. package/docusaurus/babel.config.js +0 -3
  173. package/docusaurus/blog/2020-08-04-welcome.md +0 -10
  174. package/docusaurus/docs/about.md +0 -14
  175. package/docusaurus/docs/api/factory.md +0 -102
  176. package/docusaurus/docs/api/queue.md +0 -247
  177. package/docusaurus/docs/api/signal.md +0 -38
  178. package/docusaurus/docs/api/stats.md +0 -37
  179. package/docusaurus/docs/changelog.md +0 -51
  180. package/docusaurus/docs/concepts.md +0 -116
  181. package/docusaurus/docs/examples.md +0 -10
  182. package/docusaurus/docs/quickstart.md +0 -195
  183. package/docusaurus/docs/style-guide.md +0 -202
  184. package/docusaurus/docs/usage/buckets.md +0 -43
  185. package/docusaurus/docs/usage/no-signaller.md +0 -16
  186. package/docusaurus/docs/usage/pipelines/about.md +0 -128
  187. package/docusaurus/docs/usage/pipelines/building.md +0 -158
  188. package/docusaurus/docs/usage/pipelines/examples.md +0 -10
  189. package/docusaurus/docs/usage/pipelines/processors.md +0 -187
  190. package/docusaurus/docs/usage/putting-all-together.md +0 -153
  191. package/docusaurus/docs/usage/redis-conns.md +0 -70
  192. package/docusaurus/docs/usage/shutdown.md +0 -11
  193. package/docusaurus/docusaurus.config.js +0 -96
  194. package/docusaurus/package.json +0 -33
  195. package/docusaurus/sidebars.js +0 -44
  196. package/docusaurus/src/css/custom.css +0 -25
  197. package/docusaurus/src/pages/index.js +0 -127
  198. package/docusaurus/src/pages/styles.module.css +0 -37
  199. package/docusaurus/static/.nojekyll +0 -0
  200. package/docusaurus/static/img/favicon.ico +0 -0
  201. package/docusaurus/static/img/logo.svg +0 -1
  202. package/docusaurus/yarn.lock +0 -8384
@@ -1,2274 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Code coverage report for keuss/Queue.js</title>
5
- <meta charset="utf-8" />
6
- <link rel="stylesheet" href="../prettify.css" />
7
- <link rel="stylesheet" href="../base.css" />
8
- <meta name="viewport" content="width=device-width, initial-scale=1">
9
- <style type='text/css'>
10
- .coverage-summary .sorter {
11
- background-image: url(../sort-arrow-sprite.png);
12
- }
13
- </style>
14
- </head>
15
- <body>
16
- <div class='wrapper'>
17
- <div class='pad1'>
18
- <h1>
19
- <a href="../index.html">All files</a> / <a href="index.html">keuss</a> Queue.js
20
- </h1>
21
- <div class='clearfix'>
22
- <div class='fl pad1y space-right2'>
23
- <span class="strong">74.06% </span>
24
- <span class="quiet">Statements</span>
25
- <span class='fraction'>237/320</span>
26
- </div>
27
- <div class='fl pad1y space-right2'>
28
- <span class="strong">72.99% </span>
29
- <span class="quiet">Branches</span>
30
- <span class='fraction'>127/174</span>
31
- </div>
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">61.11% </span>
34
- <span class="quiet">Functions</span>
35
- <span class='fraction'>44/72</span>
36
- </div>
37
- <div class='fl pad1y space-right2'>
38
- <span class="strong">76.08% </span>
39
- <span class="quiet">Lines</span>
40
- <span class='fraction'>229/301</span>
41
- </div>
42
- </div>
43
- <p class="quiet">
44
- 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.
45
- </p>
46
- </div>
47
- <div class='status-line medium'></div>
48
- <pre><table class="coverage">
49
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
50
- <a name='L2'></a><a href='#L2'>2</a>
51
- <a name='L3'></a><a href='#L3'>3</a>
52
- <a name='L4'></a><a href='#L4'>4</a>
53
- <a name='L5'></a><a href='#L5'>5</a>
54
- <a name='L6'></a><a href='#L6'>6</a>
55
- <a name='L7'></a><a href='#L7'>7</a>
56
- <a name='L8'></a><a href='#L8'>8</a>
57
- <a name='L9'></a><a href='#L9'>9</a>
58
- <a name='L10'></a><a href='#L10'>10</a>
59
- <a name='L11'></a><a href='#L11'>11</a>
60
- <a name='L12'></a><a href='#L12'>12</a>
61
- <a name='L13'></a><a href='#L13'>13</a>
62
- <a name='L14'></a><a href='#L14'>14</a>
63
- <a name='L15'></a><a href='#L15'>15</a>
64
- <a name='L16'></a><a href='#L16'>16</a>
65
- <a name='L17'></a><a href='#L17'>17</a>
66
- <a name='L18'></a><a href='#L18'>18</a>
67
- <a name='L19'></a><a href='#L19'>19</a>
68
- <a name='L20'></a><a href='#L20'>20</a>
69
- <a name='L21'></a><a href='#L21'>21</a>
70
- <a name='L22'></a><a href='#L22'>22</a>
71
- <a name='L23'></a><a href='#L23'>23</a>
72
- <a name='L24'></a><a href='#L24'>24</a>
73
- <a name='L25'></a><a href='#L25'>25</a>
74
- <a name='L26'></a><a href='#L26'>26</a>
75
- <a name='L27'></a><a href='#L27'>27</a>
76
- <a name='L28'></a><a href='#L28'>28</a>
77
- <a name='L29'></a><a href='#L29'>29</a>
78
- <a name='L30'></a><a href='#L30'>30</a>
79
- <a name='L31'></a><a href='#L31'>31</a>
80
- <a name='L32'></a><a href='#L32'>32</a>
81
- <a name='L33'></a><a href='#L33'>33</a>
82
- <a name='L34'></a><a href='#L34'>34</a>
83
- <a name='L35'></a><a href='#L35'>35</a>
84
- <a name='L36'></a><a href='#L36'>36</a>
85
- <a name='L37'></a><a href='#L37'>37</a>
86
- <a name='L38'></a><a href='#L38'>38</a>
87
- <a name='L39'></a><a href='#L39'>39</a>
88
- <a name='L40'></a><a href='#L40'>40</a>
89
- <a name='L41'></a><a href='#L41'>41</a>
90
- <a name='L42'></a><a href='#L42'>42</a>
91
- <a name='L43'></a><a href='#L43'>43</a>
92
- <a name='L44'></a><a href='#L44'>44</a>
93
- <a name='L45'></a><a href='#L45'>45</a>
94
- <a name='L46'></a><a href='#L46'>46</a>
95
- <a name='L47'></a><a href='#L47'>47</a>
96
- <a name='L48'></a><a href='#L48'>48</a>
97
- <a name='L49'></a><a href='#L49'>49</a>
98
- <a name='L50'></a><a href='#L50'>50</a>
99
- <a name='L51'></a><a href='#L51'>51</a>
100
- <a name='L52'></a><a href='#L52'>52</a>
101
- <a name='L53'></a><a href='#L53'>53</a>
102
- <a name='L54'></a><a href='#L54'>54</a>
103
- <a name='L55'></a><a href='#L55'>55</a>
104
- <a name='L56'></a><a href='#L56'>56</a>
105
- <a name='L57'></a><a href='#L57'>57</a>
106
- <a name='L58'></a><a href='#L58'>58</a>
107
- <a name='L59'></a><a href='#L59'>59</a>
108
- <a name='L60'></a><a href='#L60'>60</a>
109
- <a name='L61'></a><a href='#L61'>61</a>
110
- <a name='L62'></a><a href='#L62'>62</a>
111
- <a name='L63'></a><a href='#L63'>63</a>
112
- <a name='L64'></a><a href='#L64'>64</a>
113
- <a name='L65'></a><a href='#L65'>65</a>
114
- <a name='L66'></a><a href='#L66'>66</a>
115
- <a name='L67'></a><a href='#L67'>67</a>
116
- <a name='L68'></a><a href='#L68'>68</a>
117
- <a name='L69'></a><a href='#L69'>69</a>
118
- <a name='L70'></a><a href='#L70'>70</a>
119
- <a name='L71'></a><a href='#L71'>71</a>
120
- <a name='L72'></a><a href='#L72'>72</a>
121
- <a name='L73'></a><a href='#L73'>73</a>
122
- <a name='L74'></a><a href='#L74'>74</a>
123
- <a name='L75'></a><a href='#L75'>75</a>
124
- <a name='L76'></a><a href='#L76'>76</a>
125
- <a name='L77'></a><a href='#L77'>77</a>
126
- <a name='L78'></a><a href='#L78'>78</a>
127
- <a name='L79'></a><a href='#L79'>79</a>
128
- <a name='L80'></a><a href='#L80'>80</a>
129
- <a name='L81'></a><a href='#L81'>81</a>
130
- <a name='L82'></a><a href='#L82'>82</a>
131
- <a name='L83'></a><a href='#L83'>83</a>
132
- <a name='L84'></a><a href='#L84'>84</a>
133
- <a name='L85'></a><a href='#L85'>85</a>
134
- <a name='L86'></a><a href='#L86'>86</a>
135
- <a name='L87'></a><a href='#L87'>87</a>
136
- <a name='L88'></a><a href='#L88'>88</a>
137
- <a name='L89'></a><a href='#L89'>89</a>
138
- <a name='L90'></a><a href='#L90'>90</a>
139
- <a name='L91'></a><a href='#L91'>91</a>
140
- <a name='L92'></a><a href='#L92'>92</a>
141
- <a name='L93'></a><a href='#L93'>93</a>
142
- <a name='L94'></a><a href='#L94'>94</a>
143
- <a name='L95'></a><a href='#L95'>95</a>
144
- <a name='L96'></a><a href='#L96'>96</a>
145
- <a name='L97'></a><a href='#L97'>97</a>
146
- <a name='L98'></a><a href='#L98'>98</a>
147
- <a name='L99'></a><a href='#L99'>99</a>
148
- <a name='L100'></a><a href='#L100'>100</a>
149
- <a name='L101'></a><a href='#L101'>101</a>
150
- <a name='L102'></a><a href='#L102'>102</a>
151
- <a name='L103'></a><a href='#L103'>103</a>
152
- <a name='L104'></a><a href='#L104'>104</a>
153
- <a name='L105'></a><a href='#L105'>105</a>
154
- <a name='L106'></a><a href='#L106'>106</a>
155
- <a name='L107'></a><a href='#L107'>107</a>
156
- <a name='L108'></a><a href='#L108'>108</a>
157
- <a name='L109'></a><a href='#L109'>109</a>
158
- <a name='L110'></a><a href='#L110'>110</a>
159
- <a name='L111'></a><a href='#L111'>111</a>
160
- <a name='L112'></a><a href='#L112'>112</a>
161
- <a name='L113'></a><a href='#L113'>113</a>
162
- <a name='L114'></a><a href='#L114'>114</a>
163
- <a name='L115'></a><a href='#L115'>115</a>
164
- <a name='L116'></a><a href='#L116'>116</a>
165
- <a name='L117'></a><a href='#L117'>117</a>
166
- <a name='L118'></a><a href='#L118'>118</a>
167
- <a name='L119'></a><a href='#L119'>119</a>
168
- <a name='L120'></a><a href='#L120'>120</a>
169
- <a name='L121'></a><a href='#L121'>121</a>
170
- <a name='L122'></a><a href='#L122'>122</a>
171
- <a name='L123'></a><a href='#L123'>123</a>
172
- <a name='L124'></a><a href='#L124'>124</a>
173
- <a name='L125'></a><a href='#L125'>125</a>
174
- <a name='L126'></a><a href='#L126'>126</a>
175
- <a name='L127'></a><a href='#L127'>127</a>
176
- <a name='L128'></a><a href='#L128'>128</a>
177
- <a name='L129'></a><a href='#L129'>129</a>
178
- <a name='L130'></a><a href='#L130'>130</a>
179
- <a name='L131'></a><a href='#L131'>131</a>
180
- <a name='L132'></a><a href='#L132'>132</a>
181
- <a name='L133'></a><a href='#L133'>133</a>
182
- <a name='L134'></a><a href='#L134'>134</a>
183
- <a name='L135'></a><a href='#L135'>135</a>
184
- <a name='L136'></a><a href='#L136'>136</a>
185
- <a name='L137'></a><a href='#L137'>137</a>
186
- <a name='L138'></a><a href='#L138'>138</a>
187
- <a name='L139'></a><a href='#L139'>139</a>
188
- <a name='L140'></a><a href='#L140'>140</a>
189
- <a name='L141'></a><a href='#L141'>141</a>
190
- <a name='L142'></a><a href='#L142'>142</a>
191
- <a name='L143'></a><a href='#L143'>143</a>
192
- <a name='L144'></a><a href='#L144'>144</a>
193
- <a name='L145'></a><a href='#L145'>145</a>
194
- <a name='L146'></a><a href='#L146'>146</a>
195
- <a name='L147'></a><a href='#L147'>147</a>
196
- <a name='L148'></a><a href='#L148'>148</a>
197
- <a name='L149'></a><a href='#L149'>149</a>
198
- <a name='L150'></a><a href='#L150'>150</a>
199
- <a name='L151'></a><a href='#L151'>151</a>
200
- <a name='L152'></a><a href='#L152'>152</a>
201
- <a name='L153'></a><a href='#L153'>153</a>
202
- <a name='L154'></a><a href='#L154'>154</a>
203
- <a name='L155'></a><a href='#L155'>155</a>
204
- <a name='L156'></a><a href='#L156'>156</a>
205
- <a name='L157'></a><a href='#L157'>157</a>
206
- <a name='L158'></a><a href='#L158'>158</a>
207
- <a name='L159'></a><a href='#L159'>159</a>
208
- <a name='L160'></a><a href='#L160'>160</a>
209
- <a name='L161'></a><a href='#L161'>161</a>
210
- <a name='L162'></a><a href='#L162'>162</a>
211
- <a name='L163'></a><a href='#L163'>163</a>
212
- <a name='L164'></a><a href='#L164'>164</a>
213
- <a name='L165'></a><a href='#L165'>165</a>
214
- <a name='L166'></a><a href='#L166'>166</a>
215
- <a name='L167'></a><a href='#L167'>167</a>
216
- <a name='L168'></a><a href='#L168'>168</a>
217
- <a name='L169'></a><a href='#L169'>169</a>
218
- <a name='L170'></a><a href='#L170'>170</a>
219
- <a name='L171'></a><a href='#L171'>171</a>
220
- <a name='L172'></a><a href='#L172'>172</a>
221
- <a name='L173'></a><a href='#L173'>173</a>
222
- <a name='L174'></a><a href='#L174'>174</a>
223
- <a name='L175'></a><a href='#L175'>175</a>
224
- <a name='L176'></a><a href='#L176'>176</a>
225
- <a name='L177'></a><a href='#L177'>177</a>
226
- <a name='L178'></a><a href='#L178'>178</a>
227
- <a name='L179'></a><a href='#L179'>179</a>
228
- <a name='L180'></a><a href='#L180'>180</a>
229
- <a name='L181'></a><a href='#L181'>181</a>
230
- <a name='L182'></a><a href='#L182'>182</a>
231
- <a name='L183'></a><a href='#L183'>183</a>
232
- <a name='L184'></a><a href='#L184'>184</a>
233
- <a name='L185'></a><a href='#L185'>185</a>
234
- <a name='L186'></a><a href='#L186'>186</a>
235
- <a name='L187'></a><a href='#L187'>187</a>
236
- <a name='L188'></a><a href='#L188'>188</a>
237
- <a name='L189'></a><a href='#L189'>189</a>
238
- <a name='L190'></a><a href='#L190'>190</a>
239
- <a name='L191'></a><a href='#L191'>191</a>
240
- <a name='L192'></a><a href='#L192'>192</a>
241
- <a name='L193'></a><a href='#L193'>193</a>
242
- <a name='L194'></a><a href='#L194'>194</a>
243
- <a name='L195'></a><a href='#L195'>195</a>
244
- <a name='L196'></a><a href='#L196'>196</a>
245
- <a name='L197'></a><a href='#L197'>197</a>
246
- <a name='L198'></a><a href='#L198'>198</a>
247
- <a name='L199'></a><a href='#L199'>199</a>
248
- <a name='L200'></a><a href='#L200'>200</a>
249
- <a name='L201'></a><a href='#L201'>201</a>
250
- <a name='L202'></a><a href='#L202'>202</a>
251
- <a name='L203'></a><a href='#L203'>203</a>
252
- <a name='L204'></a><a href='#L204'>204</a>
253
- <a name='L205'></a><a href='#L205'>205</a>
254
- <a name='L206'></a><a href='#L206'>206</a>
255
- <a name='L207'></a><a href='#L207'>207</a>
256
- <a name='L208'></a><a href='#L208'>208</a>
257
- <a name='L209'></a><a href='#L209'>209</a>
258
- <a name='L210'></a><a href='#L210'>210</a>
259
- <a name='L211'></a><a href='#L211'>211</a>
260
- <a name='L212'></a><a href='#L212'>212</a>
261
- <a name='L213'></a><a href='#L213'>213</a>
262
- <a name='L214'></a><a href='#L214'>214</a>
263
- <a name='L215'></a><a href='#L215'>215</a>
264
- <a name='L216'></a><a href='#L216'>216</a>
265
- <a name='L217'></a><a href='#L217'>217</a>
266
- <a name='L218'></a><a href='#L218'>218</a>
267
- <a name='L219'></a><a href='#L219'>219</a>
268
- <a name='L220'></a><a href='#L220'>220</a>
269
- <a name='L221'></a><a href='#L221'>221</a>
270
- <a name='L222'></a><a href='#L222'>222</a>
271
- <a name='L223'></a><a href='#L223'>223</a>
272
- <a name='L224'></a><a href='#L224'>224</a>
273
- <a name='L225'></a><a href='#L225'>225</a>
274
- <a name='L226'></a><a href='#L226'>226</a>
275
- <a name='L227'></a><a href='#L227'>227</a>
276
- <a name='L228'></a><a href='#L228'>228</a>
277
- <a name='L229'></a><a href='#L229'>229</a>
278
- <a name='L230'></a><a href='#L230'>230</a>
279
- <a name='L231'></a><a href='#L231'>231</a>
280
- <a name='L232'></a><a href='#L232'>232</a>
281
- <a name='L233'></a><a href='#L233'>233</a>
282
- <a name='L234'></a><a href='#L234'>234</a>
283
- <a name='L235'></a><a href='#L235'>235</a>
284
- <a name='L236'></a><a href='#L236'>236</a>
285
- <a name='L237'></a><a href='#L237'>237</a>
286
- <a name='L238'></a><a href='#L238'>238</a>
287
- <a name='L239'></a><a href='#L239'>239</a>
288
- <a name='L240'></a><a href='#L240'>240</a>
289
- <a name='L241'></a><a href='#L241'>241</a>
290
- <a name='L242'></a><a href='#L242'>242</a>
291
- <a name='L243'></a><a href='#L243'>243</a>
292
- <a name='L244'></a><a href='#L244'>244</a>
293
- <a name='L245'></a><a href='#L245'>245</a>
294
- <a name='L246'></a><a href='#L246'>246</a>
295
- <a name='L247'></a><a href='#L247'>247</a>
296
- <a name='L248'></a><a href='#L248'>248</a>
297
- <a name='L249'></a><a href='#L249'>249</a>
298
- <a name='L250'></a><a href='#L250'>250</a>
299
- <a name='L251'></a><a href='#L251'>251</a>
300
- <a name='L252'></a><a href='#L252'>252</a>
301
- <a name='L253'></a><a href='#L253'>253</a>
302
- <a name='L254'></a><a href='#L254'>254</a>
303
- <a name='L255'></a><a href='#L255'>255</a>
304
- <a name='L256'></a><a href='#L256'>256</a>
305
- <a name='L257'></a><a href='#L257'>257</a>
306
- <a name='L258'></a><a href='#L258'>258</a>
307
- <a name='L259'></a><a href='#L259'>259</a>
308
- <a name='L260'></a><a href='#L260'>260</a>
309
- <a name='L261'></a><a href='#L261'>261</a>
310
- <a name='L262'></a><a href='#L262'>262</a>
311
- <a name='L263'></a><a href='#L263'>263</a>
312
- <a name='L264'></a><a href='#L264'>264</a>
313
- <a name='L265'></a><a href='#L265'>265</a>
314
- <a name='L266'></a><a href='#L266'>266</a>
315
- <a name='L267'></a><a href='#L267'>267</a>
316
- <a name='L268'></a><a href='#L268'>268</a>
317
- <a name='L269'></a><a href='#L269'>269</a>
318
- <a name='L270'></a><a href='#L270'>270</a>
319
- <a name='L271'></a><a href='#L271'>271</a>
320
- <a name='L272'></a><a href='#L272'>272</a>
321
- <a name='L273'></a><a href='#L273'>273</a>
322
- <a name='L274'></a><a href='#L274'>274</a>
323
- <a name='L275'></a><a href='#L275'>275</a>
324
- <a name='L276'></a><a href='#L276'>276</a>
325
- <a name='L277'></a><a href='#L277'>277</a>
326
- <a name='L278'></a><a href='#L278'>278</a>
327
- <a name='L279'></a><a href='#L279'>279</a>
328
- <a name='L280'></a><a href='#L280'>280</a>
329
- <a name='L281'></a><a href='#L281'>281</a>
330
- <a name='L282'></a><a href='#L282'>282</a>
331
- <a name='L283'></a><a href='#L283'>283</a>
332
- <a name='L284'></a><a href='#L284'>284</a>
333
- <a name='L285'></a><a href='#L285'>285</a>
334
- <a name='L286'></a><a href='#L286'>286</a>
335
- <a name='L287'></a><a href='#L287'>287</a>
336
- <a name='L288'></a><a href='#L288'>288</a>
337
- <a name='L289'></a><a href='#L289'>289</a>
338
- <a name='L290'></a><a href='#L290'>290</a>
339
- <a name='L291'></a><a href='#L291'>291</a>
340
- <a name='L292'></a><a href='#L292'>292</a>
341
- <a name='L293'></a><a href='#L293'>293</a>
342
- <a name='L294'></a><a href='#L294'>294</a>
343
- <a name='L295'></a><a href='#L295'>295</a>
344
- <a name='L296'></a><a href='#L296'>296</a>
345
- <a name='L297'></a><a href='#L297'>297</a>
346
- <a name='L298'></a><a href='#L298'>298</a>
347
- <a name='L299'></a><a href='#L299'>299</a>
348
- <a name='L300'></a><a href='#L300'>300</a>
349
- <a name='L301'></a><a href='#L301'>301</a>
350
- <a name='L302'></a><a href='#L302'>302</a>
351
- <a name='L303'></a><a href='#L303'>303</a>
352
- <a name='L304'></a><a href='#L304'>304</a>
353
- <a name='L305'></a><a href='#L305'>305</a>
354
- <a name='L306'></a><a href='#L306'>306</a>
355
- <a name='L307'></a><a href='#L307'>307</a>
356
- <a name='L308'></a><a href='#L308'>308</a>
357
- <a name='L309'></a><a href='#L309'>309</a>
358
- <a name='L310'></a><a href='#L310'>310</a>
359
- <a name='L311'></a><a href='#L311'>311</a>
360
- <a name='L312'></a><a href='#L312'>312</a>
361
- <a name='L313'></a><a href='#L313'>313</a>
362
- <a name='L314'></a><a href='#L314'>314</a>
363
- <a name='L315'></a><a href='#L315'>315</a>
364
- <a name='L316'></a><a href='#L316'>316</a>
365
- <a name='L317'></a><a href='#L317'>317</a>
366
- <a name='L318'></a><a href='#L318'>318</a>
367
- <a name='L319'></a><a href='#L319'>319</a>
368
- <a name='L320'></a><a href='#L320'>320</a>
369
- <a name='L321'></a><a href='#L321'>321</a>
370
- <a name='L322'></a><a href='#L322'>322</a>
371
- <a name='L323'></a><a href='#L323'>323</a>
372
- <a name='L324'></a><a href='#L324'>324</a>
373
- <a name='L325'></a><a href='#L325'>325</a>
374
- <a name='L326'></a><a href='#L326'>326</a>
375
- <a name='L327'></a><a href='#L327'>327</a>
376
- <a name='L328'></a><a href='#L328'>328</a>
377
- <a name='L329'></a><a href='#L329'>329</a>
378
- <a name='L330'></a><a href='#L330'>330</a>
379
- <a name='L331'></a><a href='#L331'>331</a>
380
- <a name='L332'></a><a href='#L332'>332</a>
381
- <a name='L333'></a><a href='#L333'>333</a>
382
- <a name='L334'></a><a href='#L334'>334</a>
383
- <a name='L335'></a><a href='#L335'>335</a>
384
- <a name='L336'></a><a href='#L336'>336</a>
385
- <a name='L337'></a><a href='#L337'>337</a>
386
- <a name='L338'></a><a href='#L338'>338</a>
387
- <a name='L339'></a><a href='#L339'>339</a>
388
- <a name='L340'></a><a href='#L340'>340</a>
389
- <a name='L341'></a><a href='#L341'>341</a>
390
- <a name='L342'></a><a href='#L342'>342</a>
391
- <a name='L343'></a><a href='#L343'>343</a>
392
- <a name='L344'></a><a href='#L344'>344</a>
393
- <a name='L345'></a><a href='#L345'>345</a>
394
- <a name='L346'></a><a href='#L346'>346</a>
395
- <a name='L347'></a><a href='#L347'>347</a>
396
- <a name='L348'></a><a href='#L348'>348</a>
397
- <a name='L349'></a><a href='#L349'>349</a>
398
- <a name='L350'></a><a href='#L350'>350</a>
399
- <a name='L351'></a><a href='#L351'>351</a>
400
- <a name='L352'></a><a href='#L352'>352</a>
401
- <a name='L353'></a><a href='#L353'>353</a>
402
- <a name='L354'></a><a href='#L354'>354</a>
403
- <a name='L355'></a><a href='#L355'>355</a>
404
- <a name='L356'></a><a href='#L356'>356</a>
405
- <a name='L357'></a><a href='#L357'>357</a>
406
- <a name='L358'></a><a href='#L358'>358</a>
407
- <a name='L359'></a><a href='#L359'>359</a>
408
- <a name='L360'></a><a href='#L360'>360</a>
409
- <a name='L361'></a><a href='#L361'>361</a>
410
- <a name='L362'></a><a href='#L362'>362</a>
411
- <a name='L363'></a><a href='#L363'>363</a>
412
- <a name='L364'></a><a href='#L364'>364</a>
413
- <a name='L365'></a><a href='#L365'>365</a>
414
- <a name='L366'></a><a href='#L366'>366</a>
415
- <a name='L367'></a><a href='#L367'>367</a>
416
- <a name='L368'></a><a href='#L368'>368</a>
417
- <a name='L369'></a><a href='#L369'>369</a>
418
- <a name='L370'></a><a href='#L370'>370</a>
419
- <a name='L371'></a><a href='#L371'>371</a>
420
- <a name='L372'></a><a href='#L372'>372</a>
421
- <a name='L373'></a><a href='#L373'>373</a>
422
- <a name='L374'></a><a href='#L374'>374</a>
423
- <a name='L375'></a><a href='#L375'>375</a>
424
- <a name='L376'></a><a href='#L376'>376</a>
425
- <a name='L377'></a><a href='#L377'>377</a>
426
- <a name='L378'></a><a href='#L378'>378</a>
427
- <a name='L379'></a><a href='#L379'>379</a>
428
- <a name='L380'></a><a href='#L380'>380</a>
429
- <a name='L381'></a><a href='#L381'>381</a>
430
- <a name='L382'></a><a href='#L382'>382</a>
431
- <a name='L383'></a><a href='#L383'>383</a>
432
- <a name='L384'></a><a href='#L384'>384</a>
433
- <a name='L385'></a><a href='#L385'>385</a>
434
- <a name='L386'></a><a href='#L386'>386</a>
435
- <a name='L387'></a><a href='#L387'>387</a>
436
- <a name='L388'></a><a href='#L388'>388</a>
437
- <a name='L389'></a><a href='#L389'>389</a>
438
- <a name='L390'></a><a href='#L390'>390</a>
439
- <a name='L391'></a><a href='#L391'>391</a>
440
- <a name='L392'></a><a href='#L392'>392</a>
441
- <a name='L393'></a><a href='#L393'>393</a>
442
- <a name='L394'></a><a href='#L394'>394</a>
443
- <a name='L395'></a><a href='#L395'>395</a>
444
- <a name='L396'></a><a href='#L396'>396</a>
445
- <a name='L397'></a><a href='#L397'>397</a>
446
- <a name='L398'></a><a href='#L398'>398</a>
447
- <a name='L399'></a><a href='#L399'>399</a>
448
- <a name='L400'></a><a href='#L400'>400</a>
449
- <a name='L401'></a><a href='#L401'>401</a>
450
- <a name='L402'></a><a href='#L402'>402</a>
451
- <a name='L403'></a><a href='#L403'>403</a>
452
- <a name='L404'></a><a href='#L404'>404</a>
453
- <a name='L405'></a><a href='#L405'>405</a>
454
- <a name='L406'></a><a href='#L406'>406</a>
455
- <a name='L407'></a><a href='#L407'>407</a>
456
- <a name='L408'></a><a href='#L408'>408</a>
457
- <a name='L409'></a><a href='#L409'>409</a>
458
- <a name='L410'></a><a href='#L410'>410</a>
459
- <a name='L411'></a><a href='#L411'>411</a>
460
- <a name='L412'></a><a href='#L412'>412</a>
461
- <a name='L413'></a><a href='#L413'>413</a>
462
- <a name='L414'></a><a href='#L414'>414</a>
463
- <a name='L415'></a><a href='#L415'>415</a>
464
- <a name='L416'></a><a href='#L416'>416</a>
465
- <a name='L417'></a><a href='#L417'>417</a>
466
- <a name='L418'></a><a href='#L418'>418</a>
467
- <a name='L419'></a><a href='#L419'>419</a>
468
- <a name='L420'></a><a href='#L420'>420</a>
469
- <a name='L421'></a><a href='#L421'>421</a>
470
- <a name='L422'></a><a href='#L422'>422</a>
471
- <a name='L423'></a><a href='#L423'>423</a>
472
- <a name='L424'></a><a href='#L424'>424</a>
473
- <a name='L425'></a><a href='#L425'>425</a>
474
- <a name='L426'></a><a href='#L426'>426</a>
475
- <a name='L427'></a><a href='#L427'>427</a>
476
- <a name='L428'></a><a href='#L428'>428</a>
477
- <a name='L429'></a><a href='#L429'>429</a>
478
- <a name='L430'></a><a href='#L430'>430</a>
479
- <a name='L431'></a><a href='#L431'>431</a>
480
- <a name='L432'></a><a href='#L432'>432</a>
481
- <a name='L433'></a><a href='#L433'>433</a>
482
- <a name='L434'></a><a href='#L434'>434</a>
483
- <a name='L435'></a><a href='#L435'>435</a>
484
- <a name='L436'></a><a href='#L436'>436</a>
485
- <a name='L437'></a><a href='#L437'>437</a>
486
- <a name='L438'></a><a href='#L438'>438</a>
487
- <a name='L439'></a><a href='#L439'>439</a>
488
- <a name='L440'></a><a href='#L440'>440</a>
489
- <a name='L441'></a><a href='#L441'>441</a>
490
- <a name='L442'></a><a href='#L442'>442</a>
491
- <a name='L443'></a><a href='#L443'>443</a>
492
- <a name='L444'></a><a href='#L444'>444</a>
493
- <a name='L445'></a><a href='#L445'>445</a>
494
- <a name='L446'></a><a href='#L446'>446</a>
495
- <a name='L447'></a><a href='#L447'>447</a>
496
- <a name='L448'></a><a href='#L448'>448</a>
497
- <a name='L449'></a><a href='#L449'>449</a>
498
- <a name='L450'></a><a href='#L450'>450</a>
499
- <a name='L451'></a><a href='#L451'>451</a>
500
- <a name='L452'></a><a href='#L452'>452</a>
501
- <a name='L453'></a><a href='#L453'>453</a>
502
- <a name='L454'></a><a href='#L454'>454</a>
503
- <a name='L455'></a><a href='#L455'>455</a>
504
- <a name='L456'></a><a href='#L456'>456</a>
505
- <a name='L457'></a><a href='#L457'>457</a>
506
- <a name='L458'></a><a href='#L458'>458</a>
507
- <a name='L459'></a><a href='#L459'>459</a>
508
- <a name='L460'></a><a href='#L460'>460</a>
509
- <a name='L461'></a><a href='#L461'>461</a>
510
- <a name='L462'></a><a href='#L462'>462</a>
511
- <a name='L463'></a><a href='#L463'>463</a>
512
- <a name='L464'></a><a href='#L464'>464</a>
513
- <a name='L465'></a><a href='#L465'>465</a>
514
- <a name='L466'></a><a href='#L466'>466</a>
515
- <a name='L467'></a><a href='#L467'>467</a>
516
- <a name='L468'></a><a href='#L468'>468</a>
517
- <a name='L469'></a><a href='#L469'>469</a>
518
- <a name='L470'></a><a href='#L470'>470</a>
519
- <a name='L471'></a><a href='#L471'>471</a>
520
- <a name='L472'></a><a href='#L472'>472</a>
521
- <a name='L473'></a><a href='#L473'>473</a>
522
- <a name='L474'></a><a href='#L474'>474</a>
523
- <a name='L475'></a><a href='#L475'>475</a>
524
- <a name='L476'></a><a href='#L476'>476</a>
525
- <a name='L477'></a><a href='#L477'>477</a>
526
- <a name='L478'></a><a href='#L478'>478</a>
527
- <a name='L479'></a><a href='#L479'>479</a>
528
- <a name='L480'></a><a href='#L480'>480</a>
529
- <a name='L481'></a><a href='#L481'>481</a>
530
- <a name='L482'></a><a href='#L482'>482</a>
531
- <a name='L483'></a><a href='#L483'>483</a>
532
- <a name='L484'></a><a href='#L484'>484</a>
533
- <a name='L485'></a><a href='#L485'>485</a>
534
- <a name='L486'></a><a href='#L486'>486</a>
535
- <a name='L487'></a><a href='#L487'>487</a>
536
- <a name='L488'></a><a href='#L488'>488</a>
537
- <a name='L489'></a><a href='#L489'>489</a>
538
- <a name='L490'></a><a href='#L490'>490</a>
539
- <a name='L491'></a><a href='#L491'>491</a>
540
- <a name='L492'></a><a href='#L492'>492</a>
541
- <a name='L493'></a><a href='#L493'>493</a>
542
- <a name='L494'></a><a href='#L494'>494</a>
543
- <a name='L495'></a><a href='#L495'>495</a>
544
- <a name='L496'></a><a href='#L496'>496</a>
545
- <a name='L497'></a><a href='#L497'>497</a>
546
- <a name='L498'></a><a href='#L498'>498</a>
547
- <a name='L499'></a><a href='#L499'>499</a>
548
- <a name='L500'></a><a href='#L500'>500</a>
549
- <a name='L501'></a><a href='#L501'>501</a>
550
- <a name='L502'></a><a href='#L502'>502</a>
551
- <a name='L503'></a><a href='#L503'>503</a>
552
- <a name='L504'></a><a href='#L504'>504</a>
553
- <a name='L505'></a><a href='#L505'>505</a>
554
- <a name='L506'></a><a href='#L506'>506</a>
555
- <a name='L507'></a><a href='#L507'>507</a>
556
- <a name='L508'></a><a href='#L508'>508</a>
557
- <a name='L509'></a><a href='#L509'>509</a>
558
- <a name='L510'></a><a href='#L510'>510</a>
559
- <a name='L511'></a><a href='#L511'>511</a>
560
- <a name='L512'></a><a href='#L512'>512</a>
561
- <a name='L513'></a><a href='#L513'>513</a>
562
- <a name='L514'></a><a href='#L514'>514</a>
563
- <a name='L515'></a><a href='#L515'>515</a>
564
- <a name='L516'></a><a href='#L516'>516</a>
565
- <a name='L517'></a><a href='#L517'>517</a>
566
- <a name='L518'></a><a href='#L518'>518</a>
567
- <a name='L519'></a><a href='#L519'>519</a>
568
- <a name='L520'></a><a href='#L520'>520</a>
569
- <a name='L521'></a><a href='#L521'>521</a>
570
- <a name='L522'></a><a href='#L522'>522</a>
571
- <a name='L523'></a><a href='#L523'>523</a>
572
- <a name='L524'></a><a href='#L524'>524</a>
573
- <a name='L525'></a><a href='#L525'>525</a>
574
- <a name='L526'></a><a href='#L526'>526</a>
575
- <a name='L527'></a><a href='#L527'>527</a>
576
- <a name='L528'></a><a href='#L528'>528</a>
577
- <a name='L529'></a><a href='#L529'>529</a>
578
- <a name='L530'></a><a href='#L530'>530</a>
579
- <a name='L531'></a><a href='#L531'>531</a>
580
- <a name='L532'></a><a href='#L532'>532</a>
581
- <a name='L533'></a><a href='#L533'>533</a>
582
- <a name='L534'></a><a href='#L534'>534</a>
583
- <a name='L535'></a><a href='#L535'>535</a>
584
- <a name='L536'></a><a href='#L536'>536</a>
585
- <a name='L537'></a><a href='#L537'>537</a>
586
- <a name='L538'></a><a href='#L538'>538</a>
587
- <a name='L539'></a><a href='#L539'>539</a>
588
- <a name='L540'></a><a href='#L540'>540</a>
589
- <a name='L541'></a><a href='#L541'>541</a>
590
- <a name='L542'></a><a href='#L542'>542</a>
591
- <a name='L543'></a><a href='#L543'>543</a>
592
- <a name='L544'></a><a href='#L544'>544</a>
593
- <a name='L545'></a><a href='#L545'>545</a>
594
- <a name='L546'></a><a href='#L546'>546</a>
595
- <a name='L547'></a><a href='#L547'>547</a>
596
- <a name='L548'></a><a href='#L548'>548</a>
597
- <a name='L549'></a><a href='#L549'>549</a>
598
- <a name='L550'></a><a href='#L550'>550</a>
599
- <a name='L551'></a><a href='#L551'>551</a>
600
- <a name='L552'></a><a href='#L552'>552</a>
601
- <a name='L553'></a><a href='#L553'>553</a>
602
- <a name='L554'></a><a href='#L554'>554</a>
603
- <a name='L555'></a><a href='#L555'>555</a>
604
- <a name='L556'></a><a href='#L556'>556</a>
605
- <a name='L557'></a><a href='#L557'>557</a>
606
- <a name='L558'></a><a href='#L558'>558</a>
607
- <a name='L559'></a><a href='#L559'>559</a>
608
- <a name='L560'></a><a href='#L560'>560</a>
609
- <a name='L561'></a><a href='#L561'>561</a>
610
- <a name='L562'></a><a href='#L562'>562</a>
611
- <a name='L563'></a><a href='#L563'>563</a>
612
- <a name='L564'></a><a href='#L564'>564</a>
613
- <a name='L565'></a><a href='#L565'>565</a>
614
- <a name='L566'></a><a href='#L566'>566</a>
615
- <a name='L567'></a><a href='#L567'>567</a>
616
- <a name='L568'></a><a href='#L568'>568</a>
617
- <a name='L569'></a><a href='#L569'>569</a>
618
- <a name='L570'></a><a href='#L570'>570</a>
619
- <a name='L571'></a><a href='#L571'>571</a>
620
- <a name='L572'></a><a href='#L572'>572</a>
621
- <a name='L573'></a><a href='#L573'>573</a>
622
- <a name='L574'></a><a href='#L574'>574</a>
623
- <a name='L575'></a><a href='#L575'>575</a>
624
- <a name='L576'></a><a href='#L576'>576</a>
625
- <a name='L577'></a><a href='#L577'>577</a>
626
- <a name='L578'></a><a href='#L578'>578</a>
627
- <a name='L579'></a><a href='#L579'>579</a>
628
- <a name='L580'></a><a href='#L580'>580</a>
629
- <a name='L581'></a><a href='#L581'>581</a>
630
- <a name='L582'></a><a href='#L582'>582</a>
631
- <a name='L583'></a><a href='#L583'>583</a>
632
- <a name='L584'></a><a href='#L584'>584</a>
633
- <a name='L585'></a><a href='#L585'>585</a>
634
- <a name='L586'></a><a href='#L586'>586</a>
635
- <a name='L587'></a><a href='#L587'>587</a>
636
- <a name='L588'></a><a href='#L588'>588</a>
637
- <a name='L589'></a><a href='#L589'>589</a>
638
- <a name='L590'></a><a href='#L590'>590</a>
639
- <a name='L591'></a><a href='#L591'>591</a>
640
- <a name='L592'></a><a href='#L592'>592</a>
641
- <a name='L593'></a><a href='#L593'>593</a>
642
- <a name='L594'></a><a href='#L594'>594</a>
643
- <a name='L595'></a><a href='#L595'>595</a>
644
- <a name='L596'></a><a href='#L596'>596</a>
645
- <a name='L597'></a><a href='#L597'>597</a>
646
- <a name='L598'></a><a href='#L598'>598</a>
647
- <a name='L599'></a><a href='#L599'>599</a>
648
- <a name='L600'></a><a href='#L600'>600</a>
649
- <a name='L601'></a><a href='#L601'>601</a>
650
- <a name='L602'></a><a href='#L602'>602</a>
651
- <a name='L603'></a><a href='#L603'>603</a>
652
- <a name='L604'></a><a href='#L604'>604</a>
653
- <a name='L605'></a><a href='#L605'>605</a>
654
- <a name='L606'></a><a href='#L606'>606</a>
655
- <a name='L607'></a><a href='#L607'>607</a>
656
- <a name='L608'></a><a href='#L608'>608</a>
657
- <a name='L609'></a><a href='#L609'>609</a>
658
- <a name='L610'></a><a href='#L610'>610</a>
659
- <a name='L611'></a><a href='#L611'>611</a>
660
- <a name='L612'></a><a href='#L612'>612</a>
661
- <a name='L613'></a><a href='#L613'>613</a>
662
- <a name='L614'></a><a href='#L614'>614</a>
663
- <a name='L615'></a><a href='#L615'>615</a>
664
- <a name='L616'></a><a href='#L616'>616</a>
665
- <a name='L617'></a><a href='#L617'>617</a>
666
- <a name='L618'></a><a href='#L618'>618</a>
667
- <a name='L619'></a><a href='#L619'>619</a>
668
- <a name='L620'></a><a href='#L620'>620</a>
669
- <a name='L621'></a><a href='#L621'>621</a>
670
- <a name='L622'></a><a href='#L622'>622</a>
671
- <a name='L623'></a><a href='#L623'>623</a>
672
- <a name='L624'></a><a href='#L624'>624</a>
673
- <a name='L625'></a><a href='#L625'>625</a>
674
- <a name='L626'></a><a href='#L626'>626</a>
675
- <a name='L627'></a><a href='#L627'>627</a>
676
- <a name='L628'></a><a href='#L628'>628</a>
677
- <a name='L629'></a><a href='#L629'>629</a>
678
- <a name='L630'></a><a href='#L630'>630</a>
679
- <a name='L631'></a><a href='#L631'>631</a>
680
- <a name='L632'></a><a href='#L632'>632</a>
681
- <a name='L633'></a><a href='#L633'>633</a>
682
- <a name='L634'></a><a href='#L634'>634</a>
683
- <a name='L635'></a><a href='#L635'>635</a>
684
- <a name='L636'></a><a href='#L636'>636</a>
685
- <a name='L637'></a><a href='#L637'>637</a>
686
- <a name='L638'></a><a href='#L638'>638</a>
687
- <a name='L639'></a><a href='#L639'>639</a>
688
- <a name='L640'></a><a href='#L640'>640</a>
689
- <a name='L641'></a><a href='#L641'>641</a>
690
- <a name='L642'></a><a href='#L642'>642</a>
691
- <a name='L643'></a><a href='#L643'>643</a>
692
- <a name='L644'></a><a href='#L644'>644</a>
693
- <a name='L645'></a><a href='#L645'>645</a>
694
- <a name='L646'></a><a href='#L646'>646</a>
695
- <a name='L647'></a><a href='#L647'>647</a>
696
- <a name='L648'></a><a href='#L648'>648</a>
697
- <a name='L649'></a><a href='#L649'>649</a>
698
- <a name='L650'></a><a href='#L650'>650</a>
699
- <a name='L651'></a><a href='#L651'>651</a>
700
- <a name='L652'></a><a href='#L652'>652</a>
701
- <a name='L653'></a><a href='#L653'>653</a>
702
- <a name='L654'></a><a href='#L654'>654</a>
703
- <a name='L655'></a><a href='#L655'>655</a>
704
- <a name='L656'></a><a href='#L656'>656</a>
705
- <a name='L657'></a><a href='#L657'>657</a>
706
- <a name='L658'></a><a href='#L658'>658</a>
707
- <a name='L659'></a><a href='#L659'>659</a>
708
- <a name='L660'></a><a href='#L660'>660</a>
709
- <a name='L661'></a><a href='#L661'>661</a>
710
- <a name='L662'></a><a href='#L662'>662</a>
711
- <a name='L663'></a><a href='#L663'>663</a>
712
- <a name='L664'></a><a href='#L664'>664</a>
713
- <a name='L665'></a><a href='#L665'>665</a>
714
- <a name='L666'></a><a href='#L666'>666</a>
715
- <a name='L667'></a><a href='#L667'>667</a>
716
- <a name='L668'></a><a href='#L668'>668</a>
717
- <a name='L669'></a><a href='#L669'>669</a>
718
- <a name='L670'></a><a href='#L670'>670</a>
719
- <a name='L671'></a><a href='#L671'>671</a>
720
- <a name='L672'></a><a href='#L672'>672</a>
721
- <a name='L673'></a><a href='#L673'>673</a>
722
- <a name='L674'></a><a href='#L674'>674</a>
723
- <a name='L675'></a><a href='#L675'>675</a>
724
- <a name='L676'></a><a href='#L676'>676</a>
725
- <a name='L677'></a><a href='#L677'>677</a>
726
- <a name='L678'></a><a href='#L678'>678</a>
727
- <a name='L679'></a><a href='#L679'>679</a>
728
- <a name='L680'></a><a href='#L680'>680</a>
729
- <a name='L681'></a><a href='#L681'>681</a>
730
- <a name='L682'></a><a href='#L682'>682</a>
731
- <a name='L683'></a><a href='#L683'>683</a>
732
- <a name='L684'></a><a href='#L684'>684</a>
733
- <a name='L685'></a><a href='#L685'>685</a>
734
- <a name='L686'></a><a href='#L686'>686</a>
735
- <a name='L687'></a><a href='#L687'>687</a>
736
- <a name='L688'></a><a href='#L688'>688</a>
737
- <a name='L689'></a><a href='#L689'>689</a>
738
- <a name='L690'></a><a href='#L690'>690</a>
739
- <a name='L691'></a><a href='#L691'>691</a>
740
- <a name='L692'></a><a href='#L692'>692</a>
741
- <a name='L693'></a><a href='#L693'>693</a>
742
- <a name='L694'></a><a href='#L694'>694</a>
743
- <a name='L695'></a><a href='#L695'>695</a>
744
- <a name='L696'></a><a href='#L696'>696</a>
745
- <a name='L697'></a><a href='#L697'>697</a>
746
- <a name='L698'></a><a href='#L698'>698</a>
747
- <a name='L699'></a><a href='#L699'>699</a>
748
- <a name='L700'></a><a href='#L700'>700</a>
749
- <a name='L701'></a><a href='#L701'>701</a>
750
- <a name='L702'></a><a href='#L702'>702</a>
751
- <a name='L703'></a><a href='#L703'>703</a>
752
- <a name='L704'></a><a href='#L704'>704</a>
753
- <a name='L705'></a><a href='#L705'>705</a>
754
- <a name='L706'></a><a href='#L706'>706</a>
755
- <a name='L707'></a><a href='#L707'>707</a>
756
- <a name='L708'></a><a href='#L708'>708</a>
757
- <a name='L709'></a><a href='#L709'>709</a>
758
- <a name='L710'></a><a href='#L710'>710</a>
759
- <a name='L711'></a><a href='#L711'>711</a>
760
- <a name='L712'></a><a href='#L712'>712</a>
761
- <a name='L713'></a><a href='#L713'>713</a>
762
- <a name='L714'></a><a href='#L714'>714</a>
763
- <a name='L715'></a><a href='#L715'>715</a>
764
- <a name='L716'></a><a href='#L716'>716</a>
765
- <a name='L717'></a><a href='#L717'>717</a>
766
- <a name='L718'></a><a href='#L718'>718</a>
767
- <a name='L719'></a><a href='#L719'>719</a>
768
- <a name='L720'></a><a href='#L720'>720</a>
769
- <a name='L721'></a><a href='#L721'>721</a>
770
- <a name='L722'></a><a href='#L722'>722</a>
771
- <a name='L723'></a><a href='#L723'>723</a>
772
- <a name='L724'></a><a href='#L724'>724</a>
773
- <a name='L725'></a><a href='#L725'>725</a>
774
- <a name='L726'></a><a href='#L726'>726</a>
775
- <a name='L727'></a><a href='#L727'>727</a>
776
- <a name='L728'></a><a href='#L728'>728</a>
777
- <a name='L729'></a><a href='#L729'>729</a>
778
- <a name='L730'></a><a href='#L730'>730</a>
779
- <a name='L731'></a><a href='#L731'>731</a>
780
- <a name='L732'></a><a href='#L732'>732</a>
781
- <a name='L733'></a><a href='#L733'>733</a>
782
- <a name='L734'></a><a href='#L734'>734</a>
783
- <a name='L735'></a><a href='#L735'>735</a>
784
- <a name='L736'></a><a href='#L736'>736</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
785
- <span class="cline-any cline-yes">1x</span>
786
- <span class="cline-any cline-yes">1x</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-yes">1x</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-yes">510x</span>
797
- <span class="cline-any cline-no">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-yes">510x</span>
801
- <span class="cline-any cline-yes">510x</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-yes">510x</span>
804
- <span class="cline-any cline-yes">510x</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-yes">510x</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-yes">510x</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-yes">510x</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-yes">510x</span>
820
- <span class="cline-any cline-yes">510x</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-yes">510x</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-yes">510x</span>
826
- <span class="cline-any cline-yes">510x</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-yes">510x</span>
829
- <span class="cline-any cline-yes">411x</span>
830
- <span class="cline-any cline-yes">411x</span>
831
- <span class="cline-any cline-yes">411x</span>
832
- <span class="cline-any cline-neutral">&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-yes">510x</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-yes">510x</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-yes">510x</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
848
- <span class="cline-any cline-no">&nbsp;</span>
849
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-no">&nbsp;</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-no">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-no">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-no">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-no">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-yes">12x</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-no">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-yes">378x</span>
887
- <span class="cline-any cline-no">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-yes">1753x</span>
891
- <span class="cline-any cline-yes">1020x</span>
892
- <span class="cline-any cline-no">&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-no">&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-yes">7x</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-yes">1580x</span>
903
- <span class="cline-any cline-yes">1384x</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-yes">15x</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-yes">15x</span>
912
- <span class="cline-any cline-yes">7x</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-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
921
- <span class="cline-any cline-yes">15x</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-yes">273x</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-yes">1105x</span>
937
- <span class="cline-any cline-yes">162x</span>
938
- <span class="cline-any cline-yes">162x</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-yes">943x</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-yes">808x</span>
944
- <span class="cline-any cline-yes">808x</span>
945
- <span class="cline-any cline-yes">808x</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-yes">135x</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-yes">104x</span>
950
- <span class="cline-any cline-yes">104x</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-yes">31x</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-no">&nbsp;</span>
955
- <span class="cline-any cline-no">&nbsp;</span>
956
- <span class="cline-any cline-no">&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-yes">31x</span>
961
- <span class="cline-any cline-yes">31x</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-yes">135x</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-yes">135x</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-yes">135x</span>
969
- <span class="cline-any cline-yes">133x</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-yes">133x</span>
972
- <span class="cline-any cline-yes">131x</span>
973
- <span class="cline-any cline-yes">131x</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-yes">131x</span>
976
- <span class="cline-any cline-yes">9x</span>
977
- <span class="cline-any cline-yes">9x</span>
978
- <span class="cline-any cline-yes">9x</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-yes">122x</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-yes">135x</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-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-yes">504x</span>
996
- <span class="cline-any cline-yes">504x</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-yes">504x</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-yes">252x</span>
1001
- <span class="cline-any cline-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-yes">252x</span>
1003
- <span class="cline-any cline-yes">553x</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">553x</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-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-yes">553x</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-yes">252x</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-no">&nbsp;</span>
1019
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-yes">504x</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-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-yes">504x</span>
1032
- <span class="cline-any cline-yes">504x</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-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1042
- <span class="cline-any cline-no">&nbsp;</span>
1043
- <span class="cline-any cline-no">&nbsp;</span>
1044
- <span class="cline-any cline-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-yes">853x</span>
1052
- <span class="cline-any cline-yes">665x</span>
1053
- <span class="cline-any cline-yes">665x</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-yes">853x</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-no">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-yes">853x</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">853x</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-yes">853x</span>
1069
- <span class="cline-any cline-yes">853x</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-yes">853x</span>
1074
- <span class="cline-any cline-neutral">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&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-yes">853x</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-yes">853x</span>
1084
- <span class="cline-any cline-yes">853x</span>
1085
- <span class="cline-any cline-no">&nbsp;</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-yes">853x</span>
1090
- <span class="cline-any cline-yes">853x</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-yes">853x</span>
1093
- <span class="cline-any cline-yes">853x</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-yes">1165x</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-yes">1165x</span>
1109
- <span class="cline-any cline-yes">689x</span>
1110
- <span class="cline-any cline-yes">689x</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-yes">1165x</span>
1114
- <span class="cline-any cline-no">&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-yes">1165x</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-yes">1165x</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-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-yes">1165x</span>
1130
- <span class="cline-any cline-yes">186x</span>
1131
- <span class="cline-any cline-yes">134x</span>
1132
- <span class="cline-any cline-yes">134x</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-yes">134x</span>
1135
- <span class="cline-any cline-yes">8x</span>
1136
- <span class="cline-any cline-yes">8x</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-yes">134x</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-yes">134x</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-yes">1165x</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-yes">1165x</span>
1153
- <span class="cline-any cline-yes">197x</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-yes">197x</span>
1156
- <span class="cline-any cline-yes">197x</span>
1157
- <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-yes">197x</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-yes">197x</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-yes">197x</span>
1163
- <span class="cline-any cline-yes">197x</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-no">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-yes">197x</span>
1171
- <span class="cline-any cline-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-yes">968x</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-yes">289x</span>
1176
- <span class="cline-any cline-yes">289x</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-yes">679x</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-yes">968x</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-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&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-yes">95x</span>
1192
- <span class="cline-any cline-yes">95x</span>
1193
- <span class="cline-any cline-yes">95x</span>
1194
- <span class="cline-any cline-yes">95x</span>
1195
- <span class="cline-any cline-yes">95x</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-no">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-yes">95x</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-neutral">&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-yes">78x</span>
1210
- <span class="cline-any cline-yes">11x</span>
1211
- <span class="cline-any cline-yes">11x</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-yes">78x</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-yes">78x</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-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-yes">5x</span>
1224
- <span class="cline-any cline-yes">5x</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-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-yes">73x</span>
1229
- <span class="cline-any cline-yes">73x</span>
1230
- <span class="cline-any cline-no">&nbsp;</span>
1231
- <span class="cline-any cline-no">&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-yes">73x</span>
1235
- <span class="cline-any cline-yes">73x</span>
1236
- <span class="cline-any cline-yes">73x</span>
1237
- <span class="cline-any cline-yes">73x</span>
1238
- <span class="cline-any cline-yes">73x</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-yes">73x</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-yes">91x</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-yes">91x</span>
1253
- <span class="cline-any cline-yes">18x</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-yes">18x</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-yes">18x</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-yes">18x</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-yes">18x</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-yes">18x</span>
1270
- <span class="cline-any cline-yes">18x</span>
1271
- <span class="cline-any cline-yes">18x</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-yes">18x</span>
1275
- <span class="cline-any cline-yes">4x</span>
1276
- <span class="cline-any cline-yes">4x</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-yes">18x</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-yes">73x</span>
1285
- <span class="cline-any cline-yes">40x</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-yes">40x</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-yes">40x</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-yes">40x</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-yes">40x</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-yes">40x</span>
1298
- <span class="cline-any cline-no">&nbsp;</span>
1299
- <span class="cline-any cline-no">&nbsp;</span>
1300
- <span class="cline-any cline-no">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-yes">40x</span>
1304
- <span class="cline-any cline-yes">35x</span>
1305
- <span class="cline-any cline-yes">35x</span>
1306
- <span class="cline-any cline-yes">35x</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-yes">40x</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-yes">73x</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-no">&nbsp;</span>
1321
- <span class="cline-any cline-no">&nbsp;</span>
1322
- <span class="cline-any cline-no">&nbsp;</span>
1323
- <span class="cline-any cline-no">&nbsp;</span>
1324
- <span class="cline-any cline-no">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-no">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-yes">1329x</span>
1339
- <span class="cline-any cline-yes">1329x</span>
1340
- <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-yes">1329x</span>
1342
- <span class="cline-any cline-neutral">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-yes">15x</span>
1345
- <span class="cline-any cline-yes">14x</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-yes">1315x</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-no">&nbsp;</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-no">&nbsp;</span>
1356
- <span class="cline-any cline-no">&nbsp;</span>
1357
- <span class="cline-any cline-no">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-neutral">&nbsp;</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-no">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-no">&nbsp;</span>
1365
- <span class="cline-any cline-no">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-yes">1315x</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-yes">349x</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-yes">349x</span>
1374
- <span class="cline-any cline-yes">7x</span>
1375
- <span class="cline-any cline-yes">7x</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-yes">349x</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-yes">349x</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-yes">349x</span>
1384
- <span class="cline-any cline-yes">159x</span>
1385
- <span class="cline-any cline-yes">159x</span>
1386
- <span class="cline-any cline-yes">159x</span>
1387
- <span class="cline-any cline-neutral">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-yes">349x</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-yes">966x</span>
1395
- <span class="cline-any cline-yes">966x</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-yes">966x</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-yes">966x</span>
1401
- <span class="cline-any cline-yes">34x</span>
1402
- <span class="cline-any cline-yes">34x</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-neutral">&nbsp;</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-yes">966x</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-yes">966x</span>
1410
- <span class="cline-any cline-yes">966x</span>
1411
- <span class="cline-any cline-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-yes">1329x</span>
1414
- <span class="cline-any cline-yes">438x</span>
1415
- <span class="cline-any cline-neutral">&nbsp;</span>
1416
- <span class="cline-any cline-neutral">&nbsp;</span>
1417
- <span class="cline-any cline-yes">891x</span>
1418
- <span class="cline-any cline-neutral">&nbsp;</span>
1419
- <span class="cline-any cline-neutral">&nbsp;</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-yes">484x</span>
1426
- <span class="cline-any cline-yes">12x</span>
1427
- <span class="cline-any cline-yes">12x</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-yes">472x</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-yes">328x</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-yes">328x</span>
1435
- <span class="cline-any cline-yes">328x</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-no">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-yes">328x</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-yes">194x</span>
1443
- <span class="cline-any cline-yes">194x</span>
1444
- <span class="cline-any cline-yes">194x</span>
1445
- <span class="cline-any cline-yes">194x</span>
1446
- <span class="cline-any cline-yes">194x</span>
1447
- <span class="cline-any cline-neutral">&nbsp;</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-neutral">&nbsp;</span>
1450
- <span class="cline-any cline-yes">134x</span>
1451
- <span class="cline-any cline-yes">134x</span>
1452
- <span class="cline-any cline-yes">134x</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-neutral">&nbsp;</span>
1458
- <span class="cline-any cline-yes">144x</span>
1459
- <span class="cline-any cline-yes">144x</span>
1460
- <span class="cline-any cline-yes">144x</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-yes">144x</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-yes">144x</span>
1465
- <span class="cline-any cline-neutral">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-neutral">&nbsp;</span>
1469
- <span class="cline-any cline-neutral">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-yes">14x</span>
1472
- <span class="cline-any cline-no">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-no">&nbsp;</span>
1475
- <span class="cline-any cline-no">&nbsp;</span>
1476
- <span class="cline-any cline-no">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-no">&nbsp;</span>
1480
- <span class="cline-any cline-neutral">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-neutral">&nbsp;</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-yes">691x</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-neutral">&nbsp;</span>
1493
- <span class="cline-any cline-neutral">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-yes">4x</span>
1498
- <span class="cline-any cline-yes">4x</span>
1499
- <span class="cline-any cline-no">&nbsp;</span>
1500
- <span class="cline-any cline-no">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-yes">4x</span>
1504
- <span class="cline-any cline-yes">4x</span>
1505
- <span class="cline-any cline-no">&nbsp;</span>
1506
- <span class="cline-any cline-no">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-neutral">&nbsp;</span>
1509
- <span class="cline-any cline-yes">4x</span>
1510
- <span class="cline-any cline-yes">4x</span>
1511
- <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-neutral">&nbsp;</span>
1513
- <span class="cline-any cline-neutral">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1515
- <span class="cline-any cline-neutral">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-neutral">&nbsp;</span>
1518
- <span class="cline-any cline-yes">1x</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">var async = require ('async');
1520
- var _ = require ('lodash');
1521
- var uuid = require ('uuid');
1522
- &nbsp;
1523
- var debug = require('debug')('keuss:Queue:base');
1524
- &nbsp;
1525
- &nbsp;
1526
- class Queue {
1527
- &nbsp;
1528
- //////////////////////////////////////////////
1529
- constructor (name, factory, opts, orig_opts) {
1530
- //////////////////////////////////////////////
1531
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!name) {
1532
- <span class="cstat-no" title="statement not covered" > throw new Error ('provide a queue name');</span>
1533
- }
1534
- &nbsp;
1535
- this._opts = opts || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
1536
- this._orig_opts = orig_opts || {};
1537
- &nbsp;
1538
- this._name = name;
1539
- this._factory = factory;
1540
- &nbsp;
1541
- // most mature
1542
- // values:
1543
- // * null: unknown, triggers read this.next_t() from backend
1544
- // * 0: known to be no element in queue, accepts values from insertNotifs
1545
- // * &lt;non-zero int&gt;: a know value, to be trusted. accepts values from insertNotifs if lower
1546
- this._next_mature_t = null;
1547
- &nbsp;
1548
- // defaults
1549
- this._pollInterval = this._opts.pollInterval || 60000;
1550
- &nbsp;
1551
- // map of active consumers
1552
- this._consumers_by_tid = new Map();
1553
- &nbsp;
1554
- this._signaller = factory._signaller_factory.signal (this, this._opts.signaller.opts);
1555
- this._stats = factory._stats_factory.stats (factory.name(), this.name (), this._opts.stats.opts);
1556
- &nbsp;
1557
- // save original options
1558
- this._stats.opts (orig_opts || {}, () =&gt; {});
1559
- &nbsp;
1560
- this._stats.incr ('get', 0);
1561
- this._stats.incr ('put', 0);
1562
- &nbsp;
1563
- if (factory.capabilities().reserve) {
1564
- this._stats.incr ('reserve', 0);
1565
- this._stats.incr ('commit', 0);
1566
- this._stats.incr ('rollback', 0);
1567
- }
1568
- &nbsp;
1569
- // if true, queue is being drained just before shutdown
1570
- this._in_drain = false;
1571
- &nbsp;
1572
- // if true, queue has been drained and is now not usable
1573
- this._drained = false;
1574
- &nbsp;
1575
- debug ('created queue %s with opts %o', this._name, this._opts);
1576
- }
1577
- &nbsp;
1578
- &nbsp;
1579
- ////////////////////////////////////////////////////////////////////////////
1580
- // expected redefinitions on subclasses
1581
- &nbsp;
1582
- // add element to queue
1583
- <span class="fstat-no" title="function not covered" > in</span>sert (entry, callback) {<span class="cstat-no" title="statement not covered" >callback (null, null);}</span>
1584
- &nbsp;
1585
- // get element from queue
1586
- <span class="fstat-no" title="function not covered" > ge</span>t (callback) {<span class="cstat-no" title="statement not covered" >callback (null, {mature: 0, payload: null, tries: 0});}</span>
1587
- &nbsp;
1588
- // reserve element: call cb (err, pl) where pl has an id
1589
- <span class="fstat-no" title="function not covered" > re</span>serve (callback) {<span class="cstat-no" title="statement not covered" >callback (null, {mature: 0, payload: null, tries: 0}, null);}</span>
1590
- &nbsp;
1591
- // commit previous reserve, by p.id: call cb (err, true|false), true if element committed
1592
- <span class="fstat-no" title="function not covered" > co</span>mmit (id, callback) {<span class="cstat-no" title="statement not covered" >callback (null, false);}</span>
1593
- &nbsp;
1594
- // rollback previous reserve, by p.id: call cb (err, true|false), true if element rolled back
1595
- <span class="fstat-no" title="function not covered" > ro</span>llback (id, next_t, callback) {<span class="cstat-no" title="statement not covered" >callback (null, false);}</span>
1596
- &nbsp;
1597
- // pipeline: atomically passes to next queue a previously reserved element, by id
1598
- <span class="fstat-no" title="function not covered" > pl</span>_step (id, next_queue, opts, callback) {<span class="cstat-no" title="statement not covered" >callback (null, false);}</span>
1599
- &nbsp;
1600
- // queue size including non-mature elements
1601
- <span class="fstat-no" title="function not covered" > to</span>talSize (callback) {<span class="cstat-no" title="statement not covered" >callback (null, 0);}</span>
1602
- &nbsp;
1603
- // queue size NOT including non-mature elements
1604
- <span class="fstat-no" title="function not covered" > si</span>ze (callback) {<span class="cstat-no" title="statement not covered" >callback (null, 0);}</span>
1605
- &nbsp;
1606
- // queue size of non-mature elements only
1607
- <span class="fstat-no" title="function not covered" > sc</span>hedSize (callback) {<span class="cstat-no" title="statement not covered" >callback (null, 0);}</span>
1608
- &nbsp;
1609
- // queue size of reserved elements only
1610
- <span class="fstat-no" title="function not covered" > re</span>svSize (callback) {<span class="cstat-no" title="statement not covered" >callback (null, null);}</span>
1611
- &nbsp;
1612
- // Date of next
1613
- next_t (callback) {callback (null, null);}
1614
- &nbsp;
1615
- // remove (and return if possible) by id
1616
- <span class="fstat-no" title="function not covered" > re</span>move (id, callback) {<span class="cstat-no" title="statement not covered" >callback(null, null);}</span>
1617
- &nbsp;
1618
- // end of expected redefinitions on subclasses
1619
- ////////////////////////////////////////////////////////////////////////////
1620
- &nbsp;
1621
- stats (cb) {this._stats.values (cb);}
1622
- <span class="fstat-no" title="function not covered" > pa</span>used (cb) {<span class="cstat-no" title="statement not covered" >this._stats.paused (cb);}</span>
1623
- &nbsp;
1624
- // placeholder methods
1625
- name () {return this._name;}
1626
- ns () {return this._factory.name();}
1627
- <span class="fstat-no" title="function not covered" > ty</span>pe () {<span class="cstat-no" title="statement not covered" >return 'queue:base';}</span>
1628
- &nbsp;
1629
- // capabilities
1630
- <span class="fstat-no" title="function not covered" > ca</span>pabilities () {
1631
- <span class="cstat-no" title="statement not covered" > return this._factory.capabilities ();</span>
1632
- }
1633
- &nbsp;
1634
- // T of next mature
1635
- nextMatureDate () {return this._next_mature_t;}
1636
- &nbsp;
1637
- static now () {return (new Date ());}
1638
- static nowPlusSecs (secs) {return (new Date (Date.now () + secs * 1000));}
1639
- &nbsp;
1640
- &nbsp;
1641
- /////////////////////////////////////////
1642
- consumers () {
1643
- /////////////////////////////////////////
1644
- let r = [];
1645
- &nbsp;
1646
- this._consumers_by_tid.forEach ((value, key) =&gt; {
1647
- r.push ({
1648
- tid: value.tid,
1649
- since: value.since,
1650
- callback: (value.callback ? 'set' : <span class="branch-1 cbranch-no" title="branch not covered" >'unset')</span>,
1651
- cleanup_timeout: (value.cleanup_timeout ? 'set' : <span class="branch-1 cbranch-no" title="branch not covered" >'unset')</span>,
1652
- wakeup_timeout: (value.wakeup_timeout ? <span class="branch-0 cbranch-no" title="branch not covered" >'set' </span>: 'unset')
1653
- });
1654
- });
1655
- &nbsp;
1656
- return r;
1657
- }
1658
- &nbsp;
1659
- &nbsp;
1660
- /////////////////////////////////////////
1661
- nConsumers () {
1662
- /////////////////////////////////////////
1663
- return this._consumers_by_tid.size;
1664
- }
1665
- &nbsp;
1666
- &nbsp;
1667
- /////////////////////////////////////////
1668
- // called when an insertion has been signaled
1669
- signalInsertion (mature, cb) {
1670
- // ignore if paused
1671
- if (this._local_paused) {
1672
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cb) <span class="cstat-no" title="statement not covered" >return cb ();</span>
1673
- else return;
1674
- }
1675
- &nbsp;
1676
- if (_.isNull (this._next_mature_t)) {
1677
- // totally ignore it, let pop() get it via next_t()
1678
- debug ('%s: signalInsertion received with mature %s. _next_mature_t is null, ignoring', this._name, mature.toISOString ());
1679
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cb) <span class="cstat-no" title="statement not covered" >return cb ();</span>
1680
- else return;
1681
- }
1682
- else if (this._next_mature_t == 0) {
1683
- // next_t() forced a read and the result was 'empty': trust the notif
1684
- debug ('%s: signalInsertion received with mature %s. _next_mature_t is 0, trusting notif', this._name, mature.toISOString ());
1685
- this._next_mature_t = mature.getTime ();
1686
- }
1687
- else <span class="missing-if-branch" title="if path not taken" >I</span>if (this._next_mature_t &lt;= mature.getTime ()) {
1688
- // _next_mature_t is numeric and non-null, so an active wait is happening. ignore it
1689
- <span class="cstat-no" title="statement not covered" > debug ('%s: signalInsertion received with mature %s. _next_mature_t (%s) is lower, ignoring', this._name, mature.toISOString (), new Date(this._next_mature_t).toISOString());</span>
1690
- <span class="cstat-no" title="statement not covered" > if (cb) <span class="cstat-no" title="statement not covered" >return cb ();</span></span>
1691
- else <span class="cstat-no" title="statement not covered" >return;</span>
1692
- }
1693
- else {
1694
- // _next_mature_t is numeric and non-null, so an active wait is happening. ignore it
1695
- debug ('%s: signalInsertion received with mature %s. _next_mature_t (%s) is higher, trusting notif', this._name, mature.toISOString (), new Date(this._next_mature_t).toISOString());
1696
- this._next_mature_t = mature.getTime ();
1697
- }
1698
- &nbsp;
1699
- this._nextDelta (delta_ms =&gt; {
1700
- // run a wakeup on all consumers with the wakeup timer set
1701
- debug ('%s: signalInsertion: waking up all consumers with wakeup already set', this._name);
1702
- &nbsp;
1703
- this._consumers_by_tid.forEach ((consumer, tid) =&gt; {
1704
- debug ('%s: signalInsertion: waking up consumer %d', this._name, tid);
1705
- &nbsp;
1706
- if (consumer.wakeup_timeout) {
1707
- clearTimeout (consumer.wakeup_timeout);
1708
- consumer.wakeup_timeout = null;
1709
- &nbsp;
1710
- if (delta_ms &gt; 0) {
1711
- consumer.wakeup_timeout = setTimeout (() =&gt; {
1712
- consumer.wakeup_timeout = null;
1713
- this._onetime_pop (consumer);
1714
- }, delta_ms);
1715
- }
1716
- else {
1717
- setImmediate (() =&gt; this._onetime_pop (consumer));
1718
- }
1719
- }
1720
- });
1721
- });
1722
- &nbsp;
1723
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cb) <span class="cstat-no" title="statement not covered" >cb ();</span>
1724
- }
1725
- &nbsp;
1726
- &nbsp;
1727
- /////////////////////////////////////////
1728
- // called when a pause/resume has been signaled
1729
- signalPaused (paused, cb) {
1730
- debug ('%s: signalPaused: received pause notif %s', this._name, paused ? 'true' : 'false');
1731
- this._local_paused = paused;
1732
- &nbsp;
1733
- if (paused == false) {
1734
- // run a wakeup on all consumers with or without wakeup timer set
1735
- debug ('%s: signaPaused: waking up all consumers', this._name);
1736
- &nbsp;
1737
- this._consumers_by_tid.forEach ((consumer, tid) =&gt; {
1738
- debug ('%s: signalPaused: waking up consumer %s', this._name, tid);
1739
- &nbsp;
1740
- <span class="missing-if-branch" title="if path not taken" >I</span>if (consumer.wakeup_timeout) {
1741
- <span class="cstat-no" title="statement not covered" > clearTimeout (consumer.wakeup_timeout);</span>
1742
- <span class="cstat-no" title="statement not covered" > consumer.wakeup_timeout = null;</span>
1743
- }
1744
- &nbsp;
1745
- setImmediate (() =&gt; this._onetime_pop (consumer));
1746
- });
1747
- }
1748
- else {
1749
- this._consumers_by_tid.forEach (<span class="fstat-no" title="function not covered" >(c</span>onsumer_data, tid) =&gt; {
1750
- <span class="cstat-no" title="statement not covered" > debug ('%s: pausing tid %s (cid %s)', this._name, tid, consumer_data.cid);</span>
1751
- &nbsp;
1752
- <span class="cstat-no" title="statement not covered" > if (consumer_data.wakeup_timeout) {</span>
1753
- <span class="cstat-no" title="statement not covered" > clearTimeout (consumer_data.wakeup_timeout);</span>
1754
- <span class="cstat-no" title="statement not covered" > consumer_data.wakeup_timeout = null;</span>
1755
- }
1756
- });
1757
- }
1758
- &nbsp;
1759
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cb) <span class="cstat-no" title="statement not covered" >cb ();</span>
1760
- }
1761
- &nbsp;
1762
- &nbsp;
1763
- ////////////////////////////////////////
1764
- // pause/resume
1765
- pause (v) {
1766
- <span class="missing-if-branch" title="if path not taken" >I</span>if (v == undefined) <span class="cstat-no" title="statement not covered" >v = true;</span>
1767
- this._stats.paused (v, () =&gt; this._signaller.signalPaused (v));
1768
- }
1769
- &nbsp;
1770
- &nbsp;
1771
- //////////////////////////////////
1772
- // empty local buffers
1773
- <span class="fstat-no" title="function not covered" > dr</span>ain (callback) {
1774
- <span class="cstat-no" title="statement not covered" > debug ('%s: draining queue', this._name);</span>
1775
- <span class="cstat-no" title="statement not covered" > this._in_drain = false;</span>
1776
- <span class="cstat-no" title="statement not covered" > this._drained = true;</span>
1777
- <span class="cstat-no" title="statement not covered" > this.cancel ();</span>
1778
- <span class="cstat-no" title="statement not covered" > setImmediate (callback);</span>
1779
- }
1780
- &nbsp;
1781
- &nbsp;
1782
- /////////////////////////////////////////
1783
- // add element to queue
1784
- push (payload, opts, callback) {
1785
- /////////////////////////////////////////
1786
- if (!callback) {
1787
- callback = opts;
1788
- opts = {};
1789
- }
1790
- &nbsp;
1791
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this._in_drain) <span class="cstat-no" title="statement not covered" >return setImmediate (<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1792
- <span class="cstat-no" title="statement not covered" > debug ('%s: push while in drain, return error', this._name);</span>
1793
- <span class="cstat-no" title="statement not covered" > callback ('drain');</span>
1794
- });
1795
- &nbsp;
1796
- // get delay from either params or config
1797
- var mature = null;
1798
- &nbsp;
1799
- <span class="missing-if-branch" title="if path not taken" >I</span>if (opts.mature) {
1800
- <span class="cstat-no" title="statement not covered" > mature = new Date (opts.mature * 1000);</span>
1801
- }
1802
- else {
1803
- var delay = opts.delay || this.delay;
1804
- mature = delay ? Queue.nowPlusSecs (delay) : Queue.now ();
1805
- }
1806
- &nbsp;
1807
- // build payload
1808
- var msg = {
1809
- mature: mature,
1810
- payload: payload,
1811
- tries: opts.tries || 0,
1812
- hdrs: opts.hdrs || {}
1813
- };
1814
- &nbsp;
1815
- debug ('%s: about to insert %o', this._name, msg);
1816
- &nbsp;
1817
- // insert into queue
1818
- this.insert (msg, (err, result) =&gt; {
1819
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
1820
- <span class="cstat-no" title="statement not covered" > debug ('%s: push : error when pushing elem: %o', this._name, err);</span>
1821
- <span class="cstat-no" title="statement not covered" > return callback (err);</span>
1822
- }
1823
- &nbsp;
1824
- this._stats.incr ('put');
1825
- this._signal_insertion (mature);
1826
- &nbsp;
1827
- debug ('%s: elem pushed, given id %s, signalled insertion with mature %s', this._name, result, mature.toISOString ());
1828
- callback (null, result);
1829
- })
1830
- }
1831
- &nbsp;
1832
- &nbsp;
1833
- //////////////////////////////////
1834
- // obtain element from queue
1835
- pop (cid, opts, callback) {
1836
- // TODO fail if too many consumers?
1837
- &nbsp;
1838
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this._drained) <span class="cstat-no" title="statement not covered" >return setImmediate (<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1839
- <span class="cstat-no" title="statement not covered" > debug ('%s: pop while drained, return error', this._name);</span>
1840
- <span class="cstat-no" title="statement not covered" > if (callback) <span class="cstat-no" title="statement not covered" >callback ('drain');</span></span>
1841
- });
1842
- &nbsp;
1843
- if (!callback) {
1844
- callback = opts;
1845
- opts = {};
1846
- }
1847
- &nbsp;
1848
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!opts) {
1849
- <span class="cstat-no" title="statement not covered" > opts = {};</span>
1850
- }
1851
- &nbsp;
1852
- var tid = opts.tid || uuid.v4 ();
1853
- &nbsp;
1854
- var consumer_data = {
1855
- tid: tid, // unique id for this transaction
1856
- cid: cid,
1857
- since: new Date (), // timestamp of creation of the consumer
1858
- reserve: opts.reserve, // boolean, is a reserve or a plain pop?
1859
- callback: callback, // final, outbound callback upon read/timeout
1860
- cleanup_timeout: null, // timer for timeout cancellation
1861
- wakeup_timeout: null // timer for rearming, awaiting data available
1862
- };
1863
- &nbsp;
1864
- if (opts.timeout) {
1865
- consumer_data.cleanup_timeout = setTimeout (() =&gt; {
1866
- debug ('%s: pop: timed out %d msecs on transaction %s', this._name, opts.timeout, tid);
1867
- consumer_data.cleanup_timeout = null;
1868
- &nbsp;
1869
- if (consumer_data.wakeup_timeout) {
1870
- clearTimeout (consumer_data.wakeup_timeout);
1871
- consumer_data.wakeup_timeout = null;
1872
- }
1873
- &nbsp;
1874
- this._consumers_by_tid.delete (consumer_data.tid);
1875
- &nbsp;
1876
- <span class="missing-if-branch" title="else path not taken" >E</span>if (consumer_data.callback) consumer_data.callback ({
1877
- timeout: true,
1878
- tid: consumer_data.tid,
1879
- since: consumer_data.since
1880
- });
1881
- }, opts.timeout);
1882
- }
1883
- &nbsp;
1884
- this._consumers_by_tid.set (tid, consumer_data);
1885
- &nbsp;
1886
- // end here if paused
1887
- if (this._local_paused == undefined) {
1888
- debug ('%s: local_paused undefined, read it from stats', this._name);
1889
- &nbsp;
1890
- this._stats.paused ((err, v) =&gt; {
1891
- this._local_paused = v;
1892
- &nbsp;
1893
- debug ('%s: local_paused undefined, read paused status from stats:', this._name, v);
1894
- &nbsp;
1895
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!this._local_paused) {
1896
- // attempt a read
1897
- debug ('%s: pop: calling initial onetime_pop on cid %s, tid %s', this._name, cid, tid);
1898
- this._onetime_pop (consumer_data);
1899
- }
1900
- else {
1901
- <span class="cstat-no" title="statement not covered" > debug ('%s: pop: queue paused for cid %s, tid %s', this._name, cid, tid);</span>
1902
- }
1903
- });
1904
- &nbsp;
1905
- return tid;
1906
- }
1907
- else {
1908
- if (!this._local_paused) {
1909
- // attempt a read
1910
- debug ('%s: pop: calling initial onetime_pop on cid %s, tid %s', this._name, cid, tid);
1911
- this._onetime_pop (consumer_data);
1912
- }
1913
- else {
1914
- debug ('%s: pop: queue paused for cid %s, tid %s', this._name, cid, tid);
1915
- }
1916
- &nbsp;
1917
- return tid;
1918
- }
1919
- }
1920
- &nbsp;
1921
- &nbsp;
1922
- //////////////////////////////////
1923
- // high level commit
1924
- ok (obj, cb) {
1925
- // allow commit with either _id of full object
1926
- const id = (obj._id ? obj._id : obj);
1927
- this.commit (id, (err, res) =&gt; {
1928
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!err){
1929
- debug ('%s: ok : committed ok tid %s', this._name, id);
1930
- this._stats.incr ('commit');
1931
- }
1932
- else {
1933
- <span class="cstat-no" title="statement not covered" > debug ('%s: ok : error when committing tid %s: %o', this._name, id, err);</span>
1934
- }
1935
- &nbsp;
1936
- cb (err, res);
1937
- });
1938
- }
1939
- &nbsp;
1940
- &nbsp;
1941
- //////////////////////////////////
1942
- // high level rollback
1943
- ko (obj, next_t, cb) {
1944
- if (_.isFunction (next_t)) {
1945
- cb = next_t;
1946
- next_t = null;
1947
- }
1948
- &nbsp;
1949
- // allow rollback with either _id of full object
1950
- let id = (obj._id ? obj._id : obj);
1951
- &nbsp;
1952
- if (
1953
- (obj.tries) &amp;&amp;
1954
- (this._factory.deadletter_queue ()) &amp;&amp;
1955
- (this._factory.max_ko ()) &amp;&amp;
1956
- (obj.tries &gt; this._factory.max_ko ())
1957
- ) {
1958
- debug ('%s: too many retries (%d), moving to deadletter', obj._id, obj.tries);
1959
- this._move_to_deadletter (obj, cb);
1960
- // TODO add from-what-queue to deadletter elements
1961
- }
1962
- else {
1963
- this.rollback (id, next_t, (err, res) =&gt; {
1964
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
1965
- <span class="cstat-no" title="statement not covered" > debug ('%s: ko : error when rolling back tid %s: %o', this._name, id, err);</span>
1966
- <span class="cstat-no" title="statement not covered" > return cb (err);</span>
1967
- }
1968
- &nbsp;
1969
- <span class="missing-if-branch" title="else path not taken" >E</span>if (res) {
1970
- var t = new Date (next_t || null);
1971
- debug ('%s: ko : tid %s rolled back, new mature is %s', this._name, id, t);
1972
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!err) this._stats.incr ('rollback');
1973
- this._signal_insertion (t);
1974
- }
1975
- &nbsp;
1976
- cb (null, res);
1977
- });
1978
- }
1979
- }
1980
- &nbsp;
1981
- &nbsp;
1982
- //////////////////////////////////
1983
- // cancel a waiting consumer
1984
- cancel (tid) {
1985
- debug ('%s: cancelling tid %s', this._name, tid);
1986
- &nbsp;
1987
- if (tid) {
1988
- let consumer_data = this._consumers_by_tid.get (tid);
1989
- &nbsp;
1990
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!consumer_data) {
1991
- // tid does not point to valid consume, NOOP
1992
- <span class="cstat-no" title="statement not covered" > return;</span>
1993
- }
1994
- &nbsp;
1995
- <span class="missing-if-branch" title="else path not taken" >E</span>if (consumer_data.callback) {
1996
- // call callback with error-cancelled
1997
- consumer_data.callback ('cancel');
1998
- &nbsp;
1999
- // mark cancelled by deleting callback
2000
- consumer_data.callback = null;
2001
- }
2002
- &nbsp;
2003
- // clear timeout if present
2004
- <span class="missing-if-branch" title="else path not taken" >E</span>if (consumer_data.cleanup_timeout) {
2005
- clearTimeout (consumer_data.cleanup_timeout);
2006
- consumer_data.cleanup_timeout = null;
2007
- }
2008
- &nbsp;
2009
- if (consumer_data.wakeup_timeout) {
2010
- clearTimeout (consumer_data.wakeup_timeout);
2011
- consumer_data.wakeup_timeout = null;
2012
- }
2013
- &nbsp;
2014
- // remove from map
2015
- this._consumers_by_tid.delete (tid);
2016
- }
2017
- else {
2018
- // cancel all pending stuff
2019
- this._consumers_by_tid.forEach ((consumer_data, tid) =&gt; {
2020
- debug ('%s: cancelling tid %s (cid %s): start', this._name, tid, consumer_data.cid);
2021
- &nbsp;
2022
- <span class="missing-if-branch" title="else path not taken" >E</span>if (consumer_data.callback) {
2023
- // call callback with error-cancelled
2024
- consumer_data.callback ('cancel');
2025
- &nbsp;
2026
- // mark cancelled by deleting callback
2027
- consumer_data.callback = null;
2028
- &nbsp;
2029
- debug ('%s: cancelling tid %s (cid %s): callback called and removed', this._name, tid, consumer_data.cid);
2030
- }
2031
- &nbsp;
2032
- <span class="missing-if-branch" title="if path not taken" >I</span>if (consumer_data.cleanup_timeout) {
2033
- <span class="cstat-no" title="statement not covered" > clearTimeout (consumer_data.cleanup_timeout);</span>
2034
- <span class="cstat-no" title="statement not covered" > consumer_data.cleanup_timeout = null;</span>
2035
- <span class="cstat-no" title="statement not covered" > debug ('%s: cancelling tid %s (cid %s): cleanup timeout removed', this._name, tid, consumer_data.cid);</span>
2036
- }
2037
- &nbsp;
2038
- if (consumer_data.wakeup_timeout) {
2039
- clearTimeout (consumer_data.wakeup_timeout);
2040
- consumer_data.wakeup_timeout = null;
2041
- debug ('%s: cancelling tid %s (cid %s): wakeup timeout removed', this._name, tid, consumer_data.cid);
2042
- }
2043
- &nbsp;
2044
- debug ('%s: cancelling tid %s (cid %s): end', this._name, tid, consumer_data.cid);
2045
- });
2046
- &nbsp;
2047
- this._consumers_by_tid.clear();
2048
- }
2049
- }
2050
- &nbsp;
2051
- &nbsp;
2052
- //////////////////////////////////
2053
- <span class="fstat-no" title="function not covered" > st</span>atus (cb) {
2054
- //////////////////////////////////
2055
- <span class="cstat-no" title="statement not covered" > async.parallel ({</span>
2056
- type: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >cb (null, this.type()),</span>
2057
- stats: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.stats (cb),</span>
2058
- paused: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.paused (cb),</span>
2059
- next_mature_t: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.next_t (cb),</span>
2060
- size: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.size (cb),</span>
2061
- totalSize: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.totalSize (cb),</span>
2062
- schedSize: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.schedSize (cb),</span>
2063
- resvSize: <span class="fstat-no" title="function not covered" >cb</span> =&gt; <span class="cstat-no" title="statement not covered" >this.resvSize (cb)</span>
2064
- }, cb);
2065
- }
2066
- &nbsp;
2067
- &nbsp;
2068
- ///////////////////////////////////////////////////////////////////////////////
2069
- // private parts
2070
- &nbsp;
2071
- &nbsp;
2072
- _onetime_pop (consumer) {
2073
- var getOrReserve_cb = (err, result) =&gt; {
2074
- debug ('%s - tid %s: called getOrReserve_cb : err %o, result %o', this._name, consumer.tid, err, result);
2075
- &nbsp;
2076
- if (!consumer.callback) {
2077
- // consumer was cancelled mid-flight
2078
- // do not reinsert if it's using reserve
2079
- if (!(consumer.reserve)) {
2080
- return this._reinsert (result);
2081
- }
2082
- }
2083
- &nbsp;
2084
- // TODO eat up errors?
2085
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
2086
- // get/reserve in error
2087
- <span class="cstat-no" title="statement not covered" > debug ('%s - tid %s: getOrReserve_cb in error: err %o', this._name, consumer.tid, err);</span>
2088
- &nbsp;
2089
- // clean timeout timer
2090
- <span class="cstat-no" title="statement not covered" > if (consumer.cleanup_timeout) {</span>
2091
- <span class="cstat-no" title="statement not covered" > clearTimeout (consumer.cleanup_timeout);</span>
2092
- <span class="cstat-no" title="statement not covered" > consumer.cleanup_timeout = null;</span>
2093
- }
2094
- &nbsp;
2095
- // remove consumer from map
2096
- <span class="cstat-no" title="statement not covered" > this._consumers_by_tid.delete (consumer.tid);</span>
2097
- &nbsp;
2098
- // call final callback
2099
- <span class="cstat-no" title="statement not covered" > if (consumer.callback) <span class="cstat-no" title="statement not covered" >consumer.callback (err);</span></span>
2100
- <span class="cstat-no" title="statement not covered" > return;</span>
2101
- }
2102
- &nbsp;
2103
- if (!result) {
2104
- // queue is empty or non-mature: put us to sleep, to-rearm-in-future
2105
- debug ('%s - tid %s: getOrReserve_cb no result, setting wakeup', this._name, consumer.tid);
2106
- &nbsp;
2107
- // clear this._next_mature_t if it's in the past
2108
- if (this._next_mature_t &amp;&amp; (this._next_mature_t &lt; new Date().getTime ())) {
2109
- debug ('%s - tid %s: getOrReserve_cb no result, and this._next_mature_t is in the past, clearing it', this._name, consumer.tid);
2110
- this._next_mature_t = null;
2111
- }
2112
- &nbsp;
2113
- // obtain time to sleep (capped)
2114
- this._nextDelta (delta_ms =&gt; {
2115
- // TODO cancel previous wakeup_timeout if not null?
2116
- debug ('%s - tid %s: getOrReserve_cb : set wakeup in %d ms', this._name, consumer.tid, delta_ms);
2117
- &nbsp;
2118
- consumer.wakeup_timeout = setTimeout (() =&gt; {
2119
- debug ('%s - tid %s: wakey wakey... calling onetime_pop', this._name, consumer.tid);
2120
- consumer.wakeup_timeout = null;
2121
- this._onetime_pop (consumer);
2122
- }, delta_ms);
2123
- });
2124
- &nbsp;
2125
- return;
2126
- }
2127
- &nbsp;
2128
- // got an element
2129
- this._next_mature_t = null;
2130
- this._stats.incr (consumer.reserve ? 'reserve': 'get');
2131
- &nbsp;
2132
- debug ('%s - tid %s: getOrReserve_cb : got result (%s) %j', this._name, consumer.tid, (consumer.reserve ? 'reserve': 'get'), result);
2133
- &nbsp;
2134
- // clean timeout timer
2135
- if (consumer.cleanup_timeout) {
2136
- clearTimeout (consumer.cleanup_timeout);
2137
- consumer.cleanup_timeout = null;
2138
- }
2139
- &nbsp;
2140
- // remove consumer from map
2141
- this._consumers_by_tid.delete (consumer.tid);
2142
- &nbsp;
2143
- // call final callback
2144
- <span class="missing-if-branch" title="else path not taken" >E</span>if (consumer.callback) consumer.callback (null, result);
2145
- return;
2146
- };
2147
- &nbsp;
2148
- if (consumer.reserve) {
2149
- this.reserve (getOrReserve_cb);
2150
- }
2151
- else {
2152
- this.get (getOrReserve_cb);
2153
- }
2154
- }
2155
- &nbsp;
2156
- &nbsp;
2157
- /////////////////////////////
2158
- _nextDelta (cb) {
2159
- /////////////////////////////
2160
- if (this._next_mature_t == 0) {
2161
- debug ('%s: _nextDelta: _next_mature_t is zero, serving default', this._name);
2162
- return cb (this._pollInterval);
2163
- }
2164
- &nbsp;
2165
- if (_.isNull (this._next_mature_t)) {
2166
- // there's no precalculated value, get it from backend
2167
- debug ('%s: _nextDelta: null _next_mature_t, getting it from backend',this._name);
2168
- &nbsp;
2169
- this.next_t ((err, res) =&gt; {
2170
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
2171
- <span class="cstat-no" title="statement not covered" > debug ('%s: _nextDelta error from backend, serving default', this._name);</span>
2172
- <span class="cstat-no" title="statement not covered" > return cb (this._pollInterval);</span>
2173
- }
2174
- &nbsp;
2175
- if (res) {
2176
- // got a res, use it
2177
- this._next_mature_t = res;
2178
- var delta = res - Queue.now ().getTime();
2179
- if (delta &gt; this._pollInterval) delta = this._pollInterval;
2180
- debug ('%s: _nextDelta: _next_mature_t from backend is %d, calc delta is %d', this._name, res, delta);
2181
- return cb (delta);
2182
- }
2183
- else {
2184
- // no res, set _next_mature_t to 0, serve default
2185
- debug ('%s: _nextDelta: no _next_mature_t from backend, use default', this._name);
2186
- this._next_mature_t = 0;
2187
- return cb (this._pollInterval);
2188
- }
2189
- });
2190
- }
2191
- else {
2192
- // _next_mature_t is non-zero numeric, use it
2193
- var delta = this._next_mature_t - Queue.now ().getTime();
2194
- <span class="missing-if-branch" title="if path not taken" >I</span>if (delta &gt; this._pollInterval) <span class="cstat-no" title="statement not covered" >delta = this._pollInterval;</span>
2195
- if (delta &lt; 0) delta = 0;
2196
- &nbsp;
2197
- debug ('%s: _nextDelta: using _next_mature_t %s, calc delta is %d', this._name, new Date(this._next_mature_t).toISOString (), delta);
2198
- &nbsp;
2199
- return cb (delta);
2200
- }
2201
- }
2202
- &nbsp;
2203
- &nbsp;
2204
- ///////////////////////////////////////////////////////////
2205
- _reinsert (result) {
2206
- <span class="missing-if-branch" title="if path not taken" >I</span>if (result) {
2207
- <span class="cstat-no" title="statement not covered" > debug ('%s: reinserting element', this._name);</span>
2208
- &nbsp;
2209
- <span class="cstat-no" title="statement not covered" > this.insert (result, <span class="fstat-no" title="function not covered" >(e</span>rr, r) =&gt; {</span>
2210
- <span class="cstat-no" title="statement not covered" > if (err) {</span>
2211
- <span class="cstat-no" title="statement not covered" > debug ('%s: error while reinserting elem: %o', this._name, err);</span>
2212
- }
2213
- else {
2214
- <span class="cstat-no" title="statement not covered" > this._signal_insertion (result.mature);</span>
2215
- }
2216
- });
2217
- }
2218
- }
2219
- &nbsp;
2220
- &nbsp;
2221
- ////////////////////////////////////////
2222
- _signal_insertion (t) {
2223
- this._signaller.signalInsertion (t);
2224
- }
2225
- &nbsp;
2226
- &nbsp;
2227
- /////////////////////////////////////////////
2228
- _move_to_deadletter (obj, cb) {
2229
- // commit and move to deadletter
2230
- // ALSO NOT IN deadletter queue (to void loop)
2231
- // commit element in origin queue, push in deadletter afterwards
2232
- this.commit (obj._id, err =&gt; {
2233
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
2234
- <span class="cstat-no" title="statement not covered" > debug ('while committing %s prior to moving to deadletter: %j', obj._id, err);</span>
2235
- <span class="cstat-no" title="statement not covered" > return cb (err);</span>
2236
- }
2237
- &nbsp;
2238
- this._factory.deadletter_queue ().push (obj.payload, (err, res) =&gt; {
2239
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {
2240
- <span class="cstat-no" title="statement not covered" > debug ('while moving %s to deadletter: %j', obj._id, err);</span>
2241
- <span class="cstat-no" title="statement not covered" > return cb (err, 'deadletter');</span>
2242
- }
2243
- else {
2244
- debug ('moved %s to deadletter with _id %s', obj._id, res);
2245
- return cb (null, 'deadletter');
2246
- }
2247
- });
2248
- });
2249
- }
2250
- }
2251
- &nbsp;
2252
- &nbsp;
2253
- module.exports = Queue;
2254
- &nbsp;</pre></td></tr>
2255
- </table></pre>
2256
- <div class='push'></div><!-- for sticky footer -->
2257
- </div><!-- /wrapper -->
2258
- <div class='footer quiet pad2 space-top1 center small'>
2259
- Code coverage
2260
- generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri Dec 03 2021 12:14:40 GMT+0100 (GMT+01:00)
2261
- </div>
2262
- </div>
2263
- <script src="../prettify.js"></script>
2264
- <script>
2265
- window.onload = function () {
2266
- if (typeof prettyPrint === 'function') {
2267
- prettyPrint();
2268
- }
2269
- };
2270
- </script>
2271
- <script src="../sorter.js"></script>
2272
- <script src="../block-navigation.js"></script>
2273
- </body>
2274
- </html>