1 // Copyright 2011 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <cmath>
6 #include <string>
7
8 #include <gtest/gtest.h>
9
10 #include "include/split_correcting_filter_interpreter.h"
11 #include "include/unittest_util.h"
12 #include "include/util.h"
13
14 using std::string;
15
16 namespace gestures {
17
18 class SplitCorrectingFilterInterpreterTest : public ::testing::Test {};
19
20 class SplitCorrectingFilterInterpreterTestInterpreter :
21 public Interpreter {
22 public:
SplitCorrectingFilterInterpreterTestInterpreter()23 SplitCorrectingFilterInterpreterTestInterpreter()
24 : Interpreter(nullptr, nullptr, false),
25 expect_finger_ids_(true),
26 iteration_(0),
27 expect_warp_on_one_finger_only_(false) {}
28
SyncInterpret(HardwareState & hwstate,stime_t * timeout)29 virtual void SyncInterpret(HardwareState& hwstate, stime_t* timeout) {
30 if (expect_finger_ids_) {
31 EXPECT_EQ(hwstate.finger_cnt, hwstate.touch_cnt);
32 EXPECT_EQ(hwstate.finger_cnt, expected_ids_.size());
33 }
34 for (size_t i = 0; i < hwstate.finger_cnt; i++) {
35 bool found = SetContainsValue(expected_ids_,
36 hwstate.fingers[i].tracking_id);
37 if (expect_finger_ids_)
38 EXPECT_TRUE(found) << iteration_ << ","
39 << hwstate.fingers[i].tracking_id;
40 if (expect_warp_on_one_finger_only_) {
41 EXPECT_EQ(hwstate.finger_cnt == 1,
42 (hwstate.fingers[i].flags &
43 (GESTURES_FINGER_WARP_X | GESTURES_FINGER_WARP_Y)) ==
44 (GESTURES_FINGER_WARP_X | GESTURES_FINGER_WARP_Y));
45 }
46 }
47 iteration_++;
48 }
49
HandleTimer(stime_t now,stime_t * timeout)50 virtual void HandleTimer(stime_t now, stime_t* timeout) {}
51
52 std::set<short> expected_ids_;
53 bool expect_finger_ids_;
54 size_t iteration_;
55 bool expect_warp_on_one_finger_only_;
56 };
57
58 struct InputEventWithExpectations {
59 FingerState fs[kMaxFingers];
60 short out_ids[kMaxFingers];
61 };
62
63 namespace {
64
DoTest(InputEventWithExpectations * events,size_t events_len,bool t5r2)65 void DoTest(InputEventWithExpectations* events, size_t events_len, bool t5r2) {
66 SplitCorrectingFilterInterpreterTestInterpreter* base_interpreter
67 = new SplitCorrectingFilterInterpreterTestInterpreter;
68 SplitCorrectingFilterInterpreter interpreter(
69 nullptr, base_interpreter, nullptr);
70 interpreter.Enable();
71
72 HardwareProperties hwprops = {
73 .right = 100, .bottom = 100,
74 .res_x = 1,
75 .res_y = 1,
76 .orientation_minimum = -1,
77 .orientation_maximum = 2,
78 .max_finger_cnt = 5,
79 .max_touch_cnt = static_cast<unsigned short>(t5r2 ? 2 : 5),
80 .supports_t5r2 = t5r2 ? 1u : 0u,
81 .support_semi_mt = 0,
82 .is_button_pad = 1,
83 .has_wheel = 0,
84 .wheel_is_hi_res = 0,
85 .is_haptic_pad = 0,
86 };
87 TestInterpreterWrapper wrapper(&interpreter, &hwprops);
88
89 for (size_t i = 0; i < events_len; i++) {
90 InputEventWithExpectations* event = &events[i];
91 // Get finger count
92 unsigned short finger_cnt = 0;
93 for (size_t fidx = 0;
94 fidx < arraysize(event->fs) && event->fs[fidx].tracking_id >= 0;
95 fidx++)
96 finger_cnt += 1;
97 // Set up hardware state
98 HardwareState hs = make_hwstate(0.0, 0, finger_cnt, finger_cnt, event->fs);
99 // Set up expectations
100 base_interpreter->expected_ids_.clear();
101 for (size_t outidx = 0;
102 outidx < arraysize(event->out_ids) && event->out_ids[outidx] >= 0;
103 outidx++)
104 base_interpreter->expected_ids_.insert(event->out_ids[outidx]);
105 stime_t timestamp = -1.0;
106 wrapper.SyncInterpret(hs, ×tamp);
107 }
108 }
109
110 } // namespace {}
111
112 // Test that a full set of FingerStates doesn't cause a hang
TEST(SplitCorrectingFilterInterpreterTest,FullFingerSetTest)113 TEST(SplitCorrectingFilterInterpreterTest, FullFingerSetTest) {
114 InputEventWithExpectations events[2];
115
116 for (size_t i = 0; i < kMaxFingers; i++) {
117 short id = i + 100;
118 events[0].fs[i].tracking_id = id;
119 events[0].out_ids[i] = id;
120 }
121
122 // The test requires a second event to validate the finger states
123 events[1] = events[0];
124
125 DoTest(events, arraysize(events), false);
126 }
127
128 struct InCoords {
129 short id_;
130 float x_, y_, pressure_;
131 };
132
133 struct FalseMergeInputs {
134 stime_t timestamp;
135 InCoords in[2];
136 };
137
138 // Tests that when two fingers are scrolling and it looks like a merge
139 // at the beginning, we break out of merging.
TEST(SplitCorrectingFilterInterpreterTest,FalseMergeTest)140 TEST(SplitCorrectingFilterInterpreterTest, FalseMergeTest) {
141 FalseMergeInputs inputs[] = {
142 { 1324.3365, { { 66, 58.66, 16.60, 5.65 }, { -1, 0.00, 0.00, 0.00 } } },
143 { 1324.3474, { { 66, 61.41, 17.00, 36.70 }, { 67, 53.33, 17.10, 17.30 } } },
144 { 1324.3587, { { 66, 60.83, 17.30, 61.93 }, { 67, 53.00, 17.30, 50.28 } } },
145 { 1324.3699, { { 66, 60.66, 17.40, 65.81 }, { 67, 53.08, 17.50, 58.04 } } },
146 { 1324.3811, { { 66, 60.66, 17.40, 67.75 }, { 67, 53.00, 17.60, 58.04 } } },
147 { 1324.3923, { { 66, 60.58, 17.60, 67.75 }, { 67, 53.00, 17.70, 61.93 } } },
148 { 1324.4036, { { 66, 60.50, 18.00, 71.63 }, { 67, 53.00, 18.20, 65.81 } } },
149 { 1324.4152, { { 66, 60.58, 18.30, 73.57 }, { 67, 53.00, 18.50, 65.81 } } },
150 { 1324.4265, { { 66, 60.58, 19.00, 71.63 }, { 67, 52.91, 19.20, 67.75 } } },
151 { 1324.4377, { { 66, 60.58, 19.50, 71.63 }, { 67, 53.00, 19.70, 65.81 } } },
152 { 1324.4487, { { 66, 60.66, 20.10, 69.69 }, { 67, 52.91, 20.40, 63.87 } } },
153 { 1324.4596, { { 66, 60.58, 20.90, 69.69 }, { 67, 53.00, 21.10, 65.81 } } },
154 { 1324.4705, { { 66, 60.58, 21.50, 71.63 }, { 67, 53.00, 21.80, 65.81 } } },
155 { 1324.4815, { { 66, 60.50, 22.40, 73.57 }, { 67, 53.08, 22.60, 67.75 } } },
156 { 1324.4926, { { 66, 60.75, 23.10, 77.45 }, { 67, 53.00, 23.30, 69.69 } } },
157 { 1324.5039, { { 66, 60.75, 24.00, 77.45 }, { 67, 53.00, 24.10, 69.69 } } },
158 { 1324.5152, { { 66, 60.66, 24.50, 77.45 }, { 67, 53.00, 24.70, 71.63 } } },
159 };
160
161 SplitCorrectingFilterInterpreterTestInterpreter* base_interpreter
162 = new SplitCorrectingFilterInterpreterTestInterpreter;
163 SplitCorrectingFilterInterpreter interpreter(
164 nullptr, base_interpreter, nullptr);
165 interpreter.Enable();
166
167 HardwareProperties hwprops = {
168 .right = 100, .bottom = 100,
169 .res_x = 1,
170 .res_y = 1,
171 .orientation_minimum = -1,
172 .orientation_maximum = 2,
173 .max_finger_cnt = 5,
174 .max_touch_cnt = 5,
175 .supports_t5r2 = 0,
176 .support_semi_mt = 0,
177 .is_button_pad = 1,
178 .has_wheel = 0,
179 .wheel_is_hi_res = 0,
180 .is_haptic_pad = 0,
181 };
182 TestInterpreterWrapper wrapper(&interpreter, &hwprops);
183
184 for (size_t i = 0; i < arraysize(inputs); i++) {
185 const FalseMergeInputs& input = inputs[i];
186 const size_t max_finger_cnt = arraysize(input.in);
187 // Get finger count
188 unsigned short finger_cnt = 0;
189 for (size_t fidx = 0;
190 fidx < max_finger_cnt && input.in[fidx].id_ >= 0;
191 fidx++)
192 finger_cnt += 1;
193 // Set up hardware state
194 FingerState fs[max_finger_cnt];
195 for (size_t fidx = 0; fidx < finger_cnt; fidx++) {
196 memset(&fs[fidx], 0, sizeof(fs[fidx]));
197 fs[fidx].position_x = input.in[fidx].x_;
198 fs[fidx].position_y = input.in[fidx].y_;
199 fs[fidx].pressure = input.in[fidx].pressure_;
200 fs[fidx].tracking_id = input.in[fidx].id_;
201 }
202 HardwareState hs =
203 make_hwstate(input.timestamp, 0, finger_cnt, finger_cnt, &fs[0]);
204 // Set up expectations
205 base_interpreter->expect_finger_ids_ = false;
206 if (i == 1) {
207 // if the second iteration, expect merging to occur
208 base_interpreter->expect_finger_ids_ = true;
209 base_interpreter->expected_ids_.clear();
210 base_interpreter->expected_ids_.insert(inputs[0].in[0].id_);
211 } else if (i == (arraysize(inputs) - 1)) {
212 // if the final iteration, expect no merging
213 base_interpreter->expect_finger_ids_ = true;
214 base_interpreter->expected_ids_.clear();
215 base_interpreter->expected_ids_.insert(inputs[i].in[0].id_);
216 base_interpreter->expected_ids_.insert(inputs[i].in[1].id_);
217 }
218 // if the last iteration
219 stime_t timestamp = -1.0;
220
221 wrapper.SyncInterpret(hs, ×tamp);
222 base_interpreter->expect_warp_on_one_finger_only_ = true;
223 }
224 }
225
226 namespace {
227 struct DistFromPointToLineRec {
228 // line is (x0, y0) to (x1, y1). Point is (px, py). Expected dist is dist.
229 float x0, y0, x1, y1, px, py, dist;
230 };
231
WeakFloatEq(float f_a,float f_b)232 bool WeakFloatEq(float f_a, float f_b) {
233 return fabsf(f_a - f_b) < 0.001;
234 }
235 } // namespace
236
237 // This test sets up some example inputs to send through the
238 // DistFromPointToLine function. It also transforms these inputs in a variety
239 // of ways to further stress this function.
TEST(SplitCorrectingFilterInterpreterTest,DistFromPointToLineTest)240 TEST(SplitCorrectingFilterInterpreterTest, DistFromPointToLineTest) {
241 // Imagine a 3-4-5 triangle. theta is the angle between 4 and 5.
242 const float theta = acosf(4.0 / 5.0);
243
244 DistFromPointToLineRec tests[] = {
245 { 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0 },
246 { 1.0, 1.0, 2.0, 1.0, 2.0, 2.0, 1.0 },
247 { 1.0, 1.0, 2.0, 0.0, 2.0, 1.0, sqrtf(0.5) },
248 { 1.0, 1.0, 2.0, 1.0, 4.0, 2.0, 1.0 },
249 { 0.0, 0.0, static_cast<float>(4.0 * cosf(theta)),
250 static_cast<float>(4.0 * sinf(theta)), 5.0, 0.0, 3.0 },
251 };
252
253 // For each of the input tests, these are a variety of transforms we apply.
254 // There is a for loop for each type of transform. Because they are nested,
255 // this means we test every combination.
256 for (size_t i = 0; i < arraysize(tests); i++) {
257 for (int h_shift = 1; h_shift <= 4; h_shift++) {
258 float horiz_shift = static_cast<float>(h_shift) / 2.0;
259 for (int v_shift = 1; v_shift <= 4; v_shift++) {
260 float vert_shift = static_cast<float>(v_shift) / 2.0;
261 for (size_t h_invert = 0; h_invert < 2; h_invert++) {
262 float horiz_invert = h_invert ? 1.0 : -1.0;
263 for (size_t v_invert = 0; v_invert < 2; v_invert++) {
264 float vert_invert = v_invert ? 1.0 : -1.0;
265 for (size_t swap_inputs = 0; swap_inputs < 2; swap_inputs++) {
266 DistFromPointToLineRec rec = {
267 (tests[i].x0 + horiz_shift) * horiz_invert,
268 (tests[i].y0 + vert_shift) * vert_invert,
269 (tests[i].x1 + horiz_shift) * horiz_invert,
270 (tests[i].y1 + vert_shift) * vert_invert,
271 (tests[i].px + horiz_shift) * horiz_invert,
272 (tests[i].py + vert_shift) * vert_invert,
273 tests[i].dist,
274 };
275 if (swap_inputs) {
276 std::swap(rec.x0, rec.x1);
277 std::swap(rec.y0, rec.y1);
278 }
279 float actual = sqrtf(
280 SplitCorrectingFilterInterpreter::DistSqFromPointToLine(
281 rec.x0, rec.y0,
282 rec.x1, rec.y1,
283 rec.px, rec.py));
284 EXPECT_TRUE(WeakFloatEq(
285 rec.dist,
286 actual)) << "(" << rec.x0 << ", "
287 << rec.y0 << ") ("
288 << rec.x1 << ", "
289 << rec.y1 << ") and ("
290 << rec.px << ", "
291 << rec.py << "): got "
292 << actual << ", expected "
293 << rec.dist;
294 }
295 }
296 }
297 }
298 }
299 }
300 }
301
302 struct LumpyThumbSplitTestInputs {
303 stime_t now;
304 unsigned short buttons_down;
305 float x0, y0, pressure0;
306 short id0;
307 float x1, y1, pressure1;
308 short id1;
309 };
310
311 // Test that a thumbsplit on lumpy doesn't cause two fingers to appear
TEST(SplitCorrectingFilterInterpreterTest,LumpyThumbSplitTest)312 TEST(SplitCorrectingFilterInterpreterTest, LumpyThumbSplitTest) {
313 SplitCorrectingFilterInterpreterTestInterpreter* base_interpreter
314 = new SplitCorrectingFilterInterpreterTestInterpreter;
315 SplitCorrectingFilterInterpreter interpreter(
316 nullptr, base_interpreter, nullptr);
317 interpreter.Enable();
318
319 base_interpreter->expected_ids_.insert(2);
320 base_interpreter->expect_finger_ids_ = true;
321
322 HardwareProperties hwprops = {
323 .right = 106.666672,
324 .bottom = 68.0,
325 .res_x = 1.0,
326 .res_y = 1.0,
327 .orientation_minimum = -1,
328 .orientation_maximum = 2,
329 .max_finger_cnt = 15,
330 .max_touch_cnt = 5,
331 .supports_t5r2 = 0,
332 .support_semi_mt = 0,
333 .is_button_pad = 1,
334 .has_wheel = 0,
335 .wheel_is_hi_res = 0,
336 .is_haptic_pad = 0,
337 };
338 TestInterpreterWrapper wrapper(&interpreter, &hwprops);
339
340 LumpyThumbSplitTestInputs inputs[] = {
341 { 8.5812, 0, 52.66, 66.09, 79.39, 2, 0.00, 0.00, 0.00, 0 },
342 { 8.5904, 0, 52.66, 66.09, 81.33, 2, 0.00, 0.00, 0.00, 0 },
343 { 8.6087, 0, 52.66, 66.00, 81.33, 2, 0.00, 0.00, 0.00, 0 },
344 { 8.6179, 0, 52.66, 65.80, 83.27, 2, 0.00, 0.00, 0.00, 0 },
345 { 8.6365, 0, 52.58, 65.80, 85.21, 2, 0.00, 0.00, 0.00, 0 },
346 { 8.6457, 0, 52.41, 65.59, 89.09, 2, 0.00, 0.00, 0.00, 0 },
347 { 8.6550, 0, 52.25, 65.59, 91.03, 2, 0.00, 0.00, 0.00, 0 },
348 { 8.6642, 0, 52.00, 65.59, 92.97, 2, 0.00, 0.00, 0.00, 0 },
349 { 8.6735, 0, 51.91, 65.59, 96.85, 2, 0.00, 0.00, 0.00, 0 },
350 { 8.6828, 0, 51.58, 65.40, 102.67, 2, 0.00, 0.00, 0.00, 0 },
351 { 8.6921, 0, 51.33, 65.30, 104.61, 2, 0.00, 0.00, 0.00, 0 },
352 { 8.7015, 0, 51.25, 65.30, 106.55, 2, 0.00, 0.00, 0.00, 0 },
353 { 8.7110, 0, 51.00, 65.20, 110.43, 2, 0.00, 0.00, 0.00, 0 },
354 { 8.7205, 0, 50.83, 65.20, 116.26, 2, 0.00, 0.00, 0.00, 0 },
355 { 8.7298, 0, 50.41, 65.20, 118.20, 2, 0.00, 0.00, 0.00, 0 },
356 { 8.7393, 0, 50.08, 65.00, 118.20, 2, 0.00, 0.00, 0.00, 0 },
357 { 8.7487, 0, 49.66, 65.00, 118.20, 2, 0.00, 0.00, 0.00, 0 },
358 { 8.7582, 0, 49.25, 64.90, 118.20, 2, 0.00, 0.00, 0.00, 0 },
359 { 8.7678, 0, 48.83, 64.70, 118.20, 2, 0.00, 0.00, 0.00, 0 },
360 { 8.7773, 0, 48.58, 64.50, 118.20, 2, 0.00, 0.00, 0.00, 0 },
361 { 8.7869, 1, 48.33, 64.50, 118.20, 2, 0.00, 0.00, 0.00, 0 },
362 { 8.8088, 1, 49.83, 64.59, 118.20, 2, 39.91, 60.60, 98.79, 4 },
363 { 8.8213, 1, 45.91, 61.90, 191.93, 2, 0.00, 0.00, 0.00, 0 },
364 };
365 for (size_t i = 0; i < arraysize(inputs); i++) {
366 const LumpyThumbSplitTestInputs& input = inputs[i];
367 FingerState fs[2] = {
368 { 0, 0, 0, 0, input.pressure0, 0, input.x0, input.y0, input.id0, 0 },
369 { 0, 0, 0, 0, input.pressure1, 0, input.x1, input.y1, input.id1, 0 },
370 };
371 unsigned short finger_cnt = input.id1 ? 2 : 1;
372 HardwareState hs =
373 make_hwstate(input.now, input.buttons_down, finger_cnt, finger_cnt, fs);
374 stime_t timeout = NO_DEADLINE;
375 wrapper.SyncInterpret(hs, &timeout);
376 }
377 EXPECT_EQ(arraysize(inputs), base_interpreter->iteration_);
378 }
379
380 // Tests that close fingers that are scrolling don't get incorrectly merged.
TEST(SplitCorrectingFilterInterpreterTest,TwoFingerScrollTest)381 TEST(SplitCorrectingFilterInterpreterTest, TwoFingerScrollTest) {
382 InputEventWithExpectations events[] = {
383 {{{ 0, 0, 0, 0, 7.600345, 0, 56.250000, 61.400002, 3134, 0 },
384 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
385 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
386 { 3134, -1 }},
387 {{{ 0, 0, 0, 0, 17.302191, 0, 56.583336, 61.200001, 3134, 0 },
388 { 0, 0, 0, 0, 5.659976, 0, 42.000000, 64.099998, 3135, 0 },
389 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
390 { 3134, 3135, -1 }},
391 {{{ 0, 0, 0, 0, 23.123301, 0, 56.416668, 61.200001, 3134, 0 },
392 { 0, 0, 0, 0, 15.361822, 0, 42.000000, 64.000000, 3135, 0 },
393 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
394 { 3134, 3135, -1 }},
395 {{{ 0, 0, 0, 0, 28.944407, 0, 56.333336, 61.100002, 3134, 0 },
396 { 0, 0, 0, 0, 27.004038, 0, 41.916668, 63.600002, 3135, 0 },
397 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
398 { 3134, 3135, -1 }},
399 {{{ 0, 0, 0, 0, 30.884779, 0, 56.416668, 60.700001, 3134, 0 },
400 { 0, 0, 0, 0, 34.765518, 0, 41.916668, 62.700001, 3135, 0 },
401 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
402 { 3134, 3135, -1 }},
403 {{{ 0, 0, 0, 0, 34.765518, 0, 56.500000, 59.799999, 3134, 0 },
404 { 0, 0, 0, 0, 38.646255, 0, 42.000000, 61.600002, 3135, 0 },
405 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
406 { 3134, 3135, -1 }},
407 {{{ 0, 0, 0, 0, 32.825150, 0, 56.750000, 58.799999, 3134, 0 },
408 { 0, 0, 0, 0, 40.586628, 0, 42.166668, 60, 3135, 0 },
409 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
410 { 3134, 3135, -1 }},
411 {{{ 0, 0, 0, 0, 28.944407, 0, 56.916668, 57.400002, 3134, 0 },
412 { 0, 0, 0, 0, 40.586628, 0, 42.500000, 57.700001, 3135, 0 },
413 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
414 { 3134, 3135, -1 }},
415 {{{ 0, 0, 0, 0, 34.765518, 0, 57.333336, 55.200001, 3134, 0 },
416 { 0, 0, 0, 0, 36.705887, 0, 43.083336, 54.299999, 3135, 0 },
417 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
418 { 3134, 3135, -1 }},
419 {{{ 0, 0, 0, 0, 32.825150, 0, 57.916668, 52.100002, 3134, 0 },
420 { 0, 0, 0, 0, 34.765518, 0, 43.666668, 49.900002, 3135, 0 },
421 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
422 { 3134, 3135, -1 }},
423 {{{ 0, 0, 0, 0, 30.884779, 0, 58.666668, 47.900002, 3134, 0 },
424 { 0, 0, 0, 0, 34.765518, 0, 44.250000, 44.500000, 3135, 0 },
425 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
426 { 3134, 3135, -1 }},
427 {{{ 0, 0, 0, 0, 23.123301, 0, 59.666668, 42.799999, 3134, 0 },
428 { 0, 0, 0, 0, 44.467365, 0, 45.583336, 38.400002, 3135, 0 },
429 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
430 { 3134, 3135, -1 }},
431 {{{ 0, 0, 0, 0, 28.944407, 0, 61.500000, 34.299999, 3134, 0 },
432 { 0, 0, 0, 0, 27.004038, 0, 46.833336, 30.900000, 3135, 0 },
433 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
434 { 3134, 3135, -1 }},
435 {{{ 0, 0, 0, 0, 28.944407, 0, 63.166668, 28.000000, 3134, 0 },
436 { 0, 0, 0, 0, 32.825150, 0, 48.666668, 23.700001, 3135, 0 },
437 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
438 { 3134, 3135, -1 }},
439 {{{ 0, 0, 0, 0, 28.944407, 0, 65.666672, 20.400000, 3134, 0 },
440 { 0, 0, 0, 0, 34.765518, 0, 50.083336, 18.400000, 3135, 0 },
441 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
442 { 3134, 3135, -1 }},
443 {{{ 0, 0, 0, 0, 21.182930, 0, 67.500000, 15.200000, 3134, 0 },
444 { 0, 0, 0, 0, 17.302191, 0, 52.083336, 12.900001, 3135, 0 },
445 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
446 { 3134, 3135, -1 }},
447 {{{ 0, 0, 0, 0, 1.779237, 0, 55.500000, 4.000000, 3135, 0 },
448 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
449 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
450 { 3135, -1 }}
451 };
452
453 DoTest(events, arraysize(events), false);
454 }
455
456 // Tests that a thumb-edge gets correctly merged to a single contact
TEST(SplitCorrectingFilterInterpreterTest,ThumbDragTest)457 TEST(SplitCorrectingFilterInterpreterTest, ThumbDragTest) {
458 InputEventWithExpectations events[] = {
459 {{{ 0, 0, 0, 0, 9.540714, 0, 96.416672, 20.300001, 3087, 0 },
460 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
461 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
462 { 3087, -1 }},
463 {{{ 0, 0, 0, 0, 40.586628, 0, 96.250000, 20.600000, 3087, 0 },
464 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
465 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
466 { 3087, -1 }},
467 {{{ 0, 0, 0, 0, 65.811432, 0, 96.083336, 20.800001, 3087, 0 },
468 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
469 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
470 { 3087, -1 }},
471 {{{ 0, 0, 0, 0, 81.334381, 0, 96.000000, 21.000000, 3087, 0 },
472 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
473 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
474 { 3087, -1 }},
475 {{{ 0, 0, 0, 0, 91.036232, 0, 95.916672, 21.100000, 3087, 0 },
476 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
477 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
478 { 3087, -1 }},
479 {{{ 0, 0, 0, 0, 98.797707, 0, 95.916672, 21.100000, 3087, 0 },
480 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
481 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
482 { 3087, -1 }},
483 {{{ 0, 0, 0, 0, 104.618820, 0, 95.916672, 21.100000, 3087, 0 },
484 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
485 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
486 { 3087, -1 }},
487 {{{ 0, 0, 0, 0, 79.394012, 0, 95.916672, 21.700001, 3087, 0 },
488 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
489 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
490 { 3087, -1 }},
491 {{{ 0, 0, 0, 0, 83.274757, 0, 95.916672, 22.100000, 3087, 0 },
492 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
493 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
494 { 3087, -1 }},
495 {{{ 0, 0, 0, 0, 85.215126, 0, 95.916672, 22.300001, 3087, 0 },
496 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
497 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
498 { 3087, -1 }},
499 {{{ 0, 0, 0, 0, 89.095863, 0, 95.833336, 22.500000, 3087, 0 },
500 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
501 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
502 { 3087, -1 }},
503 {{{ 0, 0, 0, 0, 92.976601, 0, 95.666672, 22.700001, 3087, 0 },
504 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
505 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
506 { 3087, -1 }},
507 {{{ 0, 0, 0, 0, 94.916969, 0, 95.583336, 22.900000, 3087, 0 },
508 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
509 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
510 { 3087, -1 }},
511 {{{ 0, 0, 0, 0, 98.797707, 0, 95.416672, 23.000000, 3087, 0 },
512 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
513 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
514 { 3087, -1 }},
515 {{{ 0, 0, 0, 0, 100.738075, 0, 95.166672, 23.100000, 3087, 0 },
516 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
517 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
518 { 3087, -1 }},
519 {{{ 0, 0, 0, 0, 106.559189, 0, 94.916672, 23.200001, 3087, 0 },
520 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
521 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
522 { 3087, -1 }},
523 {{{ 0, 0, 0, 0, 110.439926, 0, 94.666672, 23.400000, 3087, 0 },
524 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
525 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
526 { 3087, -1 }},
527 {{{ 0, 0, 0, 0, 112.380295, 0, 94.333336, 23.600000, 3087, 0 },
528 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
529 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
530 { 3087, -1 }},
531 {{{ 0, 0, 0, 0, 114.320663, 0, 93.750000, 26.600000, 3087, 0 },
532 { 0, 0, 0, 0, 102.678452, 0, 92.833336, 17.100000, 3088, 0 },
533 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
534 { 3087, -1 }},
535 {{{ 0, 0, 0, 0, 116.261032, 0, 93.583336, 26.600000, 3087, 0 },
536 { 0, 0, 0, 0, 100.738075, 0, 92.666672, 17.200001, 3088, 0 },
537 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
538 { 3087, -1 }},
539 {{{ 0, 0, 0, 0, 96.857338, 0, 92.333336, 20.700001, 3088, 0 },
540 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
541 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
542 { 3087, -1 }},
543 {{{ 0, 0, 0, 0, 96.857338, 0, 92.083336, 20.700001, 3088, 0 },
544 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
545 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
546 { 3087, -1 }},
547 {{{ 0, 0, 0, 0, 98.797707, 0, 91.750000, 20.700001, 3088, 0 },
548 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
549 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
550 { 3087, -1 }},
551 {{{ 0, 0, 0, 0, 118.201401, 0, 91.416672, 21.500000, 3088, 0 },
552 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
553 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
554 { 3087, -1 }},
555 {{{ 0, 0, 0, 0, 118.201401, 0, 90.916672, 22.000000, 3088, 0 },
556 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
557 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
558 { 3087, -1 }},
559 {{{ 0, 0, 0, 0, 116.261032, 0, 90.416672, 22.800001, 3088, 0 },
560 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
561 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
562 { 3087, -1 }},
563 {{{ 0, 0, 0, 0, 118.201401, 0, 89.916672, 23.400000, 3088, 0 },
564 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
565 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
566 { 3087, -1 }},
567 {{{ 0, 0, 0, 0, 178.352859, 0, 89.416672, 23.700001, 3088, 0 },
568 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
569 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
570 { 3087, -1 }},
571 {{{ 0, 0, 0, 0, 178.352859, 0, 88.916672, 23.900000, 3088, 0 },
572 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
573 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
574 { 3087, -1 }},
575 {{{ 0, 0, 0, 0, 118.201401, 0, 87.583336, 27.200001, 3088, 0 },
576 { 0, 0, 0, 0, 91.036232, 0, 86.166672, 18.000000, 3089, 0 },
577 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
578 { 3087, -1 }},
579 {{{ 0, 0, 0, 0, 118.201401, 0, 87.333336, 27.300001, 3088, 0 },
580 { 0, 0, 0, 0, 87.155495, 0, 85.916672, 18.100000, 3089, 0 },
581 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
582 { 3087, -1 }},
583 {{{ 0, 0, 0, 0, 85.215126, 0, 85.583336, 21.600000, 3089, 0 },
584 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
585 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
586 { 3087, -1 }},
587 {{{ 0, 0, 0, 0, 118.201401, 0, 85.416672, 22.700001, 3089, 0 },
588 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
589 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
590 { 3087, -1 }},
591 {{{ 0, 0, 0, 0, 118.201401, 0, 85.083336, 23.400000, 3089, 0 },
592 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
593 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
594 { 3087, -1 }},
595 {{{ 0, 0, 0, 0, 118.201401, 0, 84.583336, 23.900000, 3089, 0 },
596 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
597 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
598 { 3087, -1 }},
599 {{{ 0, 0, 0, 0, 118.201401, 0, 84.000000, 24.700001, 3089, 0 },
600 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
601 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
602 { 3087, -1 }},
603 {{{ 0, 0, 0, 0, 180.293228, 0, 83.500000, 25.200001, 3089, 0 },
604 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
605 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
606 { 3087, -1 }},
607 {{{ 0, 0, 0, 0, 182.233597, 0, 82.916672, 25.500000, 3089, 0 },
608 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
609 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
610 { 3087, -1 }},
611 {{{ 0, 0, 0, 0, 180.293228, 0, 82.333336, 25.800001, 3089, 0 },
612 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
613 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
614 { 3087, -1 }},
615 {{{ 0, 0, 0, 0, 106.559189, 0, 80.916672, 32.200001, 3089, 0 },
616 { 0, 0, 0, 0, 118.201401, 0, 78.916672, 22.500000, 3090, 0 },
617 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
618 { 3087, -1 }},
619 {{{ 0, 0, 0, 0, 110.439926, 0, 80.583336, 32.299999, 3089, 0 },
620 { 0, 0, 0, 0, 116.261032, 0, 78.500000, 22.700001, 3090, 0 },
621 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
622 { 3087, -1 }},
623 {{{ 0, 0, 0, 0, 114.320663, 0, 77.833336, 26.100000, 3090, 0 },
624 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
625 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
626 { 3087, -1 }},
627 {{{ 0, 0, 0, 0, 118.201401, 0, 77.583336, 26.800001, 3090, 0 },
628 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
629 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
630 { 3087, -1 }},
631 {{{ 0, 0, 0, 0, 114.320663, 0, 77.250000, 27.900000, 3090, 0 },
632 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
633 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
634 { 3087, -1 }},
635 {{{ 0, 0, 0, 0, 118.201401, 0, 76.750000, 28.700001, 3090, 0 },
636 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
637 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
638 { 3087, -1 }},
639 {{{ 0, 0, 0, 0, 186.114334, 0, 76.250000, 29.100000, 3090, 0 },
640 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
641 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
642 { 3087, -1 }},
643 {{{ 0, 0, 0, 0, 118.201401, 0, 75.000000, 32.900002, 3090, 0 },
644 { 0, 0, 0, 0, 100.738075, 0, 72.666672, 23.900000, 3091, 0 },
645 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
646 { 3087, -1 }},
647 {{{ 0, 0, 0, 0, 118.201401, 0, 74.666672, 33.000000, 3090, 0 },
648 { 0, 0, 0, 0, 96.857338, 0, 72.250000, 24.100000, 3091, 0 },
649 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
650 { 3087, -1 }},
651 {{{ 0, 0, 0, 0, 118.201401, 0, 72.333336, 29.900000, 3090, 0 },
652 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
653 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
654 { 3087, -1 }},
655 {{{ 0, 0, 0, 0, 118.201401, 0, 71.916672, 29.900000, 3090, 0 },
656 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
657 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
658 { 3087, -1 }},
659 {{{ 0, 0, 0, 0, 118.201401, 0, 71.416672, 30.100000, 3090, 0 },
660 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
661 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
662 { 3087, -1 }},
663 {{{ 0, 0, 0, 0, 118.201401, 0, 70.833336, 30.600000, 3090, 0 },
664 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
665 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
666 { 3087, -1 }},
667 {{{ 0, 0, 0, 0, 184.173965, 0, 70.333336, 30.900000, 3090, 0 },
668 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
669 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
670 { 3087, -1 }},
671 {{{ 0, 0, 0, 0, 188.054703, 0, 69.750000, 31.100000, 3090, 0 },
672 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
673 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
674 { 3087, -1 }},
675 {{{ 0, 0, 0, 0, 188.054703, 0, 69.166672, 31.300001, 3090, 0 },
676 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
677 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
678 { 3087, -1 }},
679 {{{ 0, 0, 0, 0, 118.201401, 0, 65.583336, 28.500000, 3090, 0 },
680 { 0, 0, 0, 0, 104.618820, 0, 68.416672, 37.700001, 3092, 0 },
681 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
682 { 3087, -1 }},
683 {{{ 0, 0, 0, 0, 118.201401, 0, 65.166672, 28.600000, 3090, 0 },
684 { 0, 0, 0, 0, 108.499557, 0, 68.083336, 37.799999, 3092, 0 },
685 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
686 { 3087, -1 }},
687 {{{ 0, 0, 0, 0, 118.201401, 0, 64.666672, 31.900000, 3090, 0 },
688 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
689 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
690 { 3087, -1 }},
691 {{{ 0, 0, 0, 0, 118.201401, 0, 64.416672, 32.400002, 3090, 0 },
692 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
693 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
694 { 3087, -1 }},
695 {{{ 0, 0, 0, 0, 118.201401, 0, 63.916668, 32.900002, 3090, 0 },
696 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
697 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
698 { 3087, -1 }},
699 {{{ 0, 0, 0, 0, 118.201401, 0, 63.500000, 33.799999, 3090, 0 },
700 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
701 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
702 { 3087, -1 }},
703 {{{ 0, 0, 0, 0, 118.201401, 0, 62.833336, 34.400002, 3090, 0 },
704 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
705 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
706 { 3087, -1 }},
707 {{{ 0, 0, 0, 0, 118.201401, 0, 61.833336, 38.600002, 3090, 0 },
708 { 0, 0, 0, 0, 110.439926, 0, 58.666668, 30, 3093, 0 },
709 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
710 { 3087, -1 }},
711 {{{ 0, 0, 0, 0, 118.201401, 0, 61.416668, 38.700001, 3090, 0 },
712 { 0, 0, 0, 0, 106.559189, 0, 58.250000, 30.200001, 3093, 0 },
713 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
714 { 3087, -1 }},
715 {{{ 0, 0, 0, 0, 118.201401, 0, 58.333336, 35.799999, 3090, 0 },
716 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
717 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
718 { 3087, -1 }},
719 {{{ 0, 0, 0, 0, 118.201401, 0, 57.916668, 35.900002, 3090, 0 },
720 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
721 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
722 { 3087, -1 }},
723 {{{ 0, 0, 0, 0, 118.201401, 0, 57.333336, 36.200001, 3090, 0 },
724 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
725 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
726 { 3087, -1 }},
727 {{{ 0, 0, 0, 0, 188.054703, 0, 56.750000, 36.500000, 3090, 0 },
728 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
729 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
730 { 3087, -1 }},
731 {{{ 0, 0, 0, 0, 191.935440, 0, 56.083336, 36.700001, 3090, 0 },
732 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
733 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
734 { 3087, -1 }},
735 {{{ 0, 0, 0, 0, 193.875809, 0, 55.416668, 37.000000, 3090, 0 },
736 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
737 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
738 { 3087, -1 }},
739 {{{ 0, 0, 0, 0, 118.201401, 0, 51.000000, 35.000000, 3090, 0 },
740 { 0, 0, 0, 0, 104.618820, 0, 54.750000, 43.600002, 3094, 0 },
741 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
742 { 3087, -1 }},
743 {{{ 0, 0, 0, 0, 118.201401, 0, 51.166668, 38.200001, 3090, 0 },
744 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
745 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
746 { 3087, -1 }},
747 {{{ 0, 0, 0, 0, 118.201401, 0, 50.916668, 38.700001, 3090, 0 },
748 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
749 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
750 { 3087, -1 }},
751 {{{ 0, 0, 0, 0, 118.201401, 0, 50.416668, 39.200001, 3090, 0 },
752 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
753 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
754 { 3087, -1 }},
755 {{{ 0, 0, 0, 0, 118.201401, 0, 49.750000, 39.600002, 3090, 0 },
756 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
757 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
758 { 3087, -1 }},
759 {{{ 0, 0, 0, 0, 112.380295, 0, 45.500000, 36.400002, 3090, 0 },
760 { 0, 0, 0, 0, 118.201401, 0, 49.500000, 44.500000, 3095, 0 },
761 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
762 { 3087, -1 }},
763 {{{ 0, 0, 0, 0, 110.439926, 0, 45.166668, 36.600002, 3090, 0 },
764 { 0, 0, 0, 0, 118.201401, 0, 49.166668, 44.600002, 3095, 0 },
765 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
766 { 3087, -1 }},
767 {{{ 0, 0, 0, 0, 118.201401, 0, 46.083336, 42.200001, 3095, 0 },
768 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
769 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
770 { 3087, -1 }},
771 {{{ 0, 0, 0, 0, 118.201401, 0, 45.666668, 42.200001, 3095, 0 },
772 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
773 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
774 { 3087, -1 }},
775 {{{ 0, 0, 0, 0, 118.201401, 0, 45.083336, 42.299999, 3095, 0 },
776 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
777 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
778 { 3087, -1 }},
779 {{{ 0, 0, 0, 0, 118.201401, 0, 44.416668, 42.500000, 3095, 0 },
780 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
781 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
782 { 3087, -1 }},
783 {{{ 0, 0, 0, 0, 118.201401, 0, 43.750000, 42.900002, 3095, 0 },
784 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
785 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
786 { 3087, -1 }},
787 {{{ 0, 0, 0, 0, 188.054703, 0, 43.166668, 43.200001, 3095, 0 },
788 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
789 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
790 { 3087, -1 }},
791 {{{ 0, 0, 0, 0, 184.173965, 0, 42.500000, 43.500000, 3095, 0 },
792 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
793 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
794 { 3087, -1 }},
795 {{{ 0, 0, 0, 0, 176.412491, 0, 41.833336, 43.900002, 3095, 0 },
796 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
797 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
798 { 3087, -1 }},
799 {{{ 0, 0, 0, 0, 108.499557, 0, 41.666668, 49.900002, 3095, 0 },
800 { 0, 0, 0, 0, 118.201401, 0, 37.250000, 42.000000, 3096, 0 },
801 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
802 { 3087, -1 }},
803 {{{ 0, 0, 0, 0, 112.380295, 0, 41.333336, 50, 3095, 0 },
804 { 0, 0, 0, 0, 118.201401, 0, 36.916668, 42.200001, 3096, 0 },
805 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
806 { 3087, -1 }},
807 {{{ 0, 0, 0, 0, 118.201401, 0, 37.416668, 46.400002, 3096, 0 },
808 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
809 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
810 { 3087, -1 }},
811 {{{ 0, 0, 0, 0, 118.201401, 0, 37.083336, 46.600002, 3096, 0 },
812 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
813 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
814 { 3087, -1 }},
815 {{{ 0, 0, 0, 0, 118.201401, 0, 36.583336, 46.900002, 3096, 0 },
816 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
817 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
818 { 3087, -1 }},
819 {{{ 0, 0, 0, 0, 118.201401, 0, 36.000000, 47.299999, 3096, 0 },
820 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
821 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
822 { 3087, -1 }},
823 {{{ 0, 0, 0, 0, 176.412491, 0, 35.416668, 47.500000, 3096, 0 },
824 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
825 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
826 { 3087, -1 }},
827 {{{ 0, 0, 0, 0, 186.114334, 0, 34.916668, 47.799999, 3096, 0 },
828 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
829 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
830 { 3087, -1 }},
831 {{{ 0, 0, 0, 0, 186.114334, 0, 34.333336, 48.100002, 3096, 0 },
832 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
833 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
834 { 3087, -1 }},
835 {{{ 0, 0, 0, 0, 184.173965, 0, 33.666668, 48.600002, 3096, 0 },
836 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
837 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
838 { 3087, -1 }},
839 {{{ 0, 0, 0, 0, 184.173965, 0, 33.000000, 49.100002, 3096, 0 },
840 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
841 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
842 { 3087, -1 }},
843 {{{ 0, 0, 0, 0, 186.114334, 0, 32.333336, 49.600002, 3096, 0 },
844 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
845 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
846 { 3087, -1 }},
847 {{{ 0, 0, 0, 0, 184.173965, 0, 31.666668, 50.200001, 3096, 0 },
848 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
849 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
850 { 3087, -1 }},
851 {{{ 0, 0, 0, 0, 184.173965, 0, 31.083334, 50.799999, 3096, 0 },
852 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
853 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
854 { 3087, -1 }},
855 {{{ 0, 0, 0, 0, 182.233597, 0, 30.500000, 51.299999, 3096, 0 },
856 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
857 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
858 { 3087, -1 }},
859 {{{ 0, 0, 0, 0, 184.173965, 0, 29.916668, 51.799999, 3096, 0 },
860 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
861 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
862 { 3087, -1 }},
863 {{{ 0, 0, 0, 0, 186.114334, 0, 29.333334, 52.299999, 3096, 0 },
864 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
865 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
866 { 3087, -1 }},
867 {{{ 0, 0, 0, 0, 178.352859, 0, 28.750000, 52.600002, 3096, 0 },
868 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
869 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
870 { 3087, -1 }},
871 {{{ 0, 0, 0, 0, 178.352859, 0, 28.166668, 52.900002, 3096, 0 },
872 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
873 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
874 { 3087, -1 }},
875 {{{ 0, 0, 0, 0, 178.352859, 0, 27.666668, 53.200001, 3096, 0 },
876 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
877 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
878 { 3087, -1 }},
879 {{{ 0, 0, 0, 0, 118.201401, 0, 27.166668, 53.700001, 3096, 0 },
880 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
881 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
882 { 3087, -1 }},
883 {{{ 0, 0, 0, 0, 118.201401, 0, 26.666668, 54.200001, 3096, 0 },
884 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
885 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
886 { 3087, -1 }},
887 {{{ 0, 0, 0, 0, 118.201401, 0, 26.250000, 54.700001, 3096, 0 },
888 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
889 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
890 { 3087, -1 }},
891 {{{ 0, 0, 0, 0, 118.201401, 0, 25.916668, 55.000000, 3096, 0 },
892 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
893 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
894 { 3087, -1 }},
895 {{{ 0, 0, 0, 0, 118.201401, 0, 25.666668, 55.200001, 3096, 0 },
896 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
897 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
898 { 3087, -1 }},
899 {{{ 0, 0, 0, 0, 118.201401, 0, 25.416668, 55.400002, 3096, 0 },
900 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
901 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
902 { 3087, -1 }},
903 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 55.500000, 3096, 0 },
904 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
905 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
906 { 3087, -1 }},
907 {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 55.600002, 3096, 0 },
908 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
909 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
910 { 3087, -1 }},
911 {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 55.600002, 3096, 0 },
912 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
913 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
914 { 3087, -1 }},
915 {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 55.700001, 3096, 0 },
916 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
917 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
918 { 3087, -1 }},
919 {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 55.700001, 3096, 0 },
920 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
921 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
922 { 3087, -1 }},
923 {{{ 0, 0, 0, 0, 102.678452, 0, 25.166668, 55.799999, 3096, 0 },
924 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
925 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
926 { 3087, -1 }},
927 {{{ 0, 0, 0, 0, 63.871063, 0, 25.250000, 56.000000, 3096, 0 },
928 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
929 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
930 { 3087, -1 }},
931 {{{ 0, 0, 0, 0, 27.004038, 0, 25.333334, 56.100002, 3096, 0 },
932 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
933 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
934 { 3087, -1 }},
935 };
936
937 DoTest(events, arraysize(events), false);
938 }
939
940 // Two thumb-edges as the same time
TEST(SplitCorrectingFilterInterpreterTest,DualThumbsTest)941 TEST(SplitCorrectingFilterInterpreterTest, DualThumbsTest) {
942 InputEventWithExpectations events[] = {
943 {{{ 0, 0, 0, 0, 36.705887, 0, 22.916668, 7.300000, 3111, 0 },
944 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
945 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
946 { 3111, -1 }},
947 {{{ 0, 0, 0, 0, 52.228844, 0, 22.916668, 7.200000, 3111, 0 },
948 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
949 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
950 { 3111, -1 }},
951 {{{ 0, 0, 0, 0, 65.811432, 0, 22.916668, 7.100000, 3111, 0 },
952 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
953 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
954 { 3111, -1 }},
955 {{{ 0, 0, 0, 0, 73.572906, 0, 22.916668, 6.800000, 3111, 0 },
956 { 0, 0, 0, 0, 5.659976, 0, 76.333336, 3.100000, 3112, 0 },
957 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
958 { 3111, 3112, -1 }},
959 {{{ 0, 0, 0, 0, 77.453644, 0, 22.916668, 6.800000, 3111, 0 },
960 { 0, 0, 0, 0, 40.586628, 0, 76.416672, 2.000000, 3112, 0 },
961 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
962 { 3111, 3112, -1 }},
963 {{{ 0, 0, 0, 0, 81.334381, 0, 22.916668, 6.800000, 3111, 0 },
964 { 0, 0, 0, 0, 63.871063, 0, 76.500000, 1.400000, 3112, 0 },
965 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
966 { 3111, 3112, -1 }},
967 {{{ 0, 0, 0, 0, 83.274757, 0, 22.916668, 6.800000, 3111, 0 },
968 { 0, 0, 0, 0, 79.394012, 0, 76.583336, 1.100000, 3112, 0 },
969 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
970 { 3111, 3112, -1 }},
971 {{{ 0, 0, 0, 0, 85.215126, 0, 22.916668, 6.800000, 3111, 0 },
972 { 0, 0, 0, 0, 91.036232, 0, 76.666672, 0.900000, 3112, 0 },
973 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
974 { 3111, 3112, -1 }},
975 {{{ 0, 0, 0, 0, 87.155495, 0, 22.916668, 6.800000, 3111, 0 },
976 { 0, 0, 0, 0, 94.916969, 0, 76.666672, 0.800000, 3112, 0 },
977 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
978 { 3111, 3112, -1 }},
979 {{{ 0, 0, 0, 0, 89.095863, 0, 22.916668, 6.800000, 3111, 0 },
980 { 0, 0, 0, 0, 100.738075, 0, 76.666672, 0.800000, 3112, 0 },
981 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
982 { 3111, 3112, -1 }},
983 {{{ 0, 0, 0, 0, 89.095863, 0, 22.916668, 6.800000, 3111, 0 },
984 { 0, 0, 0, 0, 102.678452, 0, 76.666672, 0.800000, 3112, 0 },
985 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
986 { 3111, 3112, -1 }},
987 {{{ 0, 0, 0, 0, 118.201401, 0, 23.666668, 6.800000, 3111, 0 },
988 { 0, 0, 0, 0, 104.618820, 0, 76.666672, 0.900000, 3112, 0 },
989 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
990 { 3111, 3112, -1 }},
991 {{{ 0, 0, 0, 0, 118.201401, 0, 24.166668, 6.800000, 3111, 0 },
992 { 0, 0, 0, 0, 110.439926, 0, 76.666672, 1.100000, 3112, 0 },
993 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
994 { 3111, 3112, -1 }},
995 {{{ 0, 0, 0, 0, 118.201401, 0, 24.500000, 6.800000, 3111, 0 },
996 { 0, 0, 0, 0, 131.783997, 0, 77.000000, 2.000000, 3112, 0 },
997 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
998 { 3111, 3112, -1 }},
999 {{{ 0, 0, 0, 0, 118.201401, 0, 24.666668, 6.800000, 3111, 0 },
1000 { 0, 0, 0, 0, 133.724365, 0, 77.333336, 3.000000, 3112, 0 },
1001 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1002 { 3111, 3112, -1 }},
1003 {{{ 0, 0, 0, 0, 118.201401, 0, 24.833334, 6.900000, 3111, 0 },
1004 { 0, 0, 0, 0, 100.738075, 0, 77.666672, 3.900000, 3112, 0 },
1005 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1006 { 3111, 3112, -1 }},
1007 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 7.000000, 3111, 0 },
1008 { 0, 0, 0, 0, 102.678452, 0, 81.416672, 6.900000, 3112, 0 },
1009 { 0, 0, 0, 0, 77.453644, 0, 73.500000, 3.200000, 3113, 0 },
1010 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1011 { 3111, 3112, -1 }},
1012 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 7.200000, 3111, 0 },
1013 { 0, 0, 0, 0, 104.618820, 0, 81.416672, 7.100000, 3112, 0 },
1014 { 0, 0, 0, 0, 19.242561, 0, 72.833336, 3.200000, 3113, 0 },
1015 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1016 { 3111, 3112, -1 }},
1017 {{{ 0, 0, 0, 0, 118.201401, 0, 25.500000, 7.600000, 3111, 0 },
1018 { 0, 0, 0, 0, 104.618820, 0, 78.500000, 6.900000, 3112, 0 },
1019 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1020 { 3111, 3112, -1 }},
1021 {{{ 0, 0, 0, 0, 118.201401, 0, 25.500000, 7.800000, 3111, 0 },
1022 { 0, 0, 0, 0, 108.499557, 0, 78.500000, 7.100000, 3112, 0 },
1023 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1024 { 3111, 3112, -1 }},
1025 {{{ 0, 0, 0, 0, 118.201401, 0, 25.500000, 8.100000, 3111, 0 },
1026 { 0, 0, 0, 0, 110.439926, 0, 78.500000, 7.400000, 3112, 0 },
1027 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1028 { 3111, 3112, -1 }},
1029 {{{ 0, 0, 0, 0, 118.201401, 0, 25.583334, 8.400001, 3111, 0 },
1030 { 0, 0, 0, 0, 145.366577, 0, 78.333336, 7.700000, 3112, 0 },
1031 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1032 { 3111, 3112, -1 }},
1033 {{{ 0, 0, 0, 0, 118.201401, 0, 25.666668, 8.900001, 3111, 0 },
1034 { 0, 0, 0, 0, 157.008789, 0, 78.250000, 8.100000, 3112, 0 },
1035 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1036 { 3111, 3112, -1 }},
1037 {{{ 0, 0, 0, 0, 118.201401, 0, 25.833334, 9.500000, 3111, 0 },
1038 { 0, 0, 0, 0, 157.008789, 0, 78.250000, 8.600000, 3112, 0 },
1039 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1040 { 3111, 3112, -1 }},
1041 {{{ 0, 0, 0, 0, 118.201401, 0, 26.000000, 10.100000, 3111, 0 },
1042 { 0, 0, 0, 0, 157.008789, 0, 78.250000, 9.100000, 3112, 0 },
1043 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1044 { 3111, 3112, -1 }},
1045 {{{ 0, 0, 0, 0, 174.472122, 0, 26.083334, 10.600000, 3111, 0 },
1046 { 0, 0, 0, 0, 118.201401, 0, 78.166672, 9.900001, 3112, 0 },
1047 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1048 { 3111, 3112, -1 }},
1049 {{{ 0, 0, 0, 0, 118.201401, 0, 26.166668, 11.400001, 3111, 0 },
1050 { 0, 0, 0, 0, 118.201401, 0, 78.166672, 10.700000, 3112, 0 },
1051 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1052 { 3111, 3112, -1 }},
1053 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 13.100000, 3111, 0 },
1054 { 0, 0, 0, 0, 116.261032, 0, 81.750000, 13.200000, 3112, 0 },
1055 { 0, 0, 0, 0, 91.036232, 0, 73.166672, 11.500000, 3114, 0 },
1056 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1057 { 3111, 3112, -1 }},
1058 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 13.400001, 3111, 0 },
1059 { 0, 0, 0, 0, 116.261032, 0, 81.750000, 13.500000, 3112, 0 },
1060 { 0, 0, 0, 0, 91.036232, 0, 73.083336, 11.800000, 3114, 0 },
1061 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1062 { 3111, 3112, -1 }},
1063 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 14.200000, 3111, 0 },
1064 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 13.900001, 3112, 0 },
1065 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1066 { 3111, 3112, -1 }},
1067 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 14.500000, 3111, 0 },
1068 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 14.200000, 3112, 0 },
1069 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1070 { 3111, 3112, -1 }},
1071 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 14.900001, 3111, 0 },
1072 { 0, 0, 0, 0, 172.531754, 0, 78.750000, 14.500000, 3112, 0 },
1073 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1074 { 3111, 3112, -1 }},
1075 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 15.400001, 3111, 0 },
1076 { 0, 0, 0, 0, 170.591385, 0, 78.666672, 14.800000, 3112, 0 },
1077 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1078 { 3111, 3112, -1 }},
1079 {{{ 0, 0, 0, 0, 118.201401, 0, 26.666668, 15.900001, 3111, 0 },
1080 { 0, 0, 0, 0, 166.710632, 0, 78.666672, 15.200000, 3112, 0 },
1081 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1082 { 3111, 3112, -1 }},
1083 {{{ 0, 0, 0, 0, 118.201401, 0, 26.750000, 16.400000, 3111, 0 },
1084 { 0, 0, 0, 0, 166.710632, 0, 78.583336, 15.600000, 3112, 0 },
1085 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1086 { 3111, 3112, -1 }},
1087 {{{ 0, 0, 0, 0, 118.201401, 0, 26.833334, 16.900000, 3111, 0 },
1088 { 0, 0, 0, 0, 168.651001, 0, 78.583336, 16.100000, 3112, 0 },
1089 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1090 { 3111, 3112, -1 }},
1091 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 17.400000, 3111, 0 },
1092 { 0, 0, 0, 0, 172.531754, 0, 78.583336, 16.600000, 3112, 0 },
1093 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1094 { 3111, 3112, -1 }},
1095 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 18.700001, 3111, 0 },
1096 { 0, 0, 0, 0, 118.201401, 0, 81.916672, 19.200001, 3112, 0 },
1097 { 0, 0, 0, 0, 96.857338, 0, 73.000000, 17.200001, 3115, 0 },
1098 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1099 { 3111, 3112, -1 }},
1100 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 18.900000, 3111, 0 },
1101 { 0, 0, 0, 0, 118.201401, 0, 81.916672, 19.400000, 3112, 0 },
1102 { 0, 0, 0, 0, 96.857338, 0, 72.916672, 17.500000, 3115, 0 },
1103 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1104 { 3111, 3112, -1 }},
1105 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 19.300001, 3111, 0 },
1106 { 0, 0, 0, 0, 118.201401, 0, 81.916672, 19.700001, 3112, 0 },
1107 { 0, 0, 0, 0, 98.797707, 0, 72.833336, 17.800001, 3115, 0 },
1108 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1109 { 3111, 3112, -1 }},
1110 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 20.500000, 3111, 0 },
1111 { 0, 0, 0, 0, 164.770264, 0, 79.833336, 20.100000, 3112, 0 },
1112 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1113 { 3111, 3112, -1 }},
1114 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 20.700001, 3111, 0 },
1115 { 0, 0, 0, 0, 164.770264, 0, 79.416672, 20.100000, 3112, 0 },
1116 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1117 { 3111, 3112, -1 }},
1118 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 21.000000, 3111, 0 },
1119 { 0, 0, 0, 0, 162.829895, 0, 78.916672, 20.200001, 3112, 0 },
1120 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1121 { 3111, 3112, -1 }},
1122 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 21.400000, 3111, 0 },
1123 { 0, 0, 0, 0, 170.591385, 0, 78.583336, 20.500000, 3112, 0 },
1124 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1125 { 3111, 3112, -1 }},
1126 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 21.900000, 3111, 0 },
1127 { 0, 0, 0, 0, 172.531754, 0, 78.416672, 20.900000, 3112, 0 },
1128 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1129 { 3111, 3112, -1 }},
1130 {{{ 0, 0, 0, 0, 118.201401, 0, 27.000000, 22.500000, 3111, 0 },
1131 { 0, 0, 0, 0, 174.472122, 0, 78.250000, 21.300001, 3112, 0 },
1132 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1133 { 3111, 3112, -1 }},
1134 {{{ 0, 0, 0, 0, 118.201401, 0, 27.083334, 23.000000, 3111, 0 },
1135 { 0, 0, 0, 0, 176.412491, 0, 78.166672, 21.800001, 3112, 0 },
1136 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1137 { 3111, 3112, -1 }},
1138 {{{ 0, 0, 0, 0, 118.201401, 0, 27.166668, 23.500000, 3111, 0 },
1139 { 0, 0, 0, 0, 176.412491, 0, 78.166672, 22.300001, 3112, 0 },
1140 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1141 { 3111, 3112, -1 }},
1142 {{{ 0, 0, 0, 0, 118.201401, 0, 27.083334, 24.000000, 3111, 0 },
1143 { 0, 0, 0, 0, 176.412491, 0, 78.166672, 22.700001, 3112, 0 },
1144 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1145 { 3111, 3112, -1 }},
1146 {{{ 0, 0, 0, 0, 118.201401, 0, 27.000000, 24.500000, 3111, 0 },
1147 { 0, 0, 0, 0, 100.738075, 0, 77.500000, 23.200001, 3112, 0 },
1148 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1149 { 3111, 3112, -1 }},
1150 {{{ 0, 0, 0, 0, 118.201401, 0, 27.000000, 25.700001, 3111, 0 },
1151 { 0, 0, 0, 0, 100.738075, 0, 72.750000, 23.700001, 3112, 0 },
1152 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 25.400000, 3116, 0 },
1153 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1154 { 3111, 3112, -1 }},
1155 {{{ 0, 0, 0, 0, 118.201401, 0, 26.916668, 25.900000, 3111, 0 },
1156 { 0, 0, 0, 0, 100.738075, 0, 72.750000, 23.900000, 3112, 0 },
1157 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 25.600000, 3116, 0 },
1158 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1159 { 3111, 3112, -1 }},
1160 {{{ 0, 0, 0, 0, 118.201401, 0, 26.833334, 26.200001, 3111, 0 },
1161 { 0, 0, 0, 0, 102.678452, 0, 72.666672, 24.100000, 3112, 0 },
1162 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 25.900000, 3116, 0 },
1163 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1164 { 3111, 3112, -1 }},
1165 {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 27.300001, 3111, 0 },
1166 { 0, 0, 0, 0, 118.201401, 0, 79.000000, 26.200001, 3116, 0 },
1167 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1168 { 3111, 3112, -1 }},
1169 {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 27.500000, 3111, 0 },
1170 { 0, 0, 0, 0, 118.201401, 0, 78.916672, 26.400000, 3116, 0 },
1171 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1172 { 3111, 3112, -1 }},
1173 {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 27.800001, 3111, 0 },
1174 { 0, 0, 0, 0, 168.651001, 0, 78.583336, 26.500000, 3116, 0 },
1175 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1176 { 3111, 3112, -1 }},
1177 {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 28.200001, 3111, 0 },
1178 { 0, 0, 0, 0, 168.651001, 0, 78.250000, 26.600000, 3116, 0 },
1179 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1180 { 3111, 3112, -1 }},
1181 {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 28.700001, 3111, 0 },
1182 { 0, 0, 0, 0, 176.412491, 0, 78.083336, 26.800001, 3116, 0 },
1183 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1184 { 3111, 3112, -1 }},
1185 {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 29.100000, 3111, 0 },
1186 { 0, 0, 0, 0, 176.412491, 0, 78.083336, 27.100000, 3116, 0 },
1187 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1188 { 3111, 3112, -1 }},
1189 {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 29.500000, 3111, 0 },
1190 { 0, 0, 0, 0, 176.412491, 0, 78.083336, 27.400000, 3116, 0 },
1191 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1192 { 3111, 3112, -1 }},
1193 {{{ 0, 0, 0, 0, 118.201401, 0, 26.583334, 29.900000, 3111, 0 },
1194 { 0, 0, 0, 0, 176.412491, 0, 78.083336, 27.800001, 3116, 0 },
1195 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1196 { 3111, 3112, -1 }},
1197 {{{ 0, 0, 0, 0, 118.201401, 0, 26.500000, 30.400000, 3111, 0 },
1198 { 0, 0, 0, 0, 176.412491, 0, 78.083336, 28.200001, 3116, 0 },
1199 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1200 { 3111, 3112, -1 }},
1201 {{{ 0, 0, 0, 0, 118.201401, 0, 26.416668, 30.800001, 3111, 0 },
1202 { 0, 0, 0, 0, 178.352859, 0, 78.083336, 28.500000, 3116, 0 },
1203 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1204 { 3111, 3112, -1 }},
1205 {{{ 0, 0, 0, 0, 118.201401, 0, 26.250000, 31.300001, 3111, 0 },
1206 { 0, 0, 0, 0, 174.472122, 0, 78.083336, 28.900000, 3116, 0 },
1207 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1208 { 3111, 3112, -1 }},
1209 {{{ 0, 0, 0, 0, 118.201401, 0, 26.166668, 31.800001, 3111, 0 },
1210 { 0, 0, 0, 0, 178.352859, 0, 78.083336, 29.300001, 3116, 0 },
1211 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1212 { 3111, 3112, -1 }},
1213 {{{ 0, 0, 0, 0, 118.201401, 0, 25.916668, 33.100002, 3111, 0 },
1214 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 31.600000, 3116, 0 },
1215 { 0, 0, 0, 0, 104.618820, 0, 72.750000, 29.800001, 3117, 0 },
1216 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1217 { 3111, 3112, -1 }},
1218 {{{ 0, 0, 0, 0, 118.201401, 0, 25.833334, 33.299999, 3111, 0 },
1219 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 31.800001, 3116, 0 },
1220 { 0, 0, 0, 0, 104.618820, 0, 72.666672, 30, 3117, 0 },
1221 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1222 { 3111, 3112, -1 }},
1223 {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 34.100002, 3111, 0 },
1224 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 32.000000, 3116, 0 },
1225 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1226 { 3111, 3112, -1 }},
1227 {{{ 0, 0, 0, 0, 118.201401, 0, 25.666668, 34.299999, 3111, 0 },
1228 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 32.200001, 3116, 0 },
1229 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1230 { 3111, 3112, -1 }},
1231 {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 34.500000, 3111, 0 },
1232 { 0, 0, 0, 0, 170.591385, 0, 78.583336, 32.299999, 3116, 0 },
1233 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1234 { 3111, 3112, -1 }},
1235 {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 34.799999, 3111, 0 },
1236 { 0, 0, 0, 0, 172.531754, 0, 78.250000, 32.500000, 3116, 0 },
1237 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1238 { 3111, 3112, -1 }},
1239 {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 35.200001, 3111, 0 },
1240 { 0, 0, 0, 0, 178.352859, 0, 78.083336, 32.799999, 3116, 0 },
1241 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1242 { 3111, 3112, -1 }},
1243 {{{ 0, 0, 0, 0, 118.201401, 0, 25.750000, 35.600002, 3111, 0 },
1244 { 0, 0, 0, 0, 178.352859, 0, 78.000000, 33.200001, 3116, 0 },
1245 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1246 { 3111, 3112, -1 }},
1247 {{{ 0, 0, 0, 0, 182.233597, 0, 25.750000, 35.900002, 3111, 0 },
1248 { 0, 0, 0, 0, 118.201401, 0, 78.000000, 33.799999, 3116, 0 },
1249 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1250 { 3111, 3112, -1 }},
1251 {{{ 0, 0, 0, 0, 182.233597, 0, 25.750000, 36.200001, 3111, 0 },
1252 { 0, 0, 0, 0, 100.738075, 0, 77.416672, 34.299999, 3116, 0 },
1253 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1254 { 3111, 3112, -1 }},
1255 {{{ 0, 0, 0, 0, 98.797707, 0, 24.750000, 36.799999, 3111, 0 },
1256 { 0, 0, 0, 0, 100.738075, 0, 77.000000, 34.799999, 3116, 0 },
1257 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1258 { 3111, 3112, -1 }},
1259 {{{ 0, 0, 0, 0, 98.797707, 0, 24.083334, 37.299999, 3111, 0 },
1260 { 0, 0, 0, 0, 102.678452, 0, 76.750000, 35.299999, 3116, 0 },
1261 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1262 { 3111, 3112, -1 }},
1263 {{{ 0, 0, 0, 0, 118.201401, 0, 25.333334, 38.299999, 3111, 0 },
1264 { 0, 0, 0, 0, 104.618820, 0, 72.666672, 36.100002, 3116, 0 },
1265 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 37.700001, 3118, 0 },
1266 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1267 { 3111, 3112, -1 }},
1268 {{{ 0, 0, 0, 0, 118.201401, 0, 25.333334, 38.500000, 3111, 0 },
1269 { 0, 0, 0, 0, 104.618820, 0, 72.583336, 36.299999, 3116, 0 },
1270 { 0, 0, 0, 0, 118.201401, 0, 81.833336, 37.900002, 3118, 0 },
1271 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1272 { 3111, 3112, -1 }},
1273 {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 39.200001, 3111, 0 },
1274 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 38.100002, 3118, 0 },
1275 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1276 { 3111, 3112, -1 }},
1277 {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 39.400002, 3111, 0 },
1278 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 38.299999, 3118, 0 },
1279 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1280 { 3111, 3112, -1 }},
1281 {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 39.700001, 3111, 0 },
1282 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 38.600002, 3118, 0 },
1283 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1284 { 3111, 3112, -1 }},
1285 {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 40, 3111, 0 },
1286 { 0, 0, 0, 0, 170.591385, 0, 78.583336, 38.799999, 3118, 0 },
1287 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1288 { 3111, 3112, -1 }},
1289 {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 40.400002, 3111, 0 },
1290 { 0, 0, 0, 0, 178.352859, 0, 78.416672, 39.100002, 3118, 0 },
1291 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1292 { 3111, 3112, -1 }},
1293 {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 40.799999, 3111, 0 },
1294 { 0, 0, 0, 0, 178.352859, 0, 78.250000, 39.500000, 3118, 0 },
1295 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1296 { 3111, 3112, -1 }},
1297 {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 41.200001, 3111, 0 },
1298 { 0, 0, 0, 0, 180.293228, 0, 78.166672, 39.900002, 3118, 0 },
1299 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1300 { 3111, 3112, -1 }},
1301 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 41.600002, 3111, 0 },
1302 { 0, 0, 0, 0, 178.352859, 0, 78.166672, 40.400002, 3118, 0 },
1303 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1304 { 3111, 3112, -1 }},
1305 {{{ 0, 0, 0, 0, 118.201401, 0, 25.416668, 41.900002, 3111, 0 },
1306 { 0, 0, 0, 0, 180.293228, 0, 78.166672, 40.799999, 3118, 0 },
1307 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1308 { 3111, 3112, -1 }},
1309 {{{ 0, 0, 0, 0, 186.114334, 0, 25.416668, 42.200001, 3111, 0 },
1310 { 0, 0, 0, 0, 118.201401, 0, 78.083336, 41.400002, 3118, 0 },
1311 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1312 { 3111, 3112, -1 }},
1313 {{{ 0, 0, 0, 0, 186.114334, 0, 25.333334, 42.500000, 3111, 0 },
1314 { 0, 0, 0, 0, 102.678452, 0, 77.416672, 41.700001, 3118, 0 },
1315 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1316 { 3111, 3112, -1 }},
1317 {{{ 0, 0, 0, 0, 102.678452, 0, 22.916668, 43.799999, 3111, 0 },
1318 { 0, 0, 0, 0, 104.618820, 0, 72.666672, 42.299999, 3118, 0 },
1319 { 0, 0, 0, 0, 118.201401, 0, 81.916672, 43.799999, 3119, 0 },
1320 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1321 { 3111, 3112, -1 }},
1322 {{{ 0, 0, 0, 0, 104.618820, 0, 22.833334, 44.000000, 3111, 0 },
1323 { 0, 0, 0, 0, 102.678452, 0, 72.666672, 42.500000, 3118, 0 },
1324 { 0, 0, 0, 0, 118.201401, 0, 81.916672, 44.000000, 3119, 0 },
1325 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1326 { 3111, 3112, -1 }},
1327 {{{ 0, 0, 0, 0, 104.618820, 0, 22.750000, 44.299999, 3111, 0 },
1328 { 0, 0, 0, 0, 104.618820, 0, 72.666672, 42.700001, 3118, 0 },
1329 { 0, 0, 0, 0, 118.201401, 0, 81.916672, 44.200001, 3119, 0 },
1330 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1331 { 3111, 3112, -1 }},
1332 {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 45.100002, 3111, 0 },
1333 { 0, 0, 0, 0, 118.201401, 0, 79.000000, 44.500000, 3119, 0 },
1334 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1335 { 3111, 3112, -1 }},
1336 {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 45.400002, 3111, 0 },
1337 { 0, 0, 0, 0, 118.201401, 0, 79.000000, 44.700001, 3119, 0 },
1338 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1339 { 3111, 3112, -1 }},
1340 {{{ 0, 0, 0, 0, 118.201401, 0, 24.833334, 45.700001, 3111, 0 },
1341 { 0, 0, 0, 0, 184.173965, 0, 78.833336, 44.900002, 3119, 0 },
1342 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1343 { 3111, 3112, -1 }},
1344 {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 46.100002, 3111, 0 },
1345 { 0, 0, 0, 0, 170.591385, 0, 78.583336, 45.000000, 3119, 0 },
1346 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1347 { 3111, 3112, -1 }},
1348 {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 46.500000, 3111, 0 },
1349 { 0, 0, 0, 0, 166.710632, 0, 78.333336, 45.200001, 3119, 0 },
1350 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1351 { 3111, 3112, -1 }},
1352 {{{ 0, 0, 0, 0, 118.201401, 0, 25.166668, 47.000000, 3111, 0 },
1353 { 0, 0, 0, 0, 182.233597, 0, 78.166672, 45.500000, 3119, 0 },
1354 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1355 { 3111, 3112, -1 }},
1356 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 47.400002, 3111, 0 },
1357 { 0, 0, 0, 0, 184.173965, 0, 78.166672, 45.799999, 3119, 0 },
1358 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1359 { 3111, 3112, -1 }},
1360 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 47.700001, 3111, 0 },
1361 { 0, 0, 0, 0, 184.173965, 0, 78.166672, 46.200001, 3119, 0 },
1362 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1363 { 3111, 3112, -1 }},
1364 {{{ 0, 0, 0, 0, 118.201401, 0, 25.250000, 48.100002, 3111, 0 },
1365 { 0, 0, 0, 0, 180.293228, 0, 78.166672, 46.600002, 3119, 0 },
1366 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1367 { 3111, 3112, -1 }},
1368 {{{ 0, 0, 0, 0, 186.114334, 0, 25.166668, 48.400002, 3111, 0 },
1369 { 0, 0, 0, 0, 118.201401, 0, 78.166672, 47.000000, 3119, 0 },
1370 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1371 { 3111, 3112, -1 }},
1372 {{{ 0, 0, 0, 0, 186.114334, 0, 25.083334, 48.700001, 3111, 0 },
1373 { 0, 0, 0, 0, 118.201401, 0, 78.166672, 47.400002, 3119, 0 },
1374 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1375 { 3111, 3112, -1 }},
1376 {{{ 0, 0, 0, 0, 102.678452, 0, 24.166668, 49.200001, 3111, 0 },
1377 { 0, 0, 0, 0, 100.738075, 0, 77.500000, 47.700001, 3119, 0 },
1378 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1379 { 3111, 3112, -1 }},
1380 {{{ 0, 0, 0, 0, 102.678452, 0, 23.583334, 49.700001, 3111, 0 },
1381 { 0, 0, 0, 0, 118.201401, 0, 77.666672, 48.100002, 3119, 0 },
1382 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1383 { 3111, 3112, -1 }},
1384 {{{ 0, 0, 0, 0, 104.618820, 0, 22.666668, 50.600002, 3111, 0 },
1385 { 0, 0, 0, 0, 118.201401, 0, 82.000000, 49.900002, 3119, 0 },
1386 { 0, 0, 0, 0, 100.738075, 0, 72.666672, 48.400002, 3120, 0 },
1387 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1388 { 3111, 3112, -1 }},
1389 {{{ 0, 0, 0, 0, 118.201401, 0, 23.333334, 50.799999, 3111, 0 },
1390 { 0, 0, 0, 0, 118.201401, 0, 82.000000, 50.100002, 3119, 0 },
1391 { 0, 0, 0, 0, 100.738075, 0, 72.666672, 48.600002, 3120, 0 },
1392 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1393 { 3111, 3112, -1 }},
1394 {{{ 0, 0, 0, 0, 118.201401, 0, 24.500000, 51.200001, 3111, 0 },
1395 { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.200001, 3119, 0 },
1396 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1397 { 3111, 3112, -1 }},
1398 {{{ 0, 0, 0, 0, 118.201401, 0, 24.416668, 51.400002, 3111, 0 },
1399 { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.299999, 3119, 0 },
1400 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1401 { 3111, 3112, -1 }},
1402 {{{ 0, 0, 0, 0, 118.201401, 0, 24.416668, 51.600002, 3111, 0 },
1403 { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.500000, 3119, 0 },
1404 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1405 { 3111, 3112, -1 }},
1406 {{{ 0, 0, 0, 0, 118.201401, 0, 24.416668, 51.799999, 3111, 0 },
1407 { 0, 0, 0, 0, 118.201401, 0, 79.166672, 50.700001, 3119, 0 },
1408 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1409 { 3111, 3112, -1 }},
1410 {{{ 0, 0, 0, 0, 118.201401, 0, 24.333334, 52.100002, 3111, 0 },
1411 { 0, 0, 0, 0, 184.173965, 0, 79.000000, 50.900002, 3119, 0 },
1412 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1413 { 3111, 3112, -1 }},
1414 {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 52.400002, 3111, 0 },
1415 { 0, 0, 0, 0, 184.173965, 0, 78.833336, 51.100002, 3119, 0 },
1416 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1417 { 3111, 3112, -1 }},
1418 {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 52.700001, 3111, 0 },
1419 { 0, 0, 0, 0, 164.770264, 0, 78.583336, 51.299999, 3119, 0 },
1420 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1421 { 3111, 3112, -1 }},
1422 {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 53.100002, 3111, 0 },
1423 { 0, 0, 0, 0, 164.770264, 0, 78.333336, 51.500000, 3119, 0 },
1424 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1425 { 3111, 3112, -1 }},
1426 {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 53.400002, 3111, 0 },
1427 { 0, 0, 0, 0, 178.352859, 0, 78.250000, 51.900002, 3119, 0 },
1428 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1429 { 3111, 3112, -1 }},
1430 {{{ 0, 0, 0, 0, 118.201401, 0, 24.833334, 53.700001, 3111, 0 },
1431 { 0, 0, 0, 0, 178.352859, 0, 78.250000, 52.299999, 3119, 0 },
1432 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1433 { 3111, 3112, -1 }},
1434 {{{ 0, 0, 0, 0, 118.201401, 0, 25.000000, 54.000000, 3111, 0 },
1435 { 0, 0, 0, 0, 178.352859, 0, 78.250000, 52.799999, 3119, 0 },
1436 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1437 { 3111, 3112, -1 }},
1438 {{{ 0, 0, 0, 0, 118.201401, 0, 25.083334, 54.400002, 3111, 0 },
1439 { 0, 0, 0, 0, 180.293228, 0, 78.250000, 53.299999, 3119, 0 },
1440 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1441 { 3111, 3112, -1 }},
1442 {{{ 0, 0, 0, 0, 186.114334, 0, 25.000000, 54.700001, 3111, 0 },
1443 { 0, 0, 0, 0, 118.201401, 0, 78.166672, 53.900002, 3119, 0 },
1444 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1445 { 3111, 3112, -1 }},
1446 {{{ 0, 0, 0, 0, 178.352859, 0, 24.916668, 55.000000, 3111, 0 },
1447 { 0, 0, 0, 0, 118.201401, 0, 78.416672, 54.500000, 3119, 0 },
1448 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1449 { 3111, 3112, -1 }},
1450 {{{ 0, 0, 0, 0, 102.678452, 0, 24.000000, 55.500000, 3111, 0 },
1451 { 0, 0, 0, 0, 118.201401, 0, 78.583336, 55.100002, 3119, 0 },
1452 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1453 { 3111, 3112, -1 }},
1454 {{{ 0, 0, 0, 0, 102.678452, 0, 23.416668, 56.000000, 3111, 0 },
1455 { 0, 0, 0, 0, 118.201401, 0, 78.750000, 55.799999, 3119, 0 },
1456 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1457 { 3111, 3112, -1 }},
1458 {{{ 0, 0, 0, 0, 104.618820, 0, 23.083334, 56.500000, 3111, 0 },
1459 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 56.400002, 3119, 0 },
1460 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1461 { 3111, 3112, -1 }},
1462 {{{ 0, 0, 0, 0, 102.678452, 0, 22.833334, 57.000000, 3111, 0 },
1463 { 0, 0, 0, 0, 118.201401, 0, 78.916672, 57.100002, 3119, 0 },
1464 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1465 { 3111, 3112, -1 }},
1466 {{{ 0, 0, 0, 0, 102.678452, 0, 22.666668, 57.500000, 3111, 0 },
1467 { 0, 0, 0, 0, 118.201401, 0, 79.000000, 57.900002, 3119, 0 },
1468 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1469 { 3111, 3112, -1 }},
1470 {{{ 0, 0, 0, 0, 118.201401, 0, 23.166668, 58.000000, 3111, 0 },
1471 { 0, 0, 0, 0, 118.201401, 0, 78.833336, 58.799999, 3119, 0 },
1472 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1473 { 3111, 3112, -1 }},
1474 {{{ 0, 0, 0, 0, 118.201401, 0, 23.500000, 58.500000, 3111, 0 },
1475 { 0, 0, 0, 0, 118.201401, 0, 78.666672, 59.600002, 3119, 0 },
1476 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1477 { 3111, 3112, -1 }},
1478 {{{ 0, 0, 0, 0, 118.201401, 0, 23.750000, 59.000000, 3111, 0 },
1479 { 0, 0, 0, 0, 118.201401, 0, 78.500000, 60.400002, 3119, 0 },
1480 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1481 { 3111, 3112, -1 }},
1482 {{{ 0, 0, 0, 0, 118.201401, 0, 23.833334, 59.400002, 3111, 0 },
1483 { 0, 0, 0, 0, 168.651001, 0, 78.333336, 60.900002, 3119, 0 },
1484 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1485 { 3111, 3112, -1 }},
1486 {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 59.700001, 3111, 0 },
1487 { 0, 0, 0, 0, 162.829895, 0, 78.250000, 61.299999, 3119, 0 },
1488 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1489 { 3111, 3112, -1 }},
1490 {{{ 0, 0, 0, 0, 118.201401, 0, 24.583334, 60.100002, 3111, 0 },
1491 { 0, 0, 0, 0, 157.008789, 0, 78.166672, 61.700001, 3119, 0 },
1492 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1493 { 3111, 3112, -1 }},
1494 {{{ 0, 0, 0, 0, 118.201401, 0, 24.750000, 60.600002, 3111, 0 },
1495 { 0, 0, 0, 0, 151.187683, 0, 78.083336, 62.000000, 3119, 0 },
1496 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1497 { 3111, 3112, -1 }},
1498 {{{ 0, 0, 0, 0, 118.201401, 0, 24.916668, 61.100002, 3111, 0 },
1499 { 0, 0, 0, 0, 141.485840, 0, 78.000000, 62.299999, 3119, 0 },
1500 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1501 { 3111, 3112, -1 }},
1502 {{{ 0, 0, 0, 0, 172.531754, 0, 25.000000, 61.400002, 3111, 0 },
1503 { 0, 0, 0, 0, 91.036232, 0, 78.666672, 64.000000, 3119, 0 },
1504 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1505 { 3111, 3112, -1 }},
1506 {{{ 0, 0, 0, 0, 118.201401, 0, 24.666668, 62.799999, 3111, 0 },
1507 { 0, 0, 0, 0, 106.559189, 0, 78.250000, 65.200005, 3119, 0 },
1508 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1509 { 3111, 3112, -1 }},
1510 {{{ 0, 0, 0, 0, 118.201401, 0, 24.500000, 63.799999, 3111, 0 },
1511 { 0, 0, 0, 0, 104.618820, 0, 78.000000, 66.000000, 3119, 0 },
1512 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1513 { 3111, 3112, -1 }},
1514 {{{ 0, 0, 0, 0, 118.201401, 0, 24.333334, 64.500000, 3111, 0 },
1515 { 0, 0, 0, 0, 100.738075, 0, 77.833336, 66.500000, 3119, 0 },
1516 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1517 { 3111, 3112, -1 }},
1518 {{{ 0, 0, 0, 0, 118.201401, 0, 24.250000, 65.000000, 3111, 0 },
1519 { 0, 0, 0, 0, 94.916969, 0, 77.666672, 66.900002, 3119, 0 },
1520 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1521 { 3111, 3112, -1 }},
1522 {{{ 0, 0, 0, 0, 118.201401, 0, 24.166668, 65.500000, 3111, 0 },
1523 { 0, 0, 0, 0, 69.692169, 0, 77.666672, 67.200005, 3119, 0 },
1524 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1525 { 3111, 3112, -1 }},
1526 {{{ 0, 0, 0, 0, 114.320663, 0, 24.083334, 65.800003, 3111, 0 },
1527 { 0, 0, 0, 0, 38.646255, 0, 77.750000, 67.400002, 3119, 0 },
1528 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1529 { 3111, 3112, -1 }},
1530 {{{ 0, 0, 0, 0, 94.916969, 0, 24.000000, 65.800003, 3111, 0 },
1531 { 0, 0, 0, 0, 15.361822, 0, 77.833336, 67.400002, 3119, 0 },
1532 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1533 { 3111, 3112, -1 }},
1534 {{{ 0, 0, 0, 0, 58.049950, 0, 23.916668, 65.599998, 3111, 0 },
1535 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1536 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1537 { 3111, -1 }},
1538 {{{ 0, 0, 0, 0, 30.884779, 0, 23.833334, 65.500000, 3111, 0 },
1539 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1540 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1541 { 3111, -1 }},
1542 };
1543
1544 DoTest(events, arraysize(events), false);
1545 }
1546
1547 // Thumb edge dragging, and mid-way through a normal finger is added
TEST(SplitCorrectingFilterInterpreterTest,ThumbEdgePlusFingerTest)1548 TEST(SplitCorrectingFilterInterpreterTest, ThumbEdgePlusFingerTest) {
1549 InputEventWithExpectations events[] = {
1550 {{{ 0, 0, 0, 0, 11.481083, 0, 102.500000, 10.500000, 3351, 0 },
1551 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1552 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1553 { 3351, -1 }},
1554 {{{ 0, 0, 0, 0, 42.526997, 0, 103.083336, 10.800000, 3351, 0 },
1555 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1556 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1557 { 3351, -1 }},
1558 {{{ 0, 0, 0, 0, 59.990318, 0, 104.333336, 11.700000, 3351, 0 },
1559 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1560 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1561 { 3351, -1 }},
1562 {{{ 0, 0, 0, 0, 75.513275, 0, 105.000000, 12.500000, 3351, 0 },
1563 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1564 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1565 { 3351, -1 }},
1566 {{{ 0, 0, 0, 0, 89.095863, 0, 105.000000, 13.200000, 3351, 0 },
1567 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1568 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1569 { 3351, -1 }},
1570 {{{ 0, 0, 0, 0, 91.036232, 0, 103.416672, 13.000000, 3351, 0 },
1571 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1572 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1573 { 3351, -1 }},
1574 {{{ 0, 0, 0, 0, 94.916969, 0, 102.166672, 13.000000, 3351, 0 },
1575 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1576 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1577 { 3351, -1 }},
1578 {{{ 0, 0, 0, 0, 94.916969, 0, 101.000000, 13.100000, 3351, 0 },
1579 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1580 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1581 { 3351, -1 }},
1582 {{{ 0, 0, 0, 0, 94.916969, 0, 100, 13.300000, 3351, 0 },
1583 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1584 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1585 { 3351, -1 }},
1586 {{{ 0, 0, 0, 0, 96.857338, 0, 99.083336, 13.500000, 3351, 0 },
1587 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1588 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1589 { 3351, -1 }},
1590 {{{ 0, 0, 0, 0, 118.201401, 0, 98.333336, 14.300000, 3351, 0 },
1591 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1592 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1593 { 3351, -1 }},
1594 {{{ 0, 0, 0, 0, 118.201401, 0, 97.583336, 14.900001, 3351, 0 },
1595 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1596 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1597 { 3351, -1 }},
1598 {{{ 0, 0, 0, 0, 102.678452, 0, 96.750000, 15.800000, 3351, 0 },
1599 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1600 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1601 { 3351, -1 }},
1602 {{{ 0, 0, 0, 0, 108.499557, 0, 95.166672, 20.200001, 3351, 0 },
1603 { 0, 0, 0, 0, 87.155495, 0, 92.250000, 12.200000, 3352, 0 },
1604 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1605 { 3351, -1 }},
1606 {{{ 0, 0, 0, 0, 118.201401, 0, 92.583336, 17.600000, 3351, 0 },
1607 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1608 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1609 { 3351, -1 }},
1610 {{{ 0, 0, 0, 0, 118.201401, 0, 92.000000, 17.800001, 3351, 0 },
1611 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1612 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1613 { 3351, -1 }},
1614 {{{ 0, 0, 0, 0, 118.201401, 0, 91.166672, 18.300001, 3351, 0 },
1615 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1616 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1617 { 3351, -1 }},
1618 {{{ 0, 0, 0, 0, 160.889526, 0, 90.416672, 18.700001, 3351, 0 },
1619 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1620 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1621 { 3351, -1 }},
1622 {{{ 0, 0, 0, 0, 110.439926, 0, 85.750000, 16.500000, 3351, 0 },
1623 { 0, 0, 0, 0, 91.036232, 0, 89.250000, 25.500000, 3353, 0 },
1624 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1625 { 3351, -1 }},
1626 {{{ 0, 0, 0, 0, 108.499557, 0, 85.250000, 16.700001, 3351, 0 },
1627 { 0, 0, 0, 0, 98.797707, 0, 88.750000, 25.700001, 3353, 0 },
1628 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1629 { 3351, -1 }},
1630 {{{ 0, 0, 0, 0, 104.618820, 0, 84.666672, 20.300001, 3351, 0 },
1631 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1632 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1633 { 3351, -1 }},
1634 {{{ 0, 0, 0, 0, 118.201401, 0, 84.416672, 21.100000, 3351, 0 },
1635 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1636 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1637 { 3351, -1 }},
1638 {{{ 0, 0, 0, 0, 118.201401, 0, 83.916672, 21.700001, 3351, 0 },
1639 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1640 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1641 { 3351, -1 }},
1642 {{{ 0, 0, 0, 0, 118.201401, 0, 83.333336, 22.600000, 3351, 0 },
1643 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1644 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1645 { 3351, -1 }},
1646 {{{ 0, 0, 0, 0, 118.201401, 0, 82.416672, 26.700001, 3351, 0 },
1647 { 0, 0, 0, 0, 91.036232, 0, 78.583336, 18.400000, 3354, 0 },
1648 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1649 { 3351, -1 }},
1650 {{{ 0, 0, 0, 0, 118.201401, 0, 80.083336, 25.100000, 3351, 0 },
1651 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1652 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1653 { 3351, -1 }},
1654 {{{ 0, 0, 0, 0, 118.201401, 0, 77.583336, 22.200001, 3351, 0 },
1655 { 0, 0, 0, 0, 87.155495, 0, 81.500000, 31.200001, 3355, 0 },
1656 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1657 { 3351, -1 }},
1658 {{{ 0, 0, 0, 0, 118.201401, 0, 77.666672, 25.300001, 3351, 0 },
1659 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1660 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1661 { 3351, -1 }},
1662 {{{ 0, 0, 0, 0, 118.201401, 0, 77.083336, 26.600000, 3351, 0 },
1663 { 0, 0, 0, 0, 9.540714, 0, 36.500000, 19.300001, 3356, 0 },
1664 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1665 { 3351, 3356, -1 }},
1666 {{{ 0, 0, 0, 0, 118.201401, 0, 76.750000, 26.800001, 3351, 0 },
1667 { 0, 0, 0, 0, 21.182930, 0, 36.333336, 19.300001, 3356, 0 },
1668 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1669 { 3351, 3356, -1 }},
1670 {{{ 0, 0, 0, 0, 118.201401, 0, 76.166672, 27.100000, 3351, 0 },
1671 { 0, 0, 0, 0, 32.825150, 0, 36.083336, 19.300001, 3356, 0 },
1672 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1673 { 3351, 3356, -1 }},
1674 {{{ 0, 0, 0, 0, 110.439926, 0, 76.250000, 32.299999, 3351, 0 },
1675 { 0, 0, 0, 0, 38.646255, 0, 35.583336, 19.400000, 3356, 0 },
1676 { 0, 0, 0, 0, 102.678452, 0, 71.916672, 23.900000, 3357, 0 },
1677 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1678 { 3351, 3356, -1 }},
1679 {{{ 0, 0, 0, 0, 112.380295, 0, 75.833336, 32.500000, 3351, 0 },
1680 { 0, 0, 0, 0, 44.467365, 0, 35.416668, 19.500000, 3356, 0 },
1681 { 0, 0, 0, 0, 98.797707, 0, 71.500000, 24.100000, 3357, 0 },
1682 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1683 { 3351, 3356, -1 }},
1684 {{{ 0, 0, 0, 0, 118.201401, 0, 72.166672, 29.800001, 3351, 0 },
1685 { 0, 0, 0, 0, 48.348103, 0, 35.000000, 19.700001, 3356, 0 },
1686 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1687 { 3351, 3356, -1 }},
1688 {{{ 0, 0, 0, 0, 118.201401, 0, 71.750000, 30.100000, 3351, 0 },
1689 { 0, 0, 0, 0, 52.228844, 0, 34.750000, 19.800001, 3356, 0 },
1690 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1691 { 3351, 3356, -1 }},
1692 {{{ 0, 0, 0, 0, 118.201401, 0, 71.083336, 30.700001, 3351, 0 },
1693 { 0, 0, 0, 0, 54.169212, 0, 34.500000, 20, 3356, 0 },
1694 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1695 { 3351, 3356, -1 }},
1696 {{{ 0, 0, 0, 0, 118.201401, 0, 70.166672, 31.300001, 3351, 0 },
1697 { 0, 0, 0, 0, 56.109581, 0, 34.250000, 20.200001, 3356, 0 },
1698 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1699 { 3351, 3356, -1 }},
1700 {{{ 0, 0, 0, 0, 112.380295, 0, 69.083336, 31.700001, 3351, 0 },
1701 { 0, 0, 0, 0, 58.049950, 0, 33.916668, 20.500000, 3356, 0 },
1702 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1703 { 3351, 3356, -1 }},
1704 {{{ 0, 0, 0, 0, 108.499557, 0, 64.333336, 29.900000, 3351, 0 },
1705 { 0, 0, 0, 0, 58.049950, 0, 32.666668, 22.000000, 3356, 0 },
1706 { 0, 0, 0, 0, 106.559189, 0, 69.250000, 38.000000, 3358, 0 },
1707 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1708 { 3351, 3356, -1 }},
1709 {{{ 0, 0, 0, 0, 58.049950, 0, 32.250000, 22.400000, 3356, 0 },
1710 { 0, 0, 0, 0, 108.499557, 0, 66.166672, 35.299999, 3358, 0 },
1711 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1712 { 3351, 3356, -1 }},
1713 {{{ 0, 0, 0, 0, 58.049950, 0, 32.000000, 22.600000, 3356, 0 },
1714 { 0, 0, 0, 0, 118.201401, 0, 65.750000, 35.299999, 3358, 0 },
1715 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1716 { 3351, 3356, -1 }},
1717 {{{ 0, 0, 0, 0, 59.990318, 0, 31.750000, 22.700001, 3356, 0 },
1718 { 0, 0, 0, 0, 118.201401, 0, 65.166672, 35.600002, 3358, 0 },
1719 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1720 { 3351, 3356, -1 }},
1721 {{{ 0, 0, 0, 0, 59.990318, 0, 31.500000, 22.900000, 3356, 0 },
1722 { 0, 0, 0, 0, 118.201401, 0, 64.500000, 36.100002, 3358, 0 },
1723 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1724 { 3351, 3356, -1 }},
1725 {{{ 0, 0, 0, 0, 61.930687, 0, 31.250000, 23.200001, 3356, 0 },
1726 { 0, 0, 0, 0, 118.201401, 0, 63.750000, 36.700001, 3358, 0 },
1727 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1728 { 3351, 3356, -1 }},
1729 {{{ 0, 0, 0, 0, 59.990318, 0, 31.000000, 23.400000, 3356, 0 },
1730 { 0, 0, 0, 0, 118.201401, 0, 63.000000, 37.400002, 3358, 0 },
1731 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1732 { 3351, 3356, -1 }},
1733 {{{ 0, 0, 0, 0, 59.990318, 0, 30.750000, 23.700001, 3356, 0 },
1734 { 0, 0, 0, 0, 112.380295, 0, 62.083336, 37.900002, 3358, 0 },
1735 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1736 { 3351, 3356, -1 }},
1737 {{{ 0, 0, 0, 0, 59.990318, 0, 30, 24.200001, 3356, 0 },
1738 { 0, 0, 0, 0, 114.320663, 0, 57.500000, 36.299999, 3358, 0 },
1739 { 0, 0, 0, 0, 106.559189, 0, 63.000000, 43.799999, 3359, 0 },
1740 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1741 { 3351, 3356, -1 }},
1742 {{{ 0, 0, 0, 0, 61.930687, 0, 29.583334, 24.800001, 3356, 0 },
1743 { 0, 0, 0, 0, 112.380295, 0, 59.750000, 41.000000, 3359, 0 },
1744 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1745 { 3351, 3356, -1 }},
1746 {{{ 0, 0, 0, 0, 61.930687, 0, 29.416668, 24.900000, 3356, 0 },
1747 { 0, 0, 0, 0, 114.320663, 0, 59.500000, 41.200001, 3359, 0 },
1748 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1749 { 3351, 3356, -1 }},
1750 {{{ 0, 0, 0, 0, 59.990318, 0, 29.250000, 25.200001, 3356, 0 },
1751 { 0, 0, 0, 0, 118.201401, 0, 59.000000, 41.500000, 3359, 0 },
1752 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1753 { 3351, 3356, -1 }},
1754 {{{ 0, 0, 0, 0, 58.049950, 0, 29.166668, 25.700001, 3356, 0 },
1755 { 0, 0, 0, 0, 118.201401, 0, 58.416668, 41.799999, 3359, 0 },
1756 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1757 { 3351, 3356, -1 }},
1758 {{{ 0, 0, 0, 0, 56.109581, 0, 29.250000, 26.500000, 3356, 0 },
1759 { 0, 0, 0, 0, 118.201401, 0, 57.750000, 42.299999, 3359, 0 },
1760 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1761 { 3351, 3356, -1 }},
1762 {{{ 0, 0, 0, 0, 56.109581, 0, 28.666668, 26.800001, 3356, 0 },
1763 { 0, 0, 0, 0, 112.380295, 0, 55.833336, 41.900002, 3359, 0 },
1764 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1765 { 3351, 3356, -1 }},
1766 {{{ 0, 0, 0, 0, 56.109581, 0, 28.250000, 27.300001, 3356, 0 },
1767 { 0, 0, 0, 0, 114.320663, 0, 54.416668, 41.900002, 3359, 0 },
1768 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1769 { 3351, 3356, -1 }},
1770 {{{ 0, 0, 0, 0, 58.049950, 0, 27.916668, 27.800001, 3356, 0 },
1771 { 0, 0, 0, 0, 116.261032, 0, 53.250000, 42.100002, 3359, 0 },
1772 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1773 { 3351, 3356, -1 }},
1774 {{{ 0, 0, 0, 0, 58.049950, 0, 29.166668, 29.300001, 3356, 0 },
1775 { 0, 0, 0, 0, 118.201401, 0, 53.500000, 43.500000, 3359, 0 },
1776 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1777 { 3351, 3356, -1 }},
1778 {{{ 0, 0, 0, 0, 58.049950, 0, 29.916668, 30.400000, 3356, 0 },
1779 { 0, 0, 0, 0, 118.201401, 0, 53.583336, 44.600002, 3359, 0 },
1780 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1781 { 3351, 3356, -1 }},
1782 {{{ 0, 0, 0, 0, 58.049950, 0, 30.416668, 31.200001, 3356, 0 },
1783 { 0, 0, 0, 0, 116.261032, 0, 53.500000, 45.500000, 3359, 0 },
1784 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1785 { 3351, 3356, -1 }},
1786 {{{ 0, 0, 0, 0, 58.049950, 0, 29.833334, 31.400000, 3356, 0 },
1787 { 0, 0, 0, 0, 118.201401, 0, 53.250000, 46.299999, 3359, 0 },
1788 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1789 { 3351, 3356, -1 }},
1790 {{{ 0, 0, 0, 0, 56.109581, 0, 29.000000, 31.500000, 3356, 0 },
1791 { 0, 0, 0, 0, 118.201401, 0, 52.916668, 47.100002, 3359, 0 },
1792 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1793 { 3351, 3356, -1 }},
1794 {{{ 0, 0, 0, 0, 52.228844, 0, 28.166668, 31.600000, 3356, 0 },
1795 { 0, 0, 0, 0, 118.201401, 0, 52.500000, 48.000000, 3359, 0 },
1796 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1797 { 3351, 3356, -1 }},
1798 {{{ 0, 0, 0, 0, 48.348103, 0, 25.750000, 32.700001, 3356, 0 },
1799 { 0, 0, 0, 0, 118.201401, 0, 54.333336, 52.100002, 3359, 0 },
1800 { 0, 0, 0, 0, 106.559189, 0, 46.083336, 47.400002, 3360, 0 },
1801 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1802 { 3351, 3356, -1 }},
1803 {{{ 0, 0, 0, 0, 50.288475, 0, 25.416668, 33.600002, 3356, 0 },
1804 { 0, 0, 0, 0, 108.499557, 0, 45.666668, 48.100002, 3360, 0 },
1805 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1806 { 3351, 3356, -1 }},
1807 {{{ 0, 0, 0, 0, 50.288475, 0, 26.166668, 34.799999, 3356, 0 },
1808 { 0, 0, 0, 0, 118.201401, 0, 47.166668, 49.400002, 3360, 0 },
1809 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1810 { 3351, 3356, -1 }},
1811 {{{ 0, 0, 0, 0, 50.288475, 0, 26.583334, 35.700001, 3356, 0 },
1812 { 0, 0, 0, 0, 118.201401, 0, 48.000000, 50.400002, 3360, 0 },
1813 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1814 { 3351, 3356, -1 }},
1815 {{{ 0, 0, 0, 0, 54.169212, 0, 26.833334, 36.299999, 3356, 0 },
1816 { 0, 0, 0, 0, 118.201401, 0, 48.333336, 51.200001, 3360, 0 },
1817 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1818 { 3351, 3356, -1 }},
1819 {{{ 0, 0, 0, 0, 54.169212, 0, 26.833334, 36.600002, 3356, 0 },
1820 { 0, 0, 0, 0, 118.201401, 0, 48.416668, 52.000000, 3360, 0 },
1821 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1822 { 3351, 3356, -1 }},
1823 {{{ 0, 0, 0, 0, 54.169212, 0, 26.000000, 36.200001, 3356, 0 },
1824 { 0, 0, 0, 0, 118.201401, 0, 47.000000, 52.299999, 3360, 0 },
1825 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1826 { 3351, 3356, -1 }},
1827 {{{ 0, 0, 0, 0, 54.169212, 0, 25.500000, 36.100002, 3356, 0 },
1828 { 0, 0, 0, 0, 118.201401, 0, 46.000000, 52.799999, 3360, 0 },
1829 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1830 { 3351, 3356, -1 }},
1831 {{{ 0, 0, 0, 0, 54.169212, 0, 25.250000, 36.400002, 3356, 0 },
1832 { 0, 0, 0, 0, 118.201401, 0, 46.333336, 54.200001, 3360, 0 },
1833 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1834 { 3351, 3356, -1 }},
1835 {{{ 0, 0, 0, 0, 54.169212, 0, 24.916668, 36.600002, 3356, 0 },
1836 { 0, 0, 0, 0, 118.201401, 0, 46.500000, 55.400002, 3360, 0 },
1837 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1838 { 3351, 3356, -1 }},
1839 {{{ 0, 0, 0, 0, 52.228844, 0, 25.916668, 38.700001, 3356, 0 },
1840 { 0, 0, 0, 0, 118.201401, 0, 46.500000, 56.400002, 3360, 0 },
1841 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1842 { 3351, 3356, -1 }},
1843 {{{ 0, 0, 0, 0, 52.228844, 0, 26.333334, 40, 3356, 0 },
1844 { 0, 0, 0, 0, 118.201401, 0, 46.333336, 57.200001, 3360, 0 },
1845 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1846 { 3351, 3356, -1 }},
1847 {{{ 0, 0, 0, 0, 52.228844, 0, 25.083334, 39.299999, 3356, 0 },
1848 { 0, 0, 0, 0, 118.201401, 0, 45.416668, 57.600002, 3360, 0 },
1849 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1850 { 3351, 3356, -1 }},
1851 {{{ 0, 0, 0, 0, 52.228844, 0, 24.083334, 39.200001, 3356, 0 },
1852 { 0, 0, 0, 0, 118.201401, 0, 44.833336, 58.100002, 3360, 0 },
1853 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1854 { 3351, 3356, -1 }},
1855 {{{ 0, 0, 0, 0, 50.288475, 0, 23.250000, 39.400002, 3356, 0 },
1856 { 0, 0, 0, 0, 118.201401, 0, 44.416668, 58.799999, 3360, 0 },
1857 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1858 { 3351, 3356, -1 }},
1859 {{{ 0, 0, 0, 0, 50.288475, 0, 21.583334, 40.100002, 3356, 0 },
1860 { 0, 0, 0, 0, 106.559189, 0, 38.333336, 60.200001, 3360, 0 },
1861 { 0, 0, 0, 0, 94.916969, 0, 48.583336, 64.200005, 3361, 0 },
1862 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1863 { 3351, 3356, -1 }},
1864 {{{ 0, 0, 0, 0, 48.348103, 0, 21.750000, 41.700001, 3356, 0 },
1865 { 0, 0, 0, 0, 83.274757, 0, 45.000000, 65.300003, 3361, 0 },
1866 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1867 { 3351, 3356, -1 }},
1868 {{{ 0, 0, 0, 0, 44.467365, 0, 21.416668, 41.799999, 3356, 0 },
1869 { 0, 0, 0, 0, 110.439926, 0, 43.833336, 65.599998, 3361, 0 },
1870 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1871 { 3351, 3356, -1 }},
1872 {{{ 0, 0, 0, 0, 42.526997, 0, 20.916668, 42.000000, 3356, 0 },
1873 { 0, 0, 0, 0, 100.738075, 0, 41.916668, 65.900002, 3361, 0 },
1874 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1875 { 3351, 3356, -1 }},
1876 {{{ 0, 0, 0, 0, 42.526997, 0, 20.500000, 42.200001, 3356, 0 },
1877 { 0, 0, 0, 0, 98.797707, 0, 40.666668, 66.300003, 3361, 0 },
1878 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1879 { 3351, 3356, -1 }},
1880 {{{ 0, 0, 0, 0, 40.586628, 0, 20.166668, 42.400002, 3356, 0 },
1881 { 0, 0, 0, 0, 116.261032, 0, 39.916668, 66.099998, 3361, 0 },
1882 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1883 { 3351, 3356, -1 }},
1884 {{{ 0, 0, 0, 0, 27.004038, 0, 19.916668, 42.600002, 3356, 0 },
1885 { 0, 0, 0, 0, 106.559189, 0, 39.416668, 65.800003, 3361, 0 },
1886 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1887 { 3351, 3356, -1 }},
1888 {{{ 0, 0, 0, 0, 13.421453, 0, 19.750000, 42.700001, 3356, 0 },
1889 { 0, 0, 0, 0, 79.394012, 0, 39.083336, 65.500000, 3361, 0 },
1890 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1891 { 3351, 3356, -1 }},
1892 {{{ 0, 0, 0, 0, 32.825150, 0, 37.833336, 67.599998, 3361, 0 },
1893 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1894 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1895 { 3351, -1 }},
1896 {{{ 0, 0, 0, 0, 11.481083, 0, 37.833336, 67.700005, 3361, 0 },
1897 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 },
1898 { 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }},
1899 { 3351, -1 }}
1900 };
1901
1902 DoTest(events, arraysize(events), false);
1903 }
1904
1905 } // namespace gestures
1906