@vpmedia/phaser 1.82.0 → 1.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/coverage/{lcov-report/block-navigation.js → block-navigation.js} +1 -1
- package/coverage/index.html +236 -0
- package/coverage/{lcov-report/sorter.js → sorter.js} +21 -7
- package/coverage/{lcov-report/core → src}/index.html +23 -23
- package/coverage/src/index.js.html +241 -0
- package/coverage/src/phaser/core/animation.js.html +1450 -0
- package/coverage/src/phaser/core/animation_manager.js.html +1117 -0
- package/coverage/src/phaser/core/animation_parser.js.html +373 -0
- package/coverage/src/phaser/core/array_set.js.html +562 -0
- package/coverage/src/phaser/core/cache.js.html +2404 -0
- package/coverage/{lcov-report → src/phaser}/core/const.js.html +284 -284
- package/coverage/src/phaser/core/device.js.html +373 -0
- package/coverage/src/phaser/core/device_util.js.html +850 -0
- package/coverage/src/phaser/core/dom.js.html +1042 -0
- package/coverage/src/phaser/core/error_code.js.html +109 -0
- package/coverage/src/phaser/core/event_manager.js.html +1264 -0
- package/coverage/src/phaser/core/factory.js.html +436 -0
- package/coverage/src/phaser/core/frame.js.html +415 -0
- package/coverage/src/phaser/core/frame_data.js.html +478 -0
- package/coverage/src/phaser/core/frame_util.js.html +169 -0
- package/coverage/src/phaser/core/game.js.html +1075 -0
- package/coverage/src/phaser/core/index.html +731 -0
- package/coverage/src/phaser/core/input.js.html +1576 -0
- package/coverage/src/phaser/core/input_handler.js.html +2959 -0
- package/coverage/src/phaser/core/input_mouse.js.html +988 -0
- package/coverage/src/phaser/core/input_mspointer.js.html +754 -0
- package/coverage/src/phaser/core/input_pointer.js.html +1645 -0
- package/coverage/src/phaser/core/input_touch.js.html +643 -0
- package/coverage/src/phaser/core/loader.js.html +3676 -0
- package/coverage/src/phaser/core/loader_parser.js.html +397 -0
- package/coverage/src/phaser/core/raf.js.html +184 -0
- package/coverage/src/phaser/core/scale_manager.js.html +3082 -0
- package/coverage/src/phaser/core/scene.js.html +265 -0
- package/coverage/src/phaser/core/scene_manager.js.html +1030 -0
- package/coverage/src/phaser/core/signal.js.html +859 -0
- package/coverage/src/phaser/core/signal_binding.js.html +388 -0
- package/coverage/src/phaser/core/sound.js.html +1678 -0
- package/coverage/src/phaser/core/sound_manager.js.html +1594 -0
- package/coverage/src/phaser/core/sound_sprite.js.html +265 -0
- package/coverage/src/phaser/core/stage.js.html +505 -0
- package/coverage/src/phaser/core/time.js.html +829 -0
- package/coverage/src/phaser/core/timer.js.html +1231 -0
- package/coverage/src/phaser/core/timer_event.js.html +157 -0
- package/coverage/src/phaser/core/tween.js.html +1486 -0
- package/coverage/src/phaser/core/tween_data.js.html +976 -0
- package/coverage/src/phaser/core/tween_easing.js.html +1099 -0
- package/coverage/src/phaser/core/tween_manager.js.html +826 -0
- package/coverage/src/phaser/core/world.js.html +139 -0
- package/coverage/src/phaser/display/bitmap_text.js.html +1423 -0
- package/coverage/src/phaser/display/button.js.html +916 -0
- package/coverage/src/phaser/display/canvas/buffer.js.html +232 -0
- package/coverage/src/phaser/display/canvas/graphics.js.html +766 -0
- package/coverage/src/phaser/display/canvas/index.html +206 -0
- package/coverage/src/phaser/display/canvas/masker.js.html +184 -0
- package/coverage/src/phaser/display/canvas/pool.js.html +445 -0
- package/coverage/src/phaser/display/canvas/renderer.js.html +589 -0
- package/coverage/src/phaser/display/canvas/tinter.js.html +658 -0
- package/coverage/src/phaser/display/canvas/util.js.html +544 -0
- package/coverage/src/phaser/display/display_object.js.html +2494 -0
- package/coverage/src/phaser/display/graphics.js.html +2815 -0
- package/coverage/src/phaser/display/graphics_data.js.html +187 -0
- package/coverage/src/phaser/display/graphics_data_util.js.html +139 -0
- package/coverage/src/phaser/display/group.js.html +1000 -0
- package/coverage/src/phaser/display/image.js.html +1222 -0
- package/coverage/src/phaser/display/index.html +266 -0
- package/coverage/src/phaser/display/sprite_batch.js.html +121 -0
- package/coverage/src/phaser/display/sprite_util.js.html +883 -0
- package/coverage/src/phaser/display/text.js.html +4597 -0
- package/coverage/src/phaser/display/webgl/abstract_filter.js.html +157 -0
- package/coverage/src/phaser/display/webgl/base_texture.js.html +322 -0
- package/coverage/src/phaser/display/webgl/blend_manager.js.html +208 -0
- package/coverage/src/phaser/display/webgl/earcut.js.html +2137 -0
- package/coverage/src/phaser/display/webgl/earcut_node.js.html +160 -0
- package/coverage/src/phaser/display/webgl/fast_sprite_batch.js.html +877 -0
- package/coverage/src/phaser/display/webgl/filter_manager.js.html +271 -0
- package/coverage/src/phaser/display/webgl/filter_texture.js.html +298 -0
- package/coverage/src/phaser/display/webgl/graphics.js.html +1942 -0
- package/coverage/src/phaser/display/webgl/graphics_data.js.html +214 -0
- package/coverage/src/phaser/display/webgl/index.html +386 -0
- package/coverage/src/phaser/display/webgl/mask_manager.js.html +199 -0
- package/coverage/src/phaser/display/webgl/render_texture.js.html +406 -0
- package/coverage/src/phaser/display/webgl/renderer.js.html +1003 -0
- package/coverage/src/phaser/display/webgl/shader/complex.js.html +316 -0
- package/coverage/src/phaser/display/webgl/shader/fast.js.html +406 -0
- package/coverage/src/phaser/display/webgl/shader/index.html +176 -0
- package/coverage/src/phaser/display/webgl/shader/normal.js.html +826 -0
- package/coverage/src/phaser/display/webgl/shader/primitive.js.html +310 -0
- package/coverage/src/phaser/display/webgl/shader/strip.js.html +325 -0
- package/coverage/src/phaser/display/webgl/shader_manager.js.html +385 -0
- package/coverage/src/phaser/display/webgl/sprite_batch.js.html +1135 -0
- package/coverage/src/phaser/display/webgl/stencil_manager.js.html +655 -0
- package/coverage/src/phaser/display/webgl/texture.js.html +490 -0
- package/coverage/src/phaser/display/webgl/texture_util.js.html +169 -0
- package/coverage/src/phaser/display/webgl/util.js.html +451 -0
- package/coverage/{lcov-report → src/phaser}/geom/circle.js.html +252 -252
- package/coverage/{lcov-report → src/phaser}/geom/ellipse.js.html +79 -79
- package/coverage/{lcov-report → src/phaser}/geom/index.html +67 -67
- package/coverage/{lcov-report → src/phaser}/geom/line.js.html +287 -287
- package/coverage/{lcov-report → src/phaser}/geom/matrix.js.html +135 -135
- package/coverage/{lcov-report → src/phaser}/geom/point.js.html +251 -251
- package/coverage/{lcov-report → src/phaser}/geom/polygon.js.html +147 -147
- package/coverage/{lcov-report → src/phaser}/geom/rectangle.js.html +408 -408
- package/coverage/{lcov-report → src/phaser}/geom/rounded_rectangle.js.html +45 -45
- package/coverage/{lcov-report → src/phaser}/geom/util/circle.js.html +104 -104
- package/coverage/{lcov-report → src/phaser}/geom/util/ellipse.js.html +29 -29
- package/coverage/{lcov-report → src/phaser}/geom/util/index.html +76 -76
- package/coverage/{lcov-report → src/phaser}/geom/util/line.js.html +123 -123
- package/coverage/{lcov-report → src/phaser}/geom/util/matrix.js.html +45 -45
- package/coverage/{lcov-report → src/phaser}/geom/util/point.js.html +274 -274
- package/coverage/{lcov-report → src/phaser}/geom/util/polygon.js.html +21 -21
- package/coverage/{lcov-report → src/phaser}/geom/util/rectangle.js.html +218 -218
- package/coverage/{lcov-report → src/phaser}/geom/util/rounded_rectangle.js.html +21 -21
- package/coverage/{lcov-report → src/phaser}/util/index.html +28 -28
- package/coverage/{lcov-report → src/phaser}/util/math.js.html +283 -283
- package/eslint.config.js +5 -3
- package/package.json +21 -21
- package/pnpm-workspace.yaml +2 -0
- package/coverage/clover.xml +0 -1092
- package/coverage/coverage-final.json +0 -19
- package/coverage/lcov-report/index.html +0 -161
- package/coverage/lcov.info +0 -2179
- /package/coverage/{lcov-report/base.css → base.css} +0 -0
- /package/coverage/{lcov-report/favicon.png → favicon.png} +0 -0
- /package/coverage/{lcov-report/prettify.css → prettify.css} +0 -0
- /package/coverage/{lcov-report/prettify.js → prettify.js} +0 -0
- /package/coverage/{lcov-report/sort-arrow-sprite.png → sort-arrow-sprite.png} +0 -0
|
@@ -0,0 +1,2137 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/phaser/display/webgl/earcut.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">src/phaser/display/webgl</a> earcut.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">0% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>0/657</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/1</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/1</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>0/657</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 low'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
+
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
+
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
+
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
+
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
+
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
+
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
+
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
+
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
+
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
+
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
+
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
+
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
+
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
+
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
+
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
+
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
+
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
+
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
+
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
+
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
+
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
+
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
+
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
+
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
+
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
+
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
+
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
+
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
+
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
+
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
+
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
+
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
+
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
+
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
+
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
+
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
+
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
+
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
+
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
+
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
+
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
+
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
+
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
+
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
+
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
+
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
+
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
+
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
+
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
+
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
+
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
+
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
+
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
+
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
+
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
+
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
+
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
+
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
+
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
+
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
+
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
+
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
+
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
+
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
+
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
+
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
+
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
+
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
+
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
+
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
+
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
+
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
+
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
+
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
+
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
+
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
+
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
+
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
+
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
+
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
+
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
+
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
+
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
+
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
+
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
+
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
+
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
+
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
+
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
+
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
+
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
+
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
+
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
+
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
+
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
+
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
+
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
+
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
+
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
+
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
+
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
+
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
+
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
+
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
+
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
+
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
+
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
+
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
+
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
+
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
+
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
+
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
+
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
+
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
+
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
+
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
+
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
+
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
+
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
+
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
+
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
+
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
+
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
+
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
+
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
+
<a name='L596'></a><a href='#L596'>596</a>
|
|
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></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
751
|
+
<span class="cline-any cline-neutral"> </span>
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
753
|
+
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-no"> </span>
|
|
755
|
+
<span class="cline-any cline-no"> </span>
|
|
756
|
+
<span class="cline-any cline-no"> </span>
|
|
757
|
+
<span class="cline-any cline-no"> </span>
|
|
758
|
+
<span class="cline-any cline-no"> </span>
|
|
759
|
+
<span class="cline-any cline-no"> </span>
|
|
760
|
+
<span class="cline-any cline-no"> </span>
|
|
761
|
+
<span class="cline-any cline-no"> </span>
|
|
762
|
+
<span class="cline-any cline-no"> </span>
|
|
763
|
+
<span class="cline-any cline-no"> </span>
|
|
764
|
+
<span class="cline-any cline-no"> </span>
|
|
765
|
+
<span class="cline-any cline-no"> </span>
|
|
766
|
+
<span class="cline-any cline-no"> </span>
|
|
767
|
+
<span class="cline-any cline-no"> </span>
|
|
768
|
+
<span class="cline-any cline-no"> </span>
|
|
769
|
+
<span class="cline-any cline-no"> </span>
|
|
770
|
+
<span class="cline-any cline-no"> </span>
|
|
771
|
+
<span class="cline-any cline-no"> </span>
|
|
772
|
+
<span class="cline-any cline-no"> </span>
|
|
773
|
+
<span class="cline-any cline-no"> </span>
|
|
774
|
+
<span class="cline-any cline-no"> </span>
|
|
775
|
+
<span class="cline-any cline-no"> </span>
|
|
776
|
+
<span class="cline-any cline-no"> </span>
|
|
777
|
+
<span class="cline-any cline-no"> </span>
|
|
778
|
+
<span class="cline-any cline-no"> </span>
|
|
779
|
+
<span class="cline-any cline-no"> </span>
|
|
780
|
+
<span class="cline-any cline-no"> </span>
|
|
781
|
+
<span class="cline-any cline-no"> </span>
|
|
782
|
+
<span class="cline-any cline-no"> </span>
|
|
783
|
+
<span class="cline-any cline-no"> </span>
|
|
784
|
+
<span class="cline-any cline-no"> </span>
|
|
785
|
+
<span class="cline-any cline-no"> </span>
|
|
786
|
+
<span class="cline-any cline-no"> </span>
|
|
787
|
+
<span class="cline-any cline-no"> </span>
|
|
788
|
+
<span class="cline-any cline-no"> </span>
|
|
789
|
+
<span class="cline-any cline-no"> </span>
|
|
790
|
+
<span class="cline-any cline-no"> </span>
|
|
791
|
+
<span class="cline-any cline-no"> </span>
|
|
792
|
+
<span class="cline-any cline-no"> </span>
|
|
793
|
+
<span class="cline-any cline-no"> </span>
|
|
794
|
+
<span class="cline-any cline-no"> </span>
|
|
795
|
+
<span class="cline-any cline-no"> </span>
|
|
796
|
+
<span class="cline-any cline-no"> </span>
|
|
797
|
+
<span class="cline-any cline-no"> </span>
|
|
798
|
+
<span class="cline-any cline-no"> </span>
|
|
799
|
+
<span class="cline-any cline-no"> </span>
|
|
800
|
+
<span class="cline-any cline-no"> </span>
|
|
801
|
+
<span class="cline-any cline-no"> </span>
|
|
802
|
+
<span class="cline-any cline-no"> </span>
|
|
803
|
+
<span class="cline-any cline-no"> </span>
|
|
804
|
+
<span class="cline-any cline-no"> </span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
806
|
+
<span class="cline-any cline-no"> </span>
|
|
807
|
+
<span class="cline-any cline-no"> </span>
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-no"> </span>
|
|
812
|
+
<span class="cline-any cline-no"> </span>
|
|
813
|
+
<span class="cline-any cline-no"> </span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-no"> </span>
|
|
816
|
+
<span class="cline-any cline-no"> </span>
|
|
817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-no"> </span>
|
|
819
|
+
<span class="cline-any cline-no"> </span>
|
|
820
|
+
<span class="cline-any cline-no"> </span>
|
|
821
|
+
<span class="cline-any cline-no"> </span>
|
|
822
|
+
<span class="cline-any cline-no"> </span>
|
|
823
|
+
<span class="cline-any cline-no"> </span>
|
|
824
|
+
<span class="cline-any cline-no"> </span>
|
|
825
|
+
<span class="cline-any cline-no"> </span>
|
|
826
|
+
<span class="cline-any cline-no"> </span>
|
|
827
|
+
<span class="cline-any cline-neutral"> </span>
|
|
828
|
+
<span class="cline-any cline-no"> </span>
|
|
829
|
+
<span class="cline-any cline-no"> </span>
|
|
830
|
+
<span class="cline-any cline-no"> </span>
|
|
831
|
+
<span class="cline-any cline-no"> </span>
|
|
832
|
+
<span class="cline-any cline-no"> </span>
|
|
833
|
+
<span class="cline-any cline-no"> </span>
|
|
834
|
+
<span class="cline-any cline-no"> </span>
|
|
835
|
+
<span class="cline-any cline-no"> </span>
|
|
836
|
+
<span class="cline-any cline-no"> </span>
|
|
837
|
+
<span class="cline-any cline-no"> </span>
|
|
838
|
+
<span class="cline-any cline-no"> </span>
|
|
839
|
+
<span class="cline-any cline-no"> </span>
|
|
840
|
+
<span class="cline-any cline-no"> </span>
|
|
841
|
+
<span class="cline-any cline-no"> </span>
|
|
842
|
+
<span class="cline-any cline-no"> </span>
|
|
843
|
+
<span class="cline-any cline-no"> </span>
|
|
844
|
+
<span class="cline-any cline-no"> </span>
|
|
845
|
+
<span class="cline-any cline-no"> </span>
|
|
846
|
+
<span class="cline-any cline-no"> </span>
|
|
847
|
+
<span class="cline-any cline-no"> </span>
|
|
848
|
+
<span class="cline-any cline-no"> </span>
|
|
849
|
+
<span class="cline-any cline-no"> </span>
|
|
850
|
+
<span class="cline-any cline-no"> </span>
|
|
851
|
+
<span class="cline-any cline-neutral"> </span>
|
|
852
|
+
<span class="cline-any cline-no"> </span>
|
|
853
|
+
<span class="cline-any cline-no"> </span>
|
|
854
|
+
<span class="cline-any cline-no"> </span>
|
|
855
|
+
<span class="cline-any cline-no"> </span>
|
|
856
|
+
<span class="cline-any cline-no"> </span>
|
|
857
|
+
<span class="cline-any cline-no"> </span>
|
|
858
|
+
<span class="cline-any cline-no"> </span>
|
|
859
|
+
<span class="cline-any cline-no"> </span>
|
|
860
|
+
<span class="cline-any cline-no"> </span>
|
|
861
|
+
<span class="cline-any cline-no"> </span>
|
|
862
|
+
<span class="cline-any cline-no"> </span>
|
|
863
|
+
<span class="cline-any cline-no"> </span>
|
|
864
|
+
<span class="cline-any cline-no"> </span>
|
|
865
|
+
<span class="cline-any cline-no"> </span>
|
|
866
|
+
<span class="cline-any cline-no"> </span>
|
|
867
|
+
<span class="cline-any cline-no"> </span>
|
|
868
|
+
<span class="cline-any cline-no"> </span>
|
|
869
|
+
<span class="cline-any cline-no"> </span>
|
|
870
|
+
<span class="cline-any cline-no"> </span>
|
|
871
|
+
<span class="cline-any cline-neutral"> </span>
|
|
872
|
+
<span class="cline-any cline-no"> </span>
|
|
873
|
+
<span class="cline-any cline-no"> </span>
|
|
874
|
+
<span class="cline-any cline-no"> </span>
|
|
875
|
+
<span class="cline-any cline-no"> </span>
|
|
876
|
+
<span class="cline-any cline-no"> </span>
|
|
877
|
+
<span class="cline-any cline-no"> </span>
|
|
878
|
+
<span class="cline-any cline-no"> </span>
|
|
879
|
+
<span class="cline-any cline-no"> </span>
|
|
880
|
+
<span class="cline-any cline-no"> </span>
|
|
881
|
+
<span class="cline-any cline-no"> </span>
|
|
882
|
+
<span class="cline-any cline-no"> </span>
|
|
883
|
+
<span class="cline-any cline-no"> </span>
|
|
884
|
+
<span class="cline-any cline-no"> </span>
|
|
885
|
+
<span class="cline-any cline-no"> </span>
|
|
886
|
+
<span class="cline-any cline-neutral"> </span>
|
|
887
|
+
<span class="cline-any cline-no"> </span>
|
|
888
|
+
<span class="cline-any cline-no"> </span>
|
|
889
|
+
<span class="cline-any cline-no"> </span>
|
|
890
|
+
<span class="cline-any cline-no"> </span>
|
|
891
|
+
<span class="cline-any cline-no"> </span>
|
|
892
|
+
<span class="cline-any cline-no"> </span>
|
|
893
|
+
<span class="cline-any cline-no"> </span>
|
|
894
|
+
<span class="cline-any cline-no"> </span>
|
|
895
|
+
<span class="cline-any cline-no"> </span>
|
|
896
|
+
<span class="cline-any cline-no"> </span>
|
|
897
|
+
<span class="cline-any cline-no"> </span>
|
|
898
|
+
<span class="cline-any cline-no"> </span>
|
|
899
|
+
<span class="cline-any cline-no"> </span>
|
|
900
|
+
<span class="cline-any cline-no"> </span>
|
|
901
|
+
<span class="cline-any cline-no"> </span>
|
|
902
|
+
<span class="cline-any cline-no"> </span>
|
|
903
|
+
<span class="cline-any cline-no"> </span>
|
|
904
|
+
<span class="cline-any cline-no"> </span>
|
|
905
|
+
<span class="cline-any cline-no"> </span>
|
|
906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
907
|
+
<span class="cline-any cline-no"> </span>
|
|
908
|
+
<span class="cline-any cline-no"> </span>
|
|
909
|
+
<span class="cline-any cline-no"> </span>
|
|
910
|
+
<span class="cline-any cline-no"> </span>
|
|
911
|
+
<span class="cline-any cline-no"> </span>
|
|
912
|
+
<span class="cline-any cline-no"> </span>
|
|
913
|
+
<span class="cline-any cline-no"> </span>
|
|
914
|
+
<span class="cline-any cline-no"> </span>
|
|
915
|
+
<span class="cline-any cline-no"> </span>
|
|
916
|
+
<span class="cline-any cline-no"> </span>
|
|
917
|
+
<span class="cline-any cline-neutral"> </span>
|
|
918
|
+
<span class="cline-any cline-no"> </span>
|
|
919
|
+
<span class="cline-any cline-no"> </span>
|
|
920
|
+
<span class="cline-any cline-no"> </span>
|
|
921
|
+
<span class="cline-any cline-no"> </span>
|
|
922
|
+
<span class="cline-any cline-no"> </span>
|
|
923
|
+
<span class="cline-any cline-no"> </span>
|
|
924
|
+
<span class="cline-any cline-no"> </span>
|
|
925
|
+
<span class="cline-any cline-no"> </span>
|
|
926
|
+
<span class="cline-any cline-no"> </span>
|
|
927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
928
|
+
<span class="cline-any cline-no"> </span>
|
|
929
|
+
<span class="cline-any cline-no"> </span>
|
|
930
|
+
<span class="cline-any cline-no"> </span>
|
|
931
|
+
<span class="cline-any cline-no"> </span>
|
|
932
|
+
<span class="cline-any cline-no"> </span>
|
|
933
|
+
<span class="cline-any cline-no"> </span>
|
|
934
|
+
<span class="cline-any cline-no"> </span>
|
|
935
|
+
<span class="cline-any cline-no"> </span>
|
|
936
|
+
<span class="cline-any cline-no"> </span>
|
|
937
|
+
<span class="cline-any cline-no"> </span>
|
|
938
|
+
<span class="cline-any cline-no"> </span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-no"> </span>
|
|
941
|
+
<span class="cline-any cline-no"> </span>
|
|
942
|
+
<span class="cline-any cline-no"> </span>
|
|
943
|
+
<span class="cline-any cline-no"> </span>
|
|
944
|
+
<span class="cline-any cline-no"> </span>
|
|
945
|
+
<span class="cline-any cline-no"> </span>
|
|
946
|
+
<span class="cline-any cline-no"> </span>
|
|
947
|
+
<span class="cline-any cline-no"> </span>
|
|
948
|
+
<span class="cline-any cline-no"> </span>
|
|
949
|
+
<span class="cline-any cline-no"> </span>
|
|
950
|
+
<span class="cline-any cline-no"> </span>
|
|
951
|
+
<span class="cline-any cline-no"> </span>
|
|
952
|
+
<span class="cline-any cline-no"> </span>
|
|
953
|
+
<span class="cline-any cline-no"> </span>
|
|
954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
955
|
+
<span class="cline-any cline-no"> </span>
|
|
956
|
+
<span class="cline-any cline-no"> </span>
|
|
957
|
+
<span class="cline-any cline-no"> </span>
|
|
958
|
+
<span class="cline-any cline-no"> </span>
|
|
959
|
+
<span class="cline-any cline-no"> </span>
|
|
960
|
+
<span class="cline-any cline-no"> </span>
|
|
961
|
+
<span class="cline-any cline-no"> </span>
|
|
962
|
+
<span class="cline-any cline-no"> </span>
|
|
963
|
+
<span class="cline-any cline-no"> </span>
|
|
964
|
+
<span class="cline-any cline-no"> </span>
|
|
965
|
+
<span class="cline-any cline-no"> </span>
|
|
966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
967
|
+
<span class="cline-any cline-no"> </span>
|
|
968
|
+
<span class="cline-any cline-no"> </span>
|
|
969
|
+
<span class="cline-any cline-no"> </span>
|
|
970
|
+
<span class="cline-any cline-no"> </span>
|
|
971
|
+
<span class="cline-any cline-no"> </span>
|
|
972
|
+
<span class="cline-any cline-no"> </span>
|
|
973
|
+
<span class="cline-any cline-no"> </span>
|
|
974
|
+
<span class="cline-any cline-no"> </span>
|
|
975
|
+
<span class="cline-any cline-no"> </span>
|
|
976
|
+
<span class="cline-any cline-no"> </span>
|
|
977
|
+
<span class="cline-any cline-no"> </span>
|
|
978
|
+
<span class="cline-any cline-no"> </span>
|
|
979
|
+
<span class="cline-any cline-no"> </span>
|
|
980
|
+
<span class="cline-any cline-no"> </span>
|
|
981
|
+
<span class="cline-any cline-no"> </span>
|
|
982
|
+
<span class="cline-any cline-no"> </span>
|
|
983
|
+
<span class="cline-any cline-no"> </span>
|
|
984
|
+
<span class="cline-any cline-no"> </span>
|
|
985
|
+
<span class="cline-any cline-no"> </span>
|
|
986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
987
|
+
<span class="cline-any cline-no"> </span>
|
|
988
|
+
<span class="cline-any cline-no"> </span>
|
|
989
|
+
<span class="cline-any cline-no"> </span>
|
|
990
|
+
<span class="cline-any cline-no"> </span>
|
|
991
|
+
<span class="cline-any cline-no"> </span>
|
|
992
|
+
<span class="cline-any cline-no"> </span>
|
|
993
|
+
<span class="cline-any cline-no"> </span>
|
|
994
|
+
<span class="cline-any cline-no"> </span>
|
|
995
|
+
<span class="cline-any cline-no"> </span>
|
|
996
|
+
<span class="cline-any cline-no"> </span>
|
|
997
|
+
<span class="cline-any cline-no"> </span>
|
|
998
|
+
<span class="cline-any cline-no"> </span>
|
|
999
|
+
<span class="cline-any cline-no"> </span>
|
|
1000
|
+
<span class="cline-any cline-no"> </span>
|
|
1001
|
+
<span class="cline-any cline-no"> </span>
|
|
1002
|
+
<span class="cline-any cline-no"> </span>
|
|
1003
|
+
<span class="cline-any cline-no"> </span>
|
|
1004
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
+
<span class="cline-any cline-no"> </span>
|
|
1006
|
+
<span class="cline-any cline-no"> </span>
|
|
1007
|
+
<span class="cline-any cline-no"> </span>
|
|
1008
|
+
<span class="cline-any cline-no"> </span>
|
|
1009
|
+
<span class="cline-any cline-no"> </span>
|
|
1010
|
+
<span class="cline-any cline-no"> </span>
|
|
1011
|
+
<span class="cline-any cline-no"> </span>
|
|
1012
|
+
<span class="cline-any cline-no"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1014
|
+
<span class="cline-any cline-no"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1016
|
+
<span class="cline-any cline-no"> </span>
|
|
1017
|
+
<span class="cline-any cline-no"> </span>
|
|
1018
|
+
<span class="cline-any cline-no"> </span>
|
|
1019
|
+
<span class="cline-any cline-no"> </span>
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
1021
|
+
<span class="cline-any cline-no"> </span>
|
|
1022
|
+
<span class="cline-any cline-no"> </span>
|
|
1023
|
+
<span class="cline-any cline-no"> </span>
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1025
|
+
<span class="cline-any cline-no"> </span>
|
|
1026
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
+
<span class="cline-any cline-no"> </span>
|
|
1028
|
+
<span class="cline-any cline-no"> </span>
|
|
1029
|
+
<span class="cline-any cline-no"> </span>
|
|
1030
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
|
+
<span class="cline-any cline-no"> </span>
|
|
1032
|
+
<span class="cline-any cline-no"> </span>
|
|
1033
|
+
<span class="cline-any cline-no"> </span>
|
|
1034
|
+
<span class="cline-any cline-no"> </span>
|
|
1035
|
+
<span class="cline-any cline-no"> </span>
|
|
1036
|
+
<span class="cline-any cline-no"> </span>
|
|
1037
|
+
<span class="cline-any cline-no"> </span>
|
|
1038
|
+
<span class="cline-any cline-no"> </span>
|
|
1039
|
+
<span class="cline-any cline-no"> </span>
|
|
1040
|
+
<span class="cline-any cline-no"> </span>
|
|
1041
|
+
<span class="cline-any cline-no"> </span>
|
|
1042
|
+
<span class="cline-any cline-no"> </span>
|
|
1043
|
+
<span class="cline-any cline-no"> </span>
|
|
1044
|
+
<span class="cline-any cline-no"> </span>
|
|
1045
|
+
<span class="cline-any cline-no"> </span>
|
|
1046
|
+
<span class="cline-any cline-no"> </span>
|
|
1047
|
+
<span class="cline-any cline-no"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
+
<span class="cline-any cline-no"> </span>
|
|
1050
|
+
<span class="cline-any cline-no"> </span>
|
|
1051
|
+
<span class="cline-any cline-no"> </span>
|
|
1052
|
+
<span class="cline-any cline-no"> </span>
|
|
1053
|
+
<span class="cline-any cline-no"> </span>
|
|
1054
|
+
<span class="cline-any cline-no"> </span>
|
|
1055
|
+
<span class="cline-any cline-no"> </span>
|
|
1056
|
+
<span class="cline-any cline-no"> </span>
|
|
1057
|
+
<span class="cline-any cline-no"> </span>
|
|
1058
|
+
<span class="cline-any cline-no"> </span>
|
|
1059
|
+
<span class="cline-any cline-no"> </span>
|
|
1060
|
+
<span class="cline-any cline-no"> </span>
|
|
1061
|
+
<span class="cline-any cline-no"> </span>
|
|
1062
|
+
<span class="cline-any cline-no"> </span>
|
|
1063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
+
<span class="cline-any cline-no"> </span>
|
|
1065
|
+
<span class="cline-any cline-no"> </span>
|
|
1066
|
+
<span class="cline-any cline-no"> </span>
|
|
1067
|
+
<span class="cline-any cline-no"> </span>
|
|
1068
|
+
<span class="cline-any cline-no"> </span>
|
|
1069
|
+
<span class="cline-any cline-no"> </span>
|
|
1070
|
+
<span class="cline-any cline-no"> </span>
|
|
1071
|
+
<span class="cline-any cline-no"> </span>
|
|
1072
|
+
<span class="cline-any cline-no"> </span>
|
|
1073
|
+
<span class="cline-any cline-no"> </span>
|
|
1074
|
+
<span class="cline-any cline-no"> </span>
|
|
1075
|
+
<span class="cline-any cline-no"> </span>
|
|
1076
|
+
<span class="cline-any cline-no"> </span>
|
|
1077
|
+
<span class="cline-any cline-no"> </span>
|
|
1078
|
+
<span class="cline-any cline-no"> </span>
|
|
1079
|
+
<span class="cline-any cline-no"> </span>
|
|
1080
|
+
<span class="cline-any cline-no"> </span>
|
|
1081
|
+
<span class="cline-any cline-no"> </span>
|
|
1082
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
+
<span class="cline-any cline-no"> </span>
|
|
1084
|
+
<span class="cline-any cline-no"> </span>
|
|
1085
|
+
<span class="cline-any cline-no"> </span>
|
|
1086
|
+
<span class="cline-any cline-no"> </span>
|
|
1087
|
+
<span class="cline-any cline-no"> </span>
|
|
1088
|
+
<span class="cline-any cline-no"> </span>
|
|
1089
|
+
<span class="cline-any cline-no"> </span>
|
|
1090
|
+
<span class="cline-any cline-no"> </span>
|
|
1091
|
+
<span class="cline-any cline-no"> </span>
|
|
1092
|
+
<span class="cline-any cline-no"> </span>
|
|
1093
|
+
<span class="cline-any cline-no"> </span>
|
|
1094
|
+
<span class="cline-any cline-no"> </span>
|
|
1095
|
+
<span class="cline-any cline-no"> </span>
|
|
1096
|
+
<span class="cline-any cline-no"> </span>
|
|
1097
|
+
<span class="cline-any cline-no"> </span>
|
|
1098
|
+
<span class="cline-any cline-no"> </span>
|
|
1099
|
+
<span class="cline-any cline-no"> </span>
|
|
1100
|
+
<span class="cline-any cline-no"> </span>
|
|
1101
|
+
<span class="cline-any cline-no"> </span>
|
|
1102
|
+
<span class="cline-any cline-no"> </span>
|
|
1103
|
+
<span class="cline-any cline-no"> </span>
|
|
1104
|
+
<span class="cline-any cline-no"> </span>
|
|
1105
|
+
<span class="cline-any cline-no"> </span>
|
|
1106
|
+
<span class="cline-any cline-no"> </span>
|
|
1107
|
+
<span class="cline-any cline-no"> </span>
|
|
1108
|
+
<span class="cline-any cline-no"> </span>
|
|
1109
|
+
<span class="cline-any cline-no"> </span>
|
|
1110
|
+
<span class="cline-any cline-no"> </span>
|
|
1111
|
+
<span class="cline-any cline-no"> </span>
|
|
1112
|
+
<span class="cline-any cline-no"> </span>
|
|
1113
|
+
<span class="cline-any cline-no"> </span>
|
|
1114
|
+
<span class="cline-any cline-no"> </span>
|
|
1115
|
+
<span class="cline-any cline-no"> </span>
|
|
1116
|
+
<span class="cline-any cline-no"> </span>
|
|
1117
|
+
<span class="cline-any cline-no"> </span>
|
|
1118
|
+
<span class="cline-any cline-no"> </span>
|
|
1119
|
+
<span class="cline-any cline-no"> </span>
|
|
1120
|
+
<span class="cline-any cline-no"> </span>
|
|
1121
|
+
<span class="cline-any cline-no"> </span>
|
|
1122
|
+
<span class="cline-any cline-no"> </span>
|
|
1123
|
+
<span class="cline-any cline-no"> </span>
|
|
1124
|
+
<span class="cline-any cline-no"> </span>
|
|
1125
|
+
<span class="cline-any cline-no"> </span>
|
|
1126
|
+
<span class="cline-any cline-no"> </span>
|
|
1127
|
+
<span class="cline-any cline-no"> </span>
|
|
1128
|
+
<span class="cline-any cline-no"> </span>
|
|
1129
|
+
<span class="cline-any cline-no"> </span>
|
|
1130
|
+
<span class="cline-any cline-no"> </span>
|
|
1131
|
+
<span class="cline-any cline-no"> </span>
|
|
1132
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1133
|
+
<span class="cline-any cline-no"> </span>
|
|
1134
|
+
<span class="cline-any cline-no"> </span>
|
|
1135
|
+
<span class="cline-any cline-no"> </span>
|
|
1136
|
+
<span class="cline-any cline-no"> </span>
|
|
1137
|
+
<span class="cline-any cline-no"> </span>
|
|
1138
|
+
<span class="cline-any cline-no"> </span>
|
|
1139
|
+
<span class="cline-any cline-no"> </span>
|
|
1140
|
+
<span class="cline-any cline-no"> </span>
|
|
1141
|
+
<span class="cline-any cline-no"> </span>
|
|
1142
|
+
<span class="cline-any cline-no"> </span>
|
|
1143
|
+
<span class="cline-any cline-no"> </span>
|
|
1144
|
+
<span class="cline-any cline-no"> </span>
|
|
1145
|
+
<span class="cline-any cline-no"> </span>
|
|
1146
|
+
<span class="cline-any cline-no"> </span>
|
|
1147
|
+
<span class="cline-any cline-no"> </span>
|
|
1148
|
+
<span class="cline-any cline-no"> </span>
|
|
1149
|
+
<span class="cline-any cline-no"> </span>
|
|
1150
|
+
<span class="cline-any cline-no"> </span>
|
|
1151
|
+
<span class="cline-any cline-no"> </span>
|
|
1152
|
+
<span class="cline-any cline-no"> </span>
|
|
1153
|
+
<span class="cline-any cline-no"> </span>
|
|
1154
|
+
<span class="cline-any cline-no"> </span>
|
|
1155
|
+
<span class="cline-any cline-no"> </span>
|
|
1156
|
+
<span class="cline-any cline-no"> </span>
|
|
1157
|
+
<span class="cline-any cline-no"> </span>
|
|
1158
|
+
<span class="cline-any cline-no"> </span>
|
|
1159
|
+
<span class="cline-any cline-no"> </span>
|
|
1160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
+
<span class="cline-any cline-no"> </span>
|
|
1162
|
+
<span class="cline-any cline-no"> </span>
|
|
1163
|
+
<span class="cline-any cline-no"> </span>
|
|
1164
|
+
<span class="cline-any cline-no"> </span>
|
|
1165
|
+
<span class="cline-any cline-no"> </span>
|
|
1166
|
+
<span class="cline-any cline-no"> </span>
|
|
1167
|
+
<span class="cline-any cline-no"> </span>
|
|
1168
|
+
<span class="cline-any cline-no"> </span>
|
|
1169
|
+
<span class="cline-any cline-no"> </span>
|
|
1170
|
+
<span class="cline-any cline-no"> </span>
|
|
1171
|
+
<span class="cline-any cline-no"> </span>
|
|
1172
|
+
<span class="cline-any cline-no"> </span>
|
|
1173
|
+
<span class="cline-any cline-no"> </span>
|
|
1174
|
+
<span class="cline-any cline-no"> </span>
|
|
1175
|
+
<span class="cline-any cline-no"> </span>
|
|
1176
|
+
<span class="cline-any cline-no"> </span>
|
|
1177
|
+
<span class="cline-any cline-no"> </span>
|
|
1178
|
+
<span class="cline-any cline-no"> </span>
|
|
1179
|
+
<span class="cline-any cline-no"> </span>
|
|
1180
|
+
<span class="cline-any cline-no"> </span>
|
|
1181
|
+
<span class="cline-any cline-no"> </span>
|
|
1182
|
+
<span class="cline-any cline-no"> </span>
|
|
1183
|
+
<span class="cline-any cline-no"> </span>
|
|
1184
|
+
<span class="cline-any cline-no"> </span>
|
|
1185
|
+
<span class="cline-any cline-no"> </span>
|
|
1186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
+
<span class="cline-any cline-no"> </span>
|
|
1188
|
+
<span class="cline-any cline-no"> </span>
|
|
1189
|
+
<span class="cline-any cline-no"> </span>
|
|
1190
|
+
<span class="cline-any cline-no"> </span>
|
|
1191
|
+
<span class="cline-any cline-no"> </span>
|
|
1192
|
+
<span class="cline-any cline-no"> </span>
|
|
1193
|
+
<span class="cline-any cline-no"> </span>
|
|
1194
|
+
<span class="cline-any cline-no"> </span>
|
|
1195
|
+
<span class="cline-any cline-no"> </span>
|
|
1196
|
+
<span class="cline-any cline-no"> </span>
|
|
1197
|
+
<span class="cline-any cline-no"> </span>
|
|
1198
|
+
<span class="cline-any cline-no"> </span>
|
|
1199
|
+
<span class="cline-any cline-no"> </span>
|
|
1200
|
+
<span class="cline-any cline-no"> </span>
|
|
1201
|
+
<span class="cline-any cline-no"> </span>
|
|
1202
|
+
<span class="cline-any cline-no"> </span>
|
|
1203
|
+
<span class="cline-any cline-no"> </span>
|
|
1204
|
+
<span class="cline-any cline-no"> </span>
|
|
1205
|
+
<span class="cline-any cline-no"> </span>
|
|
1206
|
+
<span class="cline-any cline-no"> </span>
|
|
1207
|
+
<span class="cline-any cline-no"> </span>
|
|
1208
|
+
<span class="cline-any cline-no"> </span>
|
|
1209
|
+
<span class="cline-any cline-no"> </span>
|
|
1210
|
+
<span class="cline-any cline-no"> </span>
|
|
1211
|
+
<span class="cline-any cline-no"> </span>
|
|
1212
|
+
<span class="cline-any cline-no"> </span>
|
|
1213
|
+
<span class="cline-any cline-no"> </span>
|
|
1214
|
+
<span class="cline-any cline-no"> </span>
|
|
1215
|
+
<span class="cline-any cline-no"> </span>
|
|
1216
|
+
<span class="cline-any cline-no"> </span>
|
|
1217
|
+
<span class="cline-any cline-no"> </span>
|
|
1218
|
+
<span class="cline-any cline-no"> </span>
|
|
1219
|
+
<span class="cline-any cline-no"> </span>
|
|
1220
|
+
<span class="cline-any cline-no"> </span>
|
|
1221
|
+
<span class="cline-any cline-no"> </span>
|
|
1222
|
+
<span class="cline-any cline-no"> </span>
|
|
1223
|
+
<span class="cline-any cline-no"> </span>
|
|
1224
|
+
<span class="cline-any cline-no"> </span>
|
|
1225
|
+
<span class="cline-any cline-no"> </span>
|
|
1226
|
+
<span class="cline-any cline-no"> </span>
|
|
1227
|
+
<span class="cline-any cline-no"> </span>
|
|
1228
|
+
<span class="cline-any cline-no"> </span>
|
|
1229
|
+
<span class="cline-any cline-no"> </span>
|
|
1230
|
+
<span class="cline-any cline-no"> </span>
|
|
1231
|
+
<span class="cline-any cline-no"> </span>
|
|
1232
|
+
<span class="cline-any cline-no"> </span>
|
|
1233
|
+
<span class="cline-any cline-no"> </span>
|
|
1234
|
+
<span class="cline-any cline-no"> </span>
|
|
1235
|
+
<span class="cline-any cline-no"> </span>
|
|
1236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
+
<span class="cline-any cline-no"> </span>
|
|
1238
|
+
<span class="cline-any cline-no"> </span>
|
|
1239
|
+
<span class="cline-any cline-no"> </span>
|
|
1240
|
+
<span class="cline-any cline-no"> </span>
|
|
1241
|
+
<span class="cline-any cline-no"> </span>
|
|
1242
|
+
<span class="cline-any cline-no"> </span>
|
|
1243
|
+
<span class="cline-any cline-no"> </span>
|
|
1244
|
+
<span class="cline-any cline-no"> </span>
|
|
1245
|
+
<span class="cline-any cline-no"> </span>
|
|
1246
|
+
<span class="cline-any cline-no"> </span>
|
|
1247
|
+
<span class="cline-any cline-no"> </span>
|
|
1248
|
+
<span class="cline-any cline-no"> </span>
|
|
1249
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
+
<span class="cline-any cline-no"> </span>
|
|
1251
|
+
<span class="cline-any cline-no"> </span>
|
|
1252
|
+
<span class="cline-any cline-no"> </span>
|
|
1253
|
+
<span class="cline-any cline-no"> </span>
|
|
1254
|
+
<span class="cline-any cline-no"> </span>
|
|
1255
|
+
<span class="cline-any cline-no"> </span>
|
|
1256
|
+
<span class="cline-any cline-no"> </span>
|
|
1257
|
+
<span class="cline-any cline-no"> </span>
|
|
1258
|
+
<span class="cline-any cline-no"> </span>
|
|
1259
|
+
<span class="cline-any cline-no"> </span>
|
|
1260
|
+
<span class="cline-any cline-no"> </span>
|
|
1261
|
+
<span class="cline-any cline-no"> </span>
|
|
1262
|
+
<span class="cline-any cline-no"> </span>
|
|
1263
|
+
<span class="cline-any cline-no"> </span>
|
|
1264
|
+
<span class="cline-any cline-no"> </span>
|
|
1265
|
+
<span class="cline-any cline-no"> </span>
|
|
1266
|
+
<span class="cline-any cline-no"> </span>
|
|
1267
|
+
<span class="cline-any cline-no"> </span>
|
|
1268
|
+
<span class="cline-any cline-no"> </span>
|
|
1269
|
+
<span class="cline-any cline-no"> </span>
|
|
1270
|
+
<span class="cline-any cline-no"> </span>
|
|
1271
|
+
<span class="cline-any cline-no"> </span>
|
|
1272
|
+
<span class="cline-any cline-no"> </span>
|
|
1273
|
+
<span class="cline-any cline-no"> </span>
|
|
1274
|
+
<span class="cline-any cline-no"> </span>
|
|
1275
|
+
<span class="cline-any cline-no"> </span>
|
|
1276
|
+
<span class="cline-any cline-no"> </span>
|
|
1277
|
+
<span class="cline-any cline-no"> </span>
|
|
1278
|
+
<span class="cline-any cline-no"> </span>
|
|
1279
|
+
<span class="cline-any cline-no"> </span>
|
|
1280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
+
<span class="cline-any cline-no"> </span>
|
|
1282
|
+
<span class="cline-any cline-no"> </span>
|
|
1283
|
+
<span class="cline-any cline-no"> </span>
|
|
1284
|
+
<span class="cline-any cline-no"> </span>
|
|
1285
|
+
<span class="cline-any cline-no"> </span>
|
|
1286
|
+
<span class="cline-any cline-no"> </span>
|
|
1287
|
+
<span class="cline-any cline-no"> </span>
|
|
1288
|
+
<span class="cline-any cline-no"> </span>
|
|
1289
|
+
<span class="cline-any cline-no"> </span>
|
|
1290
|
+
<span class="cline-any cline-no"> </span>
|
|
1291
|
+
<span class="cline-any cline-no"> </span>
|
|
1292
|
+
<span class="cline-any cline-no"> </span>
|
|
1293
|
+
<span class="cline-any cline-no"> </span>
|
|
1294
|
+
<span class="cline-any cline-no"> </span>
|
|
1295
|
+
<span class="cline-any cline-no"> </span>
|
|
1296
|
+
<span class="cline-any cline-no"> </span>
|
|
1297
|
+
<span class="cline-any cline-no"> </span>
|
|
1298
|
+
<span class="cline-any cline-no"> </span>
|
|
1299
|
+
<span class="cline-any cline-no"> </span>
|
|
1300
|
+
<span class="cline-any cline-no"> </span>
|
|
1301
|
+
<span class="cline-any cline-no"> </span>
|
|
1302
|
+
<span class="cline-any cline-no"> </span>
|
|
1303
|
+
<span class="cline-any cline-no"> </span>
|
|
1304
|
+
<span class="cline-any cline-no"> </span>
|
|
1305
|
+
<span class="cline-any cline-no"> </span>
|
|
1306
|
+
<span class="cline-any cline-no"> </span>
|
|
1307
|
+
<span class="cline-any cline-no"> </span>
|
|
1308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
+
<span class="cline-any cline-no"> </span>
|
|
1310
|
+
<span class="cline-any cline-no"> </span>
|
|
1311
|
+
<span class="cline-any cline-no"> </span>
|
|
1312
|
+
<span class="cline-any cline-no"> </span>
|
|
1313
|
+
<span class="cline-any cline-no"> </span>
|
|
1314
|
+
<span class="cline-any cline-no"> </span>
|
|
1315
|
+
<span class="cline-any cline-no"> </span>
|
|
1316
|
+
<span class="cline-any cline-no"> </span>
|
|
1317
|
+
<span class="cline-any cline-no"> </span>
|
|
1318
|
+
<span class="cline-any cline-no"> </span>
|
|
1319
|
+
<span class="cline-any cline-no"> </span>
|
|
1320
|
+
<span class="cline-any cline-no"> </span>
|
|
1321
|
+
<span class="cline-any cline-no"> </span>
|
|
1322
|
+
<span class="cline-any cline-no"> </span>
|
|
1323
|
+
<span class="cline-any cline-no"> </span>
|
|
1324
|
+
<span class="cline-any cline-no"> </span>
|
|
1325
|
+
<span class="cline-any cline-no"> </span>
|
|
1326
|
+
<span class="cline-any cline-no"> </span>
|
|
1327
|
+
<span class="cline-any cline-no"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
|
+
<span class="cline-any cline-no"> </span>
|
|
1330
|
+
<span class="cline-any cline-no"> </span>
|
|
1331
|
+
<span class="cline-any cline-no"> </span>
|
|
1332
|
+
<span class="cline-any cline-no"> </span>
|
|
1333
|
+
<span class="cline-any cline-no"> </span>
|
|
1334
|
+
<span class="cline-any cline-no"> </span>
|
|
1335
|
+
<span class="cline-any cline-no"> </span>
|
|
1336
|
+
<span class="cline-any cline-no"> </span>
|
|
1337
|
+
<span class="cline-any cline-no"> </span>
|
|
1338
|
+
<span class="cline-any cline-no"> </span>
|
|
1339
|
+
<span class="cline-any cline-no"> </span>
|
|
1340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
+
<span class="cline-any cline-no"> </span>
|
|
1342
|
+
<span class="cline-any cline-no"> </span>
|
|
1343
|
+
<span class="cline-any cline-no"> </span>
|
|
1344
|
+
<span class="cline-any cline-no"> </span>
|
|
1345
|
+
<span class="cline-any cline-no"> </span>
|
|
1346
|
+
<span class="cline-any cline-no"> </span>
|
|
1347
|
+
<span class="cline-any cline-no"> </span>
|
|
1348
|
+
<span class="cline-any cline-no"> </span>
|
|
1349
|
+
<span class="cline-any cline-no"> </span>
|
|
1350
|
+
<span class="cline-any cline-no"> </span>
|
|
1351
|
+
<span class="cline-any cline-no"> </span>
|
|
1352
|
+
<span class="cline-any cline-no"> </span>
|
|
1353
|
+
<span class="cline-any cline-no"> </span>
|
|
1354
|
+
<span class="cline-any cline-no"> </span>
|
|
1355
|
+
<span class="cline-any cline-no"> </span>
|
|
1356
|
+
<span class="cline-any cline-no"> </span>
|
|
1357
|
+
<span class="cline-any cline-no"> </span>
|
|
1358
|
+
<span class="cline-any cline-no"> </span>
|
|
1359
|
+
<span class="cline-any cline-no"> </span>
|
|
1360
|
+
<span class="cline-any cline-no"> </span>
|
|
1361
|
+
<span class="cline-any cline-no"> </span>
|
|
1362
|
+
<span class="cline-any cline-no"> </span>
|
|
1363
|
+
<span class="cline-any cline-no"> </span>
|
|
1364
|
+
<span class="cline-any cline-no"> </span>
|
|
1365
|
+
<span class="cline-any cline-no"> </span>
|
|
1366
|
+
<span class="cline-any cline-no"> </span>
|
|
1367
|
+
<span class="cline-any cline-no"> </span>
|
|
1368
|
+
<span class="cline-any cline-no"> </span>
|
|
1369
|
+
<span class="cline-any cline-no"> </span>
|
|
1370
|
+
<span class="cline-any cline-no"> </span>
|
|
1371
|
+
<span class="cline-any cline-no"> </span>
|
|
1372
|
+
<span class="cline-any cline-no"> </span>
|
|
1373
|
+
<span class="cline-any cline-no"> </span>
|
|
1374
|
+
<span class="cline-any cline-no"> </span>
|
|
1375
|
+
<span class="cline-any cline-no"> </span>
|
|
1376
|
+
<span class="cline-any cline-no"> </span>
|
|
1377
|
+
<span class="cline-any cline-no"> </span>
|
|
1378
|
+
<span class="cline-any cline-no"> </span>
|
|
1379
|
+
<span class="cline-any cline-no"> </span>
|
|
1380
|
+
<span class="cline-any cline-no"> </span>
|
|
1381
|
+
<span class="cline-any cline-no"> </span>
|
|
1382
|
+
<span class="cline-any cline-no"> </span>
|
|
1383
|
+
<span class="cline-any cline-no"> </span>
|
|
1384
|
+
<span class="cline-any cline-no"> </span>
|
|
1385
|
+
<span class="cline-any cline-no"> </span>
|
|
1386
|
+
<span class="cline-any cline-no"> </span>
|
|
1387
|
+
<span class="cline-any cline-no"> </span>
|
|
1388
|
+
<span class="cline-any cline-no"> </span>
|
|
1389
|
+
<span class="cline-any cline-no"> </span>
|
|
1390
|
+
<span class="cline-any cline-no"> </span>
|
|
1391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
+
<span class="cline-any cline-no"> </span>
|
|
1393
|
+
<span class="cline-any cline-no"> </span>
|
|
1394
|
+
<span class="cline-any cline-no"> </span>
|
|
1395
|
+
<span class="cline-any cline-no"> </span>
|
|
1396
|
+
<span class="cline-any cline-no"> </span>
|
|
1397
|
+
<span class="cline-any cline-no"> </span>
|
|
1398
|
+
<span class="cline-any cline-no"> </span>
|
|
1399
|
+
<span class="cline-any cline-no"> </span>
|
|
1400
|
+
<span class="cline-any cline-no"> </span>
|
|
1401
|
+
<span class="cline-any cline-no"> </span>
|
|
1402
|
+
<span class="cline-any cline-no"> </span>
|
|
1403
|
+
<span class="cline-any cline-no"> </span>
|
|
1404
|
+
<span class="cline-any cline-no"> </span>
|
|
1405
|
+
<span class="cline-any cline-no"> </span>
|
|
1406
|
+
<span class="cline-any cline-no"> </span>
|
|
1407
|
+
<span class="cline-any cline-no"> </span>
|
|
1408
|
+
<span class="cline-any cline-no"> </span>
|
|
1409
|
+
<span class="cline-any cline-no"> </span>
|
|
1410
|
+
<span class="cline-any cline-no"> </span>
|
|
1411
|
+
<span class="cline-any cline-no"> </span>
|
|
1412
|
+
<span class="cline-any cline-no"> </span>
|
|
1413
|
+
<span class="cline-any cline-no"> </span>
|
|
1414
|
+
<span class="cline-any cline-no"> </span>
|
|
1415
|
+
<span class="cline-any cline-no"> </span>
|
|
1416
|
+
<span class="cline-any cline-no"> </span>
|
|
1417
|
+
<span class="cline-any cline-no"> </span>
|
|
1418
|
+
<span class="cline-any cline-no"> </span>
|
|
1419
|
+
<span class="cline-any cline-no"> </span>
|
|
1420
|
+
<span class="cline-any cline-no"> </span>
|
|
1421
|
+
<span class="cline-any cline-no"> </span>
|
|
1422
|
+
<span class="cline-any cline-no"> </span>
|
|
1423
|
+
<span class="cline-any cline-no"> </span>
|
|
1424
|
+
<span class="cline-any cline-no"> </span>
|
|
1425
|
+
<span class="cline-any cline-no"> </span>
|
|
1426
|
+
<span class="cline-any cline-no"> </span>
|
|
1427
|
+
<span class="cline-any cline-no"> </span>
|
|
1428
|
+
<span class="cline-any cline-no"> </span>
|
|
1429
|
+
<span class="cline-any cline-no"> </span>
|
|
1430
|
+
<span class="cline-any cline-no"> </span>
|
|
1431
|
+
<span class="cline-any cline-no"> </span>
|
|
1432
|
+
<span class="cline-any cline-no"> </span>
|
|
1433
|
+
<span class="cline-any cline-no"> </span>
|
|
1434
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { Node } from './earcut_node.js';<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
1435
|
+
|
|
1436
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1437
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1438
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} list - TBD.</span>
|
|
1439
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1440
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1441
|
+
<span class="cstat-no" title="statement not covered" >export function sortLinked(list) {</span>
|
|
1442
|
+
<span class="cstat-no" title="statement not covered" > let i;</span>
|
|
1443
|
+
<span class="cstat-no" title="statement not covered" > let p;</span>
|
|
1444
|
+
<span class="cstat-no" title="statement not covered" > let q;</span>
|
|
1445
|
+
<span class="cstat-no" title="statement not covered" > let e;</span>
|
|
1446
|
+
<span class="cstat-no" title="statement not covered" > let tail;</span>
|
|
1447
|
+
<span class="cstat-no" title="statement not covered" > let numMerges;</span>
|
|
1448
|
+
<span class="cstat-no" title="statement not covered" > let pSize;</span>
|
|
1449
|
+
<span class="cstat-no" title="statement not covered" > let qSize;</span>
|
|
1450
|
+
<span class="cstat-no" title="statement not covered" > let inSize = 1;</span>
|
|
1451
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1452
|
+
<span class="cstat-no" title="statement not covered" > p = list;</span>
|
|
1453
|
+
<span class="cstat-no" title="statement not covered" > list = null;</span>
|
|
1454
|
+
<span class="cstat-no" title="statement not covered" > tail = null;</span>
|
|
1455
|
+
<span class="cstat-no" title="statement not covered" > numMerges = 0;</span>
|
|
1456
|
+
<span class="cstat-no" title="statement not covered" > while (p) {</span>
|
|
1457
|
+
<span class="cstat-no" title="statement not covered" > numMerges += 1;</span>
|
|
1458
|
+
<span class="cstat-no" title="statement not covered" > q = p;</span>
|
|
1459
|
+
<span class="cstat-no" title="statement not covered" > pSize = 0;</span>
|
|
1460
|
+
<span class="cstat-no" title="statement not covered" > for (i = 0; i < inSize; i += 1) {</span>
|
|
1461
|
+
<span class="cstat-no" title="statement not covered" > pSize += 1;</span>
|
|
1462
|
+
<span class="cstat-no" title="statement not covered" > q = q.nextZ;</span>
|
|
1463
|
+
<span class="cstat-no" title="statement not covered" > if (!q) {</span>
|
|
1464
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
1465
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1466
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1467
|
+
<span class="cstat-no" title="statement not covered" > qSize = inSize;</span>
|
|
1468
|
+
<span class="cstat-no" title="statement not covered" > while (pSize > 0 || (qSize > 0 && q)) {</span>
|
|
1469
|
+
<span class="cstat-no" title="statement not covered" > if (pSize === 0) {</span>
|
|
1470
|
+
<span class="cstat-no" title="statement not covered" > e = q;</span>
|
|
1471
|
+
<span class="cstat-no" title="statement not covered" > q = q.nextZ;</span>
|
|
1472
|
+
<span class="cstat-no" title="statement not covered" > qSize -= 1;</span>
|
|
1473
|
+
<span class="cstat-no" title="statement not covered" > } else if (qSize === 0 || !q) {</span>
|
|
1474
|
+
<span class="cstat-no" title="statement not covered" > e = p;</span>
|
|
1475
|
+
<span class="cstat-no" title="statement not covered" > p = p.nextZ;</span>
|
|
1476
|
+
<span class="cstat-no" title="statement not covered" > pSize -= 1;</span>
|
|
1477
|
+
<span class="cstat-no" title="statement not covered" > } else if (p.z <= q.z) {</span>
|
|
1478
|
+
<span class="cstat-no" title="statement not covered" > e = p;</span>
|
|
1479
|
+
<span class="cstat-no" title="statement not covered" > p = p.nextZ;</span>
|
|
1480
|
+
<span class="cstat-no" title="statement not covered" > pSize -= 1;</span>
|
|
1481
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1482
|
+
<span class="cstat-no" title="statement not covered" > e = q;</span>
|
|
1483
|
+
<span class="cstat-no" title="statement not covered" > q = q.nextZ;</span>
|
|
1484
|
+
<span class="cstat-no" title="statement not covered" > qSize -= 1;</span>
|
|
1485
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1486
|
+
<span class="cstat-no" title="statement not covered" > if (tail) {</span>
|
|
1487
|
+
<span class="cstat-no" title="statement not covered" > tail.nextZ = e;</span>
|
|
1488
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1489
|
+
<span class="cstat-no" title="statement not covered" > list = e;</span>
|
|
1490
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1491
|
+
<span class="cstat-no" title="statement not covered" > e.prevZ = tail;</span>
|
|
1492
|
+
<span class="cstat-no" title="statement not covered" > tail = e;</span>
|
|
1493
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1494
|
+
<span class="cstat-no" title="statement not covered" > p = q;</span>
|
|
1495
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1496
|
+
<span class="cstat-no" title="statement not covered" > tail.nextZ = null;</span>
|
|
1497
|
+
<span class="cstat-no" title="statement not covered" > inSize *= 2;</span>
|
|
1498
|
+
<span class="cstat-no" title="statement not covered" > } while (numMerges > 1);</span>
|
|
1499
|
+
<span class="cstat-no" title="statement not covered" > return list;</span>
|
|
1500
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1501
|
+
|
|
1502
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1503
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1504
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} a - TBD.</span>
|
|
1505
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} b - TBD.</span>
|
|
1506
|
+
<span class="cstat-no" title="statement not covered" > * @returns {number} TBD.</span>
|
|
1507
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1508
|
+
<span class="cstat-no" title="statement not covered" >export function compareX(a, b) {</span>
|
|
1509
|
+
<span class="cstat-no" title="statement not covered" > return a.x - b.x;</span>
|
|
1510
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1511
|
+
|
|
1512
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1513
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1514
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} x - TBD.</span>
|
|
1515
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} y - TBD.</span>
|
|
1516
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minX - TBD.</span>
|
|
1517
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minY - TBD.</span>
|
|
1518
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} size - TBD.</span>
|
|
1519
|
+
<span class="cstat-no" title="statement not covered" > * @returns {number} TBD.</span>
|
|
1520
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1521
|
+
<span class="cstat-no" title="statement not covered" >export function zOrder(x, y, minX, minY, size) {</span>
|
|
1522
|
+
<span class="cstat-no" title="statement not covered" > // coords are transformed into non-negative 15-bit integer range</span>
|
|
1523
|
+
<span class="cstat-no" title="statement not covered" > x = (32767 * (x - minX)) / size;</span>
|
|
1524
|
+
<span class="cstat-no" title="statement not covered" > y = (32767 * (y - minY)) / size;</span>
|
|
1525
|
+
<span class="cstat-no" title="statement not covered" > x = (x | (x << 8)) & 0x00ff00ff;</span>
|
|
1526
|
+
<span class="cstat-no" title="statement not covered" > x = (x | (x << 4)) & 0x0f0f0f0f;</span>
|
|
1527
|
+
<span class="cstat-no" title="statement not covered" > x = (x | (x << 2)) & 0x33333333;</span>
|
|
1528
|
+
<span class="cstat-no" title="statement not covered" > x = (x | (x << 1)) & 0x55555555;</span>
|
|
1529
|
+
<span class="cstat-no" title="statement not covered" > y = (y | (y << 8)) & 0x00ff00ff;</span>
|
|
1530
|
+
<span class="cstat-no" title="statement not covered" > y = (y | (y << 4)) & 0x0f0f0f0f;</span>
|
|
1531
|
+
<span class="cstat-no" title="statement not covered" > y = (y | (y << 2)) & 0x33333333;</span>
|
|
1532
|
+
<span class="cstat-no" title="statement not covered" > y = (y | (y << 1)) & 0x55555555;</span>
|
|
1533
|
+
<span class="cstat-no" title="statement not covered" > return x | (y << 1);</span>
|
|
1534
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1535
|
+
|
|
1536
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1537
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1538
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} start - TBD.</span>
|
|
1539
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minX - TBD.</span>
|
|
1540
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minY - TBD.</span>
|
|
1541
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} size - TBD.</span>
|
|
1542
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1543
|
+
<span class="cstat-no" title="statement not covered" >export function indexCurve(start, minX, minY, size) {</span>
|
|
1544
|
+
<span class="cstat-no" title="statement not covered" > let p = start;</span>
|
|
1545
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1546
|
+
<span class="cstat-no" title="statement not covered" > if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, size);</span>
|
|
1547
|
+
<span class="cstat-no" title="statement not covered" > p.prevZ = p.prev;</span>
|
|
1548
|
+
<span class="cstat-no" title="statement not covered" > p.nextZ = p.next;</span>
|
|
1549
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1550
|
+
<span class="cstat-no" title="statement not covered" > } while (p !== start);</span>
|
|
1551
|
+
<span class="cstat-no" title="statement not covered" > p.prevZ.nextZ = null;</span>
|
|
1552
|
+
<span class="cstat-no" title="statement not covered" > p.prevZ = null;</span>
|
|
1553
|
+
<span class="cstat-no" title="statement not covered" > sortLinked(p);</span>
|
|
1554
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1555
|
+
|
|
1556
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1557
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1558
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} start - TBD.</span>
|
|
1559
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1560
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1561
|
+
<span class="cstat-no" title="statement not covered" >export function getLeftmost(start) {</span>
|
|
1562
|
+
<span class="cstat-no" title="statement not covered" > let p = start;</span>
|
|
1563
|
+
<span class="cstat-no" title="statement not covered" > let leftmost = start;</span>
|
|
1564
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1565
|
+
<span class="cstat-no" title="statement not covered" > if (p.x < leftmost.x) leftmost = p;</span>
|
|
1566
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1567
|
+
<span class="cstat-no" title="statement not covered" > } while (p !== start);</span>
|
|
1568
|
+
<span class="cstat-no" title="statement not covered" > return leftmost;</span>
|
|
1569
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1570
|
+
|
|
1571
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1572
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1573
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} ax - TBD.</span>
|
|
1574
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} ay - TBD.</span>
|
|
1575
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} bx - TBD.</span>
|
|
1576
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} by - TBD.</span>
|
|
1577
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} cx - TBD.</span>
|
|
1578
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} cy - TBD.</span>
|
|
1579
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} px - TBD.</span>
|
|
1580
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} py - TBD.</span>
|
|
1581
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1582
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1583
|
+
<span class="cstat-no" title="statement not covered" >export function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {</span>
|
|
1584
|
+
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
1585
|
+
<span class="cstat-no" title="statement not covered" > (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&</span>
|
|
1586
|
+
<span class="cstat-no" title="statement not covered" > (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&</span>
|
|
1587
|
+
<span class="cstat-no" title="statement not covered" > (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0</span>
|
|
1588
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1589
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1590
|
+
|
|
1591
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1592
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1593
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} p - TBD.</span>
|
|
1594
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} q - TBD.</span>
|
|
1595
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} r - TBD.</span>
|
|
1596
|
+
<span class="cstat-no" title="statement not covered" > * @returns {number} TBD.</span>
|
|
1597
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1598
|
+
<span class="cstat-no" title="statement not covered" >export function area(p, q, r) {</span>
|
|
1599
|
+
<span class="cstat-no" title="statement not covered" > return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);</span>
|
|
1600
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1601
|
+
|
|
1602
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1603
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1604
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} p1 - TBD.</span>
|
|
1605
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} p2 - TBD.</span>
|
|
1606
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1607
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1608
|
+
<span class="cstat-no" title="statement not covered" >export function equals(p1, p2) {</span>
|
|
1609
|
+
<span class="cstat-no" title="statement not covered" > return p1.x === p2.x && p1.y === p2.y;</span>
|
|
1610
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1611
|
+
|
|
1612
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1613
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1614
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} p1 - TBD.</span>
|
|
1615
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} q1 - TBD.</span>
|
|
1616
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} p2 - TBD.</span>
|
|
1617
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} q2 - TBD.</span>
|
|
1618
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1619
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1620
|
+
<span class="cstat-no" title="statement not covered" >export function intersects(p1, q1, p2, q2) {</span>
|
|
1621
|
+
<span class="cstat-no" title="statement not covered" > return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 && area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0;</span>
|
|
1622
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1623
|
+
|
|
1624
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1625
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1626
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} a - TBD.</span>
|
|
1627
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} b - TBD.</span>
|
|
1628
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1629
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1630
|
+
<span class="cstat-no" title="statement not covered" >export function intersectsPolygon(a, b) {</span>
|
|
1631
|
+
<span class="cstat-no" title="statement not covered" > let p = a;</span>
|
|
1632
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1633
|
+
<span class="cstat-no" title="statement not covered" > if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;</span>
|
|
1634
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1635
|
+
<span class="cstat-no" title="statement not covered" > } while (p !== a);</span>
|
|
1636
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1637
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1638
|
+
|
|
1639
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1640
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1641
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} a - TBD.</span>
|
|
1642
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} b - TBD.</span>
|
|
1643
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1644
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1645
|
+
<span class="cstat-no" title="statement not covered" >export function locallyInside(a, b) {</span>
|
|
1646
|
+
<span class="cstat-no" title="statement not covered" > return area(a.prev, a, a.next) < 0</span>
|
|
1647
|
+
<span class="cstat-no" title="statement not covered" > ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0</span>
|
|
1648
|
+
<span class="cstat-no" title="statement not covered" > : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;</span>
|
|
1649
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1650
|
+
|
|
1651
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1652
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1653
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} a - TBD.</span>
|
|
1654
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} b - TBD.</span>
|
|
1655
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1656
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1657
|
+
<span class="cstat-no" title="statement not covered" >export function middleInside(a, b) {</span>
|
|
1658
|
+
<span class="cstat-no" title="statement not covered" > let p = a;</span>
|
|
1659
|
+
<span class="cstat-no" title="statement not covered" > let inside = false;</span>
|
|
1660
|
+
<span class="cstat-no" title="statement not covered" > const px = (a.x + b.x) / 2;</span>
|
|
1661
|
+
<span class="cstat-no" title="statement not covered" > const py = (a.y + b.y) / 2;</span>
|
|
1662
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1663
|
+
<span class="cstat-no" title="statement not covered" > if (p.y > py !== p.next.y > py && px < ((p.next.x - p.x) * (py - p.y)) / (p.next.y - p.y) + p.x) {</span>
|
|
1664
|
+
<span class="cstat-no" title="statement not covered" > inside = !inside;</span>
|
|
1665
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1666
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1667
|
+
<span class="cstat-no" title="statement not covered" > } while (p !== a);</span>
|
|
1668
|
+
<span class="cstat-no" title="statement not covered" > return inside;</span>
|
|
1669
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1670
|
+
|
|
1671
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1672
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1673
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} a - TBD.</span>
|
|
1674
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} b - TBD.</span>
|
|
1675
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1676
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1677
|
+
<span class="cstat-no" title="statement not covered" >export function isValidDiagonal(a, b) {</span>
|
|
1678
|
+
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
1679
|
+
<span class="cstat-no" title="statement not covered" > equals(a, b) ||</span>
|
|
1680
|
+
<span class="cstat-no" title="statement not covered" > (a.next.i !== b.i &&</span>
|
|
1681
|
+
<span class="cstat-no" title="statement not covered" > a.prev.i !== b.i &&</span>
|
|
1682
|
+
<span class="cstat-no" title="statement not covered" > !intersectsPolygon(a, b) &&</span>
|
|
1683
|
+
<span class="cstat-no" title="statement not covered" > locallyInside(a, b) &&</span>
|
|
1684
|
+
<span class="cstat-no" title="statement not covered" > locallyInside(b, a) &&</span>
|
|
1685
|
+
<span class="cstat-no" title="statement not covered" > middleInside(a, b))</span>
|
|
1686
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1687
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1688
|
+
|
|
1689
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1690
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1691
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} a - TBD.</span>
|
|
1692
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} b - TBD.</span>
|
|
1693
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1694
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1695
|
+
<span class="cstat-no" title="statement not covered" >export function splitPolygon(a, b) {</span>
|
|
1696
|
+
<span class="cstat-no" title="statement not covered" > const a2 = new Node(a.i, a.x, a.y);</span>
|
|
1697
|
+
<span class="cstat-no" title="statement not covered" > const b2 = new Node(b.i, b.x, b.y);</span>
|
|
1698
|
+
<span class="cstat-no" title="statement not covered" > const an = a.next;</span>
|
|
1699
|
+
<span class="cstat-no" title="statement not covered" > const bp = b.prev;</span>
|
|
1700
|
+
<span class="cstat-no" title="statement not covered" > a.next = b;</span>
|
|
1701
|
+
<span class="cstat-no" title="statement not covered" > b.prev = a;</span>
|
|
1702
|
+
<span class="cstat-no" title="statement not covered" > a2.next = an;</span>
|
|
1703
|
+
<span class="cstat-no" title="statement not covered" > an.prev = a2;</span>
|
|
1704
|
+
<span class="cstat-no" title="statement not covered" > b2.next = a2;</span>
|
|
1705
|
+
<span class="cstat-no" title="statement not covered" > a2.prev = b2;</span>
|
|
1706
|
+
<span class="cstat-no" title="statement not covered" > bp.next = b2;</span>
|
|
1707
|
+
<span class="cstat-no" title="statement not covered" > b2.prev = bp;</span>
|
|
1708
|
+
<span class="cstat-no" title="statement not covered" > return b2;</span>
|
|
1709
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1710
|
+
|
|
1711
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1712
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1713
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} i - TBD.</span>
|
|
1714
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} x - TBD.</span>
|
|
1715
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} y - TBD.</span>
|
|
1716
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} last - TBD.</span>
|
|
1717
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1718
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1719
|
+
<span class="cstat-no" title="statement not covered" >export function insertNode(i, x, y, last) {</span>
|
|
1720
|
+
<span class="cstat-no" title="statement not covered" > const p = new Node(i, x, y);</span>
|
|
1721
|
+
<span class="cstat-no" title="statement not covered" > if (!last) {</span>
|
|
1722
|
+
<span class="cstat-no" title="statement not covered" > p.prev = p;</span>
|
|
1723
|
+
<span class="cstat-no" title="statement not covered" > p.next = p;</span>
|
|
1724
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1725
|
+
<span class="cstat-no" title="statement not covered" > p.next = last.next;</span>
|
|
1726
|
+
<span class="cstat-no" title="statement not covered" > p.prev = last;</span>
|
|
1727
|
+
<span class="cstat-no" title="statement not covered" > last.next.prev = p;</span>
|
|
1728
|
+
<span class="cstat-no" title="statement not covered" > last.next = p;</span>
|
|
1729
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1730
|
+
<span class="cstat-no" title="statement not covered" > return p;</span>
|
|
1731
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1732
|
+
|
|
1733
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1734
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1735
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} p - TBD.</span>
|
|
1736
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1737
|
+
<span class="cstat-no" title="statement not covered" >export function removeNode(p) {</span>
|
|
1738
|
+
<span class="cstat-no" title="statement not covered" > p.next.prev = p.prev;</span>
|
|
1739
|
+
<span class="cstat-no" title="statement not covered" > p.prev.next = p.next;</span>
|
|
1740
|
+
<span class="cstat-no" title="statement not covered" > if (p.prevZ) {</span>
|
|
1741
|
+
<span class="cstat-no" title="statement not covered" > p.prevZ.nextZ = p.nextZ;</span>
|
|
1742
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1743
|
+
<span class="cstat-no" title="statement not covered" > if (p.nextZ) {</span>
|
|
1744
|
+
<span class="cstat-no" title="statement not covered" > p.nextZ.prevZ = p.prevZ;</span>
|
|
1745
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1746
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1747
|
+
|
|
1748
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1749
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1750
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} ear - TBD.</span>
|
|
1751
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1752
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1753
|
+
<span class="cstat-no" title="statement not covered" >export function isEar(ear) {</span>
|
|
1754
|
+
<span class="cstat-no" title="statement not covered" > const a = ear.prev;</span>
|
|
1755
|
+
<span class="cstat-no" title="statement not covered" > const b = ear;</span>
|
|
1756
|
+
<span class="cstat-no" title="statement not covered" > const c = ear.next;</span>
|
|
1757
|
+
<span class="cstat-no" title="statement not covered" > if (area(a, b, c) >= 0) return false; // reflex, can't be an ear</span>
|
|
1758
|
+
<span class="cstat-no" title="statement not covered" > // now make sure we don't have other points inside the potential ear</span>
|
|
1759
|
+
<span class="cstat-no" title="statement not covered" > let p = ear.next.next;</span>
|
|
1760
|
+
<span class="cstat-no" title="statement not covered" > while (p !== ear.prev) {</span>
|
|
1761
|
+
<span class="cstat-no" title="statement not covered" > if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;</span>
|
|
1762
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1763
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1764
|
+
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
1765
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1766
|
+
|
|
1767
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1768
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1769
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} ear - TBD.</span>
|
|
1770
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minX - TBD.</span>
|
|
1771
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minY - TBD.</span>
|
|
1772
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} size - TBD.</span>
|
|
1773
|
+
<span class="cstat-no" title="statement not covered" > * @returns {boolean} TBD.</span>
|
|
1774
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1775
|
+
<span class="cstat-no" title="statement not covered" >export function isEarHashed(ear, minX, minY, size) {</span>
|
|
1776
|
+
<span class="cstat-no" title="statement not covered" > const a = ear.prev;</span>
|
|
1777
|
+
<span class="cstat-no" title="statement not covered" > const b = ear;</span>
|
|
1778
|
+
<span class="cstat-no" title="statement not covered" > const c = ear.next;</span>
|
|
1779
|
+
<span class="cstat-no" title="statement not covered" > if (area(a, b, c) >= 0) return false; // reflex, can't be an ear</span>
|
|
1780
|
+
<span class="cstat-no" title="statement not covered" > // triangle bbox; min & max are calculated like this for speed</span>
|
|
1781
|
+
<span class="cstat-no" title="statement not covered" > const minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : b.x < c.x ? b.x : c.x;</span>
|
|
1782
|
+
<span class="cstat-no" title="statement not covered" > const minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : b.y < c.y ? b.y : c.y;</span>
|
|
1783
|
+
<span class="cstat-no" title="statement not covered" > const maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : b.x > c.x ? b.x : c.x;</span>
|
|
1784
|
+
<span class="cstat-no" title="statement not covered" > const maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : b.y > c.y ? b.y : c.y;</span>
|
|
1785
|
+
<span class="cstat-no" title="statement not covered" > // z-order range for the current triangle bbox;</span>
|
|
1786
|
+
<span class="cstat-no" title="statement not covered" > const minZ = zOrder(minTX, minTY, minX, minY, size);</span>
|
|
1787
|
+
<span class="cstat-no" title="statement not covered" > const maxZ = zOrder(maxTX, maxTY, minX, minY, size);</span>
|
|
1788
|
+
<span class="cstat-no" title="statement not covered" > // first look for points inside the triangle in increasing z-order</span>
|
|
1789
|
+
<span class="cstat-no" title="statement not covered" > let p = ear.nextZ;</span>
|
|
1790
|
+
<span class="cstat-no" title="statement not covered" > while (p && p.z <= maxZ) {</span>
|
|
1791
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1792
|
+
<span class="cstat-no" title="statement not covered" > p !== ear.prev &&</span>
|
|
1793
|
+
<span class="cstat-no" title="statement not covered" > p !== ear.next &&</span>
|
|
1794
|
+
<span class="cstat-no" title="statement not covered" > pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&</span>
|
|
1795
|
+
<span class="cstat-no" title="statement not covered" > area(p.prev, p, p.next) >= 0</span>
|
|
1796
|
+
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
1797
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1798
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1799
|
+
<span class="cstat-no" title="statement not covered" > p = p.nextZ;</span>
|
|
1800
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1801
|
+
<span class="cstat-no" title="statement not covered" > // then look for points in decreasing z-order</span>
|
|
1802
|
+
<span class="cstat-no" title="statement not covered" > p = ear.prevZ;</span>
|
|
1803
|
+
<span class="cstat-no" title="statement not covered" > while (p && p.z >= minZ) {</span>
|
|
1804
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1805
|
+
<span class="cstat-no" title="statement not covered" > p !== ear.prev &&</span>
|
|
1806
|
+
<span class="cstat-no" title="statement not covered" > p !== ear.next &&</span>
|
|
1807
|
+
<span class="cstat-no" title="statement not covered" > pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&</span>
|
|
1808
|
+
<span class="cstat-no" title="statement not covered" > area(p.prev, p, p.next) >= 0</span>
|
|
1809
|
+
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
1810
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1811
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1812
|
+
<span class="cstat-no" title="statement not covered" > p = p.prevZ;</span>
|
|
1813
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1814
|
+
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
1815
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1816
|
+
|
|
1817
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1818
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1819
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} data - TBD.</span>
|
|
1820
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} start - TBD.</span>
|
|
1821
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} end - TBD.</span>
|
|
1822
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} dim - TBD.</span>
|
|
1823
|
+
<span class="cstat-no" title="statement not covered" > * @param {boolean} clockwise - TBD.</span>
|
|
1824
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1825
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1826
|
+
<span class="cstat-no" title="statement not covered" >export function linkedList(data, start, end, dim, clockwise) {</span>
|
|
1827
|
+
<span class="cstat-no" title="statement not covered" > let sum = 0;</span>
|
|
1828
|
+
<span class="cstat-no" title="statement not covered" > let i;</span>
|
|
1829
|
+
<span class="cstat-no" title="statement not covered" > let j;</span>
|
|
1830
|
+
<span class="cstat-no" title="statement not covered" > let last;</span>
|
|
1831
|
+
<span class="cstat-no" title="statement not covered" > // calculate original winding order of a polygon ring</span>
|
|
1832
|
+
<span class="cstat-no" title="statement not covered" > for (i = start, j = end - dim; i < end; i += dim) {</span>
|
|
1833
|
+
<span class="cstat-no" title="statement not covered" > sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);</span>
|
|
1834
|
+
<span class="cstat-no" title="statement not covered" > j = i;</span>
|
|
1835
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1836
|
+
<span class="cstat-no" title="statement not covered" > // link points into circular doubly-linked list in the specified winding order</span>
|
|
1837
|
+
<span class="cstat-no" title="statement not covered" > if (clockwise === sum > 0) {</span>
|
|
1838
|
+
<span class="cstat-no" title="statement not covered" > for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);</span>
|
|
1839
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1840
|
+
<span class="cstat-no" title="statement not covered" > for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);</span>
|
|
1841
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1842
|
+
<span class="cstat-no" title="statement not covered" > return last;</span>
|
|
1843
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1844
|
+
|
|
1845
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1846
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1847
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} start - TBD.</span>
|
|
1848
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} end - TBD.</span>
|
|
1849
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1850
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1851
|
+
<span class="cstat-no" title="statement not covered" >export function filterPoints(start, end) {</span>
|
|
1852
|
+
<span class="cstat-no" title="statement not covered" > if (!start) return start;</span>
|
|
1853
|
+
<span class="cstat-no" title="statement not covered" > if (!end) end = start;</span>
|
|
1854
|
+
<span class="cstat-no" title="statement not covered" > let p = start;</span>
|
|
1855
|
+
<span class="cstat-no" title="statement not covered" > let again;</span>
|
|
1856
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1857
|
+
<span class="cstat-no" title="statement not covered" > again = false;</span>
|
|
1858
|
+
<span class="cstat-no" title="statement not covered" > if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {</span>
|
|
1859
|
+
<span class="cstat-no" title="statement not covered" > removeNode(p);</span>
|
|
1860
|
+
<span class="cstat-no" title="statement not covered" > p = p.prev;</span>
|
|
1861
|
+
<span class="cstat-no" title="statement not covered" > end = p;</span>
|
|
1862
|
+
<span class="cstat-no" title="statement not covered" > if (p === p.next) return null;</span>
|
|
1863
|
+
<span class="cstat-no" title="statement not covered" > again = true;</span>
|
|
1864
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1865
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1866
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1867
|
+
<span class="cstat-no" title="statement not covered" > } while (again || p !== end);</span>
|
|
1868
|
+
<span class="cstat-no" title="statement not covered" > return end;</span>
|
|
1869
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1870
|
+
|
|
1871
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1872
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1873
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} hole - TBD.</span>
|
|
1874
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} outerNode - TBD.</span>
|
|
1875
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1876
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1877
|
+
<span class="cstat-no" title="statement not covered" >export function findHoleBridge(hole, outerNode) {</span>
|
|
1878
|
+
<span class="cstat-no" title="statement not covered" > let p = outerNode;</span>
|
|
1879
|
+
<span class="cstat-no" title="statement not covered" > const hx = hole.x;</span>
|
|
1880
|
+
<span class="cstat-no" title="statement not covered" > const hy = hole.y;</span>
|
|
1881
|
+
<span class="cstat-no" title="statement not covered" > let qx = -Infinity;</span>
|
|
1882
|
+
<span class="cstat-no" title="statement not covered" > let m;</span>
|
|
1883
|
+
<span class="cstat-no" title="statement not covered" > // find a segment intersected by a ray from the hole's leftmost point to the left;</span>
|
|
1884
|
+
<span class="cstat-no" title="statement not covered" > // segment's endpoint with lesser x will be potential connection point</span>
|
|
1885
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1886
|
+
<span class="cstat-no" title="statement not covered" > if (hy <= p.y && hy >= p.next.y) {</span>
|
|
1887
|
+
<span class="cstat-no" title="statement not covered" > const x = p.x + ((hy - p.y) * (p.next.x - p.x)) / (p.next.y - p.y);</span>
|
|
1888
|
+
<span class="cstat-no" title="statement not covered" > if (x <= hx && x > qx) {</span>
|
|
1889
|
+
<span class="cstat-no" title="statement not covered" > qx = x;</span>
|
|
1890
|
+
<span class="cstat-no" title="statement not covered" > m = p.x < p.next.x ? p : p.next;</span>
|
|
1891
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1892
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1893
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1894
|
+
<span class="cstat-no" title="statement not covered" > } while (p !== outerNode);</span>
|
|
1895
|
+
<span class="cstat-no" title="statement not covered" > if (!m) return null;</span>
|
|
1896
|
+
<span class="cstat-no" title="statement not covered" > if (hole.x === m.x) return m.prev; // hole touches outer segment; pick lower endpoint</span>
|
|
1897
|
+
<span class="cstat-no" title="statement not covered" > // look for points inside the triangle of hole point, segment intersection and endpoint;</span>
|
|
1898
|
+
<span class="cstat-no" title="statement not covered" > // if there are no points found, we have a valid connection;</span>
|
|
1899
|
+
<span class="cstat-no" title="statement not covered" > // otherwise choose the point of the minimum angle with the ray as connection point</span>
|
|
1900
|
+
<span class="cstat-no" title="statement not covered" > const stop = m;</span>
|
|
1901
|
+
<span class="cstat-no" title="statement not covered" > let tanMin = Infinity;</span>
|
|
1902
|
+
<span class="cstat-no" title="statement not covered" > let tan;</span>
|
|
1903
|
+
<span class="cstat-no" title="statement not covered" > p = m.next;</span>
|
|
1904
|
+
<span class="cstat-no" title="statement not covered" > while (p !== stop) {</span>
|
|
1905
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1906
|
+
<span class="cstat-no" title="statement not covered" > hx >= p.x &&</span>
|
|
1907
|
+
<span class="cstat-no" title="statement not covered" > p.x >= m.x &&</span>
|
|
1908
|
+
<span class="cstat-no" title="statement not covered" > pointInTriangle(hy < m.y ? hx : qx, hy, m.x, m.y, hy < m.y ? qx : hx, hy, p.x, p.y)</span>
|
|
1909
|
+
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
1910
|
+
<span class="cstat-no" title="statement not covered" > tan = Math.abs(hy - p.y) / (hx - p.x); // tangential</span>
|
|
1911
|
+
<span class="cstat-no" title="statement not covered" > if ((tan < tanMin || (tan === tanMin && p.x > m.x)) && locallyInside(p, hole)) {</span>
|
|
1912
|
+
<span class="cstat-no" title="statement not covered" > m = p;</span>
|
|
1913
|
+
<span class="cstat-no" title="statement not covered" > tanMin = tan;</span>
|
|
1914
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1915
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1916
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1917
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1918
|
+
<span class="cstat-no" title="statement not covered" > return m;</span>
|
|
1919
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1920
|
+
|
|
1921
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1922
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1923
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} hole - TBD.</span>
|
|
1924
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} outerNode - TBD.</span>
|
|
1925
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1926
|
+
<span class="cstat-no" title="statement not covered" >export function eliminateHole(hole, outerNode) {</span>
|
|
1927
|
+
<span class="cstat-no" title="statement not covered" > outerNode = findHoleBridge(hole, outerNode);</span>
|
|
1928
|
+
<span class="cstat-no" title="statement not covered" > if (outerNode) {</span>
|
|
1929
|
+
<span class="cstat-no" title="statement not covered" > const b = splitPolygon(outerNode, hole);</span>
|
|
1930
|
+
<span class="cstat-no" title="statement not covered" > filterPoints(b, b.next);</span>
|
|
1931
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1932
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1933
|
+
|
|
1934
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1935
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1936
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} data - TBD.</span>
|
|
1937
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} holeIndices - TBD.</span>
|
|
1938
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} outerNode - TBD.</span>
|
|
1939
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} dim - TBD.</span>
|
|
1940
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1941
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1942
|
+
<span class="cstat-no" title="statement not covered" >export function eliminateHoles(data, holeIndices, outerNode, dim) {</span>
|
|
1943
|
+
<span class="cstat-no" title="statement not covered" > const queue = [];</span>
|
|
1944
|
+
<span class="cstat-no" title="statement not covered" > let i;</span>
|
|
1945
|
+
<span class="cstat-no" title="statement not covered" > let len;</span>
|
|
1946
|
+
<span class="cstat-no" title="statement not covered" > let start;</span>
|
|
1947
|
+
<span class="cstat-no" title="statement not covered" > let end;</span>
|
|
1948
|
+
<span class="cstat-no" title="statement not covered" > let list;</span>
|
|
1949
|
+
<span class="cstat-no" title="statement not covered" > for (i = 0, len = holeIndices.length; i < len; i += 1) {</span>
|
|
1950
|
+
<span class="cstat-no" title="statement not covered" > start = holeIndices[i] * dim;</span>
|
|
1951
|
+
<span class="cstat-no" title="statement not covered" > end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;</span>
|
|
1952
|
+
<span class="cstat-no" title="statement not covered" > list = linkedList(data, start, end, dim, false);</span>
|
|
1953
|
+
<span class="cstat-no" title="statement not covered" > if (list === list.next) list.steiner = true;</span>
|
|
1954
|
+
<span class="cstat-no" title="statement not covered" > queue.push(getLeftmost(list));</span>
|
|
1955
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1956
|
+
<span class="cstat-no" title="statement not covered" > queue.sort(compareX);</span>
|
|
1957
|
+
<span class="cstat-no" title="statement not covered" > // process holes from left to right</span>
|
|
1958
|
+
<span class="cstat-no" title="statement not covered" > for (i = 0; i < queue.length; i += 1) {</span>
|
|
1959
|
+
<span class="cstat-no" title="statement not covered" > eliminateHole(queue[i], outerNode);</span>
|
|
1960
|
+
<span class="cstat-no" title="statement not covered" > outerNode = filterPoints(outerNode, outerNode.next);</span>
|
|
1961
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1962
|
+
<span class="cstat-no" title="statement not covered" > return outerNode;</span>
|
|
1963
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1964
|
+
|
|
1965
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1966
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1967
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} start - TBD.</span>
|
|
1968
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} triangles - TBD.</span>
|
|
1969
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} dim - TBD.</span>
|
|
1970
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
1971
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1972
|
+
<span class="cstat-no" title="statement not covered" >export function cureLocalIntersections(start, triangles, dim) {</span>
|
|
1973
|
+
<span class="cstat-no" title="statement not covered" > let p = start;</span>
|
|
1974
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
1975
|
+
<span class="cstat-no" title="statement not covered" > const a = p.prev;</span>
|
|
1976
|
+
<span class="cstat-no" title="statement not covered" > const b = p.next.next;</span>
|
|
1977
|
+
<span class="cstat-no" title="statement not covered" > // a self-intersection where edge (v[i-1],v[i]) intersects (v[i+1],v[i+2])</span>
|
|
1978
|
+
<span class="cstat-no" title="statement not covered" > if (intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {</span>
|
|
1979
|
+
<span class="cstat-no" title="statement not covered" > triangles.push(a.i / dim);</span>
|
|
1980
|
+
<span class="cstat-no" title="statement not covered" > triangles.push(p.i / dim);</span>
|
|
1981
|
+
<span class="cstat-no" title="statement not covered" > triangles.push(b.i / dim);</span>
|
|
1982
|
+
<span class="cstat-no" title="statement not covered" > // remove two nodes involved</span>
|
|
1983
|
+
<span class="cstat-no" title="statement not covered" > removeNode(p);</span>
|
|
1984
|
+
<span class="cstat-no" title="statement not covered" > removeNode(p.next);</span>
|
|
1985
|
+
<span class="cstat-no" title="statement not covered" > p = b;</span>
|
|
1986
|
+
<span class="cstat-no" title="statement not covered" > start = p;</span>
|
|
1987
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1988
|
+
<span class="cstat-no" title="statement not covered" > p = p.next;</span>
|
|
1989
|
+
<span class="cstat-no" title="statement not covered" > } while (p !== start);</span>
|
|
1990
|
+
<span class="cstat-no" title="statement not covered" > return p;</span>
|
|
1991
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1992
|
+
|
|
1993
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1994
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
1995
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} start - TBD.</span>
|
|
1996
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} triangles - TBD.</span>
|
|
1997
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} dim - TBD.</span>
|
|
1998
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minX - TBD.</span>
|
|
1999
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minY - TBD.</span>
|
|
2000
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} size - TBD.</span>
|
|
2001
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2002
|
+
<span class="cstat-no" title="statement not covered" >export function splitEarcut(start, triangles, dim, minX, minY, size) {</span>
|
|
2003
|
+
<span class="cstat-no" title="statement not covered" > // look for a valid diagonal that divides the polygon into two</span>
|
|
2004
|
+
<span class="cstat-no" title="statement not covered" > let a = start;</span>
|
|
2005
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
2006
|
+
<span class="cstat-no" title="statement not covered" > let b = a.next.next;</span>
|
|
2007
|
+
<span class="cstat-no" title="statement not covered" > while (b !== a.prev) {</span>
|
|
2008
|
+
<span class="cstat-no" title="statement not covered" > if (a.i !== b.i && isValidDiagonal(a, b)) {</span>
|
|
2009
|
+
<span class="cstat-no" title="statement not covered" > // split the polygon in two by the diagonal</span>
|
|
2010
|
+
<span class="cstat-no" title="statement not covered" > let c = splitPolygon(a, b);</span>
|
|
2011
|
+
<span class="cstat-no" title="statement not covered" > // filter colinear points around the cuts</span>
|
|
2012
|
+
<span class="cstat-no" title="statement not covered" > a = filterPoints(a, a.next);</span>
|
|
2013
|
+
<span class="cstat-no" title="statement not covered" > c = filterPoints(c, c.next);</span>
|
|
2014
|
+
<span class="cstat-no" title="statement not covered" > // run earcut on each half</span>
|
|
2015
|
+
<span class="cstat-no" title="statement not covered" > earcutLinked(a, triangles, dim, minX, minY, size);</span>
|
|
2016
|
+
<span class="cstat-no" title="statement not covered" > earcutLinked(c, triangles, dim, minX, minY, size);</span>
|
|
2017
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2018
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2019
|
+
<span class="cstat-no" title="statement not covered" > b = b.next;</span>
|
|
2020
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2021
|
+
<span class="cstat-no" title="statement not covered" > a = a.next;</span>
|
|
2022
|
+
<span class="cstat-no" title="statement not covered" > } while (a !== start);</span>
|
|
2023
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2024
|
+
|
|
2025
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2026
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
2027
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} ear - TBD.</span>
|
|
2028
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} triangles - TBD.</span>
|
|
2029
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} dim - TBD.</span>
|
|
2030
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minX - TBD.</span>
|
|
2031
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} minY - TBD.</span>
|
|
2032
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} size - TBD.</span>
|
|
2033
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} pass - TBD.</span>
|
|
2034
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2035
|
+
<span class="cstat-no" title="statement not covered" >export function earcutLinked(ear, triangles, dim, minX, minY, size, pass) {</span>
|
|
2036
|
+
<span class="cstat-no" title="statement not covered" > if (!ear) return;</span>
|
|
2037
|
+
<span class="cstat-no" title="statement not covered" > // interlink polygon nodes in z-order</span>
|
|
2038
|
+
<span class="cstat-no" title="statement not covered" > if (!pass && size) indexCurve(ear, minX, minY, size);</span>
|
|
2039
|
+
<span class="cstat-no" title="statement not covered" > let stop = ear;</span>
|
|
2040
|
+
<span class="cstat-no" title="statement not covered" > let prev;</span>
|
|
2041
|
+
<span class="cstat-no" title="statement not covered" > let next;</span>
|
|
2042
|
+
<span class="cstat-no" title="statement not covered" > // iterate through ears, slicing them one by one</span>
|
|
2043
|
+
<span class="cstat-no" title="statement not covered" > while (ear.prev !== ear.next) {</span>
|
|
2044
|
+
<span class="cstat-no" title="statement not covered" > prev = ear.prev;</span>
|
|
2045
|
+
<span class="cstat-no" title="statement not covered" > next = ear.next;</span>
|
|
2046
|
+
<span class="cstat-no" title="statement not covered" > if (size ? isEarHashed(ear, minX, minY, size) : isEar(ear)) {</span>
|
|
2047
|
+
<span class="cstat-no" title="statement not covered" > // cut off the triangle</span>
|
|
2048
|
+
<span class="cstat-no" title="statement not covered" > triangles.push(prev.i / dim);</span>
|
|
2049
|
+
<span class="cstat-no" title="statement not covered" > triangles.push(ear.i / dim);</span>
|
|
2050
|
+
<span class="cstat-no" title="statement not covered" > triangles.push(next.i / dim);</span>
|
|
2051
|
+
<span class="cstat-no" title="statement not covered" > removeNode(ear);</span>
|
|
2052
|
+
<span class="cstat-no" title="statement not covered" > // skipping the next vertice leads to less sliver triangles</span>
|
|
2053
|
+
<span class="cstat-no" title="statement not covered" > ear = next.next;</span>
|
|
2054
|
+
<span class="cstat-no" title="statement not covered" > stop = next.next;</span>
|
|
2055
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
2056
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2057
|
+
<span class="cstat-no" title="statement not covered" > ear = next;</span>
|
|
2058
|
+
<span class="cstat-no" title="statement not covered" > // if we looped through the whole remaining polygon and can't find any more ears</span>
|
|
2059
|
+
<span class="cstat-no" title="statement not covered" > if (ear === stop) {</span>
|
|
2060
|
+
<span class="cstat-no" title="statement not covered" > // try filtering points and slicing again</span>
|
|
2061
|
+
<span class="cstat-no" title="statement not covered" > if (!pass) {</span>
|
|
2062
|
+
<span class="cstat-no" title="statement not covered" > earcutLinked(filterPoints(ear), triangles, dim, minX, minY, size, 1);</span>
|
|
2063
|
+
<span class="cstat-no" title="statement not covered" > // if this didn't work, try curing all small self-intersections locally</span>
|
|
2064
|
+
<span class="cstat-no" title="statement not covered" > } else if (pass === 1) {</span>
|
|
2065
|
+
<span class="cstat-no" title="statement not covered" > ear = cureLocalIntersections(ear, triangles, dim);</span>
|
|
2066
|
+
<span class="cstat-no" title="statement not covered" > earcutLinked(ear, triangles, dim, minX, minY, size, 2);</span>
|
|
2067
|
+
<span class="cstat-no" title="statement not covered" > // as a last resort, try splitting the remaining polygon into two</span>
|
|
2068
|
+
<span class="cstat-no" title="statement not covered" > } else if (pass === 2) {</span>
|
|
2069
|
+
<span class="cstat-no" title="statement not covered" > splitEarcut(ear, triangles, dim, minX, minY, size);</span>
|
|
2070
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2071
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2072
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2073
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2074
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2075
|
+
|
|
2076
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2077
|
+
<span class="cstat-no" title="statement not covered" > * TBD.</span>
|
|
2078
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} data - TBD.</span>
|
|
2079
|
+
<span class="cstat-no" title="statement not covered" > * @param {object} holeIndices - TBD.</span>
|
|
2080
|
+
<span class="cstat-no" title="statement not covered" > * @param {number} dim - TBD.</span>
|
|
2081
|
+
<span class="cstat-no" title="statement not covered" > * @returns {object} TBD.</span>
|
|
2082
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2083
|
+
<span class="cstat-no" title="statement not covered" >export function triangulate(data, holeIndices, dim) {</span>
|
|
2084
|
+
<span class="cstat-no" title="statement not covered" > dim = dim || 2;</span>
|
|
2085
|
+
<span class="cstat-no" title="statement not covered" > const hasHoles = holeIndices && holeIndices.length;</span>
|
|
2086
|
+
<span class="cstat-no" title="statement not covered" > const outerLen = hasHoles ? holeIndices[0] * dim : data.length;</span>
|
|
2087
|
+
<span class="cstat-no" title="statement not covered" > let outerNode = linkedList(data, 0, outerLen, dim, true);</span>
|
|
2088
|
+
<span class="cstat-no" title="statement not covered" > const triangles = [];</span>
|
|
2089
|
+
<span class="cstat-no" title="statement not covered" > if (!outerNode) return triangles;</span>
|
|
2090
|
+
<span class="cstat-no" title="statement not covered" > let minX;</span>
|
|
2091
|
+
<span class="cstat-no" title="statement not covered" > let minY;</span>
|
|
2092
|
+
<span class="cstat-no" title="statement not covered" > let maxX;</span>
|
|
2093
|
+
<span class="cstat-no" title="statement not covered" > let maxY;</span>
|
|
2094
|
+
<span class="cstat-no" title="statement not covered" > let x;</span>
|
|
2095
|
+
<span class="cstat-no" title="statement not covered" > let y;</span>
|
|
2096
|
+
<span class="cstat-no" title="statement not covered" > let size;</span>
|
|
2097
|
+
<span class="cstat-no" title="statement not covered" > if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);</span>
|
|
2098
|
+
<span class="cstat-no" title="statement not covered" > // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox</span>
|
|
2099
|
+
<span class="cstat-no" title="statement not covered" > if (data.length > 80 * dim) {</span>
|
|
2100
|
+
<span class="cstat-no" title="statement not covered" > minX = data[0];</span>
|
|
2101
|
+
<span class="cstat-no" title="statement not covered" > maxX = data[0];</span>
|
|
2102
|
+
<span class="cstat-no" title="statement not covered" > minY = data[1];</span>
|
|
2103
|
+
<span class="cstat-no" title="statement not covered" > maxY = data[1];</span>
|
|
2104
|
+
<span class="cstat-no" title="statement not covered" > for (let i = dim; i < outerLen; i += dim) {</span>
|
|
2105
|
+
<span class="cstat-no" title="statement not covered" > x = data[i];</span>
|
|
2106
|
+
<span class="cstat-no" title="statement not covered" > y = data[i + 1];</span>
|
|
2107
|
+
<span class="cstat-no" title="statement not covered" > if (x < minX) minX = x;</span>
|
|
2108
|
+
<span class="cstat-no" title="statement not covered" > if (y < minY) minY = y;</span>
|
|
2109
|
+
<span class="cstat-no" title="statement not covered" > if (x > maxX) maxX = x;</span>
|
|
2110
|
+
<span class="cstat-no" title="statement not covered" > if (y > maxY) maxY = y;</span>
|
|
2111
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2112
|
+
<span class="cstat-no" title="statement not covered" > // minX, minY and size are later used to transform coords into integers for z-order calculation</span>
|
|
2113
|
+
<span class="cstat-no" title="statement not covered" > size = Math.max(maxX - minX, maxY - minY);</span>
|
|
2114
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2115
|
+
<span class="cstat-no" title="statement not covered" > earcutLinked(outerNode, triangles, dim, minX, minY, size);</span>
|
|
2116
|
+
<span class="cstat-no" title="statement not covered" > return triangles;</span>
|
|
2117
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2118
|
+
</pre></td></tr></table></pre>
|
|
2119
|
+
|
|
2120
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
2121
|
+
</div><!-- /wrapper -->
|
|
2122
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
2123
|
+
Code coverage generated by
|
|
2124
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2125
|
+
at 2025-08-19T06:39:20.400Z
|
|
2126
|
+
</div>
|
|
2127
|
+
<script src="../../../../prettify.js"></script>
|
|
2128
|
+
<script>
|
|
2129
|
+
window.onload = function () {
|
|
2130
|
+
prettyPrint();
|
|
2131
|
+
};
|
|
2132
|
+
</script>
|
|
2133
|
+
<script src="../../../../sorter.js"></script>
|
|
2134
|
+
<script src="../../../../block-navigation.js"></script>
|
|
2135
|
+
</body>
|
|
2136
|
+
</html>
|
|
2137
|
+
|