@auto-engineer/pipeline 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +4 -4
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +12 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/package.json +3 -3
  7. package/coverage/base.css +0 -224
  8. package/coverage/block-navigation.js +0 -87
  9. package/coverage/builder/define.ts.html +0 -2224
  10. package/coverage/builder/index.html +0 -116
  11. package/coverage/config/index.html +0 -116
  12. package/coverage/config/pipeline-config.ts.html +0 -181
  13. package/coverage/core/descriptors.ts.html +0 -397
  14. package/coverage/core/index.html +0 -131
  15. package/coverage/core/types.ts.html +0 -133
  16. package/coverage/coverage-final.json +0 -33
  17. package/coverage/favicon.png +0 -0
  18. package/coverage/graph/filter-graph.ts.html +0 -418
  19. package/coverage/graph/index.html +0 -131
  20. package/coverage/graph/types.ts.html +0 -172
  21. package/coverage/index.html +0 -266
  22. package/coverage/logging/event-logger.ts.html +0 -235
  23. package/coverage/logging/index.html +0 -116
  24. package/coverage/plugins/handler-adapter.ts.html +0 -148
  25. package/coverage/plugins/index.html +0 -131
  26. package/coverage/plugins/plugin-loader.ts.html +0 -691
  27. package/coverage/prettify.css +0 -1
  28. package/coverage/prettify.js +0 -2
  29. package/coverage/projections/await-tracker-projection.ts.html +0 -289
  30. package/coverage/projections/index.html +0 -221
  31. package/coverage/projections/item-status-projection.ts.html +0 -181
  32. package/coverage/projections/latest-run-projection.ts.html +0 -145
  33. package/coverage/projections/message-log-projection.ts.html +0 -424
  34. package/coverage/projections/node-status-projection.ts.html +0 -184
  35. package/coverage/projections/phased-execution-projection.ts.html +0 -523
  36. package/coverage/projections/settled-instance-projection.ts.html +0 -565
  37. package/coverage/projections/stats-projection.ts.html +0 -163
  38. package/coverage/runtime/await-tracker.ts.html +0 -271
  39. package/coverage/runtime/context.ts.html +0 -124
  40. package/coverage/runtime/event-command-map.ts.html +0 -220
  41. package/coverage/runtime/index.html +0 -191
  42. package/coverage/runtime/phased-executor.ts.html +0 -775
  43. package/coverage/runtime/pipeline-runtime.ts.html +0 -448
  44. package/coverage/runtime/settled-tracker.ts.html +0 -790
  45. package/coverage/server/index.html +0 -131
  46. package/coverage/server/pipeline-server.ts.html +0 -3253
  47. package/coverage/server/sse-manager.ts.html +0 -310
  48. package/coverage/sort-arrow-sprite.png +0 -0
  49. package/coverage/sorter.js +0 -210
  50. package/coverage/store/index.html +0 -146
  51. package/coverage/store/pipeline-event-store.ts.html +0 -553
  52. package/coverage/store/pipeline-read-model.ts.html +0 -754
  53. package/coverage/store/sqlite-pipeline-event-store.ts.html +0 -193
  54. package/coverage/testing/event-capture.ts.html +0 -280
  55. package/coverage/testing/index.html +0 -161
  56. package/coverage/testing/mock-handlers.ts.html +0 -259
  57. package/coverage/testing/snapshot-compare.ts.html +0 -403
  58. package/coverage/testing/snapshot-sanitize.ts.html +0 -136
  59. package/dist/src/builder/define.specs.d.ts +0 -2
  60. package/dist/src/builder/define.specs.d.ts.map +0 -1
  61. package/dist/src/builder/define.specs.js +0 -435
  62. package/dist/src/builder/define.specs.js.map +0 -1
  63. package/dist/src/core/descriptors.specs.d.ts +0 -2
  64. package/dist/src/core/descriptors.specs.d.ts.map +0 -1
  65. package/dist/src/core/descriptors.specs.js +0 -24
  66. package/dist/src/core/descriptors.specs.js.map +0 -1
  67. package/dist/src/core/types.specs.d.ts +0 -2
  68. package/dist/src/core/types.specs.d.ts.map +0 -1
  69. package/dist/src/core/types.specs.js +0 -40
  70. package/dist/src/core/types.specs.js.map +0 -1
  71. package/dist/src/graph/filter-graph.specs.d.ts +0 -2
  72. package/dist/src/graph/filter-graph.specs.d.ts.map +0 -1
  73. package/dist/src/graph/filter-graph.specs.js +0 -204
  74. package/dist/src/graph/filter-graph.specs.js.map +0 -1
  75. package/dist/src/graph/types.specs.d.ts +0 -2
  76. package/dist/src/graph/types.specs.d.ts.map +0 -1
  77. package/dist/src/graph/types.specs.js +0 -148
  78. package/dist/src/graph/types.specs.js.map +0 -1
  79. package/dist/src/logging/event-logger.specs.d.ts +0 -2
  80. package/dist/src/logging/event-logger.specs.d.ts.map +0 -1
  81. package/dist/src/logging/event-logger.specs.js +0 -81
  82. package/dist/src/logging/event-logger.specs.js.map +0 -1
  83. package/dist/src/plugins/handler-adapter.specs.d.ts +0 -2
  84. package/dist/src/plugins/handler-adapter.specs.d.ts.map +0 -1
  85. package/dist/src/plugins/handler-adapter.specs.js +0 -129
  86. package/dist/src/plugins/handler-adapter.specs.js.map +0 -1
  87. package/dist/src/plugins/plugin-loader.specs.d.ts +0 -2
  88. package/dist/src/plugins/plugin-loader.specs.d.ts.map +0 -1
  89. package/dist/src/plugins/plugin-loader.specs.js +0 -246
  90. package/dist/src/plugins/plugin-loader.specs.js.map +0 -1
  91. package/dist/src/projections/item-status-projection.specs.d.ts +0 -2
  92. package/dist/src/projections/item-status-projection.specs.d.ts.map +0 -1
  93. package/dist/src/projections/item-status-projection.specs.js +0 -119
  94. package/dist/src/projections/item-status-projection.specs.js.map +0 -1
  95. package/dist/src/projections/latest-run-projection.specs.d.ts +0 -2
  96. package/dist/src/projections/latest-run-projection.specs.d.ts.map +0 -1
  97. package/dist/src/projections/latest-run-projection.specs.js +0 -33
  98. package/dist/src/projections/latest-run-projection.specs.js.map +0 -1
  99. package/dist/src/projections/message-log-projection.specs.d.ts +0 -2
  100. package/dist/src/projections/message-log-projection.specs.d.ts.map +0 -1
  101. package/dist/src/projections/message-log-projection.specs.js +0 -101
  102. package/dist/src/projections/message-log-projection.specs.js.map +0 -1
  103. package/dist/src/projections/node-status-projection.specs.d.ts +0 -2
  104. package/dist/src/projections/node-status-projection.specs.d.ts.map +0 -1
  105. package/dist/src/projections/node-status-projection.specs.js +0 -116
  106. package/dist/src/projections/node-status-projection.specs.js.map +0 -1
  107. package/dist/src/projections/phased-execution-projection.specs.d.ts +0 -2
  108. package/dist/src/projections/phased-execution-projection.specs.d.ts.map +0 -1
  109. package/dist/src/projections/phased-execution-projection.specs.js +0 -171
  110. package/dist/src/projections/phased-execution-projection.specs.js.map +0 -1
  111. package/dist/src/projections/settled-instance-projection.specs.d.ts +0 -2
  112. package/dist/src/projections/settled-instance-projection.specs.d.ts.map +0 -1
  113. package/dist/src/projections/settled-instance-projection.specs.js +0 -217
  114. package/dist/src/projections/settled-instance-projection.specs.js.map +0 -1
  115. package/dist/src/projections/stats-projection.specs.d.ts +0 -2
  116. package/dist/src/projections/stats-projection.specs.d.ts.map +0 -1
  117. package/dist/src/projections/stats-projection.specs.js +0 -91
  118. package/dist/src/projections/stats-projection.specs.js.map +0 -1
  119. package/dist/src/runtime/await-tracker.specs.d.ts +0 -2
  120. package/dist/src/runtime/await-tracker.specs.d.ts.map +0 -1
  121. package/dist/src/runtime/await-tracker.specs.js +0 -64
  122. package/dist/src/runtime/await-tracker.specs.js.map +0 -1
  123. package/dist/src/runtime/context.specs.d.ts +0 -2
  124. package/dist/src/runtime/context.specs.d.ts.map +0 -1
  125. package/dist/src/runtime/context.specs.js +0 -26
  126. package/dist/src/runtime/context.specs.js.map +0 -1
  127. package/dist/src/runtime/event-command-map.specs.d.ts +0 -2
  128. package/dist/src/runtime/event-command-map.specs.d.ts.map +0 -1
  129. package/dist/src/runtime/event-command-map.specs.js +0 -108
  130. package/dist/src/runtime/event-command-map.specs.js.map +0 -1
  131. package/dist/src/runtime/phased-executor.specs.d.ts +0 -2
  132. package/dist/src/runtime/phased-executor.specs.d.ts.map +0 -1
  133. package/dist/src/runtime/phased-executor.specs.js +0 -418
  134. package/dist/src/runtime/phased-executor.specs.js.map +0 -1
  135. package/dist/src/runtime/pipeline-runtime.specs.d.ts +0 -2
  136. package/dist/src/runtime/pipeline-runtime.specs.d.ts.map +0 -1
  137. package/dist/src/runtime/pipeline-runtime.specs.js +0 -227
  138. package/dist/src/runtime/pipeline-runtime.specs.js.map +0 -1
  139. package/dist/src/runtime/settled-tracker.specs.d.ts +0 -2
  140. package/dist/src/runtime/settled-tracker.specs.d.ts.map +0 -1
  141. package/dist/src/runtime/settled-tracker.specs.js +0 -811
  142. package/dist/src/runtime/settled-tracker.specs.js.map +0 -1
  143. package/dist/src/server/full-orchestration.e2e.specs.d.ts +0 -2
  144. package/dist/src/server/full-orchestration.e2e.specs.d.ts.map +0 -1
  145. package/dist/src/server/full-orchestration.e2e.specs.js +0 -561
  146. package/dist/src/server/full-orchestration.e2e.specs.js.map +0 -1
  147. package/dist/src/server/pipeline-server.e2e.specs.d.ts +0 -2
  148. package/dist/src/server/pipeline-server.e2e.specs.d.ts.map +0 -1
  149. package/dist/src/server/pipeline-server.e2e.specs.js +0 -373
  150. package/dist/src/server/pipeline-server.e2e.specs.js.map +0 -1
  151. package/dist/src/server/pipeline-server.specs.d.ts +0 -2
  152. package/dist/src/server/pipeline-server.specs.d.ts.map +0 -1
  153. package/dist/src/server/pipeline-server.specs.js +0 -1407
  154. package/dist/src/server/pipeline-server.specs.js.map +0 -1
  155. package/dist/src/server/sse-manager.specs.d.ts +0 -2
  156. package/dist/src/server/sse-manager.specs.d.ts.map +0 -1
  157. package/dist/src/server/sse-manager.specs.js +0 -178
  158. package/dist/src/server/sse-manager.specs.js.map +0 -1
  159. package/dist/src/store/pipeline-event-store.specs.d.ts +0 -2
  160. package/dist/src/store/pipeline-event-store.specs.d.ts.map +0 -1
  161. package/dist/src/store/pipeline-event-store.specs.js +0 -287
  162. package/dist/src/store/pipeline-event-store.specs.js.map +0 -1
  163. package/dist/src/store/pipeline-read-model.specs.d.ts +0 -2
  164. package/dist/src/store/pipeline-read-model.specs.d.ts.map +0 -1
  165. package/dist/src/store/pipeline-read-model.specs.js +0 -830
  166. package/dist/src/store/pipeline-read-model.specs.js.map +0 -1
  167. package/dist/src/testing/event-capture.specs.d.ts +0 -2
  168. package/dist/src/testing/event-capture.specs.d.ts.map +0 -1
  169. package/dist/src/testing/event-capture.specs.js +0 -114
  170. package/dist/src/testing/event-capture.specs.js.map +0 -1
  171. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts +0 -2
  172. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts.map +0 -1
  173. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js +0 -263
  174. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js.map +0 -1
  175. package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts +0 -2
  176. package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts.map +0 -1
  177. package/dist/src/testing/fixtures/kanban.pipeline.specs.js +0 -29
  178. package/dist/src/testing/fixtures/kanban.pipeline.specs.js.map +0 -1
  179. package/dist/src/testing/kanban-todo.e2e.specs.d.ts +0 -2
  180. package/dist/src/testing/kanban-todo.e2e.specs.d.ts.map +0 -1
  181. package/dist/src/testing/kanban-todo.e2e.specs.js +0 -160
  182. package/dist/src/testing/kanban-todo.e2e.specs.js.map +0 -1
  183. package/dist/src/testing/mock-handlers.specs.d.ts +0 -2
  184. package/dist/src/testing/mock-handlers.specs.d.ts.map +0 -1
  185. package/dist/src/testing/mock-handlers.specs.js +0 -193
  186. package/dist/src/testing/mock-handlers.specs.js.map +0 -1
  187. package/dist/src/testing/real-execution.e2e.specs.d.ts +0 -2
  188. package/dist/src/testing/real-execution.e2e.specs.d.ts.map +0 -1
  189. package/dist/src/testing/real-execution.e2e.specs.js +0 -140
  190. package/dist/src/testing/real-execution.e2e.specs.js.map +0 -1
  191. package/dist/src/testing/real-plugin.e2e.specs.d.ts +0 -2
  192. package/dist/src/testing/real-plugin.e2e.specs.d.ts.map +0 -1
  193. package/dist/src/testing/real-plugin.e2e.specs.js +0 -65
  194. package/dist/src/testing/real-plugin.e2e.specs.js.map +0 -1
  195. package/dist/src/testing/server-startup.e2e.specs.d.ts +0 -2
  196. package/dist/src/testing/server-startup.e2e.specs.d.ts.map +0 -1
  197. package/dist/src/testing/server-startup.e2e.specs.js +0 -104
  198. package/dist/src/testing/server-startup.e2e.specs.js.map +0 -1
  199. package/dist/src/testing/snapshot-compare.specs.d.ts +0 -2
  200. package/dist/src/testing/snapshot-compare.specs.d.ts.map +0 -1
  201. package/dist/src/testing/snapshot-compare.specs.js +0 -112
  202. package/dist/src/testing/snapshot-compare.specs.js.map +0 -1
  203. package/dist/src/testing/snapshot-sanitize.specs.d.ts +0 -2
  204. package/dist/src/testing/snapshot-sanitize.specs.d.ts.map +0 -1
  205. package/dist/src/testing/snapshot-sanitize.specs.js +0 -104
  206. package/dist/src/testing/snapshot-sanitize.specs.js.map +0 -1
