mage-engine 3.24.4 → 3.24.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.github/workflows/test.yml +29 -0
  2. package/__mocks__/three.js +178 -0
  3. package/coverage/clover.xml +3094 -0
  4. package/coverage/coverage-final.json +60 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/entities/Element.js.html +3463 -0
  8. package/coverage/lcov-report/entities/Entity.js.html +2740 -0
  9. package/coverage/lcov-report/entities/animations/AnimationHandler.js.html +1006 -0
  10. package/coverage/lcov-report/entities/animations/SpriteAnimationHandler.js.html +91 -0
  11. package/coverage/lcov-report/entities/animations/index.html +131 -0
  12. package/coverage/lcov-report/entities/animations/lib/NodeFrame.js.html +214 -0
  13. package/coverage/lcov-report/entities/animations/lib/index.html +116 -0
  14. package/coverage/lcov-report/entities/base/AnimatedSprite.js.html +220 -0
  15. package/coverage/lcov-report/entities/base/Axes.js.html +316 -0
  16. package/coverage/lcov-report/entities/base/Box.js.html +253 -0
  17. package/coverage/lcov-report/entities/base/Cone.js.html +304 -0
  18. package/coverage/lcov-report/entities/base/Cube.js.html +217 -0
  19. package/coverage/lcov-report/entities/base/CurveLine.js.html +166 -0
  20. package/coverage/lcov-report/entities/base/Cylinder.js.html +259 -0
  21. package/coverage/lcov-report/entities/base/Grid.js.html +190 -0
  22. package/coverage/lcov-report/entities/base/HelperSprite.js.html +163 -0
  23. package/coverage/lcov-report/entities/base/Label.js.html +373 -0
  24. package/coverage/lcov-report/entities/base/Line.js.html +334 -0
  25. package/coverage/lcov-report/entities/base/Plane.js.html +265 -0
  26. package/coverage/lcov-report/entities/base/Sphere.js.html +217 -0
  27. package/coverage/lcov-report/entities/base/Sprite.js.html +445 -0
  28. package/coverage/lcov-report/entities/base/index.html +326 -0
  29. package/coverage/lcov-report/entities/base/index.js.html +172 -0
  30. package/coverage/lcov-report/entities/camera.js.html +751 -0
  31. package/coverage/lcov-report/entities/constants.js.html +655 -0
  32. package/coverage/lcov-report/entities/index.html +176 -0
  33. package/coverage/lcov-report/entities/index.js.html +187 -0
  34. package/coverage/lcov-report/favicon.png +0 -0
  35. package/coverage/lcov-report/images/Images.js.html +724 -0
  36. package/coverage/lcov-report/images/index.html +116 -0
  37. package/coverage/lcov-report/index.html +266 -0
  38. package/coverage/lcov-report/lib/Color.js.html +187 -0
  39. package/coverage/lcov-report/lib/array.js.html +97 -0
  40. package/coverage/lcov-report/lib/colliders.js.html +217 -0
  41. package/coverage/lcov-report/lib/constants.js.html +1171 -0
  42. package/coverage/lcov-report/lib/dom.js.html +202 -0
  43. package/coverage/lcov-report/lib/easing.js.html +229 -0
  44. package/coverage/lcov-report/lib/features.js.html +826 -0
  45. package/coverage/lcov-report/lib/functions.js.html +130 -0
  46. package/coverage/lcov-report/lib/index.html +401 -0
  47. package/coverage/lcov-report/lib/location.js.html +127 -0
  48. package/coverage/lcov-report/lib/map.js.html +172 -0
  49. package/coverage/lcov-report/lib/math.js.html +511 -0
  50. package/coverage/lcov-report/lib/meshUtils.js.html +685 -0
  51. package/coverage/lcov-report/lib/messages.js.html +415 -0
  52. package/coverage/lcov-report/lib/network.js.html +136 -0
  53. package/coverage/lcov-report/lib/object.js.html +187 -0
  54. package/coverage/lcov-report/lib/palettes.js.html +259 -0
  55. package/coverage/lcov-report/lib/query.js.html +172 -0
  56. package/coverage/lcov-report/lib/strings.js.html +139 -0
  57. package/coverage/lcov-report/lib/url.js.html +85 -0
  58. package/coverage/lcov-report/lib/utils/assets.js.html +94 -0
  59. package/coverage/lcov-report/lib/utils/index.html +116 -0
  60. package/coverage/lcov-report/lib/uuid.js.html +112 -0
  61. package/coverage/lcov-report/models/Models.js.html +1489 -0
  62. package/coverage/lcov-report/models/SkeletonUtils.js.html +1879 -0
  63. package/coverage/lcov-report/models/index.html +131 -0
  64. package/coverage/lcov-report/physics/constants.js.html +307 -0
  65. package/coverage/lcov-report/physics/hitbox.js.html +235 -0
  66. package/coverage/lcov-report/physics/index.html +176 -0
  67. package/coverage/lcov-report/physics/index.js.html +1324 -0
  68. package/coverage/lcov-report/physics/messages.js.html +238 -0
  69. package/coverage/lcov-report/physics/utils.js.html +679 -0
  70. package/coverage/lcov-report/physics/worker/effects.js.html +325 -0
  71. package/coverage/lcov-report/physics/worker/elements.js.html +694 -0
  72. package/coverage/lcov-report/physics/worker/index.html +176 -0
  73. package/coverage/lcov-report/physics/worker/lib/dispatcher.js.html +160 -0
  74. package/coverage/lcov-report/physics/worker/lib/index.html +131 -0
  75. package/coverage/lcov-report/physics/worker/lib/math.js.html +109 -0
  76. package/coverage/lcov-report/physics/worker/player.js.html +301 -0
  77. package/coverage/lcov-report/physics/worker/vehicles.js.html +832 -0
  78. package/coverage/lcov-report/physics/worker/world.js.html +796 -0
  79. package/coverage/lcov-report/prettify.css +1 -0
  80. package/coverage/lcov-report/prettify.js +2 -0
  81. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  82. package/coverage/lcov-report/sorter.js +210 -0
  83. package/coverage/lcov.info +6368 -0
  84. package/dist/mage.js +8012 -9023
  85. package/eslint.config.js +73 -0
  86. package/jest.config.js +31 -0
  87. package/package.json +17 -5
