react-voodoo 2.7.1 → 2.7.2

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 (54) hide show
  1. package/package.json +1 -1
  2. package/.claude/scheduled_tasks.lock +0 -1
  3. package/coverage/clover.xml +0 -2221
  4. package/coverage/coverage-final.json +0 -35
  5. package/coverage/lcov-report/base.css +0 -224
  6. package/coverage/lcov-report/block-navigation.js +0 -87
  7. package/coverage/lcov-report/comps/Axis.js.html +0 -391
  8. package/coverage/lcov-report/comps/Draggable.js.html +0 -1180
  9. package/coverage/lcov-report/comps/Node.js.html +0 -691
  10. package/coverage/lcov-report/comps/Tweener.js.html +0 -3637
  11. package/coverage/lcov-report/comps/TweenerContext.js.html +0 -127
  12. package/coverage/lcov-report/comps/index.html +0 -176
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/hooks/index.html +0 -146
  15. package/coverage/lcov-report/hooks/useReducedMotion.js.html +0 -172
  16. package/coverage/lcov-report/hooks/useTweener.js.html +0 -130
  17. package/coverage/lcov-report/hooks/useVoodoo.js.html +0 -553
  18. package/coverage/lcov-report/index.html +0 -206
  19. package/coverage/lcov-report/prettify.css +0 -1
  20. package/coverage/lcov-report/prettify.js +0 -2
  21. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  22. package/coverage/lcov-report/sorter.js +0 -210
  23. package/coverage/lcov-report/spells/asTweener.js.html +0 -361
  24. package/coverage/lcov-report/spells/index.html +0 -131
  25. package/coverage/lcov-report/spells/withTweener.js.html +0 -262
  26. package/coverage/lcov-report/utils/CssTweenAxis.js.html +0 -721
  27. package/coverage/lcov-report/utils/css/cssUtils.js.html +0 -916
  28. package/coverage/lcov-report/utils/css/demux/backgroundColor.js.html +0 -115
  29. package/coverage/lcov-report/utils/css/demux/boxShadow.js.html +0 -115
  30. package/coverage/lcov-report/utils/css/demux/filter.js.html +0 -724
  31. package/coverage/lcov-report/utils/css/demux/index.html +0 -176
  32. package/coverage/lcov-report/utils/css/demux/textShadow.js.html +0 -115
  33. package/coverage/lcov-report/utils/css/demux/transform.js.html +0 -1006
  34. package/coverage/lcov-report/utils/css/demux/typed/any.js.html +0 -640
  35. package/coverage/lcov-report/utils/css/demux/typed/bool.js.html +0 -196
  36. package/coverage/lcov-report/utils/css/demux/typed/color.js.html +0 -322
  37. package/coverage/lcov-report/utils/css/demux/typed/index.html +0 -236
  38. package/coverage/lcov-report/utils/css/demux/typed/length.js.html +0 -562
  39. package/coverage/lcov-report/utils/css/demux/typed/multi.js.html +0 -298
  40. package/coverage/lcov-report/utils/css/demux/typed/number.js.html +0 -199
  41. package/coverage/lcov-report/utils/css/demux/typed/ratio.js.html +0 -199
  42. package/coverage/lcov-report/utils/css/demux/typed/shadow.js.html +0 -1060
  43. package/coverage/lcov-report/utils/css/demux/typed/svgAttr.js.html +0 -214
  44. package/coverage/lcov-report/utils/css/index.html +0 -146
  45. package/coverage/lcov-report/utils/css/index.js.html +0 -829
  46. package/coverage/lcov-report/utils/css/prop.js.html +0 -199
  47. package/coverage/lcov-report/utils/dom.js.html +0 -1309
  48. package/coverage/lcov-report/utils/index.html +0 -206
  49. package/coverage/lcov-report/utils/inertia.js.html +0 -2140
  50. package/coverage/lcov-report/utils/motionPrefs.js.html +0 -262
  51. package/coverage/lcov-report/utils/react.js.html +0 -199
  52. package/coverage/lcov-report/utils/spring.js.html +0 -397
  53. package/coverage/lcov-report/utils/tweenTools.js.html +0 -1003
  54. package/coverage/lcov.info +0 -4931