@@ -1,2224 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for builder/define.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">builder</a> define.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>484/484</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>93/93</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>69/69</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>484/484</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-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-neutral">&nbsp;</span>
797
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-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-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-neutral">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-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-neutral">&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-neutral">&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-neutral">&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-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&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-neutral">&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-neutral">&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-neutral">&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-neutral">&nbsp;</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-neutral">&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-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-yes">70x</span>
916
- <span class="cline-any cline-yes">70x</span>
917
- <span class="cline-any cline-yes">24x</span>
918
- <span class="cline-any cline-yes">24x</span>
919
- <span class="cline-any cline-yes">46x</span>
920
- <span class="cline-any cline-yes">46x</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-yes">1x</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-yes">1x</span>
927
- <span class="cline-any cline-yes">1x</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-yes">1x</span>
930
- <span class="cline-any cline-yes">152x</span>
931
- <span class="cline-any cline-yes">152x</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-yes">1x</span>
934
- <span class="cline-any cline-yes">4x</span>
935
- <span class="cline-any cline-yes">4x</span>
936
- <span class="cline-any cline-yes">4x</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-yes">1x</span>
939
- <span class="cline-any cline-yes">4x</span>
940
- <span class="cline-any cline-yes">4x</span>
941
- <span class="cline-any cline-yes">4x</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-yes">1x</span>
944
- <span class="cline-any cline-yes">3x</span>
945
- <span class="cline-any cline-yes">3x</span>
946
- <span class="cline-any cline-yes">3x</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-yes">1x</span>
949
- <span class="cline-any cline-yes">141x</span>
950
- <span class="cline-any cline-yes">141x</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-yes">1x</span>
953
- <span class="cline-any cline-yes">5x</span>
954
- <span class="cline-any cline-yes">5x</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-yes">1x</span>
957
- <span class="cline-any cline-yes">364x</span>
958
- <span class="cline-any cline-yes">364x</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-yes">1x</span>
961
- <span class="cline-any cline-yes">148x</span>
962
- <span class="cline-any cline-yes">148x</span>
963
- <span class="cline-any cline-yes">148x</span>
964
- <span class="cline-any cline-yes">148x</span>
965
- <span class="cline-any cline-yes">148x</span>
966
- <span class="cline-any cline-yes">148x</span>
967
- <span class="cline-any cline-yes">148x</span>
968
- <span class="cline-any cline-yes">148x</span>
969
- <span class="cline-any cline-yes">148x</span>
970
- <span class="cline-any cline-yes">148x</span>
971
- <span class="cline-any cline-yes">148x</span>
972
- <span class="cline-any cline-yes">148x</span>
973
- <span class="cline-any cline-yes">148x</span>
974
- <span class="cline-any cline-yes">1x</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-yes">217x</span>
982
- <span class="cline-any cline-yes">217x</span>
983
- <span class="cline-any cline-yes">196x</span>
984
- <span class="cline-any cline-yes">196x</span>
985
- <span class="cline-any cline-yes">217x</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-yes">81x</span>
988
- <span class="cline-any cline-yes">81x</span>
989
- <span class="cline-any cline-yes">81x</span>
990
- <span class="cline-any cline-yes">84x</span>
991
- <span class="cline-any cline-yes">84x</span>
992
- <span class="cline-any cline-yes">84x</span>
993
- <span class="cline-any cline-yes">81x</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-yes">2x</span>
996
- <span class="cline-any cline-yes">2x</span>
997
- <span class="cline-any cline-yes">2x</span>
998
- <span class="cline-any cline-yes">2x</span>
999
- <span class="cline-any cline-yes">1x</span>
1000
- <span class="cline-any cline-yes">1x</span>
1001
- <span class="cline-any cline-yes">1x</span>
1002
- <span class="cline-any cline-yes">2x</span>
1003
- <span class="cline-any cline-yes">1x</span>
1004
- <span class="cline-any cline-yes">1x</span>
1005
- <span class="cline-any cline-yes">2x</span>
1006
- <span class="cline-any cline-yes">1x</span>
1007
- <span class="cline-any cline-yes">1x</span>
1008
- <span class="cline-any cline-yes">2x</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-yes">2x</span>
1011
- <span class="cline-any cline-yes">2x</span>
1012
- <span class="cline-any cline-yes">2x</span>
1013
- <span class="cline-any cline-yes">2x</span>
1014
- <span class="cline-any cline-yes">2x</span>
1015
- <span class="cline-any cline-yes">2x</span>
1016
- <span class="cline-any cline-yes">2x</span>
1017
- <span class="cline-any cline-yes">2x</span>
1018
- <span class="cline-any cline-yes">2x</span>
1019
- <span class="cline-any cline-yes">2x</span>
1020
- <span class="cline-any cline-yes">2x</span>
1021
- <span class="cline-any cline-yes">2x</span>
1022
- <span class="cline-any cline-yes">2x</span>
1023
- <span class="cline-any cline-yes">2x</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-yes">2x</span>
1026
- <span class="cline-any cline-yes">2x</span>
1027
- <span class="cline-any cline-yes">2x</span>
1028
- <span class="cline-any cline-yes">1x</span>
1029
- <span class="cline-any cline-yes">2x</span>
1030
- <span class="cline-any cline-yes">2x</span>
1031
- <span class="cline-any cline-yes">2x</span>
1032
- <span class="cline-any cline-yes">1x</span>
1033
- <span class="cline-any cline-yes">2x</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-yes">13x</span>
1036
- <span class="cline-any cline-yes">13x</span>
1037
- <span class="cline-any cline-yes">13x</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-yes">13x</span>
1040
- <span class="cline-any cline-yes">17x</span>
1041
- <span class="cline-any cline-yes">17x</span>
1042
- <span class="cline-any cline-yes">17x</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-yes">13x</span>
1045
- <span class="cline-any cline-yes">13x</span>
1046
- <span class="cline-any cline-yes">5x</span>
1047
- <span class="cline-any cline-yes">5x</span>
1048
- <span class="cline-any cline-yes">5x</span>
1049
- <span class="cline-any cline-yes">13x</span>
1050
- <span class="cline-any cline-yes">13x</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-yes">71x</span>
1053
- <span class="cline-any cline-yes">71x</span>
1054
- <span class="cline-any cline-yes">71x</span>
1055
- <span class="cline-any cline-yes">71x</span>
1056
- <span class="cline-any cline-yes">71x</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-yes">71x</span>
1059
- <span class="cline-any cline-yes">100x</span>
1060
- <span class="cline-any cline-yes">100x</span>
1061
- <span class="cline-any cline-yes">81x</span>
1062
- <span class="cline-any cline-yes">81x</span>
1063
- <span class="cline-any cline-yes">100x</span>
1064
- <span class="cline-any cline-yes">2x</span>
1065
- <span class="cline-any cline-yes">2x</span>
1066
- <span class="cline-any cline-yes">100x</span>
1067
- <span class="cline-any cline-yes">2x</span>
1068
- <span class="cline-any cline-yes">2x</span>
1069
- <span class="cline-any cline-yes">100x</span>
1070
- <span class="cline-any cline-yes">2x</span>
1071
- <span class="cline-any cline-yes">2x</span>
1072
- <span class="cline-any cline-yes">100x</span>
1073
- <span class="cline-any cline-yes">13x</span>
1074
- <span class="cline-any cline-yes">13x</span>
1075
- <span class="cline-any cline-yes">100x</span>
1076
- <span class="cline-any cline-yes">100x</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-yes">71x</span>
1079
- <span class="cline-any cline-yes">71x</span>
1080
- <span class="cline-any cline-yes">71x</span>
1081
- <span class="cline-any cline-yes">71x</span>
1082
- <span class="cline-any cline-yes">71x</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-yes">1x</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-yes">1x</span>
1088
- <span class="cline-any cline-yes">325x</span>
1089
- <span class="cline-any cline-yes">325x</span>
1090
- <span class="cline-any cline-yes">325x</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-yes">1x</span>
1093
- <span class="cline-any cline-yes">67x</span>
1094
- <span class="cline-any cline-yes">67x</span>
1095
- <span class="cline-any cline-yes">67x</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-yes">1x</span>
1098
- <span class="cline-any cline-yes">265x</span>
1099
- <span class="cline-any cline-yes">265x</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-yes">1x</span>
1102
- <span class="cline-any cline-yes">16x</span>
1103
- <span class="cline-any cline-yes">16x</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-yes">1x</span>
1106
- <span class="cline-any cline-yes">37x</span>
1107
- <span class="cline-any cline-yes">37x</span>
1108
- <span class="cline-any cline-yes">37x</span>
1109
- <span class="cline-any cline-yes">37x</span>
1110
- <span class="cline-any cline-yes">37x</span>
1111
- <span class="cline-any cline-yes">37x</span>
1112
- <span class="cline-any cline-yes">37x</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-yes">1x</span>
1115
- <span class="cline-any cline-yes">7x</span>
1116
- <span class="cline-any cline-yes">7x</span>
1117
- <span class="cline-any cline-yes">7x</span>
1118
- <span class="cline-any cline-yes">7x</span>
1119
- <span class="cline-any cline-yes">7x</span>
1120
- <span class="cline-any cline-yes">7x</span>
1121
- <span class="cline-any cline-yes">7x</span>
1122
- <span class="cline-any cline-yes">7x</span>
1123
- <span class="cline-any cline-yes">1x</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-yes">1x</span>
1126
- <span class="cline-any cline-yes">1x</span>
1127
- <span class="cline-any cline-yes">340x</span>
1128
- <span class="cline-any cline-yes">340x</span>
1129
- <span class="cline-any cline-yes">340x</span>
1130
- <span class="cline-any cline-yes">340x</span>
1131
- <span class="cline-any cline-yes">340x</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-yes">1x</span>
1134
- <span class="cline-any cline-yes">75x</span>
1135
- <span class="cline-any cline-yes">75x</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-yes">1x</span>
1138
- <span class="cline-any cline-yes">157x</span>
1139
- <span class="cline-any cline-yes">157x</span>
1140
- <span class="cline-any cline-yes">157x</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-yes">1x</span>
1143
- <span class="cline-any cline-yes">36x</span>
1144
- <span class="cline-any cline-yes">36x</span>
1145
- <span class="cline-any cline-yes">36x</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-yes">1x</span>
1148
- <span class="cline-any cline-yes">72x</span>
1149
- <span class="cline-any cline-yes">72x</span>
1150
- <span class="cline-any cline-yes">72x</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-yes">1x</span>
1153
- <span class="cline-any cline-yes">265x</span>
1154
- <span class="cline-any cline-yes">265x</span>
1155
- <span class="cline-any cline-yes">265x</span>
1156
- <span class="cline-any cline-yes">265x</span>
1157
- <span class="cline-any cline-yes">265x</span>
1158
- <span class="cline-any cline-yes">340x</span>
1159
- <span class="cline-any cline-yes">340x</span>
1160
- <span class="cline-any cline-yes">265x</span>
1161
- <span class="cline-any cline-yes">265x</span>
1162
- <span class="cline-any cline-yes">265x</span>
1163
- <span class="cline-any cline-yes">1x</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-yes">1x</span>
1166
- <span class="cline-any cline-yes">1x</span>
1167
- <span class="cline-any cline-yes">7x</span>
1168
- <span class="cline-any cline-yes">7x</span>
1169
- <span class="cline-any cline-yes">7x</span>
1170
- <span class="cline-any cline-yes">7x</span>
1171
- <span class="cline-any cline-yes">7x</span>
1172
- <span class="cline-any cline-yes">7x</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-yes">1x</span>
1175
- <span class="cline-any cline-yes">1x</span>
1176
- <span class="cline-any cline-yes">1x</span>
1177
- <span class="cline-any cline-yes">1x</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-yes">1x</span>
1180
- <span class="cline-any cline-yes">6x</span>
1181
- <span class="cline-any cline-yes">6x</span>
1182
- <span class="cline-any cline-yes">6x</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-yes">1x</span>
1185
- <span class="cline-any cline-yes">7x</span>
1186
- <span class="cline-any cline-yes">7x</span>
1187
- <span class="cline-any cline-yes">7x</span>
1188
- <span class="cline-any cline-yes">7x</span>
1189
- <span class="cline-any cline-yes">7x</span>
1190
- <span class="cline-any cline-yes">7x</span>
1191
- <span class="cline-any cline-yes">7x</span>
1192
- <span class="cline-any cline-yes">7x</span>
1193
- <span class="cline-any cline-yes">1x</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-yes">1x</span>
1196
- <span class="cline-any cline-yes">1x</span>
1197
- <span class="cline-any cline-yes">16x</span>
1198
- <span class="cline-any cline-yes">16x</span>
1199
- <span class="cline-any cline-yes">16x</span>
1200
- <span class="cline-any cline-yes">16x</span>
1201
- <span class="cline-any cline-yes">16x</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-yes">1x</span>
1204
- <span class="cline-any cline-yes">15x</span>
1205
- <span class="cline-any cline-yes">15x</span>
1206
- <span class="cline-any cline-yes">15x</span>
1207
- <span class="cline-any cline-yes">15x</span>
1208
- <span class="cline-any cline-yes">15x</span>
1209
- <span class="cline-any cline-yes">15x</span>
1210
- <span class="cline-any cline-yes">15x</span>
1211
- <span class="cline-any cline-yes">15x</span>
1212
- <span class="cline-any cline-yes">15x</span>
1213
- <span class="cline-any cline-yes">15x</span>
1214
- <span class="cline-any cline-yes">1x</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-yes">1x</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-yes">1x</span>
1221
- <span class="cline-any cline-yes">15x</span>
1222
- <span class="cline-any cline-yes">15x</span>
1223
- <span class="cline-any cline-yes">15x</span>
1224
- <span class="cline-any cline-yes">15x</span>
1225
- <span class="cline-any cline-yes">15x</span>
1226
- <span class="cline-any cline-yes">15x</span>
1227
- <span class="cline-any cline-yes">15x</span>
1228
- <span class="cline-any cline-yes">15x</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-yes">1x</span>
1231
- <span class="cline-any cline-yes">4x</span>
1232
- <span class="cline-any cline-yes">4x</span>
1233
- <span class="cline-any cline-yes">4x</span>
1234
- <span class="cline-any cline-yes">4x</span>
1235
- <span class="cline-any cline-yes">4x</span>
1236
- <span class="cline-any cline-yes">4x</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-yes">1x</span>
1239
- <span class="cline-any cline-yes">2x</span>
1240
- <span class="cline-any cline-yes">2x</span>
1241
- <span class="cline-any cline-yes">2x</span>
1242
- <span class="cline-any cline-yes">2x</span>
1243
- <span class="cline-any cline-yes">2x</span>
1244
- <span class="cline-any cline-yes">2x</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-yes">1x</span>
1247
- <span class="cline-any cline-yes">1x</span>
1248
- <span class="cline-any cline-yes">1x</span>
1249
- <span class="cline-any cline-yes">1x</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-yes">1x</span>
1252
- <span class="cline-any cline-yes">14x</span>
1253
- <span class="cline-any cline-yes">14x</span>
1254
- <span class="cline-any cline-yes">14x</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-yes">1x</span>
1257
- <span class="cline-any cline-yes">1x</span>
1258
- <span class="cline-any cline-yes">1x</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-yes">1x</span>
1261
- <span class="cline-any cline-yes">2x</span>
1262
- <span class="cline-any cline-yes">2x</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-yes">1x</span>
1265
- <span class="cline-any cline-yes">15x</span>
1266
- <span class="cline-any cline-yes">15x</span>
1267
- <span class="cline-any cline-yes">15x</span>
1268
- <span class="cline-any cline-yes">15x</span>
1269
- <span class="cline-any cline-yes">15x</span>
1270
- <span class="cline-any cline-yes">15x</span>
1271
- <span class="cline-any cline-yes">15x</span>
1272
- <span class="cline-any cline-yes">15x</span>
1273
- <span class="cline-any cline-yes">15x</span>
1274
- <span class="cline-any cline-yes">15x</span>
1275
- <span class="cline-any cline-yes">15x</span>
1276
- <span class="cline-any cline-yes">15x</span>
1277
- <span class="cline-any cline-yes">15x</span>
1278
- <span class="cline-any cline-yes">15x</span>
1279
- <span class="cline-any cline-yes">1x</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-yes">1x</span>
1282
- <span class="cline-any cline-yes">1x</span>
1283
- <span class="cline-any cline-yes">6x</span>
1284
- <span class="cline-any cline-yes">6x</span>
1285
- <span class="cline-any cline-yes">6x</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-yes">1x</span>
1288
- <span class="cline-any cline-yes">1x</span>
1289
- <span class="cline-any cline-yes">1x</span>
1290
- <span class="cline-any cline-yes">1x</span>
1291
- <span class="cline-any cline-yes">1x</span>
1292
- <span class="cline-any cline-yes">1x</span>
1293
- <span class="cline-any cline-yes">1x</span>
1294
- <span class="cline-any cline-yes">1x</span>
1295
- <span class="cline-any cline-yes">1x</span>
1296
- <span class="cline-any cline-yes">1x</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-yes">1x</span>
1299
- <span class="cline-any cline-yes">2x</span>
1300
- <span class="cline-any cline-yes">2x</span>
1301
- <span class="cline-any cline-yes">2x</span>
1302
- <span class="cline-any cline-yes">2x</span>
1303
- <span class="cline-any cline-yes">2x</span>
1304
- <span class="cline-any cline-yes">2x</span>
1305
- <span class="cline-any cline-yes">2x</span>
1306
- <span class="cline-any cline-yes">2x</span>
1307
- <span class="cline-any cline-yes">2x</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-yes">1x</span>
1310
- <span class="cline-any cline-yes">1x</span>
1311
- <span class="cline-any cline-yes">1x</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-yes">1x</span>
1314
- <span class="cline-any cline-yes">5x</span>
1315
- <span class="cline-any cline-yes">5x</span>
1316
- <span class="cline-any cline-yes">1x</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-yes">1x</span>
1319
- <span class="cline-any cline-yes">1x</span>
1320
- <span class="cline-any cline-yes">37x</span>
1321
- <span class="cline-any cline-yes">37x</span>
1322
- <span class="cline-any cline-yes">37x</span>
1323
- <span class="cline-any cline-yes">37x</span>
1324
- <span class="cline-any cline-yes">37x</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-yes">1x</span>
1327
- <span class="cline-any cline-yes">36x</span>
1328
- <span class="cline-any cline-yes">36x</span>
1329
- <span class="cline-any cline-yes">36x</span>
1330
- <span class="cline-any cline-yes">36x</span>
1331
- <span class="cline-any cline-yes">36x</span>
1332
- <span class="cline-any cline-yes">36x</span>
1333
- <span class="cline-any cline-yes">36x</span>
1334
- <span class="cline-any cline-yes">36x</span>
1335
- <span class="cline-any cline-yes">36x</span>
1336
- <span class="cline-any cline-yes">1x</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-yes">1x</span>
1339
- <span class="cline-any cline-yes">1x</span>
1340
- <span class="cline-any cline-yes">36x</span>
1341
- <span class="cline-any cline-yes">36x</span>
1342
- <span class="cline-any cline-yes">36x</span>
1343
- <span class="cline-any cline-yes">36x</span>
1344
- <span class="cline-any cline-yes">36x</span>
1345
- <span class="cline-any cline-yes">36x</span>
1346
- <span class="cline-any cline-yes">36x</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-yes">1x</span>
1349
- <span class="cline-any cline-yes">36x</span>
1350
- <span class="cline-any cline-yes">36x</span>
1351
- <span class="cline-any cline-yes">36x</span>
1352
- <span class="cline-any cline-yes">36x</span>
1353
- <span class="cline-any cline-yes">36x</span>
1354
- <span class="cline-any cline-yes">36x</span>
1355
- <span class="cline-any cline-yes">36x</span>
1356
- <span class="cline-any cline-yes">36x</span>
1357
- <span class="cline-any cline-yes">36x</span>
1358
- <span class="cline-any cline-yes">36x</span>
1359
- <span class="cline-any cline-yes">36x</span>
1360
- <span class="cline-any cline-yes">1x</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-yes">1x</span>
1363
- <span class="cline-any cline-yes">1x</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-yes">1x</span>
1371
- <span class="cline-any cline-yes">36x</span>
1372
- <span class="cline-any cline-yes">36x</span>
1373
- <span class="cline-any cline-yes">36x</span>
1374
- <span class="cline-any cline-yes">36x</span>
1375
- <span class="cline-any cline-yes">36x</span>
1376
- <span class="cline-any cline-yes">36x</span>
1377
- <span class="cline-any cline-yes">36x</span>
1378
- <span class="cline-any cline-yes">36x</span>
1379
- <span class="cline-any cline-yes">36x</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-yes">1x</span>
1382
- <span class="cline-any cline-yes">2x</span>
1383
- <span class="cline-any cline-yes">2x</span>
1384
- <span class="cline-any cline-yes">2x</span>
1385
- <span class="cline-any cline-neutral">&nbsp;</span>
1386
- <span class="cline-any cline-yes">1x</span>
1387
- <span class="cline-any cline-yes">35x</span>
1388
- <span class="cline-any cline-yes">35x</span>
1389
- <span class="cline-any cline-yes">35x</span>
1390
- <span class="cline-any cline-yes">35x</span>
1391
- <span class="cline-any cline-yes">35x</span>
1392
- <span class="cline-any cline-yes">35x</span>
1393
- <span class="cline-any cline-yes">35x</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-yes">1x</span>
1396
- <span class="cline-any cline-yes">1x</span>
1397
- <span class="cline-any cline-yes">1x</span>
1398
- <span class="cline-any cline-yes">1x</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-yes">1x</span>
1401
- <span class="cline-any cline-yes">36x</span>
1402
- <span class="cline-any cline-yes">1x</span>
1403
- <span class="cline-any cline-yes">1x</span>
1404
- <span class="cline-any cline-yes">35x</span>
1405
- <span class="cline-any cline-yes">35x</span>
1406
- <span class="cline-any cline-yes">35x</span>
1407
- <span class="cline-any cline-yes">35x</span>
1408
- <span class="cline-any cline-yes">35x</span>
1409
- <span class="cline-any cline-yes">35x</span>
1410
- <span class="cline-any cline-yes">35x</span>
1411
- <span class="cline-any cline-yes">35x</span>
1412
- <span class="cline-any cline-yes">35x</span>
1413
- <span class="cline-any cline-yes">6x</span>
1414
- <span class="cline-any cline-yes">6x</span>
1415
- <span class="cline-any cline-yes">6x</span>
1416
- <span class="cline-any cline-yes">35x</span>
1417
- <span class="cline-any cline-yes">35x</span>
1418
- <span class="cline-any cline-yes">36x</span>
1419
- <span class="cline-any cline-yes">1x</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-yes">1x</span>
1422
- <span class="cline-any cline-yes">1x</span>
1423
- <span class="cline-any cline-yes">35x</span>
1424
- <span class="cline-any cline-yes">35x</span>
1425
- <span class="cline-any cline-yes">35x</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-yes">1x</span>
1428
- <span class="cline-any cline-yes">1x</span>
1429
- <span class="cline-any cline-yes">1x</span>
1430
- <span class="cline-any cline-yes">1x</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-yes">1x</span>
1433
- <span class="cline-any cline-yes">34x</span>
1434
- <span class="cline-any cline-yes">34x</span>
1435
- <span class="cline-any cline-yes">34x</span>
1436
- <span class="cline-any cline-yes">1x</span>
1437
- <span class="cline-any cline-neutral">&nbsp;</span>
1438
- <span class="cline-any cline-yes">1x</span>
1439
- <span class="cline-any cline-yes">1x</span>
1440
- <span class="cline-any cline-yes">42x</span>
1441
- <span class="cline-any cline-yes">42x</span>
1442
- <span class="cline-any cline-yes">42x</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-yes">1x</span>
1445
- <span class="cline-any cline-yes">42x</span>
1446
- <span class="cline-any cline-yes">42x</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">42x</span>
1451
- <span class="cline-any cline-yes">42x</span>
1452
- <span class="cline-any cline-yes">42x</span>
1453
- <span class="cline-any cline-yes">1x</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-yes">1x</span>
1456
- <span class="cline-any cline-yes">1x</span>
1457
- <span class="cline-any cline-yes">42x</span>
1458
- <span class="cline-any cline-yes">42x</span>
1459
- <span class="cline-any cline-yes">42x</span>
1460
- <span class="cline-any cline-yes">42x</span>
1461
- <span class="cline-any cline-yes">42x</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-yes">1x</span>
1464
- <span class="cline-any cline-yes">24x</span>
1465
- <span class="cline-any cline-yes">24x</span>
1466
- <span class="cline-any cline-yes">24x</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-yes">1x</span>
1469
- <span class="cline-any cline-yes">1x</span>
1470
- <span class="cline-any cline-yes">1x</span>
1471
- <span class="cline-any cline-yes">1x</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-yes">1x</span>
1474
- <span class="cline-any cline-yes">17x</span>
1475
- <span class="cline-any cline-yes">17x</span>
1476
- <span class="cline-any cline-yes">17x</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-yes">1x</span>
1479
- <span class="cline-any cline-yes">42x</span>
1480
- <span class="cline-any cline-yes">42x</span>
1481
- <span class="cline-any cline-yes">42x</span>
1482
- <span class="cline-any cline-yes">42x</span>
1483
- <span class="cline-any cline-yes">42x</span>
1484
- <span class="cline-any cline-yes">42x</span>
1485
- <span class="cline-any cline-yes">42x</span>
1486
- <span class="cline-any cline-yes">42x</span>
1487
- <span class="cline-any cline-yes">1x</span>
1488
- <span class="cline-any cline-neutral">&nbsp;</span>
1489
- <span class="cline-any cline-yes">1x</span>
1490
- <span class="cline-any cline-yes">152x</span>
1491
- <span class="cline-any cline-yes">152x</span>
1492
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Event } from '@auto-engineer/message-bus';
1493
- import type {
1494
- CustomHandlerDescriptor,
1495
- EmitHandlerDescriptor,
1496
- EventPredicate,
1497
- FailureContext,
1498
- ForEachPhasedDescriptor,
1499
- GatherEventConfig,
1500
- HandlerDescriptor,
1501
- KeyExtractor,
1502
- PipelineDescriptor,
1503
- RunAwaitHandlerDescriptor,
1504
- SettledHandler,
1505
- SettledHandlerDescriptor,
1506
- SuccessContext,
1507
- } from '../core/descriptors';
1508
- import type { CommandDispatch } from '../core/types';
1509
- import type { GraphEdge, GraphIR, GraphNode } from '../graph/types';
1510
- import type { PipelineContext } from '../runtime/context';
1511
- &nbsp;
1512
- export interface Pipeline {
1513
- descriptor: Readonly&lt;PipelineDescriptor&gt;;
1514
- toGraph(): GraphIR;
1515
- }
1516
- &nbsp;
1517
- export interface PipelineBuilder {
1518
- version(v: string): PipelineBuilder;
1519
- description(d: string): PipelineBuilder;
1520
- key&lt;E&gt;(name: string, extractor: (event: E) =&gt; string): PipelineBuilder;
1521
- on(eventType: string): TriggerBuilder;
1522
- settled(commandTypes: readonly string[]): SettledBuilder;
1523
- build(): Pipeline;
1524
- }
1525
- &nbsp;
1526
- export interface DispatchOptions&lt;D extends readonly string[] = readonly string[]&gt; {
1527
- dispatches: D;
1528
- }
1529
- &nbsp;
1530
- export interface SettledBuilder {
1531
- dispatch&lt;const D extends readonly string[]&gt;(
1532
- options: DispatchOptions&lt;D&gt;,
1533
- handler: (
1534
- events: Record&lt;string, Event[]&gt;,
1535
- send: (commandType: D[number], data: unknown) =&gt; void,
1536
- ) =&gt; void | { persist: boolean },
1537
- ): SettledChain;
1538
- }
1539
- &nbsp;
1540
- export interface SettledChain {
1541
- on(eventType: string): TriggerBuilder;
1542
- settled(commandTypes: readonly string[]): SettledBuilder;
1543
- build(): Pipeline;
1544
- }
1545
- &nbsp;
1546
- export interface HandleOptions {
1547
- emits?: string[];
1548
- }
1549
- &nbsp;
1550
- export interface TriggerBuilder {
1551
- when&lt;E&gt;(predicate: (event: E) =&gt; boolean): TriggerBuilder;
1552
- emit(commandType: string, data: unknown): EmitChain;
1553
- run(commands: CommandDispatch[]): RunBuilder;
1554
- run&lt;E&gt;(factory: (event: E) =&gt; CommandDispatch[]): RunBuilder;
1555
- forEach&lt;E, T&gt;(itemsSelector: (event: E) =&gt; T[]): ForEachBuilder&lt;T&gt;;
1556
- handle&lt;E&gt;(handler: (event: E, ctx: PipelineContext) =&gt; void | Promise&lt;void&gt;, options?: HandleOptions): HandleChain;
1557
- }
1558
- &nbsp;
1559
- export interface ForEachBuilder&lt;T&gt; {
1560
- groupInto&lt;P extends string&gt;(phases: readonly P[], classifier: (item: T) =&gt; P): PhasedBuilder&lt;T&gt;;
1561
- }
1562
- &nbsp;
1563
- export interface PhasedBuilder&lt;T&gt; {
1564
- process(commandType: string, dataFactory: (item: T) =&gt; Record&lt;string, unknown&gt;): PhasedChain&lt;T&gt;;
1565
- }
1566
- &nbsp;
1567
- export type CompletionEventConfig = string | { name: string; displayName: string };
1568
- &nbsp;
1569
- export interface CompletionConfig {
1570
- success: CompletionEventConfig;
1571
- failure: CompletionEventConfig;
1572
- itemKey: (event: Event) =&gt; string;
1573
- }
1574
- &nbsp;
1575
- export interface PhasedChain&lt;T&gt; {
1576
- stopOnFailure(): PhasedChain&lt;T&gt;;
1577
- onComplete(config: CompletionConfig): PhasedTerminal;
1578
- build(): Pipeline;
1579
- }
1580
- &nbsp;
1581
- export interface PhasedTerminal {
1582
- on(eventType: string): TriggerBuilder;
1583
- build(): Pipeline;
1584
- }
1585
- &nbsp;
1586
- export interface RunBuilder {
1587
- awaitAll&lt;E&gt;(keyName: string, keyExtractor: (event: E) =&gt; string, options?: { timeout?: number }): GatherBuilder;
1588
- }
1589
- &nbsp;
1590
- export interface GatherBuilder {
1591
- onSuccess&lt;T = unknown&gt;(
1592
- eventType: string,
1593
- dataFactory: (ctx: SuccessContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
1594
- ): GatherChain;
1595
- onFailure&lt;T = unknown&gt;(
1596
- eventType: string,
1597
- dataFactory: (ctx: FailureContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
1598
- ): GatherChain;
1599
- on(eventType: string): TriggerBuilder;
1600
- build(): Pipeline;
1601
- }
1602
- &nbsp;
1603
- export interface GatherChain {
1604
- onSuccess&lt;T = unknown&gt;(
1605
- eventType: string,
1606
- dataFactory: (ctx: SuccessContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
1607
- ): GatherChain;
1608
- onFailure&lt;T = unknown&gt;(
1609
- eventType: string,
1610
- dataFactory: (ctx: FailureContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
1611
- ): GatherChain;
1612
- on(eventType: string): TriggerBuilder;
1613
- build(): Pipeline;
1614
- }
1615
- &nbsp;
1616
- export interface EmitChain {
1617
- emit(commandType: string, data: unknown): EmitChain;
1618
- on(eventType: string): TriggerBuilder;
1619
- settled(commandTypes: readonly string[]): SettledBuilder;
1620
- build(): Pipeline;
1621
- }
1622
- &nbsp;
1623
- export interface HandleChain {
1624
- on(eventType: string): TriggerBuilder;
1625
- build(): Pipeline;
1626
- }
1627
- &nbsp;
1628
- function normalizeCompletionEvent(config: CompletionEventConfig): { name: string; displayName?: string } {
1629
- if (typeof config === 'string') {
1630
- return { name: config };
1631
- }
1632
- return config;
1633
- }
1634
- &nbsp;
1635
- class PipelineBuilderImpl implements PipelineBuilder {
1636
- private readonly name: string;
1637
- private versionValue?: string;
1638
- private descriptionValue?: string;
1639
- private readonly keys: Map&lt;string, KeyExtractor&gt; = new Map();
1640
- private readonly handlers: HandlerDescriptor[] = [];
1641
- &nbsp;
1642
- constructor(name: string) {
1643
- this.name = name;
1644
- }
1645
- &nbsp;
1646
- version(v: string): PipelineBuilder {
1647
- this.versionValue = v;
1648
- return this;
1649
- }
1650
- &nbsp;
1651
- description(d: string): PipelineBuilder {
1652
- this.descriptionValue = d;
1653
- return this;
1654
- }
1655
- &nbsp;
1656
- key&lt;E&gt;(name: string, extractor: (event: E) =&gt; string): PipelineBuilder {
1657
- this.keys.set(name, extractor as KeyExtractor);
1658
- return this;
1659
- }
1660
- &nbsp;
1661
- on(eventType: string): TriggerBuilder {
1662
- return new TriggerBuilderImpl(this, eventType);
1663
- }
1664
- &nbsp;
1665
- settled(commandTypes: readonly string[]): SettledBuilder {
1666
- return new SettledBuilderImpl(this, commandTypes);
1667
- }
1668
- &nbsp;
1669
- addHandler(handler: HandlerDescriptor): void {
1670
- this.handlers.push(handler);
1671
- }
1672
- &nbsp;
1673
- build(): Pipeline {
1674
- const descriptor: PipelineDescriptor = {
1675
- name: this.name,
1676
- version: this.versionValue,
1677
- description: this.descriptionValue,
1678
- keys: this.keys,
1679
- handlers: this.handlers,
1680
- };
1681
- const frozenDescriptor = Object.freeze(descriptor);
1682
- return {
1683
- descriptor: frozenDescriptor,
1684
- toGraph: () =&gt; extractGraph(frozenDescriptor),
1685
- };
1686
- }
1687
- }
1688
- &nbsp;
1689
- type GraphBuilderContext = {
1690
- nodeMap: Map&lt;string, GraphNode&gt;;
1691
- edges: GraphEdge[];
1692
- };
1693
- &nbsp;
1694
- function addNode(ctx: GraphBuilderContext, id: string, type: 'event' | 'command' | 'settled', label: string): void {
1695
- if (!ctx.nodeMap.has(id)) {
1696
- ctx.nodeMap.set(id, { id, type, label });
1697
- }
1698
- }
1699
- &nbsp;
1700
- function processEmitHandler(ctx: GraphBuilderContext, handler: EmitHandlerDescriptor): void {
1701
- addNode(ctx, `evt:${handler.eventType}`, 'event', handler.eventType);
1702
- for (const cmd of handler.commands) {
1703
- addNode(ctx, `cmd:${cmd.commandType}`, 'command', cmd.commandType);
1704
- ctx.edges.push({ from: `evt:${handler.eventType}`, to: `cmd:${cmd.commandType}` });
1705
- }
1706
- }
1707
- &nbsp;
1708
- function processRunAwaitHandler(ctx: GraphBuilderContext, handler: RunAwaitHandlerDescriptor): void {
1709
- addNode(ctx, `evt:${handler.eventType}`, 'event', handler.eventType);
1710
- const commands = Array.isArray(handler.commands) ? handler.commands : [];
1711
- for (const cmd of commands) {
1712
- addNode(ctx, `cmd:${cmd.commandType}`, 'command', cmd.commandType);
1713
- ctx.edges.push({ from: `evt:${handler.eventType}`, to: `cmd:${cmd.commandType}` });
1714
- }
1715
- if (handler.onSuccess) {
1716
- addNode(ctx, `evt:${handler.onSuccess.eventType}`, 'event', handler.onSuccess.eventType);
1717
- }
1718
- if (handler.onFailure) {
1719
- addNode(ctx, `evt:${handler.onFailure.eventType}`, 'event', handler.onFailure.eventType);
1720
- }
1721
- }
1722
- &nbsp;
1723
- function processForEachPhasedHandler(ctx: GraphBuilderContext, handler: ForEachPhasedDescriptor): void {
1724
- addNode(ctx, `evt:${handler.eventType}`, 'event', handler.eventType);
1725
- const sampleCmd = handler.emitFactory({}, '', { type: '', data: {} });
1726
- addNode(ctx, `cmd:${sampleCmd.commandType}`, 'command', sampleCmd.commandType);
1727
- ctx.edges.push({ from: `evt:${handler.eventType}`, to: `cmd:${sampleCmd.commandType}` });
1728
- const successEvent = handler.completion.successEvent;
1729
- const failureEvent = handler.completion.failureEvent;
1730
- const successLabel = successEvent.displayName ?? successEvent.name;
1731
- const failureLabel = failureEvent.displayName ?? failureEvent.name;
1732
- addNode(ctx, `evt:${successEvent.name}`, 'event', successLabel);
1733
- addNode(ctx, `evt:${failureEvent.name}`, 'event', failureLabel);
1734
- ctx.edges.push({ from: `cmd:${sampleCmd.commandType}`, to: `evt:${successEvent.name}` });
1735
- ctx.edges.push({ from: `cmd:${sampleCmd.commandType}`, to: `evt:${failureEvent.name}` });
1736
- }
1737
- &nbsp;
1738
- function processCustomHandler(ctx: GraphBuilderContext, handler: CustomHandlerDescriptor): void {
1739
- addNode(ctx, `evt:${handler.eventType}`, 'event', handler.eventType);
1740
- if (handler.declaredEmits) {
1741
- for (const emittedEvent of handler.declaredEmits) {
1742
- addNode(ctx, `evt:${emittedEvent}`, 'event', emittedEvent);
1743
- ctx.edges.push({ from: `evt:${handler.eventType}`, to: `evt:${emittedEvent}` });
1744
- }
1745
- }
1746
- }
1747
- &nbsp;
1748
- function processSettledHandler(ctx: GraphBuilderContext, handler: SettledHandlerDescriptor): void {
1749
- const settledNodeId = `settled:${handler.commandTypes.join(',')}`;
1750
- addNode(ctx, settledNodeId, 'settled', 'Settled');
1751
- &nbsp;
1752
- for (const commandType of handler.commandTypes) {
1753
- addNode(ctx, `cmd:${commandType}`, 'command', commandType);
1754
- ctx.edges.push({ from: `cmd:${commandType}`, to: settledNodeId });
1755
- }
1756
- &nbsp;
1757
- if (handler.dispatches) {
1758
- for (const dispatchedCommand of handler.dispatches) {
1759
- addNode(ctx, `cmd:${dispatchedCommand}`, 'command', dispatchedCommand);
1760
- ctx.edges.push({ from: settledNodeId, to: `cmd:${dispatchedCommand}`, backLink: true });
1761
- }
1762
- }
1763
- }
1764
- &nbsp;
1765
- function extractGraph(descriptor: PipelineDescriptor): GraphIR {
1766
- const ctx: GraphBuilderContext = {
1767
- nodeMap: new Map&lt;string, GraphNode&gt;(),
1768
- edges: [],
1769
- };
1770
- &nbsp;
1771
- for (const handler of descriptor.handlers) {
1772
- switch (handler.type) {
1773
- case 'emit':
1774
- processEmitHandler(ctx, handler);
1775
- break;
1776
- case 'run-await':
1777
- processRunAwaitHandler(ctx, handler);
1778
- break;
1779
- case 'foreach-phased':
1780
- processForEachPhasedHandler(ctx, handler);
1781
- break;
1782
- case 'custom':
1783
- processCustomHandler(ctx, handler);
1784
- break;
1785
- case 'settled':
1786
- processSettledHandler(ctx, handler);
1787
- break;
1788
- }
1789
- }
1790
- &nbsp;
1791
- return {
1792
- nodes: Array.from(ctx.nodeMap.values()),
1793
- edges: ctx.edges,
1794
- };
1795
- }
1796
- &nbsp;
1797
- class TriggerBuilderImpl implements TriggerBuilder {
1798
- private predicate?: EventPredicate;
1799
- &nbsp;
1800
- constructor(
1801
- private readonly parent: PipelineBuilderImpl,
1802
- private readonly eventType: string,
1803
- ) {}
1804
- &nbsp;
1805
- when&lt;E&gt;(predicate: (event: E) =&gt; boolean): TriggerBuilder {
1806
- this.predicate = predicate as EventPredicate;
1807
- return this;
1808
- }
1809
- &nbsp;
1810
- emit(commandType: string, data: unknown): EmitChain {
1811
- return new EmitChainImpl(this.parent, this.eventType, [{ commandType, data }], this.predicate);
1812
- }
1813
- &nbsp;
1814
- run(commandsOrFactory: CommandDispatch[] | ((event: Event) =&gt; CommandDispatch[])): RunBuilder {
1815
- return new RunBuilderImpl(this.parent, this.eventType, commandsOrFactory, this.predicate);
1816
- }
1817
- &nbsp;
1818
- forEach&lt;E, T&gt;(itemsSelector: (event: E) =&gt; T[]): ForEachBuilder&lt;T&gt; {
1819
- return new ForEachBuilderImpl&lt;T&gt;(
1820
- this.parent,
1821
- this.eventType,
1822
- itemsSelector as (event: Event) =&gt; unknown[],
1823
- this.predicate,
1824
- );
1825
- }
1826
- &nbsp;
1827
- handle&lt;E&gt;(handler: (event: E, ctx: PipelineContext) =&gt; void | Promise&lt;void&gt;, options?: HandleOptions): HandleChain {
1828
- return new HandleChainImpl(
1829
- this.parent,
1830
- this.eventType,
1831
- handler as (event: Event, ctx: PipelineContext) =&gt; void | Promise&lt;void&gt;,
1832
- this.predicate,
1833
- options?.emits,
1834
- );
1835
- }
1836
- }
1837
- &nbsp;
1838
- class EmitChainImpl implements EmitChain {
1839
- constructor(
1840
- private readonly parent: PipelineBuilderImpl,
1841
- private readonly eventType: string,
1842
- private readonly commands: Array&lt;{ commandType: string; data: unknown }&gt;,
1843
- private readonly predicate?: EventPredicate,
1844
- ) {}
1845
- &nbsp;
1846
- emit(commandType: string, data: unknown): EmitChain {
1847
- return new EmitChainImpl(this.parent, this.eventType, [...this.commands, { commandType, data }], this.predicate);
1848
- }
1849
- &nbsp;
1850
- on(eventType: string): TriggerBuilder {
1851
- this.finalizeHandler();
1852
- return new TriggerBuilderImpl(this.parent, eventType);
1853
- }
1854
- &nbsp;
1855
- settled(commandTypes: readonly string[]): SettledBuilder {
1856
- this.finalizeHandler();
1857
- return new SettledBuilderImpl(this.parent, commandTypes);
1858
- }
1859
- &nbsp;
1860
- build(): Pipeline {
1861
- this.finalizeHandler();
1862
- return this.parent.build();
1863
- }
1864
- &nbsp;
1865
- private finalizeHandler(): void {
1866
- this.parent.addHandler({
1867
- type: 'emit',
1868
- eventType: this.eventType,
1869
- predicate: this.predicate,
1870
- commands: this.commands.map((c) =&gt; ({
1871
- commandType: c.commandType,
1872
- data: c.data as Record&lt;string, unknown&gt;,
1873
- })),
1874
- });
1875
- }
1876
- }
1877
- &nbsp;
1878
- class HandleChainImpl implements HandleChain {
1879
- constructor(
1880
- private readonly parent: PipelineBuilderImpl,
1881
- private readonly eventType: string,
1882
- private readonly handler: (event: Event, ctx: PipelineContext) =&gt; void | Promise&lt;void&gt;,
1883
- private readonly predicate?: EventPredicate,
1884
- private readonly declaredEmits?: string[],
1885
- ) {}
1886
- &nbsp;
1887
- on(eventType: string): TriggerBuilder {
1888
- this.finalizeHandler();
1889
- return new TriggerBuilderImpl(this.parent, eventType);
1890
- }
1891
- &nbsp;
1892
- build(): Pipeline {
1893
- this.finalizeHandler();
1894
- return this.parent.build();
1895
- }
1896
- &nbsp;
1897
- private finalizeHandler(): void {
1898
- this.parent.addHandler({
1899
- type: 'custom',
1900
- eventType: this.eventType,
1901
- predicate: this.predicate,
1902
- handler: this.handler,
1903
- declaredEmits: this.declaredEmits,
1904
- });
1905
- }
1906
- }
1907
- &nbsp;
1908
- class RunBuilderImpl implements RunBuilder {
1909
- constructor(
1910
- private readonly parent: PipelineBuilderImpl,
1911
- private readonly eventType: string,
1912
- private readonly commands: CommandDispatch[] | ((event: Event) =&gt; CommandDispatch[]),
1913
- private readonly predicate?: EventPredicate,
1914
- ) {}
1915
- &nbsp;
1916
- awaitAll&lt;E&gt;(keyName: string, keyExtractor: (event: E) =&gt; string, options?: { timeout?: number }): GatherBuilder {
1917
- return new GatherBuilderImpl(
1918
- this.parent,
1919
- this.eventType,
1920
- this.commands,
1921
- this.predicate,
1922
- keyName,
1923
- keyExtractor as KeyExtractor,
1924
- options?.timeout,
1925
- );
1926
- }
1927
- }
1928
- &nbsp;
1929
- class GatherBuilderImpl implements GatherBuilder {
1930
- private successConfig?: GatherEventConfig&lt;SuccessContext&gt;;
1931
- private failureConfig?: GatherEventConfig&lt;FailureContext&gt;;
1932
- &nbsp;
1933
- constructor(
1934
- private readonly parent: PipelineBuilderImpl,
1935
- private readonly eventType: string,
1936
- private readonly commands: CommandDispatch[] | ((event: Event) =&gt; CommandDispatch[]),
1937
- private readonly predicate: EventPredicate | undefined,
1938
- private readonly keyName: string,
1939
- private readonly keyExtractor: KeyExtractor,
1940
- private readonly timeout?: number,
1941
- ) {}
1942
- &nbsp;
1943
- onSuccess&lt;T = unknown&gt;(
1944
- eventType: string,
1945
- dataFactory: (ctx: SuccessContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
1946
- ): GatherChain {
1947
- this.successConfig = { eventType, dataFactory: dataFactory as (ctx: SuccessContext) =&gt; Record&lt;string, unknown&gt; };
1948
- return new GatherChainImpl(this, this.parent);
1949
- }
1950
- &nbsp;
1951
- onFailure&lt;T = unknown&gt;(
1952
- eventType: string,
1953
- dataFactory: (ctx: FailureContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
1954
- ): GatherChain {
1955
- this.failureConfig = { eventType, dataFactory: dataFactory as (ctx: FailureContext) =&gt; Record&lt;string, unknown&gt; };
1956
- return new GatherChainImpl(this, this.parent);
1957
- }
1958
- &nbsp;
1959
- on(eventType: string): TriggerBuilder {
1960
- this.finalizeHandler();
1961
- return new TriggerBuilderImpl(this.parent, eventType);
1962
- }
1963
- &nbsp;
1964
- build(): Pipeline {
1965
- this.finalizeHandler();
1966
- return this.parent.build();
1967
- }
1968
- &nbsp;
1969
- setSuccessConfig(config: GatherEventConfig&lt;SuccessContext&gt;): void {
1970
- this.successConfig = config;
1971
- }
1972
- &nbsp;
1973
- setFailureConfig(config: GatherEventConfig&lt;FailureContext&gt;): void {
1974
- this.failureConfig = config;
1975
- }
1976
- &nbsp;
1977
- private finalizeHandler(): void {
1978
- this.parent.addHandler({
1979
- type: 'run-await',
1980
- eventType: this.eventType,
1981
- predicate: this.predicate,
1982
- commands: this.commands,
1983
- awaitConfig: {
1984
- keyName: this.keyName,
1985
- key: this.keyExtractor,
1986
- timeout: this.timeout,
1987
- },
1988
- onSuccess: this.successConfig,
1989
- onFailure: this.failureConfig,
1990
- });
1991
- }
1992
- }
1993
- &nbsp;
1994
- class GatherChainImpl implements GatherChain {
1995
- constructor(
1996
- private readonly gatherBuilder: GatherBuilderImpl,
1997
- readonly _parent: PipelineBuilderImpl,
1998
- ) {}
1999
- &nbsp;
2000
- onSuccess&lt;T = unknown&gt;(
2001
- eventType: string,
2002
- dataFactory: (ctx: SuccessContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
2003
- ): GatherChain {
2004
- this.gatherBuilder.setSuccessConfig({
2005
- eventType,
2006
- dataFactory: dataFactory as (ctx: SuccessContext) =&gt; Record&lt;string, unknown&gt;,
2007
- });
2008
- return this;
2009
- }
2010
- &nbsp;
2011
- onFailure&lt;T = unknown&gt;(
2012
- eventType: string,
2013
- dataFactory: (ctx: FailureContext&lt;T&gt;) =&gt; Record&lt;string, unknown&gt;,
2014
- ): GatherChain {
2015
- this.gatherBuilder.setFailureConfig({
2016
- eventType,
2017
- dataFactory: dataFactory as (ctx: FailureContext) =&gt; Record&lt;string, unknown&gt;,
2018
- });
2019
- return this;
2020
- }
2021
- &nbsp;
2022
- on(eventType: string): TriggerBuilder {
2023
- return this.gatherBuilder.on(eventType);
2024
- }
2025
- &nbsp;
2026
- build(): Pipeline {
2027
- return this.gatherBuilder.build();
2028
- }
2029
- }
2030
- &nbsp;
2031
- class ForEachBuilderImpl&lt;T&gt; implements ForEachBuilder&lt;T&gt; {
2032
- constructor(
2033
- private readonly parent: PipelineBuilderImpl,
2034
- private readonly eventType: string,
2035
- private readonly itemsSelector: (event: Event) =&gt; unknown[],
2036
- private readonly predicate?: EventPredicate,
2037
- ) {}
2038
- &nbsp;
2039
- groupInto&lt;P extends string&gt;(phases: readonly P[], classifier: (item: T) =&gt; P): PhasedBuilder&lt;T&gt; {
2040
- return new PhasedBuilderImpl&lt;T&gt;(
2041
- this.parent,
2042
- this.eventType,
2043
- this.itemsSelector,
2044
- this.predicate,
2045
- phases,
2046
- classifier as (item: unknown) =&gt; string,
2047
- );
2048
- }
2049
- }
2050
- &nbsp;
2051
- class PhasedBuilderImpl&lt;T&gt; implements PhasedBuilder&lt;T&gt; {
2052
- constructor(
2053
- private readonly parent: PipelineBuilderImpl,
2054
- private readonly eventType: string,
2055
- private readonly itemsSelector: (event: Event) =&gt; unknown[],
2056
- private readonly predicate: EventPredicate | undefined,
2057
- private readonly phases: readonly string[],
2058
- private readonly classifier: (item: unknown) =&gt; string,
2059
- ) {}
2060
- &nbsp;
2061
- process(commandType: string, dataFactory: (item: T) =&gt; Record&lt;string, unknown&gt;): PhasedChain&lt;T&gt; {
2062
- return new PhasedChainImpl&lt;T&gt;(
2063
- this.parent,
2064
- this.eventType,
2065
- this.itemsSelector,
2066
- this.predicate,
2067
- this.phases,
2068
- this.classifier,
2069
- commandType,
2070
- dataFactory as (item: unknown) =&gt; Record&lt;string, unknown&gt;,
2071
- );
2072
- }
2073
- }
2074
- &nbsp;
2075
- class PhasedChainImpl&lt;T&gt; implements PhasedChain&lt;T&gt; {
2076
- private stopOnFailureFlag = false;
2077
- private completionConfig?: {
2078
- successEvent: { name: string; displayName?: string };
2079
- failureEvent: { name: string; displayName?: string };
2080
- itemKey: KeyExtractor;
2081
- };
2082
- &nbsp;
2083
- constructor(
2084
- private readonly parent: PipelineBuilderImpl,
2085
- private readonly eventType: string,
2086
- private readonly itemsSelector: (event: Event) =&gt; unknown[],
2087
- private readonly predicate: EventPredicate | undefined,
2088
- private readonly phases: readonly string[],
2089
- private readonly classifier: (item: unknown) =&gt; string,
2090
- private readonly commandType: string,
2091
- private readonly dataFactory: (item: unknown) =&gt; Record&lt;string, unknown&gt;,
2092
- ) {}
2093
- &nbsp;
2094
- stopOnFailure(): PhasedChain&lt;T&gt; {
2095
- this.stopOnFailureFlag = true;
2096
- return this;
2097
- }
2098
- &nbsp;
2099
- onComplete(config: CompletionConfig): PhasedTerminal {
2100
- this.completionConfig = {
2101
- successEvent: normalizeCompletionEvent(config.success),
2102
- failureEvent: normalizeCompletionEvent(config.failure),
2103
- itemKey: config.itemKey as KeyExtractor,
2104
- };
2105
- return new PhasedTerminalImpl(this, this.parent);
2106
- }
2107
- &nbsp;
2108
- build(): Pipeline {
2109
- this.finalizeHandler();
2110
- return this.parent.build();
2111
- }
2112
- &nbsp;
2113
- finalizeHandler(): void {
2114
- if (!this.completionConfig) {
2115
- throw new Error('onComplete() must be called before build()');
2116
- }
2117
- this.parent.addHandler({
2118
- type: 'foreach-phased',
2119
- eventType: this.eventType,
2120
- predicate: this.predicate,
2121
- itemsSelector: this.itemsSelector,
2122
- phases: this.phases,
2123
- classifier: this.classifier,
2124
- stopOnFailure: this.stopOnFailureFlag,
2125
- emitFactory: (item: unknown, _phase: string, _event: Event) =&gt; ({
2126
- commandType: this.commandType,
2127
- data: this.dataFactory(item),
2128
- }),
2129
- completion: this.completionConfig,
2130
- });
2131
- }
2132
- }
2133
- &nbsp;
2134
- class PhasedTerminalImpl implements PhasedTerminal {
2135
- constructor(
2136
- private readonly phasedChain: PhasedChainImpl&lt;unknown&gt;,
2137
- private readonly parent: PipelineBuilderImpl,
2138
- ) {}
2139
- &nbsp;
2140
- on(eventType: string): TriggerBuilder {
2141
- this.phasedChain.finalizeHandler();
2142
- return new TriggerBuilderImpl(this.parent, eventType);
2143
- }
2144
- &nbsp;
2145
- build(): Pipeline {
2146
- this.phasedChain.finalizeHandler();
2147
- return this.parent.build();
2148
- }
2149
- }
2150
- &nbsp;
2151
- class SettledBuilderImpl implements SettledBuilder {
2152
- constructor(
2153
- private readonly parent: PipelineBuilderImpl,
2154
- private readonly commandTypes: readonly string[],
2155
- ) {}
2156
- &nbsp;
2157
- dispatch&lt;const D extends readonly string[]&gt;(
2158
- options: DispatchOptions&lt;D&gt;,
2159
- handler: (
2160
- events: Record&lt;string, Event[]&gt;,
2161
- send: (commandType: D[number], data: unknown) =&gt; void,
2162
- ) =&gt; undefined | { persist: boolean },
2163
- ): SettledChain {
2164
- return new SettledChainImpl(this.parent, this.commandTypes, handler as SettledHandler, options.dispatches);
2165
- }
2166
- }
2167
- &nbsp;
2168
- class SettledChainImpl implements SettledChain {
2169
- constructor(
2170
- private readonly parent: PipelineBuilderImpl,
2171
- private readonly commandTypes: readonly string[],
2172
- private readonly handler: SettledHandler,
2173
- private readonly dispatches?: readonly string[],
2174
- ) {}
2175
- &nbsp;
2176
- on(eventType: string): TriggerBuilder {
2177
- this.finalizeHandler();
2178
- return new TriggerBuilderImpl(this.parent, eventType);
2179
- }
2180
- &nbsp;
2181
- settled(commandTypes: readonly string[]): SettledBuilder {
2182
- this.finalizeHandler();
2183
- return new SettledBuilderImpl(this.parent, commandTypes);
2184
- }
2185
- &nbsp;
2186
- build(): Pipeline {
2187
- this.finalizeHandler();
2188
- return this.parent.build();
2189
- }
2190
- &nbsp;
2191
- private finalizeHandler(): void {
2192
- const descriptor: SettledHandlerDescriptor = {
2193
- type: 'settled',
2194
- commandTypes: this.commandTypes,
2195
- handler: this.handler,
2196
- dispatches: this.dispatches,
2197
- };
2198
- this.parent.addHandler(descriptor);
2199
- }
2200
- }
2201
- &nbsp;
2202
- export function define(name: string): PipelineBuilder {
2203
- return new PipelineBuilderImpl(name);
2204
- }
2205
- &nbsp;</pre></td></tr></table></pre>
2206
-
2207
- <div class='push'></div><!-- for sticky footer -->
2208
- </div><!-- /wrapper -->
2209
- <div class='footer quiet pad2 space-top1 center small'>
2210
- Code coverage generated by
2211
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2212
- at 2026-01-06T00:27:41.742Z
2213
- </div>
2214
- <script src="../prettify.js"></script>
2215
- <script>
2216
- window.onload = function () {
2217
- prettyPrint();
2218
- };
2219
- </script>
2220
- <script src="../sorter.js"></script>
2221
- <script src="../block-navigation.js"></script>
2222
- </body>
2223
- </html>
2224
-