@@ -0,0 +1,2740 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for entities/Entity.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">entities</a> Entity.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">20.05% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>74/369</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">6.91% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>17/246</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">17.79% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>21/118</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">21.66% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>73/337</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>
751
+ <a name='L686'></a><a href='#L686'>686</a>
752
+ <a name='L687'></a><a href='#L687'>687</a>
753
+ <a name='L688'></a><a href='#L688'>688</a>
754
+ <a name='L689'></a><a href='#L689'>689</a>
755
+ <a name='L690'></a><a href='#L690'>690</a>
756
+ <a name='L691'></a><a href='#L691'>691</a>
757
+ <a name='L692'></a><a href='#L692'>692</a>
758
+ <a name='L693'></a><a href='#L693'>693</a>
759
+ <a name='L694'></a><a href='#L694'>694</a>
760
+ <a name='L695'></a><a href='#L695'>695</a>
761
+ <a name='L696'></a><a href='#L696'>696</a>
762
+ <a name='L697'></a><a href='#L697'>697</a>
763
+ <a name='L698'></a><a href='#L698'>698</a>
764
+ <a name='L699'></a><a href='#L699'>699</a>
765
+ <a name='L700'></a><a href='#L700'>700</a>
766
+ <a name='L701'></a><a href='#L701'>701</a>
767
+ <a name='L702'></a><a href='#L702'>702</a>
768
+ <a name='L703'></a><a href='#L703'>703</a>
769
+ <a name='L704'></a><a href='#L704'>704</a>
770
+ <a name='L705'></a><a href='#L705'>705</a>
771
+ <a name='L706'></a><a href='#L706'>706</a>
772
+ <a name='L707'></a><a href='#L707'>707</a>
773
+ <a name='L708'></a><a href='#L708'>708</a>
774
+ <a name='L709'></a><a href='#L709'>709</a>
775
+ <a name='L710'></a><a href='#L710'>710</a>
776
+ <a name='L711'></a><a href='#L711'>711</a>
777
+ <a name='L712'></a><a href='#L712'>712</a>
778
+ <a name='L713'></a><a href='#L713'>713</a>
779
+ <a name='L714'></a><a href='#L714'>714</a>
780
+ <a name='L715'></a><a href='#L715'>715</a>
781
+ <a name='L716'></a><a href='#L716'>716</a>
782
+ <a name='L717'></a><a href='#L717'>717</a>
783
+ <a name='L718'></a><a href='#L718'>718</a>
784
+ <a name='L719'></a><a href='#L719'>719</a>
785
+ <a name='L720'></a><a href='#L720'>720</a>
786
+ <a name='L721'></a><a href='#L721'>721</a>
787
+ <a name='L722'></a><a href='#L722'>722</a>
788
+ <a name='L723'></a><a href='#L723'>723</a>
789
+ <a name='L724'></a><a href='#L724'>724</a>
790
+ <a name='L725'></a><a href='#L725'>725</a>
791
+ <a name='L726'></a><a href='#L726'>726</a>
792
+ <a name='L727'></a><a href='#L727'>727</a>
793
+ <a name='L728'></a><a href='#L728'>728</a>
794
+ <a name='L729'></a><a href='#L729'>729</a>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-neutral">&nbsp;</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-neutral">&nbsp;</span>
964
+ <span class="cline-any cline-neutral">&nbsp;</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-neutral">&nbsp;</span>
973
+ <span class="cline-any cline-neutral">&nbsp;</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-neutral">&nbsp;</span>
977
+ <span class="cline-any cline-neutral">&nbsp;</span>
978
+ <span class="cline-any cline-neutral">&nbsp;</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-neutral">&nbsp;</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-neutral">&nbsp;</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-yes">42x</span>
986
+ <span class="cline-any cline-yes">42x</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-yes">42x</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-neutral">&nbsp;</span>
991
+ <span class="cline-any cline-neutral">&nbsp;</span>
992
+ <span class="cline-any cline-neutral">&nbsp;</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-yes">42x</span>
996
+ <span class="cline-any cline-yes">42x</span>
997
+ <span class="cline-any cline-yes">42x</span>
998
+ <span class="cline-any cline-yes">42x</span>
999
+ <span class="cline-any cline-yes">42x</span>
1000
+ <span class="cline-any cline-yes">42x</span>
1001
+ <span class="cline-any cline-yes">42x</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-yes">42x</span>
1004
+ <span class="cline-any cline-yes">42x</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-yes">42x</span>
1007
+ <span class="cline-any cline-yes">42x</span>
1008
+ <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-yes">42x</span>
1011
+ <span class="cline-any cline-yes">2x</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-neutral">&nbsp;</span>
1018
+ <span class="cline-any cline-yes">1x</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-neutral">&nbsp;</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-yes">5x</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-neutral">&nbsp;</span>
1025
+ <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-yes">3x</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-neutral">&nbsp;</span>
1029
+ <span class="cline-any cline-neutral">&nbsp;</span>
1030
+ <span class="cline-any cline-yes">1x</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-neutral">&nbsp;</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-yes">1x</span>
1035
+ <span class="cline-any cline-yes">1x</span>
1036
+ <span class="cline-any cline-yes">1x</span>
1037
+ <span class="cline-any cline-yes">1x</span>
1038
+ <span class="cline-any cline-yes">1x</span>
1039
+ <span class="cline-any cline-yes">1x</span>
1040
+ <span class="cline-any cline-neutral">&nbsp;</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-neutral">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-no">&nbsp;</span>
1045
+ <span class="cline-any cline-no">&nbsp;</span>
1046
+ <span class="cline-any cline-no">&nbsp;</span>
1047
+ <span class="cline-any cline-no">&nbsp;</span>
1048
+ <span class="cline-any cline-no">&nbsp;</span>
1049
+ <span class="cline-any cline-no">&nbsp;</span>
1050
+ <span class="cline-any cline-no">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-no">&nbsp;</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-neutral">&nbsp;</span>
1057
+ <span class="cline-any cline-no">&nbsp;</span>
1058
+ <span class="cline-any cline-neutral">&nbsp;</span>
1059
+ <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-neutral">&nbsp;</span>
1061
+ <span class="cline-any cline-neutral">&nbsp;</span>
1062
+ <span class="cline-any cline-yes">3x</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-neutral">&nbsp;</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-yes">3x</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-neutral">&nbsp;</span>
1069
+ <span class="cline-any cline-yes">42x</span>
1070
+ <span class="cline-any cline-yes">2x</span>
1071
+ <span class="cline-any cline-yes">1x</span>
1072
+ <span class="cline-any cline-neutral">&nbsp;</span>
1073
+ <span class="cline-any cline-neutral">&nbsp;</span>
1074
+ <span class="cline-any cline-yes">1x</span>
1075
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-yes">2x</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-yes">2x</span>
1083
+ <span class="cline-any cline-neutral">&nbsp;</span>
1084
+ <span class="cline-any cline-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-neutral">&nbsp;</span>
1086
+ <span class="cline-any cline-yes">1x</span>
1087
+ <span class="cline-any cline-neutral">&nbsp;</span>
1088
+ <span class="cline-any cline-neutral">&nbsp;</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-yes">1x</span>
1091
+ <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-no">&nbsp;</span>
1095
+ <span class="cline-any cline-no">&nbsp;</span>
1096
+ <span class="cline-any cline-no">&nbsp;</span>
1097
+ <span class="cline-any cline-no">&nbsp;</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-no">&nbsp;</span>
1101
+ <span class="cline-any cline-no">&nbsp;</span>
1102
+ <span class="cline-any cline-no">&nbsp;</span>
1103
+ <span class="cline-any cline-no">&nbsp;</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-neutral">&nbsp;</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-no">&nbsp;</span>
1108
+ <span class="cline-any cline-no">&nbsp;</span>
1109
+ <span class="cline-any cline-neutral">&nbsp;</span>
1110
+ <span class="cline-any cline-neutral">&nbsp;</span>
1111
+ <span class="cline-any cline-neutral">&nbsp;</span>
1112
+ <span class="cline-any cline-no">&nbsp;</span>
1113
+ <span class="cline-any cline-no">&nbsp;</span>
1114
+ <span class="cline-any cline-neutral">&nbsp;</span>
1115
+ <span class="cline-any cline-no">&nbsp;</span>
1116
+ <span class="cline-any cline-neutral">&nbsp;</span>
1117
+ <span class="cline-any cline-neutral">&nbsp;</span>
1118
+ <span class="cline-any cline-no">&nbsp;</span>
1119
+ <span class="cline-any cline-no">&nbsp;</span>
1120
+ <span class="cline-any cline-neutral">&nbsp;</span>
1121
+ <span class="cline-any cline-neutral">&nbsp;</span>
1122
+ <span class="cline-any cline-neutral">&nbsp;</span>
1123
+ <span class="cline-any cline-neutral">&nbsp;</span>
1124
+ <span class="cline-any cline-no">&nbsp;</span>
1125
+ <span class="cline-any cline-neutral">&nbsp;</span>
1126
+ <span class="cline-any cline-no">&nbsp;</span>
1127
+ <span class="cline-any cline-no">&nbsp;</span>
1128
+ <span class="cline-any cline-no">&nbsp;</span>
1129
+ <span class="cline-any cline-neutral">&nbsp;</span>
1130
+ <span class="cline-any cline-neutral">&nbsp;</span>
1131
+ <span class="cline-any cline-no">&nbsp;</span>
1132
+ <span class="cline-any cline-neutral">&nbsp;</span>
1133
+ <span class="cline-any cline-neutral">&nbsp;</span>
1134
+ <span class="cline-any cline-neutral">&nbsp;</span>
1135
+ <span class="cline-any cline-no">&nbsp;</span>
1136
+ <span class="cline-any cline-neutral">&nbsp;</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
+ <span class="cline-any cline-neutral">&nbsp;</span>
1140
+ <span class="cline-any cline-no">&nbsp;</span>
1141
+ <span class="cline-any cline-neutral">&nbsp;</span>
1142
+ <span class="cline-any cline-neutral">&nbsp;</span>
1143
+ <span class="cline-any cline-neutral">&nbsp;</span>
1144
+ <span class="cline-any cline-neutral">&nbsp;</span>
1145
+ <span class="cline-any cline-no">&nbsp;</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1147
+ <span class="cline-any cline-no">&nbsp;</span>
1148
+ <span class="cline-any cline-no">&nbsp;</span>
1149
+ <span class="cline-any cline-neutral">&nbsp;</span>
1150
+ <span class="cline-any cline-no">&nbsp;</span>
1151
+ <span class="cline-any cline-neutral">&nbsp;</span>
1152
+ <span class="cline-any cline-no">&nbsp;</span>
1153
+ <span class="cline-any cline-neutral">&nbsp;</span>
1154
+ <span class="cline-any cline-neutral">&nbsp;</span>
1155
+ <span class="cline-any cline-neutral">&nbsp;</span>
1156
+ <span class="cline-any cline-neutral">&nbsp;</span>
1157
+ <span class="cline-any cline-neutral">&nbsp;</span>
1158
+ <span class="cline-any cline-no">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
+ <span class="cline-any cline-no">&nbsp;</span>
1161
+ <span class="cline-any cline-neutral">&nbsp;</span>
1162
+ <span class="cline-any cline-no">&nbsp;</span>
1163
+ <span class="cline-any cline-neutral">&nbsp;</span>
1164
+ <span class="cline-any cline-neutral">&nbsp;</span>
1165
+ <span class="cline-any cline-neutral">&nbsp;</span>
1166
+ <span class="cline-any cline-neutral">&nbsp;</span>
1167
+ <span class="cline-any cline-neutral">&nbsp;</span>
1168
+ <span class="cline-any cline-yes">2x</span>
1169
+ <span class="cline-any cline-neutral">&nbsp;</span>
1170
+ <span class="cline-any cline-neutral">&nbsp;</span>
1171
+ <span class="cline-any cline-neutral">&nbsp;</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-neutral">&nbsp;</span>
1174
+ <span class="cline-any cline-neutral">&nbsp;</span>
1175
+ <span class="cline-any cline-neutral">&nbsp;</span>
1176
+ <span class="cline-any cline-neutral">&nbsp;</span>
1177
+ <span class="cline-any cline-neutral">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-no">&nbsp;</span>
1180
+ <span class="cline-any cline-no">&nbsp;</span>
1181
+ <span class="cline-any cline-no">&nbsp;</span>
1182
+ <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-no">&nbsp;</span>
1184
+ <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-no">&nbsp;</span>
1186
+ <span class="cline-any cline-neutral">&nbsp;</span>
1187
+ <span class="cline-any cline-no">&nbsp;</span>
1188
+ <span class="cline-any cline-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-neutral">&nbsp;</span>
1190
+ <span class="cline-any cline-neutral">&nbsp;</span>
1191
+ <span class="cline-any cline-neutral">&nbsp;</span>
1192
+ <span class="cline-any cline-neutral">&nbsp;</span>
1193
+ <span class="cline-any cline-neutral">&nbsp;</span>
1194
+ <span class="cline-any cline-neutral">&nbsp;</span>
1195
+ <span class="cline-any cline-neutral">&nbsp;</span>
1196
+ <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span>
1199
+ <span class="cline-any cline-no">&nbsp;</span>
1200
+ <span class="cline-any cline-neutral">&nbsp;</span>
1201
+ <span class="cline-any cline-neutral">&nbsp;</span>
1202
+ <span class="cline-any cline-no">&nbsp;</span>
1203
+ <span class="cline-any cline-no">&nbsp;</span>
1204
+ <span class="cline-any cline-neutral">&nbsp;</span>
1205
+ <span class="cline-any cline-no">&nbsp;</span>
1206
+ <span class="cline-any cline-neutral">&nbsp;</span>
1207
+ <span class="cline-any cline-neutral">&nbsp;</span>
1208
+ <span class="cline-any cline-neutral">&nbsp;</span>
1209
+ <span class="cline-any cline-no">&nbsp;</span>
1210
+ <span class="cline-any cline-no">&nbsp;</span>
1211
+ <span class="cline-any cline-no">&nbsp;</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-neutral">&nbsp;</span>
1214
+ <span class="cline-any cline-no">&nbsp;</span>
1215
+ <span class="cline-any cline-neutral">&nbsp;</span>
1216
+ <span class="cline-any cline-no">&nbsp;</span>
1217
+ <span class="cline-any cline-no">&nbsp;</span>
1218
+ <span class="cline-any cline-no">&nbsp;</span>
1219
+ <span class="cline-any cline-neutral">&nbsp;</span>
1220
+ <span class="cline-any cline-neutral">&nbsp;</span>
1221
+ <span class="cline-any cline-no">&nbsp;</span>
1222
+ <span class="cline-any cline-no">&nbsp;</span>
1223
+ <span class="cline-any cline-neutral">&nbsp;</span>
1224
+ <span class="cline-any cline-neutral">&nbsp;</span>
1225
+ <span class="cline-any cline-no">&nbsp;</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-neutral">&nbsp;</span>
1228
+ <span class="cline-any cline-neutral">&nbsp;</span>
1229
+ <span class="cline-any cline-no">&nbsp;</span>
1230
+ <span class="cline-any cline-no">&nbsp;</span>
1231
+ <span class="cline-any cline-neutral">&nbsp;</span>
1232
+ <span class="cline-any cline-no">&nbsp;</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-neutral">&nbsp;</span>
1236
+ <span class="cline-any cline-yes">42x</span>
1237
+ <span class="cline-any cline-yes">100x</span>
1238
+ <span class="cline-any cline-neutral">&nbsp;</span>
1239
+ <span class="cline-any cline-yes">57x</span>
1240
+ <span class="cline-any cline-yes">56x</span>
1241
+ <span class="cline-any cline-yes">56x</span>
1242
+ <span class="cline-any cline-neutral">&nbsp;</span>
1243
+ <span class="cline-any cline-yes">1x</span>
1244
+ <span class="cline-any cline-yes">1x</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-neutral">&nbsp;</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-neutral">&nbsp;</span>
1249
+ <span class="cline-any cline-yes">44x</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-neutral">&nbsp;</span>
1252
+ <span class="cline-any cline-neutral">&nbsp;</span>
1253
+ <span class="cline-any cline-yes">3x</span>
1254
+ <span class="cline-any cline-yes">1x</span>
1255
+ <span class="cline-any cline-yes">1x</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-yes">2x</span>
1259
+ <span class="cline-any cline-yes">1x</span>
1260
+ <span class="cline-any cline-yes">1x</span>
1261
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-yes">1x</span>
1263
+ <span class="cline-any cline-yes">1x</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-neutral">&nbsp;</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-yes">1x</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-yes">73x</span>
1273
+ <span class="cline-any cline-neutral">&nbsp;</span>
1274
+ <span class="cline-any cline-neutral">&nbsp;</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-yes">2x</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-no">&nbsp;</span>
1281
+ <span class="cline-any cline-no">&nbsp;</span>
1282
+ <span class="cline-any cline-no">&nbsp;</span>
1283
+ <span class="cline-any cline-no">&nbsp;</span>
1284
+ <span class="cline-any cline-no">&nbsp;</span>
1285
+ <span class="cline-any cline-no">&nbsp;</span>
1286
+ <span class="cline-any cline-no">&nbsp;</span>
1287
+ <span class="cline-any cline-neutral">&nbsp;</span>
1288
+ <span class="cline-any cline-neutral">&nbsp;</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-neutral">&nbsp;</span>
1291
+ <span class="cline-any cline-neutral">&nbsp;</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-no">&nbsp;</span>
1294
+ <span class="cline-any cline-no">&nbsp;</span>
1295
+ <span class="cline-any cline-no">&nbsp;</span>
1296
+ <span class="cline-any cline-no">&nbsp;</span>
1297
+ <span class="cline-any cline-no">&nbsp;</span>
1298
+ <span class="cline-any cline-neutral">&nbsp;</span>
1299
+ <span class="cline-any cline-neutral">&nbsp;</span>
1300
+ <span class="cline-any cline-neutral">&nbsp;</span>
1301
+ <span class="cline-any cline-neutral">&nbsp;</span>
1302
+ <span class="cline-any cline-neutral">&nbsp;</span>
1303
+ <span class="cline-any cline-neutral">&nbsp;</span>
1304
+ <span class="cline-any cline-no">&nbsp;</span>
1305
+ <span class="cline-any cline-no">&nbsp;</span>
1306
+ <span class="cline-any cline-no">&nbsp;</span>
1307
+ <span class="cline-any cline-no">&nbsp;</span>
1308
+ <span class="cline-any cline-neutral">&nbsp;</span>
1309
+ <span class="cline-any cline-neutral">&nbsp;</span>
1310
+ <span class="cline-any cline-neutral">&nbsp;</span>
1311
+ <span class="cline-any cline-neutral">&nbsp;</span>
1312
+ <span class="cline-any cline-neutral">&nbsp;</span>
1313
+ <span class="cline-any cline-neutral">&nbsp;</span>
1314
+ <span class="cline-any cline-no">&nbsp;</span>
1315
+ <span class="cline-any cline-no">&nbsp;</span>
1316
+ <span class="cline-any cline-no">&nbsp;</span>
1317
+ <span class="cline-any cline-no">&nbsp;</span>
1318
+ <span class="cline-any cline-neutral">&nbsp;</span>
1319
+ <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-neutral">&nbsp;</span>
1321
+ <span class="cline-any cline-neutral">&nbsp;</span>
1322
+ <span class="cline-any cline-neutral">&nbsp;</span>
1323
+ <span class="cline-any cline-neutral">&nbsp;</span>
1324
+ <span class="cline-any cline-no">&nbsp;</span>
1325
+ <span class="cline-any cline-no">&nbsp;</span>
1326
+ <span class="cline-any cline-no">&nbsp;</span>
1327
+ <span class="cline-any cline-neutral">&nbsp;</span>
1328
+ <span class="cline-any cline-neutral">&nbsp;</span>
1329
+ <span class="cline-any cline-neutral">&nbsp;</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-no">&nbsp;</span>
1332
+ <span class="cline-any cline-no">&nbsp;</span>
1333
+ <span class="cline-any cline-no">&nbsp;</span>
1334
+ <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-no">&nbsp;</span>
1338
+ <span class="cline-any cline-no">&nbsp;</span>
1339
+ <span class="cline-any cline-no">&nbsp;</span>
1340
+ <span class="cline-any cline-neutral">&nbsp;</span>
1341
+ <span class="cline-any cline-no">&nbsp;</span>
1342
+ <span class="cline-any cline-no">&nbsp;</span>
1343
+ <span class="cline-any cline-neutral">&nbsp;</span>
1344
+ <span class="cline-any cline-neutral">&nbsp;</span>
1345
+ <span class="cline-any cline-no">&nbsp;</span>
1346
+ <span class="cline-any cline-neutral">&nbsp;</span>
1347
+ <span class="cline-any cline-neutral">&nbsp;</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-no">&nbsp;</span>
1350
+ <span class="cline-any cline-neutral">&nbsp;</span>
1351
+ <span class="cline-any cline-no">&nbsp;</span>
1352
+ <span class="cline-any cline-neutral">&nbsp;</span>
1353
+ <span class="cline-any cline-neutral">&nbsp;</span>
1354
+ <span class="cline-any cline-neutral">&nbsp;</span>
1355
+ <span class="cline-any cline-neutral">&nbsp;</span>
1356
+ <span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-neutral">&nbsp;</span>
1359
+ <span class="cline-any cline-neutral">&nbsp;</span>
1360
+ <span class="cline-any cline-neutral">&nbsp;</span>
1361
+ <span class="cline-any cline-neutral">&nbsp;</span>
1362
+ <span class="cline-any cline-neutral">&nbsp;</span>
1363
+ <span class="cline-any cline-neutral">&nbsp;</span>
1364
+ <span class="cline-any cline-yes">42x</span>
1365
+ <span class="cline-any cline-neutral">&nbsp;</span>
1366
+ <span class="cline-any cline-neutral">&nbsp;</span>
1367
+ <span class="cline-any cline-no">&nbsp;</span>
1368
+ <span class="cline-any cline-no">&nbsp;</span>
1369
+ <span class="cline-any cline-neutral">&nbsp;</span>
1370
+ <span class="cline-any cline-neutral">&nbsp;</span>
1371
+ <span class="cline-any cline-neutral">&nbsp;</span>
1372
+ <span class="cline-any cline-neutral">&nbsp;</span>
1373
+ <span class="cline-any cline-neutral">&nbsp;</span>
1374
+ <span class="cline-any cline-no">&nbsp;</span>
1375
+ <span class="cline-any cline-no">&nbsp;</span>
1376
+ <span class="cline-any cline-neutral">&nbsp;</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-neutral">&nbsp;</span>
1380
+ <span class="cline-any cline-no">&nbsp;</span>
1381
+ <span class="cline-any cline-no">&nbsp;</span>
1382
+ <span class="cline-any cline-neutral">&nbsp;</span>
1383
+ <span class="cline-any cline-no">&nbsp;</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-neutral">&nbsp;</span>
1386
+ <span class="cline-any cline-neutral">&nbsp;</span>
1387
+ <span class="cline-any cline-neutral">&nbsp;</span>
1388
+ <span class="cline-any cline-no">&nbsp;</span>
1389
+ <span class="cline-any cline-no">&nbsp;</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-neutral">&nbsp;</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-neutral">&nbsp;</span>
1394
+ <span class="cline-any cline-no">&nbsp;</span>
1395
+ <span class="cline-any cline-no">&nbsp;</span>
1396
+ <span class="cline-any cline-neutral">&nbsp;</span>
1397
+ <span class="cline-any cline-no">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-neutral">&nbsp;</span>
1400
+ <span class="cline-any cline-neutral">&nbsp;</span>
1401
+ <span class="cline-any cline-neutral">&nbsp;</span>
1402
+ <span class="cline-any cline-neutral">&nbsp;</span>
1403
+ <span class="cline-any cline-neutral">&nbsp;</span>
1404
+ <span class="cline-any cline-neutral">&nbsp;</span>
1405
+ <span class="cline-any cline-neutral">&nbsp;</span>
1406
+ <span class="cline-any cline-neutral">&nbsp;</span>
1407
+ <span class="cline-any cline-neutral">&nbsp;</span>
1408
+ <span class="cline-any cline-neutral">&nbsp;</span>
1409
+ <span class="cline-any cline-neutral">&nbsp;</span>
1410
+ <span class="cline-any cline-neutral">&nbsp;</span>
1411
+ <span class="cline-any cline-neutral">&nbsp;</span>
1412
+ <span class="cline-any cline-no">&nbsp;</span>
1413
+ <span class="cline-any cline-no">&nbsp;</span>
1414
+ <span class="cline-any cline-no">&nbsp;</span>
1415
+ <span class="cline-any cline-neutral">&nbsp;</span>
1416
+ <span class="cline-any cline-neutral">&nbsp;</span>
1417
+ <span class="cline-any cline-no">&nbsp;</span>
1418
+ <span class="cline-any cline-no">&nbsp;</span>
1419
+ <span class="cline-any cline-neutral">&nbsp;</span>
1420
+ <span class="cline-any cline-neutral">&nbsp;</span>
1421
+ <span class="cline-any cline-yes">42x</span>
1422
+ <span class="cline-any cline-neutral">&nbsp;</span>
1423
+ <span class="cline-any cline-yes">42x</span>
1424
+ <span class="cline-any cline-neutral">&nbsp;</span>
1425
+ <span class="cline-any cline-yes">42x</span>
1426
+ <span class="cline-any cline-no">&nbsp;</span>
1427
+ <span class="cline-any cline-no">&nbsp;</span>
1428
+ <span class="cline-any cline-neutral">&nbsp;</span>
1429
+ <span class="cline-any cline-neutral">&nbsp;</span>
1430
+ <span class="cline-any cline-neutral">&nbsp;</span>
1431
+ <span class="cline-any cline-no">&nbsp;</span>
1432
+ <span class="cline-any cline-neutral">&nbsp;</span>
1433
+ <span class="cline-any cline-neutral">&nbsp;</span>
1434
+ <span class="cline-any cline-neutral">&nbsp;</span>
1435
+ <span class="cline-any cline-no">&nbsp;</span>
1436
+ <span class="cline-any cline-no">&nbsp;</span>
1437
+ <span class="cline-any cline-neutral">&nbsp;</span>
1438
+ <span class="cline-any cline-no">&nbsp;</span>
1439
+ <span class="cline-any cline-no">&nbsp;</span>
1440
+ <span class="cline-any cline-neutral">&nbsp;</span>
1441
+ <span class="cline-any cline-neutral">&nbsp;</span>
1442
+ <span class="cline-any cline-neutral">&nbsp;</span>
1443
+ <span class="cline-any cline-neutral">&nbsp;</span>
1444
+ <span class="cline-any cline-neutral">&nbsp;</span>
1445
+ <span class="cline-any cline-neutral">&nbsp;</span>
1446
+ <span class="cline-any cline-no">&nbsp;</span>
1447
+ <span class="cline-any cline-no">&nbsp;</span>
1448
+ <span class="cline-any cline-neutral">&nbsp;</span>
1449
+ <span class="cline-any cline-neutral">&nbsp;</span>
1450
+ <span class="cline-any cline-neutral">&nbsp;</span>
1451
+ <span class="cline-any cline-neutral">&nbsp;</span>
1452
+ <span class="cline-any cline-no">&nbsp;</span>
1453
+ <span class="cline-any cline-neutral">&nbsp;</span>
1454
+ <span class="cline-any cline-neutral">&nbsp;</span>
1455
+ <span class="cline-any cline-neutral">&nbsp;</span>
1456
+ <span class="cline-any cline-neutral">&nbsp;</span>
1457
+ <span class="cline-any cline-neutral">&nbsp;</span>
1458
+ <span class="cline-any cline-no">&nbsp;</span>
1459
+ <span class="cline-any cline-no">&nbsp;</span>
1460
+ <span class="cline-any cline-neutral">&nbsp;</span>
1461
+ <span class="cline-any cline-neutral">&nbsp;</span>
1462
+ <span class="cline-any cline-no">&nbsp;</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-neutral">&nbsp;</span>
1465
+ <span class="cline-any cline-no">&nbsp;</span>
1466
+ <span class="cline-any cline-neutral">&nbsp;</span>
1467
+ <span class="cline-any cline-neutral">&nbsp;</span>
1468
+ <span class="cline-any cline-yes">42x</span>
1469
+ <span class="cline-any cline-no">&nbsp;</span>
1470
+ <span class="cline-any cline-neutral">&nbsp;</span>
1471
+ <span class="cline-any cline-no">&nbsp;</span>
1472
+ <span class="cline-any cline-no">&nbsp;</span>
1473
+ <span class="cline-any cline-neutral">&nbsp;</span>
1474
+ <span class="cline-any cline-neutral">&nbsp;</span>
1475
+ <span class="cline-any cline-neutral">&nbsp;</span>
1476
+ <span class="cline-any cline-no">&nbsp;</span>
1477
+ <span class="cline-any cline-no">&nbsp;</span>
1478
+ <span class="cline-any cline-no">&nbsp;</span>
1479
+ <span class="cline-any cline-neutral">&nbsp;</span>
1480
+ <span class="cline-any cline-no">&nbsp;</span>
1481
+ <span class="cline-any cline-no">&nbsp;</span>
1482
+ <span class="cline-any cline-no">&nbsp;</span>
1483
+ <span class="cline-any cline-no">&nbsp;</span>
1484
+ <span class="cline-any cline-neutral">&nbsp;</span>
1485
+ <span class="cline-any cline-no">&nbsp;</span>
1486
+ <span class="cline-any cline-neutral">&nbsp;</span>
1487
+ <span class="cline-any cline-neutral">&nbsp;</span>
1488
+ <span class="cline-any cline-no">&nbsp;</span>
1489
+ <span class="cline-any cline-neutral">&nbsp;</span>
1490
+ <span class="cline-any cline-no">&nbsp;</span>
1491
+ <span class="cline-any cline-neutral">&nbsp;</span>
1492
+ <span class="cline-any cline-neutral">&nbsp;</span>
1493
+ <span class="cline-any cline-neutral">&nbsp;</span>
1494
+ <span class="cline-any cline-neutral">&nbsp;</span>
1495
+ <span class="cline-any cline-no">&nbsp;</span>
1496
+ <span class="cline-any cline-neutral">&nbsp;</span>
1497
+ <span class="cline-any cline-neutral">&nbsp;</span>
1498
+ <span class="cline-any cline-neutral">&nbsp;</span>
1499
+ <span class="cline-any cline-no">&nbsp;</span>
1500
+ <span class="cline-any cline-neutral">&nbsp;</span>
1501
+ <span class="cline-any cline-neutral">&nbsp;</span>
1502
+ <span class="cline-any cline-neutral">&nbsp;</span>
1503
+ <span class="cline-any cline-no">&nbsp;</span>
1504
+ <span class="cline-any cline-no">&nbsp;</span>
1505
+ <span class="cline-any cline-neutral">&nbsp;</span>
1506
+ <span class="cline-any cline-no">&nbsp;</span>
1507
+ <span class="cline-any cline-no">&nbsp;</span>
1508
+ <span class="cline-any cline-neutral">&nbsp;</span>
1509
+ <span class="cline-any cline-neutral">&nbsp;</span>
1510
+ <span class="cline-any cline-neutral">&nbsp;</span>
1511
+ <span class="cline-any cline-neutral">&nbsp;</span>
1512
+ <span class="cline-any cline-no">&nbsp;</span>
1513
+ <span class="cline-any cline-neutral">&nbsp;</span>
1514
+ <span class="cline-any cline-neutral">&nbsp;</span>
1515
+ <span class="cline-any cline-neutral">&nbsp;</span>
1516
+ <span class="cline-any cline-no">&nbsp;</span>
1517
+ <span class="cline-any cline-no">&nbsp;</span>
1518
+ <span class="cline-any cline-neutral">&nbsp;</span>
1519
+ <span class="cline-any cline-no">&nbsp;</span>
1520
+ <span class="cline-any cline-no">&nbsp;</span>
1521
+ <span class="cline-any cline-neutral">&nbsp;</span>
1522
+ <span class="cline-any cline-neutral">&nbsp;</span>
1523
+ <span class="cline-any cline-neutral">&nbsp;</span>
1524
+ <span class="cline-any cline-neutral">&nbsp;</span>
1525
+ <span class="cline-any cline-no">&nbsp;</span>
1526
+ <span class="cline-any cline-neutral">&nbsp;</span>
1527
+ <span class="cline-any cline-neutral">&nbsp;</span>
1528
+ <span class="cline-any cline-yes">42x</span>
1529
+ <span class="cline-any cline-yes">42x</span>
1530
+ <span class="cline-any cline-yes">42x</span>
1531
+ <span class="cline-any cline-yes">42x</span>
1532
+ <span class="cline-any cline-yes">42x</span>
1533
+ <span class="cline-any cline-yes">42x</span>
1534
+ <span class="cline-any cline-yes">42x</span>
1535
+ <span class="cline-any cline-yes">42x</span>
1536
+ <span class="cline-any cline-no">&nbsp;</span>
1537
+ <span class="cline-any cline-yes">42x</span>
1538
+ <span class="cline-any cline-yes">42x</span>
1539
+ <span class="cline-any cline-neutral">&nbsp;</span>
1540
+ <span class="cline-any cline-neutral">&nbsp;</span>
1541
+ <span class="cline-any cline-no">&nbsp;</span>
1542
+ <span class="cline-any cline-neutral">&nbsp;</span>
1543
+ <span class="cline-any cline-neutral">&nbsp;</span>
1544
+ <span class="cline-any cline-neutral">&nbsp;</span>
1545
+ <span class="cline-any cline-neutral">&nbsp;</span>
1546
+ <span class="cline-any cline-neutral">&nbsp;</span>
1547
+ <span class="cline-any cline-neutral">&nbsp;</span>
1548
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
+ <span class="cline-any cline-no">&nbsp;</span>
1550
+ <span class="cline-any cline-no">&nbsp;</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-neutral">&nbsp;</span>
1554
+ <span class="cline-any cline-neutral">&nbsp;</span>
1555
+ <span class="cline-any cline-neutral">&nbsp;</span>
1556
+ <span class="cline-any cline-no">&nbsp;</span>
1557
+ <span class="cline-any cline-no">&nbsp;</span>
1558
+ <span class="cline-any cline-no">&nbsp;</span>
1559
+ <span class="cline-any cline-neutral">&nbsp;</span>
1560
+ <span class="cline-any cline-no">&nbsp;</span>
1561
+ <span class="cline-any cline-neutral">&nbsp;</span>
1562
+ <span class="cline-any cline-neutral">&nbsp;</span>
1563
+ <span class="cline-any cline-no">&nbsp;</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-neutral">&nbsp;</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-no">&nbsp;</span>
1569
+ <span class="cline-any cline-no">&nbsp;</span>
1570
+ <span class="cline-any cline-neutral">&nbsp;</span>
1571
+ <span class="cline-any cline-neutral">&nbsp;</span>
1572
+ <span class="cline-any cline-neutral">&nbsp;</span>
1573
+ <span class="cline-any cline-yes">42x</span>
1574
+ <span class="cline-any cline-neutral">&nbsp;</span>
1575
+ <span class="cline-any cline-no">&nbsp;</span>
1576
+ <span class="cline-any cline-no">&nbsp;</span>
1577
+ <span class="cline-any cline-no">&nbsp;</span>
1578
+ <span class="cline-any cline-no">&nbsp;</span>
1579
+ <span class="cline-any cline-neutral">&nbsp;</span>
1580
+ <span class="cline-any cline-no">&nbsp;</span>
1581
+ <span class="cline-any cline-neutral">&nbsp;</span>
1582
+ <span class="cline-any cline-neutral">&nbsp;</span>
1583
+ <span class="cline-any cline-no">&nbsp;</span>
1584
+ <span class="cline-any cline-no">&nbsp;</span>
1585
+ <span class="cline-any cline-no">&nbsp;</span>
1586
+ <span class="cline-any cline-no">&nbsp;</span>
1587
+ <span class="cline-any cline-neutral">&nbsp;</span>
1588
+ <span class="cline-any cline-neutral">&nbsp;</span>
1589
+ <span class="cline-any cline-neutral">&nbsp;</span>
1590
+ <span class="cline-any cline-neutral">&nbsp;</span>
1591
+ <span class="cline-any cline-neutral">&nbsp;</span>
1592
+ <span class="cline-any cline-no">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-neutral">&nbsp;</span>
1595
+ <span class="cline-any cline-neutral">&nbsp;</span>
1596
+ <span class="cline-any cline-no">&nbsp;</span>
1597
+ <span class="cline-any cline-no">&nbsp;</span>
1598
+ <span class="cline-any cline-no">&nbsp;</span>
1599
+ <span class="cline-any cline-neutral">&nbsp;</span>
1600
+ <span class="cline-any cline-neutral">&nbsp;</span>
1601
+ <span class="cline-any cline-neutral">&nbsp;</span>
1602
+ <span class="cline-any cline-neutral">&nbsp;</span>
1603
+ <span class="cline-any cline-neutral">&nbsp;</span>
1604
+ <span class="cline-any cline-neutral">&nbsp;</span>
1605
+ <span class="cline-any cline-neutral">&nbsp;</span>
1606
+ <span class="cline-any cline-no">&nbsp;</span>
1607
+ <span class="cline-any cline-no">&nbsp;</span>
1608
+ <span class="cline-any cline-no">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-no">&nbsp;</span>
1611
+ <span class="cline-any cline-neutral">&nbsp;</span>
1612
+ <span class="cline-any cline-neutral">&nbsp;</span>
1613
+ <span class="cline-any cline-no">&nbsp;</span>
1614
+ <span class="cline-any cline-neutral">&nbsp;</span>
1615
+ <span class="cline-any cline-neutral">&nbsp;</span>
1616
+ <span class="cline-any cline-neutral">&nbsp;</span>
1617
+ <span class="cline-any cline-no">&nbsp;</span>
1618
+ <span class="cline-any cline-no">&nbsp;</span>
1619
+ <span class="cline-any cline-neutral">&nbsp;</span>
1620
+ <span class="cline-any cline-no">&nbsp;</span>
1621
+ <span class="cline-any cline-neutral">&nbsp;</span>
1622
+ <span class="cline-any cline-neutral">&nbsp;</span>
1623
+ <span class="cline-any cline-neutral">&nbsp;</span>
1624
+ <span class="cline-any cline-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-neutral">&nbsp;</span>
1626
+ <span class="cline-any cline-neutral">&nbsp;</span>
1627
+ <span class="cline-any cline-no">&nbsp;</span>
1628
+ <span class="cline-any cline-neutral">&nbsp;</span>
1629
+ <span class="cline-any cline-neutral">&nbsp;</span>
1630
+ <span class="cline-any cline-neutral">&nbsp;</span>
1631
+ <span class="cline-any cline-no">&nbsp;</span>
1632
+ <span class="cline-any cline-no">&nbsp;</span>
1633
+ <span class="cline-any cline-no">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-neutral">&nbsp;</span>
1636
+ <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-neutral">&nbsp;</span>
1639
+ <span class="cline-any cline-neutral">&nbsp;</span>
1640
+ <span class="cline-any cline-neutral">&nbsp;</span>
1641
+ <span class="cline-any cline-no">&nbsp;</span>
1642
+ <span class="cline-any cline-no">&nbsp;</span>
1643
+ <span class="cline-any cline-no">&nbsp;</span>
1644
+ <span class="cline-any cline-neutral">&nbsp;</span>
1645
+ <span class="cline-any cline-no">&nbsp;</span>
1646
+ <span class="cline-any cline-neutral">&nbsp;</span>
1647
+ <span class="cline-any cline-neutral">&nbsp;</span>
1648
+ <span class="cline-any cline-no">&nbsp;</span>
1649
+ <span class="cline-any cline-neutral">&nbsp;</span>
1650
+ <span class="cline-any cline-neutral">&nbsp;</span>
1651
+ <span class="cline-any cline-neutral">&nbsp;</span>
1652
+ <span class="cline-any cline-neutral">&nbsp;</span>
1653
+ <span class="cline-any cline-no">&nbsp;</span>
1654
+ <span class="cline-any cline-no">&nbsp;</span>
1655
+ <span class="cline-any cline-no">&nbsp;</span>
1656
+ <span class="cline-any cline-neutral">&nbsp;</span>
1657
+ <span class="cline-any cline-no">&nbsp;</span>
1658
+ <span class="cline-any cline-neutral">&nbsp;</span>
1659
+ <span class="cline-any cline-neutral">&nbsp;</span>
1660
+ <span class="cline-any cline-neutral">&nbsp;</span>
1661
+ <span class="cline-any cline-neutral">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span>
1663
+ <span class="cline-any cline-neutral">&nbsp;</span>
1664
+ <span class="cline-any cline-neutral">&nbsp;</span>
1665
+ <span class="cline-any cline-no">&nbsp;</span>
1666
+ <span class="cline-any cline-no">&nbsp;</span>
1667
+ <span class="cline-any cline-no">&nbsp;</span>
1668
+ <span class="cline-any cline-neutral">&nbsp;</span>
1669
+ <span class="cline-any cline-neutral">&nbsp;</span>
1670
+ <span class="cline-any cline-no">&nbsp;</span>
1671
+ <span class="cline-any cline-no">&nbsp;</span>
1672
+ <span class="cline-any cline-no">&nbsp;</span>
1673
+ <span class="cline-any cline-no">&nbsp;</span>
1674
+ <span class="cline-any cline-neutral">&nbsp;</span>
1675
+ <span class="cline-any cline-neutral">&nbsp;</span>
1676
+ <span class="cline-any cline-neutral">&nbsp;</span>
1677
+ <span class="cline-any cline-neutral">&nbsp;</span>
1678
+ <span class="cline-any cline-neutral">&nbsp;</span>
1679
+ <span class="cline-any cline-no">&nbsp;</span>
1680
+ <span class="cline-any cline-no">&nbsp;</span>
1681
+ <span class="cline-any cline-no">&nbsp;</span>
1682
+ <span class="cline-any cline-no">&nbsp;</span>
1683
+ <span class="cline-any cline-neutral">&nbsp;</span>
1684
+ <span class="cline-any cline-neutral">&nbsp;</span>
1685
+ <span class="cline-any cline-no">&nbsp;</span>
1686
+ <span class="cline-any cline-neutral">&nbsp;</span>
1687
+ <span class="cline-any cline-neutral">&nbsp;</span>
1688
+ <span class="cline-any cline-neutral">&nbsp;</span>
1689
+ <span class="cline-any cline-neutral">&nbsp;</span>
1690
+ <span class="cline-any cline-no">&nbsp;</span>
1691
+ <span class="cline-any cline-no">&nbsp;</span>
1692
+ <span class="cline-any cline-no">&nbsp;</span>
1693
+ <span class="cline-any cline-neutral">&nbsp;</span>
1694
+ <span class="cline-any cline-no">&nbsp;</span>
1695
+ <span class="cline-any cline-neutral">&nbsp;</span>
1696
+ <span class="cline-any cline-neutral">&nbsp;</span>
1697
+ <span class="cline-any cline-neutral">&nbsp;</span>
1698
+ <span class="cline-any cline-no">&nbsp;</span>
1699
+ <span class="cline-any cline-no">&nbsp;</span>
1700
+ <span class="cline-any cline-no">&nbsp;</span>
1701
+ <span class="cline-any cline-neutral">&nbsp;</span>
1702
+ <span class="cline-any cline-no">&nbsp;</span>
1703
+ <span class="cline-any cline-neutral">&nbsp;</span>
1704
+ <span class="cline-any cline-neutral">&nbsp;</span>
1705
+ <span class="cline-any cline-neutral">&nbsp;</span>
1706
+ <span class="cline-any cline-no">&nbsp;</span>
1707
+ <span class="cline-any cline-no">&nbsp;</span>
1708
+ <span class="cline-any cline-no">&nbsp;</span>
1709
+ <span class="cline-any cline-neutral">&nbsp;</span>
1710
+ <span class="cline-any cline-no">&nbsp;</span>
1711
+ <span class="cline-any cline-neutral">&nbsp;</span>
1712
+ <span class="cline-any cline-neutral">&nbsp;</span>
1713
+ <span class="cline-any cline-yes">42x</span>
1714
+ <span class="cline-any cline-no">&nbsp;</span>
1715
+ <span class="cline-any cline-no">&nbsp;</span>
1716
+ <span class="cline-any cline-no">&nbsp;</span>
1717
+ <span class="cline-any cline-neutral">&nbsp;</span>
1718
+ <span class="cline-any cline-neutral">&nbsp;</span>
1719
+ <span class="cline-any cline-neutral">&nbsp;</span>
1720
+ <span class="cline-any cline-neutral">&nbsp;</span>
1721
+ <span class="cline-any cline-no">&nbsp;</span>
1722
+ <span class="cline-any cline-no">&nbsp;</span>
1723
+ <span class="cline-any cline-no">&nbsp;</span>
1724
+ <span class="cline-any cline-no">&nbsp;</span>
1725
+ <span class="cline-any cline-no">&nbsp;</span>
1726
+ <span class="cline-any cline-neutral">&nbsp;</span>
1727
+ <span class="cline-any cline-neutral">&nbsp;</span>
1728
+ <span class="cline-any cline-neutral">&nbsp;</span>
1729
+ <span class="cline-any cline-neutral">&nbsp;</span>
1730
+ <span class="cline-any cline-neutral">&nbsp;</span>
1731
+ <span class="cline-any cline-neutral">&nbsp;</span>
1732
+ <span class="cline-any cline-no">&nbsp;</span>
1733
+ <span class="cline-any cline-neutral">&nbsp;</span>
1734
+ <span class="cline-any cline-neutral">&nbsp;</span>
1735
+ <span class="cline-any cline-neutral">&nbsp;</span>
1736
+ <span class="cline-any cline-no">&nbsp;</span>
1737
+ <span class="cline-any cline-neutral">&nbsp;</span>
1738
+ <span class="cline-any cline-neutral">&nbsp;</span>
1739
+ <span class="cline-any cline-neutral">&nbsp;</span>
1740
+ <span class="cline-any cline-no">&nbsp;</span>
1741
+ <span class="cline-any cline-neutral">&nbsp;</span>
1742
+ <span class="cline-any cline-neutral">&nbsp;</span>
1743
+ <span class="cline-any cline-neutral">&nbsp;</span>
1744
+ <span class="cline-any cline-no">&nbsp;</span>
1745
+ <span class="cline-any cline-neutral">&nbsp;</span>
1746
+ <span class="cline-any cline-neutral">&nbsp;</span>
1747
+ <span class="cline-any cline-neutral">&nbsp;</span>
1748
+ <span class="cline-any cline-no">&nbsp;</span>
1749
+ <span class="cline-any cline-no">&nbsp;</span>
1750
+ <span class="cline-any cline-neutral">&nbsp;</span>
1751
+ <span class="cline-any cline-no">&nbsp;</span>
1752
+ <span class="cline-any cline-neutral">&nbsp;</span>
1753
+ <span class="cline-any cline-neutral">&nbsp;</span>
1754
+ <span class="cline-any cline-neutral">&nbsp;</span>
1755
+ <span class="cline-any cline-neutral">&nbsp;</span>
1756
+ <span class="cline-any cline-no">&nbsp;</span>
1757
+ <span class="cline-any cline-neutral">&nbsp;</span>
1758
+ <span class="cline-any cline-neutral">&nbsp;</span>
1759
+ <span class="cline-any cline-neutral">&nbsp;</span>
1760
+ <span class="cline-any cline-no">&nbsp;</span>
1761
+ <span class="cline-any cline-neutral">&nbsp;</span>
1762
+ <span class="cline-any cline-neutral">&nbsp;</span>
1763
+ <span class="cline-any cline-neutral">&nbsp;</span>
1764
+ <span class="cline-any cline-no">&nbsp;</span>
1765
+ <span class="cline-any cline-no">&nbsp;</span>
1766
+ <span class="cline-any cline-no">&nbsp;</span>
1767
+ <span class="cline-any cline-neutral">&nbsp;</span>
1768
+ <span class="cline-any cline-no">&nbsp;</span>
1769
+ <span class="cline-any cline-neutral">&nbsp;</span>
1770
+ <span class="cline-any cline-neutral">&nbsp;</span>
1771
+ <span class="cline-any cline-no">&nbsp;</span>
1772
+ <span class="cline-any cline-neutral">&nbsp;</span>
1773
+ <span class="cline-any cline-neutral">&nbsp;</span>
1774
+ <span class="cline-any cline-neutral">&nbsp;</span>
1775
+ <span class="cline-any cline-neutral">&nbsp;</span>
1776
+ <span class="cline-any cline-no">&nbsp;</span>
1777
+ <span class="cline-any cline-no">&nbsp;</span>
1778
+ <span class="cline-any cline-no">&nbsp;</span>
1779
+ <span class="cline-any cline-neutral">&nbsp;</span>
1780
+ <span class="cline-any cline-neutral">&nbsp;</span>
1781
+ <span class="cline-any cline-no">&nbsp;</span>
1782
+ <span class="cline-any cline-neutral">&nbsp;</span>
1783
+ <span class="cline-any cline-neutral">&nbsp;</span>
1784
+ <span class="cline-any cline-no">&nbsp;</span>
1785
+ <span class="cline-any cline-no">&nbsp;</span>
1786
+ <span class="cline-any cline-neutral">&nbsp;</span>
1787
+ <span class="cline-any cline-neutral">&nbsp;</span>
1788
+ <span class="cline-any cline-neutral">&nbsp;</span>
1789
+ <span class="cline-any cline-neutral">&nbsp;</span>
1790
+ <span class="cline-any cline-no">&nbsp;</span>
1791
+ <span class="cline-any cline-neutral">&nbsp;</span>
1792
+ <span class="cline-any cline-neutral">&nbsp;</span>
1793
+ <span class="cline-any cline-neutral">&nbsp;</span>
1794
+ <span class="cline-any cline-neutral">&nbsp;</span>
1795
+ <span class="cline-any cline-neutral">&nbsp;</span>
1796
+ <span class="cline-any cline-neutral">&nbsp;</span>
1797
+ <span class="cline-any cline-neutral">&nbsp;</span>
1798
+ <span class="cline-any cline-no">&nbsp;</span>
1799
+ <span class="cline-any cline-no">&nbsp;</span>
1800
+ <span class="cline-any cline-no">&nbsp;</span>
1801
+ <span class="cline-any cline-no">&nbsp;</span>
1802
+ <span class="cline-any cline-no">&nbsp;</span>
1803
+ <span class="cline-any cline-neutral">&nbsp;</span>
1804
+ <span class="cline-any cline-neutral">&nbsp;</span>
1805
+ <span class="cline-any cline-neutral">&nbsp;</span>
1806
+ <span class="cline-any cline-neutral">&nbsp;</span>
1807
+ <span class="cline-any cline-no">&nbsp;</span>
1808
+ <span class="cline-any cline-neutral">&nbsp;</span>
1809
+ <span class="cline-any cline-no">&nbsp;</span>
1810
+ <span class="cline-any cline-neutral">&nbsp;</span>
1811
+ <span class="cline-any cline-neutral">&nbsp;</span>
1812
+ <span class="cline-any cline-neutral">&nbsp;</span>
1813
+ <span class="cline-any cline-neutral">&nbsp;</span>
1814
+ <span class="cline-any cline-neutral">&nbsp;</span>
1815
+ <span class="cline-any cline-neutral">&nbsp;</span>
1816
+ <span class="cline-any cline-neutral">&nbsp;</span>
1817
+ <span class="cline-any cline-neutral">&nbsp;</span>
1818
+ <span class="cline-any cline-neutral">&nbsp;</span>
1819
+ <span class="cline-any cline-neutral">&nbsp;</span>
1820
+ <span class="cline-any cline-no">&nbsp;</span>
1821
+ <span class="cline-any cline-neutral">&nbsp;</span>
1822
+ <span class="cline-any cline-neutral">&nbsp;</span>
1823
+ <span class="cline-any cline-neutral">&nbsp;</span>
1824
+ <span class="cline-any cline-neutral">&nbsp;</span>
1825
+ <span class="cline-any cline-neutral">&nbsp;</span>
1826
+ <span class="cline-any cline-neutral">&nbsp;</span>
1827
+ <span class="cline-any cline-neutral">&nbsp;</span>
1828
+ <span class="cline-any cline-neutral">&nbsp;</span>
1829
+ <span class="cline-any cline-neutral">&nbsp;</span>
1830
+ <span class="cline-any cline-neutral">&nbsp;</span>
1831
+ <span class="cline-any cline-neutral">&nbsp;</span>
1832
+ <span class="cline-any cline-neutral">&nbsp;</span>
1833
+ <span class="cline-any cline-neutral">&nbsp;</span>
1834
+ <span class="cline-any cline-neutral">&nbsp;</span>
1835
+ <span class="cline-any cline-neutral">&nbsp;</span>
1836
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { createMachine, interpret } from "xstate";
1837
+ import { EventDispatcher, Vector3, Quaternion, Euler } from "three";
1838
+ import {
1839
+ TAG_ALREADY_EXISTS,
1840
+ TAG_NOT_EXISTING_REMOVAL,
1841
+ TAG_CANT_BE_REMOVED,
1842
+ STATE_MACHINE_NOT_AVAILABLE,
1843
+ SCRIPT_NOT_FOUND,
1844
+ ENTITY_TYPE_NOT_ALLOWED,
1845
+ USER_DATA_IS_MISSING,
1846
+ KEY_VALUE_IS_MISSING,
1847
+ ENTITY_CANT_ADD_NOT_ENTITY,
1848
+ ENTITY_NOT_SET,
1849
+ ENTITY_SUBTYPE_NOT_ALLOWED,
1850
+ ELEMENT_NAME_NOT_PROVIDED,
1851
+ DEPRECATIONS,
1852
+ } from "../lib/messages";
1853
+ import Scripts from "../scripts/Scripts";
1854
+ import Scene from "../core/Scene";
1855
+ import Universe from "../core/Universe";
1856
+ &nbsp;
1857
+ import { isScene, serializeQuaternion, serializeVector } from "../lib/meshUtils";
1858
+ &nbsp;
1859
+ import {
1860
+ DEFAULT_TAG,
1861
+ ENTITY_EVENTS,
1862
+ ENTITY_TYPES,
1863
+ FLAT_ENTITY_SUBTYPES,
1864
+ FLAT_ENTITY_TYPES,
1865
+ } from "./constants";
1866
+ import { tweenTo } from "../lib/easing";
1867
+ &nbsp;
1868
+ export default class Entity extends EventDispatcher {
1869
+ constructor(options = {}) {
1870
+ const { serializable = true, tag = "", tags = [] } = options;
1871
+ super();
1872
+ &nbsp;
1873
+ this.options = {
1874
+ ...options,
1875
+ serializable,
1876
+ tag,
1877
+ tags,
1878
+ };
1879
+ &nbsp;
1880
+ this.dynamicScripts = [];
1881
+ this.staticScripts = [];
1882
+ this.tags = [];
1883
+ this.children = [];
1884
+ this.isMage = true;
1885
+ this.parent = false;
1886
+ this.disposed = false;
1887
+ &nbsp;
1888
+ this.entityType = ENTITY_TYPES.UNKNOWN;
1889
+ this.entitySubtype = ENTITY_TYPES.UNKNOWN;
1890
+ &nbsp;
1891
+ this.addTags([DEFAULT_TAG, tag, ...tags]);
1892
+ this.serializable = serializable;
1893
+ }
1894
+ &nbsp;
1895
+ extendOptions = options =&gt; {
1896
+ this.options = {
1897
+ ...this.options,
1898
+ ...options,
1899
+ };
1900
+ };
1901
+ &nbsp;
1902
+ static create(...options) {
1903
+ return new this(...options);
1904
+ }
1905
+ &nbsp;
1906
+ isSerializable() {
1907
+ return !!this.serializable;
1908
+ }
1909
+ &nbsp;
1910
+ setSerializable(serializable = true) {
1911
+ this.serializable = serializable;
1912
+ }
1913
+ &nbsp;
1914
+ isDisposed() {
1915
+ return this.disposed;
1916
+ }
1917
+ &nbsp;
1918
+ reset() {
1919
+ this.dynamicScripts = [];
1920
+ this.staticScripts = [];
1921
+ this.children = [];
1922
+ this.isMage = true;
1923
+ this.parent = false;
1924
+ this.tags = [DEFAULT_TAG];
1925
+ }
1926
+ &nbsp;
1927
+ // TODO: this is ridiculous, it's introducing a 200ms delay for no reason if delay is missing.
1928
+ <span class="fstat-no" title="function not covered" > wa</span>itForBody(delay = <span class="branch-0 cbranch-no" title="branch not covered" >200,</span> maxTries = <span class="branch-0 cbranch-no" title="branch not covered" >1)</span> {
1929
+ <span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) =&gt; {</span>
1930
+ const check = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >tr</span>ies =&gt; {</span>
1931
+ <span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
1932
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
1933
+ <span class="cstat-no" title="statement not covered" > resolve();</span>
1934
+ } else <span class="cstat-no" title="statement not covered" >if (tries &lt;= maxTries) {</span>
1935
+ <span class="cstat-no" title="statement not covered" > check(tries + 1);</span>
1936
+ } else {
1937
+ <span class="cstat-no" title="statement not covered" > reject();</span>
1938
+ }
1939
+ }, delay);
1940
+ };
1941
+ &nbsp;
1942
+ <span class="cstat-no" title="statement not covered" > check(0);</span>
1943
+ });
1944
+ }
1945
+ &nbsp;
1946
+ hasBody() {
1947
+ return !!this.body;
1948
+ }
1949
+ &nbsp;
1950
+ getBody() {
1951
+ return this.body;
1952
+ }
1953
+ &nbsp;
1954
+ getBodyByName = name =&gt; {
1955
+ if (name &amp;&amp; this.hasBody()) {
1956
+ return this.getBody().getObjectByName(name);
1957
+ }
1958
+ &nbsp;
1959
+ console.warn(ELEMENT_NAME_NOT_PROVIDED);
1960
+ };
1961
+ &nbsp;
1962
+ setBody({ body } = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
1963
+ this.body = body;
1964
+ }
1965
+ &nbsp;
1966
+ hasParent() {
1967
+ return !!this.parent;
1968
+ }
1969
+ &nbsp;
1970
+ getParent() {
1971
+ return this.parent;
1972
+ }
1973
+ &nbsp;
1974
+ setParent(parent) {
1975
+ this.parent = parent;
1976
+ }
1977
+ &nbsp;
1978
+ <span class="fstat-no" title="function not covered" > ad</span>d(child, container = <span class="branch-0 cbranch-no" title="branch not covered" >this.getBody(),</span> { waitForBody = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span> waitForBodyMaxRetries = <span class="branch-0 cbranch-no" title="branch not covered" >1 </span>} = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
1979
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
1980
+ const _add = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >to</span>Add =&gt; {</span>
1981
+ <span class="cstat-no" title="statement not covered" > if (toAdd instanceof Entity) {</span>
1982
+ <span class="cstat-no" title="statement not covered" > return toAdd</span>
1983
+ .waitForBody(waitForBody, waitForBodyMaxRetries)
1984
+ .then(<span class="fstat-no" title="function not covered" >()</span> =&gt; {
1985
+ <span class="cstat-no" title="statement not covered" > this.children.push(toAdd);</span>
1986
+ <span class="cstat-no" title="statement not covered" > toAdd.setParent(this);</span>
1987
+ <span class="cstat-no" title="statement not covered" > container.add(toAdd.getBody());</span>
1988
+ <span class="cstat-no" title="statement not covered" > return toAdd;</span>
1989
+ })
1990
+ .catch(console.log);
1991
+ } else {
1992
+ <span class="cstat-no" title="statement not covered" > console.log(ENTITY_CANT_ADD_NOT_ENTITY);</span>
1993
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(ENTITY_CANT_ADD_NOT_ENTITY);</span>
1994
+ }
1995
+ };
1996
+ &nbsp;
1997
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(child)) {</span>
1998
+ <span class="cstat-no" title="statement not covered" > return Promise.all(child.map(_add));</span>
1999
+ } else {
2000
+ <span class="cstat-no" title="statement not covered" > return _add(child);</span>
2001
+ }
2002
+ } else {
2003
+ <span class="cstat-no" title="statement not covered" > console.log(ENTITY_NOT_SET);</span>
2004
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(ENTITY_NOT_SET);</span>
2005
+ }
2006
+ }
2007
+ &nbsp;
2008
+ <span class="fstat-no" title="function not covered" > is</span>ParentOf(child) {
2009
+ <span class="cstat-no" title="statement not covered" > if (!child) <span class="cstat-no" title="statement not covered" >return false;</span></span>
2010
+ &nbsp;
2011
+ let comparator = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >ch</span>ild =&gt; <span class="cstat-no" title="statement not covered" >!!child.getBody().getObjectById(child.id);</span></span>
2012
+ <span class="cstat-no" title="statement not covered" > if (child.isMage) {</span>
2013
+ <span class="cstat-no" title="statement not covered" > comparator = <span class="fstat-no" title="function not covered" >ch</span>ild =&gt; <span class="cstat-no" title="statement not covered" >child.getBody().getObjectById(child.id());</span></span>
2014
+ }
2015
+ &nbsp;
2016
+ <span class="cstat-no" title="statement not covered" > return this.children.filter(comparator).length &gt; 0;</span>
2017
+ }
2018
+ &nbsp;
2019
+ <span class="fstat-no" title="function not covered" > ha</span>s(child) {
2020
+ <span class="cstat-no" title="statement not covered" > if (!child) <span class="cstat-no" title="statement not covered" >return false;</span></span>
2021
+ &nbsp;
2022
+ <span class="cstat-no" title="statement not covered" > if (child.isMage) {</span>
2023
+ <span class="cstat-no" title="statement not covered" > return this.equals(child) || this.isParentOf(child);</span>
2024
+ } else {
2025
+ <span class="cstat-no" title="statement not covered" > return !!this.getBody().getObjectById(child.id);</span>
2026
+ }
2027
+ }
2028
+ &nbsp;
2029
+ <span class="fstat-no" title="function not covered" > re</span>move(element) {
2030
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody() &amp;&amp; this.has(element)) {</span>
2031
+ <span class="cstat-no" title="statement not covered" > if (element.isMage) {</span>
2032
+ <span class="cstat-no" title="statement not covered" > this.body.remove(element.getBody());</span>
2033
+ const index = <span class="cstat-no" title="statement not covered" >this.children.findIndex(<span class="fstat-no" title="function not covered" >m </span>=&gt; <span class="cstat-no" title="statement not covered" >m.equals(element))</span>;</span>
2034
+ &nbsp;
2035
+ <span class="cstat-no" title="statement not covered" > if (index !== -1) <span class="cstat-no" title="statement not covered" >this.children.splice(index, 1);</span></span>
2036
+ } else {
2037
+ <span class="cstat-no" title="statement not covered" > this.body.remove(element.getBody());</span>
2038
+ }
2039
+ }
2040
+ }
2041
+ &nbsp;
2042
+ <span class="fstat-no" title="function not covered" > ad</span>dTo(target, childName) {
2043
+ <span class="cstat-no" title="statement not covered" > if (target &amp;&amp; target.isMage) {</span>
2044
+ <span class="cstat-no" title="statement not covered" > if (childName) {</span>
2045
+ <span class="cstat-no" title="statement not covered" > target.add(this, target.getBodyByName(childName));</span>
2046
+ } else {
2047
+ <span class="cstat-no" title="statement not covered" > target.add(this);</span>
2048
+ }
2049
+ }
2050
+ }
2051
+ &nbsp;
2052
+ hasChildren() {
2053
+ return this.children.length &gt; 0;
2054
+ }
2055
+ &nbsp;
2056
+ /**
2057
+ * Checks if the given ancestor is in this entity's parent chain.
2058
+ * Used to prevent circular references when reparenting.
2059
+ * @param {Entity} ancestor - The potential ancestor entity
2060
+ * @returns {boolean} True if ancestor is in the parent chain
2061
+ */
2062
+ <span class="fstat-no" title="function not covered" > is</span>DescendantOf(ancestor) {
2063
+ <span class="cstat-no" title="statement not covered" > if (!ancestor) <span class="cstat-no" title="statement not covered" >return false;</span></span>
2064
+ let current = <span class="cstat-no" title="statement not covered" >this.getParent();</span>
2065
+ <span class="cstat-no" title="statement not covered" > while (current) {</span>
2066
+ <span class="cstat-no" title="statement not covered" > if (current === ancestor ||</span>
2067
+ (current.uuid &amp;&amp; ancestor.uuid &amp;&amp; current.uuid() === ancestor.uuid())) {
2068
+ <span class="cstat-no" title="statement not covered" > return true;</span>
2069
+ }
2070
+ <span class="cstat-no" title="statement not covered" > current = current.getParent ? current.getParent() : null;</span>
2071
+ }
2072
+ <span class="cstat-no" title="statement not covered" > return false;</span>
2073
+ }
2074
+ &nbsp;
2075
+ /**
2076
+ * Reparents this entity to a new parent while preserving world position.
2077
+ * Uses THREE.js attach() to maintain the entity's world transform.
2078
+ * @param {Entity|null} newParent - The new parent entity, or null to move to scene root
2079
+ * @returns {Entity} This entity for chaining
2080
+ */
2081
+ <span class="fstat-no" title="function not covered" > re</span>parent(newParent) {
2082
+ <span class="cstat-no" title="statement not covered" > if (!this.hasBody()) <span class="cstat-no" title="statement not covered" >return this;</span></span>
2083
+ &nbsp;
2084
+ const oldParent = <span class="cstat-no" title="statement not covered" >this.getParent();</span>
2085
+ &nbsp;
2086
+ // Detach from old parent's Entity children array
2087
+ <span class="cstat-no" title="statement not covered" > if (oldParent &amp;&amp; oldParent.children) {</span>
2088
+ const index = <span class="cstat-no" title="statement not covered" >oldParent.children.findIndex(<span class="fstat-no" title="function not covered" >c </span>=&gt; <span class="cstat-no" title="statement not covered" >c === this ||</span></span>
2089
+ (c.uuid &amp;&amp; this.uuid &amp;&amp; c.uuid() === this.uuid()));
2090
+ <span class="cstat-no" title="statement not covered" > if (index !== -1) <span class="cstat-no" title="statement not covered" >oldParent.children.splice(index, 1);</span></span>
2091
+ }
2092
+ &nbsp;
2093
+ // Detach from old THREE.js parent
2094
+ const body = <span class="cstat-no" title="statement not covered" >this.getBody();</span>
2095
+ <span class="cstat-no" title="statement not covered" > if (body.parent) {</span>
2096
+ <span class="cstat-no" title="statement not covered" > body.parent.remove(body);</span>
2097
+ }
2098
+ &nbsp;
2099
+ <span class="cstat-no" title="statement not covered" > if (newParent &amp;&amp; newParent.hasBody()) {</span>
2100
+ // Attach to new parent (preserves world position)
2101
+ <span class="cstat-no" title="statement not covered" > newParent.children.push(this);</span>
2102
+ <span class="cstat-no" title="statement not covered" > this.setParent(newParent);</span>
2103
+ <span class="cstat-no" title="statement not covered" > newParent.getBody().attach(body);</span>
2104
+ } else {
2105
+ // Move to scene root
2106
+ <span class="cstat-no" title="statement not covered" > this.setParent(false);</span>
2107
+ <span class="cstat-no" title="statement not covered" > Scene.getScene().attach(body);</span>
2108
+ }
2109
+ &nbsp;
2110
+ <span class="cstat-no" title="statement not covered" > return this;</span>
2111
+ }
2112
+ &nbsp;
2113
+ <span class="fstat-no" title="function not covered" > ge</span>tHierarchy(options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2114
+ const { parseJSON = <span class="branch-0 cbranch-no" title="branch not covered" >false </span>} = <span class="cstat-no" title="statement not covered" >options;</span>
2115
+ <span class="cstat-no" title="statement not covered" > return {</span>
2116
+ element: this.toJSON(parseJSON),
2117
+ children: this.children.map(<span class="fstat-no" title="function not covered" >e </span>=&gt; <span class="cstat-no" title="statement not covered" >e.getHierarchy(options))</span>,
2118
+ };
2119
+ }
2120
+ &nbsp;
2121
+ addTag = tagName =&gt; {
2122
+ if (!tagName) return false;
2123
+ &nbsp;
2124
+ if (!this.hasTag(tagName)) {
2125
+ this.tags.push(tagName);
2126
+ return true;
2127
+ } else {
2128
+ console.log(TAG_ALREADY_EXISTS, tagName);
2129
+ return false;
2130
+ }
2131
+ };
2132
+ &nbsp;
2133
+ addTags(tags = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span> {
2134
+ tags.forEach(this.addTag);
2135
+ }
2136
+ &nbsp;
2137
+ removeTag(tagName) {
2138
+ if (tagName === DEFAULT_TAG) {
2139
+ console.log(TAG_CANT_BE_REMOVED);
2140
+ return false;
2141
+ }
2142
+ &nbsp;
2143
+ if (this.hasTag(tagName)) {
2144
+ this.tags.splice(this.tags.indexOf(tagName), 1);
2145
+ return true;
2146
+ } else {
2147
+ console.log(TAG_NOT_EXISTING_REMOVAL);
2148
+ return false;
2149
+ }
2150
+ }
2151
+ &nbsp;
2152
+ removeAllTags() {
2153
+ this.tags = [DEFAULT_TAG];
2154
+ }
2155
+ &nbsp;
2156
+ hasTag(tagName) {
2157
+ return this.tags.includes(tagName);
2158
+ }
2159
+ &nbsp;
2160
+ getTags() {
2161
+ return this.tags;
2162
+ }
2163
+ &nbsp;
2164
+ <span class="fstat-no" title="function not covered" > di</span>sposeScripts() {
2165
+ <span class="cstat-no" title="statement not covered" > if (this.hasScripts()) {</span>
2166
+ const length = <span class="cstat-no" title="statement not covered" >this.allScripts().length;</span>
2167
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; length; i++) {</span>
2168
+ const { script, enabled } = <span class="cstat-no" title="statement not covered" >this.allScripts()[i];</span>
2169
+ <span class="cstat-no" title="statement not covered" > if (enabled) {</span>
2170
+ <span class="cstat-no" title="statement not covered" > script.onDispose();</span>
2171
+ <span class="cstat-no" title="statement not covered" > script.__setStartedFlag(false);</span>
2172
+ }
2173
+ }
2174
+ }
2175
+ }
2176
+ &nbsp;
2177
+ <span class="fstat-no" title="function not covered" > st</span>art() {
2178
+ <span class="cstat-no" title="statement not covered" > if (this.hasScripts()) {</span>
2179
+ <span class="cstat-no" title="statement not covered" > this.allScripts().forEach(<span class="fstat-no" title="function not covered" >({</span> script, enabled, options }) =&gt; {</span>
2180
+ <span class="cstat-no" title="statement not covered" > if (enabled) {</span>
2181
+ <span class="cstat-no" title="statement not covered" > script.start(this, options);</span>
2182
+ <span class="cstat-no" title="statement not covered" > script.__setStartedFlag(true);</span>
2183
+ }
2184
+ });
2185
+ }
2186
+ }
2187
+ &nbsp;
2188
+ <span class="fstat-no" title="function not covered" > up</span>date(dt) {
2189
+ <span class="cstat-no" title="statement not covered" > if (this.hasScripts()) {</span>
2190
+ <span class="cstat-no" title="statement not covered" > this.dynamicScripts.forEach(<span class="fstat-no" title="function not covered" >({</span> script, enabled }) =&gt; {</span>
2191
+ <span class="cstat-no" title="statement not covered" > if (script &amp;&amp; enabled) {</span>
2192
+ <span class="cstat-no" title="statement not covered" > script.update(dt);</span>
2193
+ }
2194
+ });
2195
+ }
2196
+ }
2197
+ &nbsp;
2198
+ <span class="fstat-no" title="function not covered" > on</span>PhysicsUpdate(dt) {
2199
+ <span class="cstat-no" title="statement not covered" > if (this.hasScripts()) {</span>
2200
+ <span class="cstat-no" title="statement not covered" > this.dynamicScripts.forEach(<span class="fstat-no" title="function not covered" >({</span> script, enabled }) =&gt; {</span>
2201
+ <span class="cstat-no" title="statement not covered" > if (script &amp;&amp; enabled) {</span>
2202
+ <span class="cstat-no" title="statement not covered" > script.physicsUpdate(dt);</span>
2203
+ }
2204
+ });
2205
+ }
2206
+ }
2207
+ &nbsp;
2208
+ <span class="fstat-no" title="function not covered" > di</span>sposeBody() {
2209
+ <span class="cstat-no" title="statement not covered" > this.getBody().clear();</span>
2210
+ <span class="cstat-no" title="statement not covered" > if (this.getBody().dispose &amp;&amp; !isScene(this.getBody())) {</span>
2211
+ <span class="cstat-no" title="statement not covered" > this.getBody().dispose();</span>
2212
+ }
2213
+ }
2214
+ &nbsp;
2215
+ <span class="fstat-no" title="function not covered" > di</span>spose() {
2216
+ <span class="cstat-no" title="statement not covered" > if (this.hasChildren()) {</span>
2217
+ <span class="cstat-no" title="statement not covered" > this.children.forEach(<span class="fstat-no" title="function not covered" >ch</span>ild =&gt; {</span>
2218
+ <span class="cstat-no" title="statement not covered" > child.dispose();</span>
2219
+ });
2220
+ }
2221
+ &nbsp;
2222
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
2223
+ <span class="cstat-no" title="statement not covered" > this.stopStateMachine();</span>
2224
+ <span class="cstat-no" title="statement not covered" > this.disposeScripts();</span>
2225
+ &nbsp;
2226
+ <span class="cstat-no" title="statement not covered" > Scene.remove(this.getBody());</span>
2227
+ <span class="cstat-no" title="statement not covered" > this.disposeBody();</span>
2228
+ }
2229
+ &nbsp;
2230
+ <span class="cstat-no" title="statement not covered" > this.dispatchEvent({</span>
2231
+ type: ENTITY_EVENTS.DISPOSE,
2232
+ });
2233
+ &nbsp;
2234
+ <span class="cstat-no" title="statement not covered" > this.reset();</span>
2235
+ &nbsp;
2236
+ <span class="cstat-no" title="statement not covered" > this.disposed = true;</span>
2237
+ }
2238
+ &nbsp;
2239
+ /**
2240
+ * TODO: the entire state machine system needs to be a component
2241
+ * e.g.
2242
+ *
2243
+ * const stateMachine = new StateMachineComponent();
2244
+ * element.addComponent(stateMachine);
2245
+ *
2246
+ * element.getComponent("statemachine").dosomething;
2247
+ */
2248
+ &nbsp;
2249
+ hasStateMachine = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >!!this.stateMachine;</span>
2250
+ &nbsp;
2251
+ <span class="fstat-no" title="function not covered" > ad</span>dStateMachine(description) {
2252
+ <span class="cstat-no" title="statement not covered" > this.stateMachine = interpret(createMachine(description)).onTransition(<span class="fstat-no" title="function not covered" >st</span>ate =&gt; {</span>
2253
+ <span class="cstat-no" title="statement not covered" > this.dispatchEvent({</span>
2254
+ type: ENTITY_EVENTS.STATE_MACHINE.CHANGE,
2255
+ state,
2256
+ });
2257
+ });
2258
+ &nbsp;
2259
+ <span class="cstat-no" title="statement not covered" > if (description.autostart) {</span>
2260
+ <span class="cstat-no" title="statement not covered" > this.startStateMachine();</span>
2261
+ }
2262
+ }
2263
+ &nbsp;
2264
+ <span class="fstat-no" title="function not covered" > st</span>artStateMachine() {
2265
+ <span class="cstat-no" title="statement not covered" > if (this.hasStateMachine()) {</span>
2266
+ <span class="cstat-no" title="statement not covered" > this.stateMachine.start();</span>
2267
+ } else {
2268
+ <span class="cstat-no" title="statement not covered" > console.log(STATE_MACHINE_NOT_AVAILABLE);</span>
2269
+ }
2270
+ }
2271
+ &nbsp;
2272
+ <span class="fstat-no" title="function not covered" > st</span>opStateMachine() {
2273
+ <span class="cstat-no" title="statement not covered" > if (this.hasStateMachine()) {</span>
2274
+ <span class="cstat-no" title="statement not covered" > this.stateMachine.stop();</span>
2275
+ }
2276
+ }
2277
+ &nbsp;
2278
+ <span class="fstat-no" title="function not covered" > ch</span>angeState(event) {
2279
+ <span class="cstat-no" title="statement not covered" > if (this.hasStateMachine()) {</span>
2280
+ <span class="cstat-no" title="statement not covered" > this.stateMachine.send(event);</span>
2281
+ } else {
2282
+ <span class="cstat-no" title="statement not covered" > console.log(STATE_MACHINE_NOT_AVAILABLE);</span>
2283
+ }
2284
+ }
2285
+ &nbsp;
2286
+ /**
2287
+ * TODO: ScriptComponent to handle scripts
2288
+ * e.g.
2289
+ *
2290
+ * const scriptComponent = new ScriptsComponent();
2291
+ * element.addComponent(physicscomponent);
2292
+ *
2293
+ * element.getComponent("physics").play("animationId");
2294
+ */
2295
+ &nbsp;
2296
+ <span class="fstat-no" title="function not covered" > ge</span>tScript(name) {
2297
+ <span class="cstat-no" title="statement not covered" > if (!this.hasScript(name)) {</span>
2298
+ <span class="cstat-no" title="statement not covered" > console.warn(SCRIPT_NOT_FOUND);</span>
2299
+ <span class="cstat-no" title="statement not covered" > return false;</span>
2300
+ }
2301
+ &nbsp;
2302
+ const { script } = <span class="cstat-no" title="statement not covered" >this.allScripts().filter(<span class="fstat-no" title="function not covered" >sc</span>ript =&gt; <span class="cstat-no" title="statement not covered" >script.name === name)</span>[0];</span>
2303
+ <span class="cstat-no" title="statement not covered" > return script;</span>
2304
+ }
2305
+ &nbsp;
2306
+ hasScripts = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getScripts().length &gt; 0;</span>
2307
+ &nbsp;
2308
+ getScripts = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >[...this.dynamicScripts, ...this.staticScripts];</span>
2309
+ &nbsp;
2310
+ allScripts = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
2311
+ <span class="cstat-no" title="statement not covered" > console.log(DEPRECATIONS.ENTITY_ALL_SCRIPTS);</span>
2312
+ <span class="cstat-no" title="statement not covered" > return this.getScripts();</span>
2313
+ };
2314
+ &nbsp;
2315
+ <span class="fstat-no" title="function not covered" > ha</span>sScript(name) {
2316
+ <span class="cstat-no" title="statement not covered" > return this.allScripts().filter(<span class="fstat-no" title="function not covered" >sc</span>ript =&gt; <span class="cstat-no" title="statement not covered" >script.name === name)</span>.length;</span>
2317
+ }
2318
+ &nbsp;
2319
+ <span class="fstat-no" title="function not covered" > ad</span>dScript(name, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2320
+ const script = <span class="cstat-no" title="statement not covered" >Scripts.get(name);</span>
2321
+ const { enabled = <span class="branch-0 cbranch-no" title="branch not covered" >true </span>} = <span class="cstat-no" title="statement not covered" >options;</span>
2322
+ &nbsp;
2323
+ <span class="cstat-no" title="statement not covered" > if (script) {</span>
2324
+ const payload = <span class="cstat-no" title="statement not covered" >{</span>
2325
+ script,
2326
+ name,
2327
+ enabled,
2328
+ options,
2329
+ };
2330
+ &nbsp;
2331
+ <span class="cstat-no" title="statement not covered" > if (script.__isStatic()) {</span>
2332
+ <span class="cstat-no" title="statement not covered" > this.staticScripts.push({</span>
2333
+ ...payload,
2334
+ index: this.staticScripts.length,
2335
+ });
2336
+ } else {
2337
+ <span class="cstat-no" title="statement not covered" > this.dynamicScripts.push({</span>
2338
+ ...payload,
2339
+ index: this.dynamicScripts.length,
2340
+ });
2341
+ }
2342
+ &nbsp;
2343
+ <span class="cstat-no" title="statement not covered" > if (enabled) {</span>
2344
+ <span class="cstat-no" title="statement not covered" > script.start(this, options);</span>
2345
+ }
2346
+ } else {
2347
+ <span class="cstat-no" title="statement not covered" > console.log(SCRIPT_NOT_FOUND);</span>
2348
+ }
2349
+ &nbsp;
2350
+ <span class="cstat-no" title="statement not covered" > return script;</span>
2351
+ }
2352
+ &nbsp;
2353
+ updateScriptsIndexes = <span class="fstat-no" title="function not covered" >()</span> =&gt; {
2354
+ const update = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(s</span>, i) =&gt; (<span class="cstat-no" title="statement not covered" >s.index = i)</span>;</span>
2355
+ &nbsp;
2356
+ <span class="cstat-no" title="statement not covered" > this.dynamicScripts.forEach(update);</span>
2357
+ <span class="cstat-no" title="statement not covered" > this.staticScripts.forEach(update);</span>
2358
+ };
2359
+ &nbsp;
2360
+ <span class="fstat-no" title="function not covered" > re</span>moveScript(name) {
2361
+ const all = <span class="cstat-no" title="statement not covered" >this.allScripts();</span>
2362
+ const allIndex = <span class="cstat-no" title="statement not covered" >all.findIndex(<span class="fstat-no" title="function not covered" >sc</span>ript =&gt; <span class="cstat-no" title="statement not covered" >script.name === name)</span>;</span>
2363
+ const { script, index } = <span class="cstat-no" title="statement not covered" >all[allIndex];</span>
2364
+ &nbsp;
2365
+ <span class="cstat-no" title="statement not covered" > if (script) {</span>
2366
+ <span class="cstat-no" title="statement not covered" > script.onDispose();</span>
2367
+ <span class="cstat-no" title="statement not covered" > if (script.__isStatic()) {</span>
2368
+ <span class="cstat-no" title="statement not covered" > this.staticScripts.splice(index, 1);</span>
2369
+ } else {
2370
+ <span class="cstat-no" title="statement not covered" > this.dynamicScripts.splice(index, 1);</span>
2371
+ }
2372
+ &nbsp;
2373
+ <span class="cstat-no" title="statement not covered" > this.updateScriptsIndexes();</span>
2374
+ } else {
2375
+ <span class="cstat-no" title="statement not covered" > console.log(SCRIPT_NOT_FOUND);</span>
2376
+ }
2377
+ }
2378
+ &nbsp;
2379
+ <span class="fstat-no" title="function not covered" > en</span>ableScripts() {
2380
+ <span class="cstat-no" title="statement not covered" > this.scriptsEnabled = true;</span>
2381
+ }
2382
+ &nbsp;
2383
+ <span class="fstat-no" title="function not covered" > di</span>sableScripts() {
2384
+ <span class="cstat-no" title="statement not covered" > this.scriptsEnabled = false;</span>
2385
+ }
2386
+ &nbsp;
2387
+ <span class="fstat-no" title="function not covered" > se</span>tEntityType(type) {
2388
+ <span class="cstat-no" title="statement not covered" > if (FLAT_ENTITY_TYPES.includes(type)) {</span>
2389
+ <span class="cstat-no" title="statement not covered" > this.entityType = type;</span>
2390
+ } else {
2391
+ <span class="cstat-no" title="statement not covered" > console.log(ENTITY_TYPE_NOT_ALLOWED, type);</span>
2392
+ <span class="cstat-no" title="statement not covered" > this.entityType = ENTITY_TYPES.UNKNOWN;</span>
2393
+ }
2394
+ }
2395
+ &nbsp;
2396
+ <span class="fstat-no" title="function not covered" > ge</span>tEntityType() {
2397
+ <span class="cstat-no" title="statement not covered" > return this.entityType;</span>
2398
+ }
2399
+ &nbsp;
2400
+ <span class="fstat-no" title="function not covered" > se</span>tEntitySubtype(subtype) {
2401
+ <span class="cstat-no" title="statement not covered" > if (FLAT_ENTITY_SUBTYPES.includes(subtype)) {</span>
2402
+ <span class="cstat-no" title="statement not covered" > this.entitySubtype = subtype;</span>
2403
+ } else {
2404
+ <span class="cstat-no" title="statement not covered" > console.log(ENTITY_SUBTYPE_NOT_ALLOWED, subtype);</span>
2405
+ <span class="cstat-no" title="statement not covered" > this.entitySubtype = ENTITY_TYPES.UNKNOWN;</span>
2406
+ }
2407
+ }
2408
+ &nbsp;
2409
+ <span class="fstat-no" title="function not covered" > ge</span>tEntitySubtype() {
2410
+ <span class="cstat-no" title="statement not covered" > return this.entitySubtype;</span>
2411
+ }
2412
+ &nbsp;
2413
+ isMesh = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.MESH.TYPE;</span>
2414
+ isModel = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.MODEL.TYPE;</span>
2415
+ isScenery = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.SCENERY.TYPE;</span>
2416
+ isParticle = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.PARTICLE.TYPE;</span>
2417
+ isSprite = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.SPRITE.TYPE;</span>
2418
+ isLight = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.LIGHT.TYPE;</span>
2419
+ isHelper = <span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === ENTITY_TYPES.HELPER.TYPE;</span>
2420
+ isEffect = <span class="fstat-no" title="function not covered" >()</span> =&gt;
2421
+ <span class="cstat-no" title="statement not covered" > [ENTITY_TYPES.SCENERY.TYPE, ENTITY_TYPES.PARTICLE.TYPE].includes(this.getEntityType());</span>
2422
+ isType = <span class="fstat-no" title="function not covered" >ty</span>pe =&gt; <span class="cstat-no" title="statement not covered" >this.getEntityType() === type;</span>
2423
+ isSubtype = <span class="fstat-no" title="function not covered" >su</span>btype =&gt; <span class="cstat-no" title="statement not covered" >this.getEntitySubtype() === subtype;</span>
2424
+ &nbsp;
2425
+ <span class="fstat-no" title="function not covered" > ge</span>tScale() {
2426
+ <span class="cstat-no" title="statement not covered" > return {</span>
2427
+ x: this.body.scale.x,
2428
+ y: this.body.scale.y,
2429
+ z: this.body.scale.z,
2430
+ };
2431
+ }
2432
+ &nbsp;
2433
+ <span class="fstat-no" title="function not covered" > se</span>tScale(howbig) {
2434
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
2435
+ const scale = <span class="cstat-no" title="statement not covered" >{</span>
2436
+ ...this.getScale(),
2437
+ ...howbig,
2438
+ };
2439
+ &nbsp;
2440
+ // Ensure values are numbers (not strings) to prevent rendering issues
2441
+ const sx = <span class="cstat-no" title="statement not covered" >Number(scale.x) || 1;</span>
2442
+ const sy = <span class="cstat-no" title="statement not covered" >Number(scale.y) || 1;</span>
2443
+ const sz = <span class="cstat-no" title="statement not covered" >Number(scale.z) || 1;</span>
2444
+ &nbsp;
2445
+ <span class="cstat-no" title="statement not covered" > this.body.scale.set(sx, sy, sz);</span>
2446
+ &nbsp;
2447
+ // Update matrix world for all children including skinned meshes
2448
+ <span class="cstat-no" title="statement not covered" > this.getBody().updateMatrixWorld(true);</span>
2449
+ }
2450
+ }
2451
+ &nbsp;
2452
+ <span class="fstat-no" title="function not covered" > ge</span>tQuaternion() {
2453
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
2454
+ <span class="cstat-no" title="statement not covered" > return this.getBody().quaternion.clone();</span>
2455
+ }
2456
+ }
2457
+ &nbsp;
2458
+ setQuaternion = <span class="fstat-no" title="function not covered" >({</span> x, y, z, w }) =&gt; {
2459
+ // Ensure values are numbers (not strings) to prevent rendering issues
2460
+ const qx = <span class="cstat-no" title="statement not covered" >Number(x) || 0;</span>
2461
+ const qy = <span class="cstat-no" title="statement not covered" >Number(y) || 0;</span>
2462
+ const qz = <span class="cstat-no" title="statement not covered" >Number(z) || 0;</span>
2463
+ const qw = <span class="cstat-no" title="statement not covered" >Number(w) || 1;</span>
2464
+ &nbsp;
2465
+ <span class="cstat-no" title="statement not covered" > this.getBody().quaternion.set(qx, qy, qz, qw);</span>
2466
+ &nbsp;
2467
+ // Update matrix world and skeleton for skinned meshes
2468
+ <span class="cstat-no" title="statement not covered" > this.getBody().updateMatrixWorld(true);</span>
2469
+ <span class="cstat-no" title="statement not covered" > this.getBody().traverse(<span class="fstat-no" title="function not covered" >ch</span>ild =&gt; {</span>
2470
+ <span class="cstat-no" title="statement not covered" > if (child.isSkinnedMesh &amp;&amp; child.skeleton) {</span>
2471
+ <span class="cstat-no" title="statement not covered" > child.skeleton.update();</span>
2472
+ }
2473
+ });
2474
+ };
2475
+ &nbsp;
2476
+ <span class="fstat-no" title="function not covered" > ge</span>tPosition() {
2477
+ <span class="cstat-no" title="statement not covered" > return this.getBody().position.clone();</span>
2478
+ }
2479
+ &nbsp;
2480
+ <span class="fstat-no" title="function not covered" > se</span>tPosition(where) {
2481
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
2482
+ const { x, y, z } = <span class="cstat-no" title="statement not covered" >this.getPosition();</span>
2483
+ const position = <span class="cstat-no" title="statement not covered" >{</span>
2484
+ x,
2485
+ y,
2486
+ z,
2487
+ ...where,
2488
+ };
2489
+ &nbsp;
2490
+ // Ensure values are numbers (not strings) to prevent rendering issues
2491
+ const px = <span class="cstat-no" title="statement not covered" >Number(position.x) || 0;</span>
2492
+ const py = <span class="cstat-no" title="statement not covered" >Number(position.y) || 0;</span>
2493
+ const pz = <span class="cstat-no" title="statement not covered" >Number(position.z) || 0;</span>
2494
+ &nbsp;
2495
+ <span class="cstat-no" title="statement not covered" > this.getBody().position.set(px, py, pz);</span>
2496
+ &nbsp;
2497
+ // Update matrix world to ensure skinned mesh skeletons follow the parent transform
2498
+ <span class="cstat-no" title="statement not covered" > this.getBody().updateMatrixWorld(true);</span>
2499
+ &nbsp;
2500
+ // For skinned meshes, we need to rebind the skeleton after position change
2501
+ // The bindMatrix captures where the mesh was when bound, so we need to update it
2502
+ <span class="cstat-no" title="statement not covered" > this.getBody().traverse(<span class="fstat-no" title="function not covered" >ch</span>ild =&gt; {</span>
2503
+ <span class="cstat-no" title="statement not covered" > if (child.isSkinnedMesh &amp;&amp; child.skeleton) {</span>
2504
+ // Rebind with current matrix to update the bind pose
2505
+ <span class="cstat-no" title="statement not covered" > child.bind(child.skeleton, child.matrixWorld);</span>
2506
+ }
2507
+ });
2508
+ }
2509
+ }
2510
+ &nbsp;
2511
+ <span class="fstat-no" title="function not covered" > ge</span>tRotation() {
2512
+ <span class="cstat-no" title="statement not covered" > return this.getBody().rotation.clone();</span>
2513
+ }
2514
+ &nbsp;
2515
+ <span class="fstat-no" title="function not covered" > se</span>tRotation(how) {
2516
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
2517
+ const { x, y, z } = <span class="cstat-no" title="statement not covered" >this.getRotation();</span>
2518
+ const rotation = <span class="cstat-no" title="statement not covered" >{</span>
2519
+ x,
2520
+ y,
2521
+ z,
2522
+ ...how,
2523
+ };
2524
+ &nbsp;
2525
+ // Ensure values are numbers (not strings) to prevent rendering issues
2526
+ const rx = <span class="cstat-no" title="statement not covered" >Number(rotation.x) || 0;</span>
2527
+ const ry = <span class="cstat-no" title="statement not covered" >Number(rotation.y) || 0;</span>
2528
+ const rz = <span class="cstat-no" title="statement not covered" >Number(rotation.z) || 0;</span>
2529
+ &nbsp;
2530
+ <span class="cstat-no" title="statement not covered" > this.getBody().rotation.set(rx, ry, rz);</span>
2531
+ &nbsp;
2532
+ // Update matrix world for all children including skinned meshes
2533
+ <span class="cstat-no" title="statement not covered" > this.getBody().updateMatrixWorld(true);</span>
2534
+ }
2535
+ }
2536
+ &nbsp;
2537
+ <span class="fstat-no" title="function not covered" > ge</span>tWorldTransform() {
2538
+ const position = <span class="cstat-no" title="statement not covered" >this.getBody().getWorldPosition(new Vector3());</span>
2539
+ const quaternion = <span class="cstat-no" title="statement not covered" >this.getBody().getWorldQuaternion(new Quaternion(0, 0, 0, 1));</span>
2540
+ const rotation = <span class="cstat-no" title="statement not covered" >new Euler(0, 0, 0, "XYZ").setFromQuaternion(quaternion, "XYZ");</span>
2541
+ &nbsp;
2542
+ <span class="cstat-no" title="statement not covered" > return {</span>
2543
+ position,
2544
+ rotation,
2545
+ quaternion,
2546
+ };
2547
+ }
2548
+ &nbsp;
2549
+ <span class="fstat-no" title="function not covered" > se</span>tWorldTransform(worldTransform) {
2550
+ const { position, quaternion } = <span class="cstat-no" title="statement not covered" >worldTransform;</span>
2551
+ <span class="cstat-no" title="statement not covered" > this.getBody().position.copy(position);</span>
2552
+ <span class="cstat-no" title="statement not covered" > this.getBody().quaternion.copy(quaternion);</span>
2553
+ &nbsp;
2554
+ // Update matrix world and skeleton for skinned meshes
2555
+ <span class="cstat-no" title="statement not covered" > this.getBody().updateMatrixWorld(true);</span>
2556
+ <span class="cstat-no" title="statement not covered" > this.getBody().traverse(<span class="fstat-no" title="function not covered" >ch</span>ild =&gt; {</span>
2557
+ <span class="cstat-no" title="statement not covered" > if (child.isSkinnedMesh &amp;&amp; child.skeleton) {</span>
2558
+ <span class="cstat-no" title="statement not covered" > child.skeleton.update();</span>
2559
+ }
2560
+ });
2561
+ }
2562
+ &nbsp;
2563
+ <span class="fstat-no" title="function not covered" > tr</span>anslate({ x = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span> y = <span class="branch-0 cbranch-no" title="branch not covered" >0,</span> z = <span class="branch-0 cbranch-no" title="branch not covered" >0 </span>}) {
2564
+ <span class="cstat-no" title="statement not covered" > if (this.hasBody()) {</span>
2565
+ <span class="cstat-no" title="statement not covered" > this.body.translateX(x);</span>
2566
+ <span class="cstat-no" title="statement not covered" > this.body.translateY(y);</span>
2567
+ <span class="cstat-no" title="statement not covered" > this.body.translateZ(z);</span>
2568
+ &nbsp;
2569
+ // Update matrix world for all children including skinned meshes
2570
+ <span class="cstat-no" title="statement not covered" > this.getBody().updateMatrixWorld(true);</span>
2571
+ }
2572
+ }
2573
+ &nbsp;
2574
+ <span class="fstat-no" title="function not covered" > sc</span>aleTo(scale = <span class="branch-0 cbranch-no" title="branch not covered" >this.getScale(),</span> time = <span class="branch-0 cbranch-no" title="branch not covered" >250,</span> options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2575
+ const { x, y, z } = <span class="cstat-no" title="statement not covered" >this.getScale();</span>
2576
+ const target = <span class="cstat-no" title="statement not covered" >{ x, y, z, ...scale };</span>
2577
+ const onUpdate = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >va</span>lue =&gt; <span class="cstat-no" title="statement not covered" >!this.isDisposed() &amp;&amp; this.setScale(value);</span></span>
2578
+ &nbsp;
2579
+ <span class="cstat-no" title="statement not covered" > return tweenTo({ x, y, z }, target, { ...options, time, onUpdate });</span>
2580
+ }
2581
+ &nbsp;
2582
+ <span class="fstat-no" title="function not covered" > ro</span>tateTo(rotation = <span class="branch-0 cbranch-no" title="branch not covered" >this.getRotation(),</span> time = <span class="branch-0 cbranch-no" title="branch not covered" >250,</span> options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2583
+ const { x, y, z } = <span class="cstat-no" title="statement not covered" >this.getRotation();</span>
2584
+ const target = <span class="cstat-no" title="statement not covered" >{ x, y, z, ...rotation };</span>
2585
+ const onUpdate = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >va</span>lue =&gt; <span class="cstat-no" title="statement not covered" >!this.isDisposed() &amp;&amp; this.setRotation(value);</span></span>
2586
+ &nbsp;
2587
+ <span class="cstat-no" title="statement not covered" > return tweenTo({ x, y, z }, target, { ...options, time, onUpdate });</span>
2588
+ }
2589
+ &nbsp;
2590
+ <span class="fstat-no" title="function not covered" > go</span>To(position = <span class="branch-0 cbranch-no" title="branch not covered" >this.getPosition(),</span> time = <span class="branch-0 cbranch-no" title="branch not covered" >250,</span> options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
2591
+ const { x, y, z } = <span class="cstat-no" title="statement not covered" >this.getPosition();</span>
2592
+ const target = <span class="cstat-no" title="statement not covered" >{ x, y, z, ...position };</span>
2593
+ const onUpdate = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >va</span>lue =&gt; <span class="cstat-no" title="statement not covered" >!this.isDisposed() &amp;&amp; this.setPosition(value);</span></span>
2594
+ &nbsp;
2595
+ <span class="cstat-no" title="statement not covered" > return tweenTo({ x, y, z }, target, { ...options, time, onUpdate });</span>
2596
+ }
2597
+ &nbsp;
2598
+ setUuid = <span class="fstat-no" title="function not covered" >uu</span>id =&gt; {
2599
+ <span class="cstat-no" title="statement not covered" > if (uuid) {</span>
2600
+ const oldUuid = <span class="cstat-no" title="statement not covered" >this.body.uuid;</span>
2601
+ <span class="cstat-no" title="statement not covered" > this.body.uuid = uuid;</span>
2602
+ &nbsp;
2603
+ // Re-register in Universe under the new UUID so that
2604
+ // Universe.getByUUID(newUuid) works after the Importer
2605
+ // restores an entity's persisted UUID.
2606
+ <span class="cstat-no" title="statement not covered" > if (oldUuid !== uuid) {</span>
2607
+ const registered = <span class="cstat-no" title="statement not covered" >Universe.getByUUID(oldUuid);</span>
2608
+ <span class="cstat-no" title="statement not covered" > if (registered) {</span>
2609
+ <span class="cstat-no" title="statement not covered" > Universe.remove(oldUuid);</span>
2610
+ <span class="cstat-no" title="statement not covered" > Universe.set(uuid, registered);</span>
2611
+ }
2612
+ }
2613
+ }
2614
+ };
2615
+ &nbsp;
2616
+ <span class="fstat-no" title="function not covered" > uu</span>id() {
2617
+ <span class="cstat-no" title="statement not covered" > return this.body.uuid;</span>
2618
+ }
2619
+ &nbsp;
2620
+ <span class="fstat-no" title="function not covered" > se</span>tId() {
2621
+ <span class="cstat-no" title="statement not covered" > return this.body.id;</span>
2622
+ }
2623
+ &nbsp;
2624
+ <span class="fstat-no" title="function not covered" > id</span>() {
2625
+ <span class="cstat-no" title="statement not covered" > return this.body.id;</span>
2626
+ }
2627
+ &nbsp;
2628
+ <span class="fstat-no" title="function not covered" > se</span>tVisible(flag = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span> {
2629
+ <span class="cstat-no" title="statement not covered" > this.getBody().visible = flag;</span>
2630
+ }
2631
+ &nbsp;
2632
+ <span class="fstat-no" title="function not covered" > eq</span>uals(entity) {
2633
+ <span class="cstat-no" title="statement not covered" > try {</span>
2634
+ <span class="cstat-no" title="statement not covered" > return entity.uuid ? this.uuid() === entity.uuid() : false;</span>
2635
+ } catch (e) {
2636
+ <span class="cstat-no" title="statement not covered" > return false;</span>
2637
+ }
2638
+ }
2639
+ &nbsp;
2640
+ <span class="fstat-no" title="function not covered" > se</span>tName(name) {
2641
+ <span class="cstat-no" title="statement not covered" > this.name = name;</span>
2642
+ }
2643
+ &nbsp;
2644
+ <span class="fstat-no" title="function not covered" > ge</span>tName() {
2645
+ <span class="cstat-no" title="statement not covered" > return this.name;</span>
2646
+ }
2647
+ &nbsp;
2648
+ <span class="fstat-no" title="function not covered" > se</span>tData(key, value) {
2649
+ <span class="cstat-no" title="statement not covered" > if (this.getBody().userData) {</span>
2650
+ <span class="cstat-no" title="statement not covered" > if (key &amp;&amp; value) {</span>
2651
+ <span class="cstat-no" title="statement not covered" > this.getBody().userData[key] = value;</span>
2652
+ } else {
2653
+ <span class="cstat-no" title="statement not covered" > console.log(KEY_VALUE_IS_MISSING);</span>
2654
+ }
2655
+ } else {
2656
+ <span class="cstat-no" title="statement not covered" > console.log(USER_DATA_IS_MISSING);</span>
2657
+ }
2658
+ }
2659
+ &nbsp;
2660
+ <span class="fstat-no" title="function not covered" > ge</span>tData(key) {
2661
+ <span class="cstat-no" title="statement not covered" > if (this.getBody().userData) {</span>
2662
+ <span class="cstat-no" title="statement not covered" > if (key) {</span>
2663
+ <span class="cstat-no" title="statement not covered" > return this.getBody().userData[key];</span>
2664
+ } else {
2665
+ // if no key is provided, we return all userData
2666
+ <span class="cstat-no" title="statement not covered" > return this.getBody().userData;</span>
2667
+ }
2668
+ } else {
2669
+ <span class="cstat-no" title="statement not covered" > console.log(USER_DATA_IS_MISSING);</span>
2670
+ <span class="cstat-no" title="statement not covered" > return {};</span>
2671
+ }
2672
+ }
2673
+ &nbsp;
2674
+ <span class="fstat-no" title="function not covered" > ma</span>pScriptsToJSON() {
2675
+ <span class="cstat-no" title="statement not covered" > return this.allScripts().map(<span class="fstat-no" title="function not covered" >({</span> name, options = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> script }) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
2676
+ name,
2677
+ options,
2678
+ isStatic: script.__isStatic(),
2679
+ }));
2680
+ }
2681
+ &nbsp;
2682
+ <span class="fstat-no" title="function not covered" > to</span>JSON(parseJSON = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span> {
2683
+ <span class="cstat-no" title="statement not covered" > if (this.isSerializable()) {</span>
2684
+ const position = <span class="cstat-no" title="statement not covered" >this.getPosition();</span>
2685
+ const rotation = <span class="cstat-no" title="statement not covered" >this.getRotation();</span>
2686
+ const scale = <span class="cstat-no" title="statement not covered" >this.getScale();</span>
2687
+ const quaternion = <span class="cstat-no" title="statement not covered" >this.getQuaternion();</span>
2688
+ const {
2689
+ position: worldPosition,
2690
+ rotation: worldRotation,
2691
+ quaternion: worldQuaternion,
2692
+ } = <span class="cstat-no" title="statement not covered" >this.getWorldTransform();</span>
2693
+ &nbsp;
2694
+ <span class="cstat-no" title="statement not covered" > return {</span>
2695
+ options: this.options,
2696
+ position: parseJSON ? serializeVector(position) : position,
2697
+ rotation: parseJSON ? serializeVector(rotation) : rotation,
2698
+ quaternion: parseJSON ? serializeQuaternion(quaternion) : quaternion,
2699
+ scale: parseJSON ? serializeVector(scale) : scale,
2700
+ worldTransform: {
2701
+ position: parseJSON ? serializeVector(worldPosition) : worldPosition,
2702
+ rotation: parseJSON ? serializeVector(worldRotation) : worldRotation,
2703
+ quaternion: parseJSON ? serializeQuaternion(worldQuaternion) : worldQuaternion,
2704
+ },
2705
+ children: this.children.map(<span class="fstat-no" title="function not covered" >ch</span>ild =&gt; <span class="cstat-no" title="statement not covered" >child.uuid())</span>,
2706
+ entityType: this.getEntityType(),
2707
+ entitySubType: this.getEntitySubtype(),
2708
+ scripts: this.mapScriptsToJSON(),
2709
+ tags: this.getTags(),
2710
+ name: this.getName(),
2711
+ uuid: this.uuid(),
2712
+ data: this.getData(),
2713
+ shadow: {
2714
+ cast: this.getBody().castShadow,
2715
+ receive: this.getBody().receiveShadow,
2716
+ },
2717
+ };
2718
+ }
2719
+ }
2720
+ }
2721
+ &nbsp;</pre></td></tr></table></pre>
2722
+
2723
+ <div class='push'></div><!-- for sticky footer -->
2724
+ </div><!-- /wrapper -->
2725
+ <div class='footer quiet pad2 space-top1 center small'>
2726
+ Code coverage generated by
2727
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2728
+ at 2026-03-02T17:28:15.675Z
2729
+ </div>
2730
+ <script src="../prettify.js"></script>
2731
+ <script>
2732
+ window.onload = function () {
2733
+ prettyPrint();
2734
+ };
2735
+ </script>
2736
+ <script src="../sorter.js"></script>
2737
+ <script src="../block-navigation.js"></script>
2738
+ </body>
2739
+ </html>
2740
+