@@ -1,2140 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for utils/inertia.js</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">utils</a> inertia.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">77.19% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>220/285</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">69.07% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>134/194</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">80% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>16/20</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">77.58% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>218/281</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 medium'></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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-neutral">&nbsp;</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-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-yes">6x</span>
797
- <span class="cline-any cline-yes">6x</span>
798
- <span class="cline-any cline-yes">6x</span>
799
- <span class="cline-any cline-yes">6x</span>
800
- <span class="cline-any cline-yes">19x</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-yes">6x</span>
803
- <span class="cline-any cline-yes">6x</span>
804
- <span class="cline-any cline-yes">6x</span>
805
- <span class="cline-any cline-yes">6x</span>
806
- <span class="cline-any cline-yes">6x</span>
807
- <span class="cline-any cline-yes">26x</span>
808
- <span class="cline-any cline-yes">6x</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-yes">30x</span>
822
- <span class="cline-any cline-yes">19x</span>
823
- <span class="cline-any cline-yes">11x</span>
824
- <span class="cline-any cline-yes">1x</span>
825
- <span class="cline-any cline-yes">10x</span>
826
- <span class="cline-any cline-yes">4x</span>
827
- <span class="cline-any cline-yes">3x</span>
828
- <span class="cline-any cline-yes">1x</span>
829
- <span class="cline-any cline-yes">1x</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">6x</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-yes">9x</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-yes">9x</span>
849
- <span class="cline-any cline-yes">3x</span>
850
- <span class="cline-any cline-yes">3x</span>
851
- <span class="cline-any cline-yes">3x</span>
852
- <span class="cline-any cline-yes">3x</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-yes">6x</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-yes">6x</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-yes">6x</span>
864
- <span class="cline-any cline-yes">6x</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-yes">6x</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-yes">18x</span>
881
- <span class="cline-any cline-yes">18x</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-yes">18x</span>
887
- <span class="cline-any cline-yes">18x</span>
888
- <span class="cline-any cline-yes">18x</span>
889
- <span class="cline-any cline-yes">18x</span>
890
- <span class="cline-any cline-yes">18x</span>
891
- <span class="cline-any cline-yes">18x</span>
892
- <span class="cline-any cline-yes">18x</span>
893
- <span class="cline-any cline-yes">18x</span>
894
- <span class="cline-any cline-yes">18x</span>
895
- <span class="cline-any cline-yes">18x</span>
896
- <span class="cline-any cline-yes">18x</span>
897
- <span class="cline-any cline-yes">18x</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-yes">18x</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-yes">2x</span>
904
- <span class="cline-any cline-yes">2x</span>
905
- <span class="cline-any cline-yes">2x</span>
906
- <span class="cline-any cline-yes">2x</span>
907
- <span class="cline-any cline-yes">2x</span>
908
- <span class="cline-any cline-yes">2x</span>
909
- <span class="cline-any cline-yes">2x</span>
910
- <span class="cline-any cline-yes">2x</span>
911
- <span class="cline-any cline-yes">2x</span>
912
- <span class="cline-any cline-yes">2x</span>
913
- <span class="cline-any cline-yes">2x</span>
914
- <span class="cline-any cline-yes">2x</span>
915
- <span class="cline-any cline-yes">2x</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-yes">10x</span>
925
- <span class="cline-any cline-yes">10x</span>
926
- <span class="cline-any cline-yes">10x</span>
927
- <span class="cline-any cline-yes">10x</span>
928
- <span class="cline-any cline-yes">10x</span>
929
- <span class="cline-any cline-yes">10x</span>
930
- <span class="cline-any cline-yes">10x</span>
931
- <span class="cline-any cline-yes">10x</span>
932
- <span class="cline-any cline-yes">10x</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-yes">19x</span>
948
- <span class="cline-any cline-yes">19x</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-yes">19x</span>
951
- <span class="cline-any cline-yes">19x</span>
952
- <span class="cline-any cline-yes">19x</span>
953
- <span class="cline-any cline-yes">19x</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-yes">19x</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-yes">19x</span>
960
- <span class="cline-any cline-yes">10x</span>
961
- <span class="cline-any cline-yes">10x</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-yes">19x</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-yes">13x</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-no">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-no">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
985
- <span class="cline-any cline-no">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-yes">13x</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-yes">13x</span>
998
- <span class="cline-any cline-yes">13x</span>
999
- <span class="cline-any cline-yes">13x</span>
1000
- <span class="cline-any cline-yes">13x</span>
1001
- <span class="cline-any cline-yes">13x</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-yes">13x</span>
1004
- <span class="cline-any cline-yes">13x</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-yes">19x</span>
1008
- <span class="cline-any cline-yes">19x</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-yes">19x</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-yes">19x</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-no">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-yes">19x</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-yes">9x</span>
1033
- <span class="cline-any cline-yes">9x</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-yes">9x</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-yes">9x</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-yes">9x</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-yes">9x</span>
1043
- <span class="cline-any cline-yes">9x</span>
1044
- <span class="cline-any cline-yes">9x</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-yes">9x</span>
1059
- <span class="cline-any cline-yes">9x</span>
1060
- <span class="cline-any cline-yes">6x</span>
1061
- <span class="cline-any cline-yes">6x</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-yes">3x</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-no">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-yes">9x</span>
1071
- <span class="cline-any cline-yes">3x</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-yes">9x</span>
1075
- <span class="cline-any cline-yes">9x</span>
1076
- <span class="cline-any cline-yes">9x</span>
1077
- <span class="cline-any cline-yes">9x</span>
1078
- <span class="cline-any cline-yes">9x</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-yes">9x</span>
1084
- <span class="cline-any cline-yes">9x</span>
1085
- <span class="cline-any cline-yes">9x</span>
1086
- <span class="cline-any cline-yes">1x</span>
1087
- <span class="cline-any cline-yes">9x</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-neutral">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-neutral">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-yes">10x</span>
1108
- <span class="cline-any cline-yes">10x</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-yes">10x</span>
1115
- <span class="cline-any cline-yes">10x</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-yes">10x</span>
1118
- <span class="cline-any cline-yes">7x</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-yes">3x</span>
1121
- <span class="cline-any cline-yes">3x</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-yes">3x</span>
1125
- <span class="cline-any cline-yes">3x</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-yes">331x</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-yes">331x</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-yes">331x</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-yes">3x</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-yes">328x</span>
1152
- <span class="cline-any cline-yes">328x</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-yes">328x</span>
1155
- <span class="cline-any cline-yes">6x</span>
1156
- <span class="cline-any cline-yes">6x</span>
1157
- <span class="cline-any cline-yes">6x</span>
1158
- <span class="cline-any cline-yes">6x</span>
1159
- <span class="cline-any cline-yes">6x</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-yes">6x</span>
1162
- <span class="cline-any cline-yes">6x</span>
1163
- <span class="cline-any cline-yes">6x</span>
1164
- <span class="cline-any cline-yes">6x</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-yes">6x</span>
1169
- <span class="cline-any cline-yes">1x</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-yes">6x</span>
1172
- <span class="cline-any cline-yes">3x</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-yes">328x</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-yes">328x</span>
1179
- <span class="cline-any cline-neutral">&nbsp;</span>
1180
- <span class="cline-any cline-yes">328x</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-no">&nbsp;</span>
1188
- <span class="cline-any cline-no">&nbsp;</span>
1189
- <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-no">&nbsp;</span>
1191
- <span class="cline-any cline-no">&nbsp;</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1193
- <span class="cline-any cline-no">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-yes">328x</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-yes">328x</span>
1204
- <span class="cline-any cline-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-no">&nbsp;</span>
1208
- <span class="cline-any cline-no">&nbsp;</span>
1209
- <span class="cline-any cline-no">&nbsp;</span>
1210
- <span class="cline-any cline-no">&nbsp;</span>
1211
- <span class="cline-any cline-no">&nbsp;</span>
1212
- <span class="cline-any cline-no">&nbsp;</span>
1213
- <span class="cline-any cline-no">&nbsp;</span>
1214
- <span class="cline-any cline-no">&nbsp;</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-no">&nbsp;</span>
1217
- <span class="cline-any cline-no">&nbsp;</span>
1218
- <span class="cline-any cline-no">&nbsp;</span>
1219
- <span class="cline-any cline-no">&nbsp;</span>
1220
- <span class="cline-any cline-neutral">&nbsp;</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-no">&nbsp;</span>
1226
- <span class="cline-any cline-no">&nbsp;</span>
1227
- <span class="cline-any cline-no">&nbsp;</span>
1228
- <span class="cline-any cline-no">&nbsp;</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-no">&nbsp;</span>
1234
- <span class="cline-any cline-no">&nbsp;</span>
1235
- <span class="cline-any cline-no">&nbsp;</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-neutral">&nbsp;</span>
1239
- <span class="cline-any cline-no">&nbsp;</span>
1240
- <span class="cline-any cline-no">&nbsp;</span>
1241
- <span class="cline-any cline-no">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-no">&nbsp;</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-yes">1x</span>
1256
- <span class="cline-any cline-yes">1x</span>
1257
- <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-yes">1x</span>
1260
- <span class="cline-any cline-neutral">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-yes">1x</span>
1263
- <span class="cline-any cline-yes">1x</span>
1264
- <span class="cline-any cline-yes">1x</span>
1265
- <span class="cline-any cline-yes">1x</span>
1266
- <span class="cline-any cline-yes">1x</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-yes">1x</span>
1270
- <span class="cline-any cline-yes">1x</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-no">&nbsp;</span>
1277
- <span class="cline-any cline-no">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-yes">1x</span>
1285
- <span class="cline-any cline-yes">1x</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-no">&nbsp;</span>
1288
- <span class="cline-any cline-no">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-yes">1x</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-no">&nbsp;</span>
1293
- <span class="cline-any cline-no">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-yes">1x</span>
1297
- <span class="cline-any cline-yes">1x</span>
1298
- <span class="cline-any cline-yes">1x</span>
1299
- <span class="cline-any cline-yes">1x</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-yes">18x</span>
1305
- <span class="cline-any cline-yes">18x</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-yes">18x</span>
1309
- <span class="cline-any cline-yes">13x</span>
1310
- <span class="cline-any cline-yes">13x</span>
1311
- <span class="cline-any cline-yes">13x</span>
1312
- <span class="cline-any cline-yes">13x</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-yes">13x</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-yes">10x</span>
1334
- <span class="cline-any cline-yes">10x</span>
1335
- <span class="cline-any cline-yes">10x</span>
1336
- <span class="cline-any cline-yes">10x</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-neutral">&nbsp;</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-yes">10x</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-yes">7x</span>
1346
- <span class="cline-any cline-no">&nbsp;</span>
1347
- <span class="cline-any cline-no">&nbsp;</span>
1348
- <span class="cline-any cline-no">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-yes">7x</span>
1353
- <span class="cline-any cline-yes">14x</span>
1354
- <span class="cline-any cline-yes">1x</span>
1355
- <span class="cline-any cline-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-yes">7x</span>
1357
- <span class="cline-any cline-yes">6x</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-yes">1x</span>
1360
- <span class="cline-any cline-no">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-yes">1x</span>
1364
- <span class="cline-any cline-yes">1x</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-yes">1x</span>
1367
- <span class="cline-any cline-no">&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">7x</span>
1371
- <span class="cline-any cline-no">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-no">&nbsp;</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-no">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-yes">7x</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-yes">7x</span>
1381
- <span class="cline-any cline-yes">2x</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-yes">7x</span>
1385
- <span class="cline-any cline-yes">7x</span>
1386
- <span class="cline-any cline-yes">7x</span>
1387
- <span class="cline-any cline-neutral">&nbsp;</span>
1388
- <span class="cline-any cline-yes">7x</span>
1389
- <span class="cline-any cline-yes">7x</span>
1390
- <span class="cline-any cline-yes">7x</span>
1391
- <span class="cline-any cline-yes">7x</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-yes">3x</span>
1395
- <span class="cline-any cline-yes">3x</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-yes">3x</span>
1398
- <span class="cline-any cline-yes">3x</span>
1399
- <span class="cline-any cline-no">&nbsp;</span>
1400
- <span class="cline-any cline-no">&nbsp;</span>
1401
- <span class="cline-any cline-no">&nbsp;</span>
1402
- <span class="cline-any cline-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-yes">3x</span>
1404
- <span class="cline-any cline-no">&nbsp;</span>
1405
- <span class="cline-any cline-no">&nbsp;</span>
1406
- <span class="cline-any cline-no">&nbsp;</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-neutral">&nbsp;</span>
1411
- <span class="cline-any cline-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-yes">5x</span>
1415
- <span class="cline-any cline-neutral">&nbsp;</span>
1416
- <span class="cline-any cline-yes">5x</span>
1417
- <span class="cline-any cline-yes">5x</span>
1418
- <span class="cline-any cline-neutral">&nbsp;</span>
1419
- <span class="cline-any cline-neutral">&nbsp;</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-yes">6x</span>
1422
- <span class="cline-any cline-yes">6x</span>
1423
- <span class="cline-any cline-yes">6x</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-yes">6x</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*
1437
- * Copyright (c) 2022-2023 Braun Nathanael
1438
- *
1439
- * This project is dual licensed under one of the following licenses:
1440
- * - Creative Commons Attribution-NoDerivatives 4.0 International License.
1441
- * - GNU AFFERO GENERAL PUBLIC LICENSE Version 3
1442
- *
1443
- * You should have received a copy of theses licenses along with this work.
1444
- * If not, see &lt;http://creativecommons.org/licenses/by-nd/4.0/&gt; or &lt;http://www.gnu.org/licenses/agpl-3.0.txt&gt;.
1445
- */
1446
- &nbsp;
1447
- /**
1448
- * Inertia — physics-based momentum engine for scrollable axes.
1449
- *
1450
- * Tracks drag velocity during a hold gesture, then on release computes a deceleration
1451
- * arc using an easing function (default: easePolyOut). If waypoints are configured,
1452
- * `_doSnap()` selects the nearest one and adjusts the target position and duration
1453
- * so the animation lands exactly on a waypoint.
1454
- *
1455
- * The settle easing is configurable via the `settle` option:
1456
- * settle: "easeCubicOut" — any d3-ease function name
1457
- * settle: fn — custom normalised easing function
1458
- * settle: { stiffness, damping, mass } — physical spring: the curve is generated
1459
- * at release time from the actual gesture velocity &amp; travel distance (closed-form
1460
- * damped oscillator — see utils/spring.js), giving velocity continuity and an
1461
- * overshoot/bounce while the predictive waypoint snap stays authoritative.
1462
- * Individual waypoints may override it: wayPoints: [{ at: 100, settle: {...} }] —
1463
- * the elected waypoint's `settle` wins over the axis-level one.
1464
- *
1465
- * The `reducedMotion` option (injected by Tweener) is a callback; when it returns
1466
- * true at release time the settle duration collapses to 1ms so the axis jumps
1467
- * straight to the predicted snap target — all callbacks (willSnap/onSnap/onStop)
1468
- * still fire normally.
1469
- *
1470
- * The engine is poll-based: callers invoke `update()` on each timer tick (every 16ms
1471
- * via `applyInertia()` in Tweener) to retrieve the current position. The engine does
1472
- * not schedule its own timers.
1473
- *
1474
- * Three-phase drag lifecycle:
1475
- * startMove() — begins a new gesture; resets velocity state
1476
- * hold(pos) — called on each pointer-move event; accumulates velocity
1477
- * release() — called on pointer-up; commits momentum and triggers snap
1478
- */
1479
- &nbsp;
1480
- const
1481
- is = require('is'),
1482
- easingFn = require('d3-ease'),
1483
- { springSettle } = require('./spring'),
1484
- signOf = function sign( x ) {
1485
- return typeof x === 'number' ? x ? x &lt; 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >-1 </span>: 1 : x === x ? x : <span class="branch-1 cbranch-no" title="branch not covered" >NaN </span>: <span class="branch-1 cbranch-no" title="branch not covered" >NaN;</span>
1486
- },
1487
- abs = Math.abs,
1488
- floor = Math.floor,
1489
- round = Math.round,
1490
- min = Math.min,
1491
- max = Math.max,
1492
- floatCut = ( v = <span class="branch-0 cbranch-no" title="branch not covered" >0 </span>) =&gt; v.toFixed(3),
1493
- consts = {
1494
- velocityResetTm: .150,
1495
- clickTm : 250
1496
- };
1497
- &nbsp;
1498
- /**
1499
- * Resolve the static part of a `settle` option into an easing function.
1500
- *
1501
- * - string → looked up in d3-ease (e.g. "easeCubicOut"); warns &amp; falls back if unknown
1502
- * - function → used as-is
1503
- * - object → spring config; resolved per-release in `_applySettleSpring()` (returns null here)
1504
- */
1505
- function resolveSettleEase( settle ) {
1506
- if ( !settle )
1507
- return null;
1508
- if ( is.fn(settle) )
1509
- return settle;
1510
- if ( is.string(settle) ) {
1511
- if ( easingFn[settle] )
1512
- return easingFn[settle];
1513
- console.warn("[react-voodoo] Inertia: unknown settle easing '", settle, "' — falling back to easePolyOut");
1514
- return null;
1515
- }
1516
- return null;
1517
- }
1518
- &nbsp;
1519
- &nbsp;
1520
- /**
1521
- * Compute the momentum distance and duration from the current drag velocity.
1522
- *
1523
- * Uses a geometric series with decay factor 0.9 per frame:
1524
- * loopsTarget = log(0.05 / |v|) / log(0.9)
1525
- * This gives the number of 16ms steps until velocity decays below 5% of its current
1526
- * value. The sum of the geometric series (loopsVelSum) gives total distance travelled.
1527
- *
1528
- * When disabled (inertia.disabled), all targets are zeroed so the axis stops immediately.
1529
- */
1530
- export function applyInertia( _ ) {
1531
- let velSign = signOf(_.lastVelocity);
1532
-
1533
- if ( _.disabled ) {
1534
- _.loopsTarget = 0;
1535
- _.loopsVelSum = 0;
1536
- _.targetDist = 0;
1537
- _.targetDuration = 0;
1538
- }
1539
- else {
1540
- // calc momentum distance...
1541
- // get nb loop needed to get vel &lt; .05
1542
- _.loopsTarget = floor(Math.log(.05 / abs(_.lastVelocity)) / Math.log(.9));
1543
-
1544
- // get velocity sum basing on nb loops needed
1545
- _.loopsVelSum = (Math.pow(.9, _.loopsTarget) - abs(_.lastVelocity)) / (.9 - 1);
1546
-
1547
- // deduce real dist of momentum
1548
- _.targetDist = (_.loopsVelSum * _.refFPS * velSign) / 1000 || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
1549
- _.targetDuration = abs(_.loopsTarget * _.refFPS * velSign) || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
1550
- //console.warn(" _.targetDist", _.targetDist, _.lastVelocity);
1551
- }
1552
- }
1553
- &nbsp;
1554
- /**
1555
- * Main inertia class
1556
- * @type {module.exports}
1557
- */
1558
- export default class Inertia {
1559
- static config = {
1560
- bounds : true,
1561
- snapToBounds: true
1562
- };
1563
-
1564
- constructor( opt ) {
1565
- let _ = this._ = {};
1566
- _.conf = {
1567
- ...this.constructor.config,
1568
- ...opt
1569
- };
1570
-
1571
- this.active = false;
1572
- _.pos = opt.value || 0;
1573
- _.refFPS = 16;
1574
- _.min = opt.min || 0;
1575
- _.max = opt.max || 0;
1576
- _.currentStop = 0;
1577
- _.lastInertiaPos = 0;
1578
- _.stops = _.conf.stops;
1579
- _.disabled = _.conf.disabled;
1580
- _.wayPoints = _.conf.wayPoints;
1581
- _.inertiaFn = resolveSettleEase(_.conf.settle) || easingFn.easePolyOut;
1582
- _.targetWayPointIndex = 0;
1583
-
1584
- this._detectCurrentSnap();
1585
- }
1586
-
1587
- updateConf( opt ) {
1588
- let _ = this._;
1589
- _.min = opt.min || 0;
1590
- _.max = opt.max || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
1591
- _.stops = opt.stops;
1592
- _.disabled = opt.disabled;
1593
- _.wayPoints = opt.wayPoints;
1594
- _.conf.willStop = opt.willStop;
1595
- _.conf.willSnap = opt.willSnap;
1596
- _.conf.onStop = opt.onStop;
1597
- _.conf.onSnap = opt.onSnap;
1598
- _.conf.shouldLoop = opt.shouldLoop;
1599
- _.conf.settle = opt.settle;
1600
- _.inertiaFn = resolveSettleEase(opt.settle) || easingFn.easePolyOut;
1601
- }
1602
-
1603
- /**
1604
- * Begin a new drag gesture. Resets all velocity and momentum state so the
1605
- * release() calculation starts from a clean baseline. Sets `holding = true`
1606
- * to keep the inertia loop running while the pointer is held down.
1607
- */
1608
- startMove() {
1609
- let _ = this._;
1610
- _.baseTS = _.startTS = Date.now() / 1000;
1611
- _.lastVelocity = _.lastIVelocity = 0;
1612
- _.lastAccel = 0;
1613
- _.posDiff = 0;
1614
- _.loopsDiff = 0;
1615
- this.active = true;
1616
- this.holding = true;
1617
- _.inertia = false;
1618
- }
1619
-
1620
- /**
1621
- * Called on each pointer-move event with the new axis position. Updates the
1622
- * running velocity estimate used by release() to compute momentum distance.
1623
- *
1624
- * Velocity direction change detection: if the pointer reverses direction and
1625
- * more than `velocityResetTm` (150ms) has elapsed since the last base-point,
1626
- * the velocity base is reset to the current position/time. This prevents a
1627
- * brief reversal near the end of a fast swipe from zeroing out accumulated
1628
- * momentum. The `velocityResetTm` guard makes the direction check "sticky"
1629
- * enough to ignore micro-jitter from touch digitizers.
1630
- */
1631
- hold( nextPos ) {
1632
- let _ = this._,
1633
- delta = _.lastHoldPos !== undefined ? nextPos - _.lastHoldPos : 0,
1634
- loop,
1635
- now = Date.now() / 1000,
1636
- sinceLastPos = (now - _.baseTS),
1637
- pos = nextPos,
1638
- iVel = delta / sinceLastPos;
1639
-
1640
- _.lastHoldPos = nextPos;
1641
- //if (is.nan(pos))
1642
- // debugger
1643
-
1644
- if ( !_.lastBaseTs ) {// create base pts
1645
- _.lastBasePos = nextPos;
1646
- _.lastBaseTs = _.baseTS;
1647
- }
1648
-
1649
- if ( sinceLastPos &lt; .003 ) {
1650
- //console.log("hold fast", delta, _.baseTS, sinceLastPos);
1651
- // skip/ignore
1652
- }
1653
- else <span class="missing-if-branch" title="if path not taken" >I</span>if (// direction changed for velocityResetTm
1654
- (
1655
- (iVel &lt;= 0 &amp;&amp; _.lastVelocity &gt; 0)
1656
- ||
1657
- (iVel &gt;= 0 &amp;&amp; _.lastVelocity &lt; 0)
1658
- ||
1659
- abs(iVel) &lt; abs(_.lastVelocity * 0.2)
1660
- ) &amp;&amp;
1661
- <span class="branch-5 cbranch-no" title="branch not covered" > (now - _.lastBaseTs) &gt; consts.velocityResetTm</span>
1662
- ) {
1663
- //console.log("reset", _.lastBaseTs, _.lastVelocity);
1664
- <span class="cstat-no" title="statement not covered" > _.lastBasePos = nextPos;</span>
1665
- <span class="cstat-no" title="statement not covered" > _.lastBaseTs = now;</span>
1666
- <span class="cstat-no" title="statement not covered" > _.lastVelocity = 0;</span>
1667
- <span class="cstat-no" title="statement not covered" > _.lastIVelocity = 0;</span>
1668
- <span class="cstat-no" title="statement not covered" > _.baseTS = now;</span>
1669
- <span class="cstat-no" title="statement not covered" > _.targetDist = 0;</span>
1670
- <span class="cstat-no" title="statement not covered" > _.lastInertiaPos = 0;</span>
1671
- }
1672
- else <span class="missing-if-branch" title="if path not taken" >I</span>if (// dir changed fast
1673
- (iVel &lt;= 0 &amp;&amp; _.lastVelocity &gt; 0)
1674
- ||
1675
- (iVel &gt;= 0 &amp;&amp; _.lastVelocity &lt; 0)
1676
- ||
1677
- abs(iVel) &lt; abs(_.lastVelocity * 0.2)
1678
- ) {
1679
- //ignore
1680
- }
1681
- else {
1682
- _.lastIVelocity = iVel;
1683
- _.lastVelocity = ((pos) - (_.lastBasePos)) / (now - _.lastBaseTs);
1684
- _.baseTS = now;
1685
- _.targetDist = 0;
1686
- _.lastInertiaPos = 0;
1687
- // clear snap
1688
- _.targetWayPoint = undefined;
1689
- _.targetWayPointIndex = undefined;
1690
- }
1691
-
1692
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( _.conf.bounds ) {
1693
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( pos &gt; _.max ) {
1694
- <span class="cstat-no" title="statement not covered" > pos = _.max/</span>/ + min((pos - _.max) / 10, 10);
1695
- }
1696
- else <span class="missing-if-branch" title="if path not taken" >I</span>if ( pos &lt; _.min ) {
1697
- <span class="cstat-no" title="statement not covered" > pos = _.min/</span>/ - min((_.min - pos) / 10, 10);
1698
- }
1699
- }
1700
-
1701
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( _.conf.shouldLoop ) {
1702
- <span class="cstat-no" title="statement not covered" > while ( (loop = _.conf.shouldLoop(pos, delta)) ) {</span>
1703
- <span class="cstat-no" title="statement not covered" > pos += loop;</span>
1704
- }
1705
- }
1706
- _.pos = pos;
1707
-
1708
- }
1709
-
1710
- /**
1711
- * Called when the pointer is released. Commits the accumulated velocity into a
1712
- * momentum arc via `applyInertia()`, then applies snapToBounds correction if the
1713
- * projected landing position is outside [min, max]. Finally calls `_doSnap()` to
1714
- * find the nearest waypoint and adjust the target accordingly.
1715
- */
1716
- release() {
1717
- let _ = this._,
1718
- velSign = signOf(_.lastVelocity);
1719
- &nbsp;
1720
- this.holding = false;
1721
- &nbsp;
1722
- // Compute momentum distance/duration from the last measured velocity.
1723
- applyInertia(_);
1724
-
1725
- _.lastHoldPos = undefined;
1726
-
1727
- _.lastBasePos = undefined;
1728
- _.lastBaseTs = undefined;
1729
- _.holding = false;
1730
-
1731
- //if ( _.conf.shouldLoop ) {
1732
- // let loop, nPos=_.pos + _.targetDist;
1733
- // while ( (loop = _.conf.shouldLoop(nPos, 0)) ) {
1734
- // nPos += loop;
1735
- // if ( _.inertia ) {
1736
- // //_.targetDist+=loop;
1737
- // //_.lastInertiaPos+=loop;
1738
- // }
1739
- // //this.teleport(loop);
1740
- // }
1741
- // if (nPos!==_.pos + _.targetDist)
1742
- //}
1743
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( _.conf.bounds &amp;&amp; _.conf.snapToBounds ) {
1744
- if ( (_.pos + _.targetDist) &gt; _.max ) {
1745
- _.targetDist = _.max - _.pos;
1746
- _.targetDuration = abs(_.targetDist * 10);
1747
- }
1748
- else <span class="missing-if-branch" title="if path not taken" >I</span>if ( (_.pos + _.targetDist) &lt; _.min ) {
1749
-
1750
- <span class="cstat-no" title="statement not covered" > _.targetDist = _.min - _.pos;</span>
1751
- <span class="cstat-no" title="statement not covered" > _.targetDuration = abs(_.targetDist * 10);</span>
1752
- }
1753
- }
1754
- //else {
1755
- if ( !_.targetDuration )
1756
- _.targetDuration = 50;
1757
-
1758
- //console.log(_);
1759
- this.active = true;
1760
- _.inertia = true;
1761
- _.lastInertiaPos = 0;
1762
- _.settleLoopDec = 0;
1763
- _.inertiaStartTm =
1764
- _.inertiaLastTm = Date.now();
1765
- &nbsp;
1766
- &nbsp;
1767
- //}
1768
- this._doSnap(null, 500)
1769
- this._applySettleSpring(_.lastVelocity);
1770
- if ( _.conf.reducedMotion?.() )
1771
- _.targetDuration = 1;// jump: the next update tick lands exactly on the snap target
1772
- _.conf.willEnd?.(_.targetDist + _.pos, _.targetDist, _.targetDuration);
1773
- }
1774
- &nbsp;
1775
- /**
1776
- * Resolve &amp; apply the settle easing for the starting inertia animation.
1777
- *
1778
- * The effective `settle` value is the elected waypoint's own `settle` field if
1779
- * defined ({ at, gravity, settle }), falling back to the axis-level config —
1780
- * so individual waypoints can have their own landing feel.
1781
- *
1782
- * When the value is a spring config ({ stiffness, damping, mass, restDelta }),
1783
- * the settle easing is generated from the closed-form damped-spring solution
1784
- * using the *actual* release velocity and travel distance, and the duration is
1785
- * derived from the spring's physical settle time.
1786
- *
1787
- * Called after _doSnap() so the snap target (waypoint, gravity, maxJump) stays
1788
- * authoritative — the spring only decides *how* the axis travels there, with
1789
- * velocity continuity and a possible overshoot/bounce.
1790
- */
1791
- _applySettleSpring( velocity = <span class="branch-0 cbranch-no" title="branch not covered" >0 </span>) {
1792
- let _ = this._,
1793
- s = _.targetWayPoint &amp;&amp; _.targetWayPoint.settle !== undefined
1794
- ? _.targetWayPoint.settle
1795
- : _.conf.settle;
1796
- &nbsp;
1797
- // resolve the static part (string/fn — or restore the default when the
1798
- // previous settle came from a waypoint-specific config)
1799
- _.inertiaFn = resolveSettleEase(s) || easingFn.easePolyOut;
1800
- _.settleCustom = !!s;// activates the loop guard in update()
1801
- &nbsp;
1802
- if ( !s || is.fn(s) || is.string(s) || !_.targetDist )
1803
- return;
1804
- &nbsp;
1805
- let { ease, duration } = springSettle(velocity / _.targetDist, s),
1806
- clamped = max(50, min(10000, duration));
1807
- &nbsp;
1808
- // if clamped, remap so the curve is still evaluated on its physical time base
1809
- _.inertiaFn = clamped === duration ? ease : <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >u </span>=&gt; <span class="cstat-no" title="statement not covered" >ease(u * clamped / duration);</span></span>
1810
- _.targetDuration = clamped;
1811
- }
1812
-
1813
- /**
1814
- * Poll-based position update — called every 16ms by Tweener.applyInertia().
1815
- *
1816
- * Applies the easing function to the elapsed time ratio to get a smoothed
1817
- * position delta, then accumulates it into `_.pos`. When the animation
1818
- * duration has elapsed, snaps exactly to the target waypoint position (if any)
1819
- * to eliminate floating-point drift, fires onStop/onSnap callbacks, and sets
1820
- * `active = false` to stop the 16ms loop.
1821
- */
1822
- update( at = Date.now() ) {
1823
- let _ = this._, nextValue, loop;
1824
- let
1825
- pos = _.inertiaFn((at - _.inertiaStartTm) / _.targetDuration) * _.targetDist;
1826
-
1827
- if ( !_.inertia ) {
1828
- //if ( _.conf.shouldLoop ) {
1829
- // while ( (loop = _.conf.shouldLoop(_.pos, 0)) ) {
1830
- // this.teleport(loop);
1831
- // }
1832
- //}
1833
- return _.pos;
1834
- }
1835
- let
1836
- delta = pos - _.lastInertiaPos;
1837
- _.lastInertiaPos = pos;
1838
-
1839
- if ( (at - _.inertiaStartTm) &gt;= _.targetDuration ) {
1840
- _.inertia = this.active = false;
1841
- _.lastInertiaPos = delta = 0;
1842
- _.targetDist = 0;
1843
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( _.targetWayPoint ) {
1844
- delta = _.targetWayPoint.at - _.pos;
1845
- //console.log("snap done ", _.targetWayPoint, _.pos + delta);
1846
- _.currentWayPoint = _.targetWayPoint;
1847
- _.currentWayPointIndex = _.targetWayPointIndex;
1848
- _.targetWayPoint = null;
1849
- _.targetWayPointIndex = null;
1850
- //_.lastSnapTm = Date.now();
1851
- }
1852
-
1853
- if ( _.conf.onStop ) {
1854
- _.conf.onStop(_.pos, _.currentWayPoint)
1855
- }
1856
- if ( _.conf.onSnap ) {
1857
- _.conf.onSnap(_.currentWayPointIndex, _.currentWayPoint)
1858
- }
1859
- }
1860
-
1861
- delta = delta || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
1862
- //console.log(_.pos + delta);
1863
- nextValue = _.pos + delta;
1864
-
1865
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( _.conf.shouldLoop ) {
1866
- // With an overshooting settle easing (spring), the position may briefly cross
1867
- // a loop threshold before bouncing back to the target waypoint. _doSnap() has
1868
- // already accounted the expected loop shifts (snapLoopDec) in the travel
1869
- // distance — allow exactly those, and suppress extra teleports caused by the
1870
- // overshoot so the final exact-snap (targetWayPoint.at) stays consistent.
1871
- // Only active when a custom `settle` is configured (default path unchanged).
1872
- let snapGuard = <span class="cstat-no" title="statement not covered" >_.settleCustom &amp;&amp; _.inertia &amp;&amp; _.targetWayPoint;</span>
1873
- <span class="cstat-no" title="statement not covered" > while ( (!snapGuard || _.settleLoopDec !== _.snapLoopDec) &amp;&amp; (loop = _.conf.shouldLoop(nextValue, delta)) ) {</span>
1874
- //console.warn("loop update", loop, nextValue);
1875
- <span class="cstat-no" title="statement not covered" > nextValue += loop;</span>
1876
- <span class="cstat-no" title="statement not covered" > if ( snapGuard )</span>
1877
- <span class="cstat-no" title="statement not covered" > _.settleLoopDec += loop;</span>
1878
- <span class="cstat-no" title="statement not covered" > if ( _.inertia ) {</span>
1879
- //_.targetDist+=loop;
1880
- //_.lastInertiaPos+=loop;
1881
- }
1882
- //this.teleport(loop);
1883
- }
1884
- }
1885
-
1886
- _.pos = nextValue;
1887
-
1888
- return nextValue;
1889
- }
1890
-
1891
- <span class="fstat-no" title="function not covered" > se</span>tPos( pos ) {
1892
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> nextValue;
1893
- <span class="cstat-no" title="statement not covered" > _.inertia = false;</span>
1894
- <span class="cstat-no" title="statement not covered" > this.active = false;</span>
1895
- <span class="cstat-no" title="statement not covered" > _.lastInertiaPos = 0;</span>
1896
- <span class="cstat-no" title="statement not covered" > _.targetDist = 0;</span>
1897
- <span class="cstat-no" title="statement not covered" > _.inertiaStartTm = 0;</span>
1898
- <span class="cstat-no" title="statement not covered" > _.inertiaLastTm = 0;</span>
1899
- <span class="cstat-no" title="statement not covered" > _.targetDuration = 0;</span>
1900
-
1901
- <span class="cstat-no" title="statement not covered" > if ( _.conf.shouldLoop ) {</span>
1902
- let loop, nextValue = <span class="cstat-no" title="statement not covered" >pos;</span>
1903
- <span class="cstat-no" title="statement not covered" > while ( (loop = _.conf.shouldLoop(nextValue, _.pos - pos)) ) {</span>
1904
- <span class="cstat-no" title="statement not covered" > nextValue += loop;</span>
1905
- //this.teleport(loop);
1906
- //console.warn("loop update", nextValue, pos);
1907
- }
1908
- <span class="cstat-no" title="statement not covered" > pos = nextValue;</span>
1909
- }
1910
- <span class="cstat-no" title="statement not covered" > _.pos = pos;</span>
1911
- <span class="cstat-no" title="statement not covered" > if ( _.conf.bounds ) {</span>
1912
- <span class="cstat-no" title="statement not covered" > _.pos = max(_.pos, _.min);</span>
1913
- <span class="cstat-no" title="statement not covered" > _.pos = min(_.pos, _.max);</span>
1914
- }
1915
- }
1916
-
1917
- <span class="fstat-no" title="function not covered" > se</span>tWayPoints( wayPoints ) {
1918
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> nextValue;
1919
- <span class="cstat-no" title="statement not covered" > _.wayPoints = wayPoints;</span>
1920
- <span class="cstat-no" title="statement not covered" > this._detectCurrentSnap();</span>
1921
- }
1922
-
1923
- <span class="fstat-no" title="function not covered" > te</span>leport( loopDist ) {
1924
- let _ = <span class="cstat-no" title="statement not covered" >this._,</span> nextValue;
1925
- <span class="cstat-no" title="statement not covered" > if ( !_.inertia )</span>
1926
- <span class="cstat-no" title="statement not covered" > return _.pos += loopDist;</span>
1927
-
1928
- //_.lastInertiaPos += loopDist;
1929
- <span class="cstat-no" title="statement not covered" > _.pos += loopDist</span>
1930
- //console.log("setPos", _.lastInertiaPos);
1931
- }
1932
-
1933
- /**
1934
- * Programmatic momentum injection — e.g. for button-triggered scroll or swipe
1935
- * animations without a preceding drag gesture. If an inertia animation is already
1936
- * running in the same direction, the delta is accumulated; if the direction
1937
- * changes the animation is restarted from the current position.
1938
- */
1939
- dispatch( delta, tm = <span class="branch-0 cbranch-no" title="branch not covered" >500 </span>) {
1940
- let _ = this._,
1941
- now = Date.now(),
1942
- pos;
1943
-
1944
- this.active = true;
1945
-
1946
- // if no inertia has started || if direction has change
1947
- if ( !_.inertia || <span class="branch-1 cbranch-no" title="branch not covered" >signOf(delta) !== signOf(_.targetDist) </span>) {
1948
- _.inertia = true;
1949
- _.lastInertiaPos = 0;
1950
- _.settleLoopDec = 0;
1951
- _.inertiaStartTm =
1952
- _.inertiaLastTm = now;
1953
- &nbsp;
1954
- _.targetDist = delta;
1955
- _.targetDuration = tm;
1956
- }
1957
- else <span class="missing-if-branch" title="else path not taken" >E</span>{
1958
- //_.inertiaStartTm =
1959
- //_.inertiaLastTm = now;
1960
- //_.lastInertiaPos = 0;
1961
- <span class="cstat-no" title="statement not covered" > _.targetDist += delta;</span>
1962
- <span class="cstat-no" title="statement not covered" > _.targetDuration += tm / 2;</span>
1963
- }
1964
- //
1965
- //if ( _.conf.maxJump ) {
1966
- //
1967
- //}
1968
-
1969
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( _.conf.bounds ) {
1970
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( (_.pos + _.targetDist) &gt; _.max ) {
1971
-
1972
- <span class="cstat-no" title="statement not covered" > _.targetDist = _.max - _.pos;</span>
1973
- <span class="cstat-no" title="statement not covered" > _.targetDuration = abs(_.targetDist * 10);</span>
1974
- }
1975
- else <span class="missing-if-branch" title="if path not taken" >I</span>if ( (_.pos + _.targetDist) &lt; _.min ) {
1976
-
1977
- <span class="cstat-no" title="statement not covered" > _.targetDist = _.min - _.pos;</span>
1978
- <span class="cstat-no" title="statement not covered" > _.targetDuration = abs(_.targetDist * 10);</span>
1979
- }
1980
- }
1981
- this._doSnap(signOf(delta), 750)
1982
- this._applySettleSpring(0);// programmatic momentum: spring starts from rest
1983
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( _.conf.reducedMotion?.() )
1984
- _.targetDuration = 1;
1985
- }
1986
-
1987
-
1988
- _detectCurrentSnap() {
1989
- let _ = this._,
1990
- pos = _.pos,
1991
- i;
1992
-
1993
- if ( _.wayPoints &amp;&amp; _.wayPoints.length ) {
1994
- for ( i = 0; i &lt; _.wayPoints.length; i++ )
1995
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( floatCut(_.wayPoints[i].at) === floatCut(pos) ) {
1996
- _.currentWayPoint = _.wayPoints[i];
1997
- _.currentWayPointIndex = i;
1998
- //console.warn("snap set", i);
1999
-
2000
- return i;
2001
- }
2002
- }
2003
- }
2004
-
2005
- /**
2006
- * Select the waypoint that best matches the projected landing position and
2007
- * adjust `_.targetDist` and `_.targetDuration` to land precisely on it.
2008
- *
2009
- * Waypoint selection:
2010
- * Binary-search the sorted wayPoints array for the first waypoint beyond `pos`.
2011
- * The midpoint between adjacent waypoints `i-1` and `i` (weighted by their
2012
- * `gravity` fields, default 1) determines which waypoint "wins". If `forceSnap`
2013
- * is set (from dispatch()), the direction overrides the midpoint check.
2014
- * `maxJump` caps the maximum index distance from the current waypoint to
2015
- * prevent the animation from skipping multiple slides in one gesture.
2016
- */
2017
- _doSnap( forceSnap, maxDuration = <span class="branch-0 cbranch-no" title="branch not covered" >2000 </span>) {
2018
- let _ = this._,
2019
- pos = _.targetDist + (_.pos - (_.lastInertiaPos || 0)),
2020
- lPos = pos,
2021
- loopDec = 0,
2022
- target,
2023
- mid,
2024
- i,
2025
- loop;
2026
-
2027
- if ( _.wayPoints &amp;&amp; _.wayPoints.length ) {
2028
-
2029
- // apply loops to do to find the final wayPoint
2030
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( _.conf.shouldLoop ) {
2031
- <span class="cstat-no" title="statement not covered" > while ( (loop = _.conf.shouldLoop(lPos, 0)) ) {</span>
2032
- <span class="cstat-no" title="statement not covered" > lPos += loop;</span>
2033
- <span class="cstat-no" title="statement not covered" > loopDec += loop;</span>
2034
- }
2035
- }
2036
-
2037
- for ( i = 0; i &lt; _.wayPoints.length; i++ )
2038
- if ( _.wayPoints[i].at &gt; lPos )
2039
- break;
2040
-
2041
- if ( i === _.wayPoints.length ) {
2042
- i--
2043
- }
2044
- else <span class="missing-if-branch" title="if path not taken" >I</span>if ( i === 0 ) {
2045
- <span class="cstat-no" title="statement not covered" > i = 0;</span>
2046
- }
2047
- else {
2048
- mid = (_.wayPoints[i].at - _.wayPoints[i - 1].at) / 2;
2049
- mid = _.wayPoints[i - 1].at + (mid * ((_.wayPoints[i].gravity || 1) / (_.wayPoints[i - 1].gravity || 1)));
2050
-
2051
- if ( forceSnap ) forceSnap &lt; 0 &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >i--;</span>
2052
- else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if ( lPos &lt; mid ) <span class="cstat-no" title="statement not covered" >i--;</span></span>
2053
- }
2054
-
2055
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( _.conf.maxJump &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >is.number(_.currentWayPointIndex) </span>) {
2056
- let d = (<span class="cstat-no" title="statement not covered" >i - _.currentWayPointIndex)</span>;
2057
- //console.log('Inertia::_doSnap:154: ', i, d);
2058
- <span class="cstat-no" title="statement not covered" > if ( abs(d) &gt; _.conf.maxJump ) {</span>
2059
- //console.log('max: ', i, d);
2060
- <span class="cstat-no" title="statement not covered" > i = _.currentWayPointIndex + signOf(d) * _.conf.maxJump;</span>
2061
- }
2062
- }
2063
- target = _.wayPoints[i].at;
2064
-
2065
- if ( _.conf.willSnap ) {
2066
- _.conf.willSnap(i, _.wayPoints[i]);
2067
- }
2068
-
2069
- _.lastInertiaPos = _.lastInertiaPos || 0;
2070
- target = target - (_.pos - _.lastInertiaPos) - loopDec;
2071
- _.targetDuration = max(50, min(maxDuration, abs((_.targetDuration / _.targetDist) * target))) || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
2072
- //console.log("do snap", i, target, loopDec);
2073
- _.targetDist = target;
2074
- _.targetWayPoint = _.wayPoints[i];
2075
- _.targetWayPointIndex = i;
2076
- _.snapLoopDec = loopDec;// loop shifts expected during the settle (see update())
2077
- }
2078
- else {
2079
- _.snapLoopDec = 0;
2080
- target = ~~(_.pos - _.lastInertiaPos);
2081
-
2082
- <span class="missing-if-branch" title="else path not taken" >E</span>if ( !_.conf.infinite ) {
2083
- <span class="missing-if-branch" title="if path not taken" >I</span>if ( target &gt; _.max ) {
2084
- <span class="cstat-no" title="statement not covered" > target = _.max - target;</span>
2085
- <span class="cstat-no" title="statement not covered" > _.targetDuration = min(maxDuration, abs((_.targetDuration / _.targetDist) * target));</span>
2086
- <span class="cstat-no" title="statement not covered" > _.targetDist = target;</span>
2087
- }
2088
- else <span class="missing-if-branch" title="if path not taken" >I</span>if ( target &lt; _.min ) {
2089
- <span class="cstat-no" title="statement not covered" > target = _.min - target;</span>
2090
- <span class="cstat-no" title="statement not covered" > _.targetDuration = min(maxDuration, abs((_.targetDuration / _.targetDist) * target));</span>
2091
- <span class="cstat-no" title="statement not covered" > _.targetDist = target;</span>
2092
- }
2093
- }
2094
-
2095
- }
2096
- }
2097
-
2098
- setBounds( min, max ) {
2099
- let _ = this._;
2100
- //console.log('Inertia::setBounds:245: ', min, max);
2101
- _.min = min;
2102
- _.max = max;
2103
- }
2104
-
2105
- isInbound( nextPos ) {
2106
- let _ = this._, loop,
2107
- delta = _.lastHoldPos !== undefined ? nextPos - _.lastHoldPos : 0,
2108
- pos = (_.targetDist || 0) + (_.pos - (_.lastInertiaPos || 0)) + delta;
2109
- //if ( _.conf.infinite ) return false;
2110
- //
2111
- //if ( _.conf.shouldLoop ) {
2112
- // while ( (loop = _.conf.shouldLoop(nextValue)) ) {
2113
- //!(pos &gt;= _.min &amp;&amp; pos &lt;= _.max) &amp;&amp; console.warn("out", _.pos, pos, delta);
2114
- // pos += loop;
2115
- // }
2116
- //}
2117
- return pos &gt;= _.min &amp;&amp; pos &lt;= _.max;
2118
- }
2119
-
2120
- }
2121
- &nbsp;</pre></td></tr></table></pre>
2122
-
2123
- <div class='push'></div><!-- for sticky footer -->
2124
- </div><!-- /wrapper -->
2125
- <div class='footer quiet pad2 space-top1 center small'>
2126
- Code coverage generated by
2127
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2128
- at 2026-06-06T09:33:16.802Z
2129
- </div>
2130
- <script src="../prettify.js"></script>
2131
- <script>
2132
- window.onload = function () {
2133
- prettyPrint();
2134
- };
2135
- </script>
2136
- <script src="../sorter.js"></script>
2137
- <script src="../block-navigation.js"></script>
2138
- </body>
2139
- </html>
2140
-