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,864 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Code coverage report for keuss/utils/RedisOrderedQueue.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/utils</a> RedisOrderedQueue.js
20
- </h1>
21
- <div class='clearfix'>
22
- <div class='fl pad1y space-right2'>
23
- <span class="strong">96% </span>
24
- <span class="quiet">Statements</span>
25
- <span class='fraction'>48/50</span>
26
- </div>
27
- <div class='fl pad1y space-right2'>
28
- <span class="strong">84.62% </span>
29
- <span class="quiet">Branches</span>
30
- <span class='fraction'>22/26</span>
31
- </div>
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Functions</span>
35
- <span class='fraction'>14/14</span>
36
- </div>
37
- <div class='fl pad1y space-right2'>
38
- <span class="strong">100% </span>
39
- <span class="quiet">Lines</span>
40
- <span class='fraction'>46/46</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 high'></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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-yes">1x</span>
318
- <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-neutral">&nbsp;</span>
323
- <span class="cline-any cline-neutral">&nbsp;</span>
324
- <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-yes">1x</span>
331
- <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-neutral">&nbsp;</span>
334
- <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-neutral">&nbsp;</span>
336
- <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-neutral">&nbsp;</span>
347
- <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-yes">1x</span>
360
- <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">1x</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-neutral">&nbsp;</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-neutral">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-yes">1x</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-neutral">&nbsp;</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-yes">71x</span>
456
- <span class="cline-any cline-yes">71x</span>
457
- <span class="cline-any cline-yes">71x</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-yes">119x</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">119x</span>
473
- <span class="cline-any cline-yes">4x</span>
474
- <span class="cline-any cline-yes">4x</span>
475
- <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-yes">119x</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">131x</span>
484
- <span class="cline-any cline-yes">131x</span>
485
- <span class="cline-any cline-yes">131x</span>
486
- <span class="cline-any cline-yes">104x</span>
487
- <span class="cline-any cline-yes">104x</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-yes">104x</span>
490
- <span class="cline-any cline-yes">2x</span>
491
- <span class="cline-any cline-yes">2x</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-yes">104x</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-yes">38x</span>
504
- <span class="cline-any cline-yes">38x</span>
505
- <span class="cline-any cline-yes">38x</span>
506
- <span class="cline-any cline-yes">27x</span>
507
- <span class="cline-any cline-yes">27x</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">27x</span>
510
- <span class="cline-any cline-yes">2x</span>
511
- <span class="cline-any cline-yes">2x</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-yes">27x</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-yes">16x</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-neutral">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-yes">13x</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-neutral">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-yes">22x</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-yes">50x</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">1x</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-yes">50x</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-yes">14x</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-yes">14x</span>
567
- <span class="cline-any cline-yes">14x</span>
568
- <span class="cline-any cline-yes">14x</span>
569
- <span class="cline-any cline-yes">14x</span>
570
- <span class="cline-any cline-yes">14x</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-yes">71x</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-yes">1x</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">var uuid = require ('uuid');
580
- &nbsp;
581
- &nbsp;
582
- const _s_lua_code_push = `
583
- -- qname in KEYS[1]
584
- -- id in ARGV[1]
585
- -- mature-t in ARGV[2]
586
- -- val in ARGV[3]
587
- &nbsp;
588
- -- insert obj in hash by id
589
- redis.call ('HSET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], ARGV[1], ARGV[3])
590
- &nbsp;
591
- -- insert id+mature in index
592
- return redis.call ('ZADD', 'keuss:q:ordered_queue:index:' .. KEYS[1], ARGV[2], ARGV[1])
593
- `;
594
- &nbsp;
595
- const _s_lua_code_pop = `
596
- -- qname in KEYS[1]
597
- -- mature_mark in ARGV[1]
598
- &nbsp;
599
- -- get older (lower mature) id from index
600
- local z_res = redis.call ('ZRANGE', 'keuss:q:ordered_queue:index:' .. KEYS[1], 0, 0, 'WITHSCORES')
601
- &nbsp;
602
- if (z_res[1] == nil) then
603
- return nil
604
- end
605
- &nbsp;
606
- local id = z_res[1]
607
- local mature = z_res[2]
608
- &nbsp;
609
- if (mature &gt; ARGV[1]) then
610
- -- head is not mature, just end
611
- return nil
612
- end
613
- &nbsp;
614
- -- get val by id from hash
615
- local val = redis.call ('HGET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id)
616
- &nbsp;
617
- -- delete from index, hash
618
- redis.call ('ZREM', 'keuss:q:ordered_queue:index:' .. KEYS[1], id)
619
- redis.call ('HDEL', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id)
620
- &nbsp;
621
- return val
622
- `;
623
- &nbsp;
624
- const _s_lua_code_reserve = `
625
- -- qname in KEYS[1]
626
- -- mature_mark in ARGV[1]
627
- -- incr_t in ARGV[2]
628
- &nbsp;
629
- -- get older (lower mature) id from index
630
- local z_res = redis.call ('ZRANGE', 'keuss:q:ordered_queue:index:' .. KEYS[1], 0, 0, 'WITHSCORES')
631
- &nbsp;
632
- if (z_res[1] == nil) then
633
- return nil
634
- end
635
- &nbsp;
636
- local id = z_res[1]
637
- local mature = z_res[2]
638
- &nbsp;
639
- if (mature &gt; ARGV[1]) then
640
- -- head is not mature, just end
641
- return nil
642
- end
643
- &nbsp;
644
- -- increment score
645
- redis.call ('ZINCRBY', 'keuss:q:ordered_queue:index:' .. KEYS[1], ARGV[2], id)
646
- &nbsp;
647
- -- get val by id from hash
648
- local val = redis.call ('HGET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id)
649
- local obj_val = cjson.decode (val)
650
- &nbsp;
651
- if (not (obj_val.reserved)) then
652
- -- mark as reserved
653
- obj_val.reserved = true
654
- redis.call ('HSET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id, cjson.encode (obj_val))
655
- end
656
- &nbsp;
657
- return val
658
- `;
659
- &nbsp;
660
- const _s_lua_code_commit = `
661
- -- qname in KEYS[1]
662
- -- id in ARGV[1]
663
- &nbsp;
664
- local id = ARGV[1]
665
- local val = redis.call ('HGET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id)
666
- &nbsp;
667
- if (val == nil) then
668
- return nil
669
- end
670
- &nbsp;
671
- -- check if it was reserved
672
- local obj_val = cjson.decode (val)
673
- &nbsp;
674
- if (not (obj_val.reserved)) then
675
- -- not a reserved one
676
- return nil
677
- end
678
- &nbsp;
679
- -- delete from index, hash
680
- redis.call ('ZREM', 'keuss:q:ordered_queue:index:' .. KEYS[1], id)
681
- redis.call ('HDEL', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id)
682
- &nbsp;
683
- return id
684
- `;
685
- &nbsp;
686
- const _s_lua_code_rollback = `
687
- -- qname in KEYS[1]
688
- -- id in ARGV[1]
689
- -- new_t in ARGV[2]
690
- &nbsp;
691
- local id = ARGV[1]
692
- local val = redis.call ('HGET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id)
693
- &nbsp;
694
- if (val==false) then
695
- return nil
696
- end
697
- &nbsp;
698
- local obj_val = cjson.decode (val)
699
- &nbsp;
700
- if (not (obj_val.reserved)) then
701
- -- not a reserved one
702
- return nil
703
- end
704
- &nbsp;
705
- -- reset score
706
- redis.call ('ZADD', 'keuss:q:ordered_queue:index:' .. KEYS[1], 'XX', ARGV[2], id)
707
- &nbsp;
708
- -- reset val
709
- obj_val.reserved = false
710
- obj_val.tries = obj_val.tries + 1
711
- redis.call ('HSET', 'keuss:q:ordered_queue:hash:' .. KEYS[1], id, cjson.encode (obj_val))
712
- &nbsp;
713
- return id
714
- `;
715
- &nbsp;
716
- &nbsp;
717
- &nbsp;
718
- class RedisOrderedQueue {
719
- constructor (name, factory) {
720
- this._factory = factory;
721
- this._rediscl = factory._rediscl;
722
- this._name = name;
723
- }
724
- &nbsp;
725
- //////////////////////////////////
726
- push (entry, done) {
727
- //////////////////////////////////
728
- var pl = {
729
- _id: entry.id || uuid.v4(),
730
- payload: entry.payload,
731
- tries: entry.tries,
732
- hdrs: entry.hdrs || <span class="branch-1 cbranch-no" title="branch not covered" >{},</span>
733
- mature: (entry.mature || <span class="branch-1 cbranch-no" title="branch not covered" >new Date ())</span>.getTime ()
734
- };
735
- &nbsp;
736
- &nbsp;
737
- if (Buffer.isBuffer (pl.payload)) {
738
- pl.payload = pl.payload.toString ('base64');
739
- pl.type = 'buffer';
740
- }
741
- &nbsp;
742
- this._rediscl.roq_push (this._name, pl._id, pl.mature, JSON.stringify (pl), done);
743
- }
744
- &nbsp;
745
- //////////////////////////////////
746
- pop (done) {
747
- //////////////////////////////////
748
- this._rediscl.roq_pop (this._name, new Date().getTime (), (err, res) =&gt; {
749
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) <span class="cstat-no" title="statement not covered" >return done (err);</span>
750
- if (!res) return done ();
751
- var obj = JSON.parse (res);
752
- obj.mature = obj.mature &amp;&amp; new Date (obj.mature);
753
- &nbsp;
754
- if (obj.type == 'buffer') {
755
- try {
756
- obj.payload = Buffer.from (obj.payload, 'base64');
757
- } catch (e) {
758
- }
759
- }
760
- &nbsp;
761
- done (null, obj);
762
- });
763
- }
764
- &nbsp;
765
- //////////////////////////////////
766
- reserve (incr, done) {
767
- //////////////////////////////////
768
- this._rediscl.roq_reserve (this._name, new Date().getTime (), incr, (err, res) =&gt; {
769
- <span class="missing-if-branch" title="if path not taken" >I</span>if (err) <span class="cstat-no" title="statement not covered" >return done (err);</span>
770
- if (!res) return done ();
771
- var obj = JSON.parse (res);
772
- obj.mature = obj.mature &amp;&amp; new Date (obj.mature);
773
- &nbsp;
774
- if (obj.type == 'buffer') {
775
- try {
776
- obj.payload = Buffer.from (obj.payload, 'base64');
777
- } catch (e) {
778
- }
779
- }
780
- &nbsp;
781
- done (null, obj);
782
- });
783
- }
784
- &nbsp;
785
- //////////////////////////////////
786
- commit (id, done) {
787
- //////////////////////////////////
788
- this._rediscl.roq_commit (this._name, id, done);
789
- }
790
- &nbsp;
791
- //////////////////////////////////
792
- rollback (id, next_t, done) {
793
- //////////////////////////////////
794
- this._rediscl.roq_rollback (this._name, id, next_t || (new Date().getTime ()), done);
795
- }
796
- &nbsp;
797
- //////////////////////////////////
798
- // queue size including non-mature elements
799
- totalSize (callback) {
800
- //////////////////////////////////
801
- this._rediscl.zcard ('keuss:q:ordered_queue:index:' + this._name, callback);
802
- }
803
- &nbsp;
804
- //////////////////////////////////
805
- // queue size NOT including non-mature elements
806
- size (callback) {
807
- //////////////////////////////////
808
- this._rediscl.zcount ('keuss:q:ordered_queue:index:' + this._name, '-inf', new Date().getTime(), callback);
809
- }
810
- &nbsp;
811
- //////////////////////////////////
812
- // queue size of non-mature elements only
813
- schedSize (callback) {
814
- //////////////////////////////////
815
- this._rediscl.zcount ('keuss:q:ordered_queue:index:' + this._name, new Date().getTime(), '+inf', callback);
816
- }
817
- &nbsp;
818
- //////////////////////////////////
819
- // get first
820
- peek (callback) {
821
- //////////////////////////////////
822
- this._rediscl.zrange ('keuss:q:ordered_queue:index:' + this._name, 0, 0, 'WITHSCORES', callback);
823
- }
824
- }
825
- &nbsp;
826
- &nbsp;
827
- class Factory {
828
- constructor (rediscl) {
829
- this._rediscl = rediscl;
830
- &nbsp;
831
- this._rediscl.defineCommand('roq_push', {numberOfKeys: 1, lua: _s_lua_code_push});
832
- this._rediscl.defineCommand('roq_pop', {numberOfKeys: 1, lua: _s_lua_code_pop});
833
- this._rediscl.defineCommand('roq_reserve', {numberOfKeys: 1, lua: _s_lua_code_reserve});
834
- this._rediscl.defineCommand('roq_commit', {numberOfKeys: 1, lua: _s_lua_code_commit});
835
- this._rediscl.defineCommand('roq_rollback', {numberOfKeys: 1, lua: _s_lua_code_rollback});
836
- }
837
- &nbsp;
838
- roq (name) {
839
- return new RedisOrderedQueue (name, this);
840
- }
841
- }
842
- &nbsp;
843
- module.exports = Factory;
844
- &nbsp;</pre></td></tr>
845
- </table></pre>
846
- <div class='push'></div><!-- for sticky footer -->
847
- </div><!-- /wrapper -->
848
- <div class='footer quiet pad2 space-top1 center small'>
849
- Code coverage
850
- 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)
851
- </div>
852
- </div>
853
- <script src="../../prettify.js"></script>
854
- <script>
855
- window.onload = function () {
856
- if (typeof prettyPrint === 'function') {
857
- prettyPrint();
858
- }
859
- };
860
- </script>
861
- <script src="../../sorter.js"></script>
862
- <script src="../../block-navigation.js"></script>
863
- </body>
864
- </html>