OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 #include "platform/assert.h" | |
6 #include "vm/bigint_operations.h" | |
7 #include "vm/object.h" | |
8 #include "vm/object_store.h" | |
9 #include "vm/unit_test.h" | |
10 | |
11 namespace dart { | |
12 | |
13 static uword ZoneAllocator(intptr_t size) { | |
14 Zone* zone = Isolate::Current()->current_zone(); | |
15 return zone->AllocUnsafe(size); | |
16 } | |
17 | |
18 | |
19 TEST_CASE(BigintSmi) { | |
20 { | |
21 const Smi& smi = Smi::Handle(Smi::New(5)); | |
22 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
23 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
24 const Smi& smi_back = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
25 EXPECT_EQ(5, smi_back.Value()); | |
26 } | |
27 | |
28 { | |
29 const Smi& smi = Smi::Handle(Smi::New(Smi::kMaxValue)); | |
30 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
31 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
32 const Smi& smi_back = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
33 EXPECT(Smi::kMaxValue == smi_back.Value()); | |
34 } | |
35 | |
36 { | |
37 const Smi& smi = Smi::Handle(Smi::New(Smi::kMinValue)); | |
38 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
39 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
40 const Smi& smi_back = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
41 EXPECT(bigint.IsNegative()); | |
42 EXPECT(Smi::kMinValue == smi_back.Value()); | |
43 } | |
44 | |
45 { | |
46 ASSERT(0xFFFFFFF < Smi::kMaxValue); | |
47 const Smi& smi = Smi::Handle(Smi::New(0xFFFFFFF)); | |
48 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
49 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
50 const Smi& smi_back = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
51 EXPECT(0xFFFFFFF == smi_back.Value()); | |
52 } | |
53 | |
54 { | |
55 ASSERT(0x10000000 < Smi::kMaxValue); | |
56 const Smi& smi = Smi::Handle(Smi::New(0x10000000)); | |
57 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
58 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
59 const Smi& smi_back = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
60 EXPECT(0x10000000 == smi_back.Value()); | |
61 } | |
62 } | |
63 | |
64 | |
65 TEST_CASE(BigintInt64) { | |
66 const int64_t kValue = 100000000; | |
67 const int64_t kValue64 = kValue * kValue; | |
68 Bigint& big = Bigint::Handle(BigintOperations::NewFromInt64(kValue)); | |
69 const Smi& smi = Smi::Handle(Smi::New(kValue)); | |
70 Bigint& big_test = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
71 EXPECT_EQ(0, BigintOperations::Compare(big, big_test)); | |
72 big = BigintOperations::NewFromInt64(kValue64); | |
73 big_test = BigintOperations::Multiply(big_test, big_test); | |
74 EXPECT_EQ(0, BigintOperations::Compare(big, big_test)); | |
75 big = BigintOperations::NewFromInt64(-kValue64); | |
76 big_test = BigintOperations::Subtract( | |
77 Bigint::Handle(BigintOperations::NewFromInt64(0)), big_test); | |
78 EXPECT_EQ(0, BigintOperations::Compare(big, big_test)); | |
79 | |
80 const Bigint& one = Bigint::Handle(BigintOperations::NewFromInt64(1)); | |
81 big = BigintOperations::NewFromInt64(kMinInt64); | |
82 EXPECT(BigintOperations::FitsIntoInt64(big)); | |
83 int64_t back = BigintOperations::ToInt64(big); | |
84 EXPECT_EQ(kMinInt64, back); | |
85 | |
86 big = BigintOperations::Subtract(big, one); | |
87 EXPECT(!BigintOperations::FitsIntoInt64(big)); | |
88 | |
89 big = BigintOperations::NewFromInt64(kMaxInt64); | |
90 EXPECT(BigintOperations::FitsIntoInt64(big)); | |
91 back = BigintOperations::ToInt64(big); | |
92 EXPECT_EQ(kMaxInt64, back); | |
93 | |
94 big = BigintOperations::Add(big, one); | |
95 EXPECT(!BigintOperations::FitsIntoInt64(big)); | |
96 } | |
97 | |
98 | |
99 TEST_CASE(BigintUint64) { | |
100 const Bigint& one = Bigint::Handle(BigintOperations::NewFromUint64(1)); | |
101 EXPECT(BigintOperations::FitsIntoInt64(one)); | |
102 EXPECT(BigintOperations::FitsIntoUint64(one)); | |
103 | |
104 Bigint& big = Bigint::Handle(BigintOperations::NewFromUint64(kMaxUint64)); | |
105 EXPECT(!BigintOperations::FitsIntoInt64(big)); | |
106 EXPECT(BigintOperations::FitsIntoUint64(big)); | |
107 | |
108 uint64_t back = BigintOperations::ToUint64(big); | |
109 EXPECT_EQ(kMaxUint64, back); | |
110 | |
111 big = BigintOperations::Add(big, one); | |
112 EXPECT(!BigintOperations::FitsIntoInt64(big)); | |
113 EXPECT(!BigintOperations::FitsIntoUint64(big)); | |
114 | |
115 big = BigintOperations::Subtract(big, one); | |
116 EXPECT(!BigintOperations::FitsIntoInt64(big)); | |
117 EXPECT(BigintOperations::FitsIntoUint64(big)); | |
118 | |
119 big = BigintOperations::ShiftRight(big, 1); | |
120 EXPECT(BigintOperations::FitsIntoInt64(big)); | |
121 EXPECT(BigintOperations::FitsIntoUint64(big)); | |
122 } | |
123 | |
124 | |
125 TEST_CASE(BigintDouble) { | |
126 Smi& smi = Smi::Handle(Smi::New(5)); | |
127 Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); | |
128 Double& dbl = Double::Handle(BigintOperations::ToDouble(bigint)); | |
129 EXPECT_EQ(5.0, dbl.value()); | |
130 | |
131 smi = Smi::New(0); | |
132 bigint = BigintOperations::NewFromSmi(smi); | |
133 dbl = BigintOperations::ToDouble(bigint); | |
134 EXPECT_EQ(0.0, dbl.value()); | |
135 double zero = dbl.value(); | |
136 | |
137 smi = Smi::New(-12345678); | |
138 bigint = BigintOperations::NewFromSmi(smi); | |
139 dbl = BigintOperations::ToDouble(bigint); | |
140 EXPECT_EQ(-1.2345678e+7, dbl.value()); | |
141 | |
142 bigint = BigintOperations::NewFromCString("1"); | |
143 dbl = BigintOperations::ToDouble(bigint); | |
144 EXPECT_EQ(1.0, dbl.value()); | |
145 | |
146 bigint = BigintOperations::NewFromCString("123456"); | |
147 dbl = BigintOperations::ToDouble(bigint); | |
148 EXPECT_EQ(123456.0, dbl.value()); | |
149 | |
150 bigint = BigintOperations::NewFromCString("123456789"); | |
151 dbl = BigintOperations::ToDouble(bigint); | |
152 EXPECT_EQ(123456789.0, dbl.value()); | |
153 | |
154 bigint = BigintOperations::NewFromCString("12345678901234567"); | |
155 dbl = BigintOperations::ToDouble(bigint); | |
156 EXPECT_EQ(12345678901234568.0, dbl.value()); | |
157 | |
158 bigint = BigintOperations::NewFromCString("98765432109876"); | |
159 dbl = BigintOperations::ToDouble(bigint); | |
160 EXPECT_EQ(9.8765432109876e+13, dbl.value()); | |
161 | |
162 bigint = BigintOperations::NewFromCString("0x17777777777778"); | |
163 dbl = BigintOperations::ToDouble(bigint); | |
164 EXPECT_EQ(6605279453476728.0, dbl.value()); | |
165 | |
166 bigint = BigintOperations::NewFromCString("0x37777777777778"); | |
167 dbl = BigintOperations::ToDouble(bigint); | |
168 EXPECT_EQ(15612478708217720.0, dbl.value()); | |
169 | |
170 bigint = BigintOperations::NewFromCString("0x177777777777781234567"); | |
171 dbl = BigintOperations::ToDouble(bigint); | |
172 EXPECT_EQ(1.7730912021014563e+24, dbl.value()); | |
173 | |
174 bigint = BigintOperations::NewFromCString("0x177777777777788000000"); | |
175 dbl = BigintOperations::ToDouble(bigint); | |
176 EXPECT_EQ(1.7730912021014563e+24, dbl.value()); | |
177 | |
178 bigint = BigintOperations::NewFromCString("0x177777777777788000001"); | |
179 dbl = BigintOperations::ToDouble(bigint); | |
180 EXPECT_EQ(1.7730912021014565e+24, dbl.value()); | |
181 | |
182 bigint = BigintOperations::NewFromCString("0x177777777777798000000"); | |
183 dbl = BigintOperations::ToDouble(bigint); | |
184 EXPECT_EQ(1.7730912021014568e+24, dbl.value()); | |
185 | |
186 bigint = BigintOperations::NewFromCString("0x177777777777798000001"); | |
187 dbl = BigintOperations::ToDouble(bigint); | |
188 EXPECT_EQ(1.7730912021014568e+24, dbl.value()); | |
189 | |
190 bigint = BigintOperations::NewFromCString("0x377777777777790000000"); | |
191 dbl = BigintOperations::ToDouble(bigint); | |
192 EXPECT_EQ(4.1909428413307146e+24, dbl.value()); | |
193 | |
194 bigint = BigintOperations::NewFromCString("0x377777777777790000001"); | |
195 dbl = BigintOperations::ToDouble(bigint); | |
196 EXPECT_EQ(4.190942841330715e+24, dbl.value()); | |
197 | |
198 bigint = BigintOperations::NewFromCString("0x377777777777730000000"); | |
199 dbl = BigintOperations::ToDouble(bigint); | |
200 EXPECT_EQ(4.1909428413307135e+24, dbl.value()); | |
201 | |
202 bigint = BigintOperations::NewFromCString("0x377777777777730000001"); | |
203 dbl = BigintOperations::ToDouble(bigint); | |
204 EXPECT_EQ(4.1909428413307135e+24, dbl.value()); | |
205 | |
206 // Reduced precision. | |
207 bigint = BigintOperations::NewFromCString( | |
208 "9876543210987654321098765432109876543210"); | |
209 dbl = BigintOperations::ToDouble(bigint); | |
210 EXPECT_EQ(9.8765432109876546e+39, dbl.value()); | |
211 | |
212 bigint = BigintOperations::NewFromCString( | |
213 "12345678901234567890123456789012345678901234567890" | |
214 "12345678901234567890123456789012345678901234567890" | |
215 "12345678901234567890123456789012345678901234567890" | |
216 "12345678901234567890123456789012345678901234567890" | |
217 "12345678901234567890123456789012345678901234567890" | |
218 "12345678901234567890123456789012345678901234567890" | |
219 "12345678901234567890123456789012345678901234567890" | |
220 "12345678901234567890123456789012345678901234567890" | |
221 "12345678901234567890123456789012345678901234567890" | |
222 "12345678901234567890123456789012345678901234567890"); | |
223 dbl = BigintOperations::ToDouble(bigint); | |
224 EXPECT_EQ(1.0/zero, dbl.value()); | |
225 | |
226 bigint = BigintOperations::NewFromCString( | |
227 "17976931348623157081452742373170435679807056752584" | |
228 "49965989174768031572607800285387605895586327668781" | |
229 "71540458953514382464234321326889464182768467546703" | |
230 "53751698604991057655128207624549009038932894407586" | |
231 "85084551339423045832369032229481658085593321233482" | |
232 "74797826204144723168738177180919299881250404026184" | |
233 "124858368"); | |
234 dbl = BigintOperations::ToDouble(bigint); | |
235 EXPECT_EQ(1.7976931348623157e308, dbl.value()); | |
236 | |
237 bigint = BigintOperations::NewFromCString( | |
238 "17976931348623159077293051907890247336179769789423" | |
239 "06572734300811577326758055009631327084773224075360" | |
240 "21120113879871393357658789768814416622492847430639" | |
241 "47412437776789342486548527630221960124609411945308" | |
242 "29520850057688381506823424628814739131105408272371" | |
243 "63350510684586298239947245938479716304835356329624" | |
244 "224137216"); | |
245 dbl = BigintOperations::ToDouble(bigint); | |
246 EXPECT_EQ(1.0/zero, dbl.value()); | |
247 | |
248 bigint = BigintOperations::NewFromCString( | |
249 "17976931348623158079372897140530341507993413271003" | |
250 "78269361737789804449682927647509466490179775872070" | |
251 "96330286416692887910946555547851940402630657488671" | |
252 "50582068190890200070838367627385484581771153176447" | |
253 "57302700698555713669596228429148198608349364752927" | |
254 "19074168444365510704342711559699508093042880177904" | |
255 "174497792"); | |
256 dbl = BigintOperations::ToDouble(bigint); | |
257 EXPECT_EQ(1.0/zero, dbl.value()); | |
258 | |
259 bigint = BigintOperations::NewFromCString( | |
260 "17976931348623158079372897140530341507993413271003" | |
261 "78269361737789804449682927647509466490179775872070" | |
262 "96330286416692887910946555547851940402630657488671" | |
263 "50582068190890200070838367627385484581771153176447" | |
264 "57302700698555713669596228429148198608349364752927" | |
265 "19074168444365510704342711559699508093042880177904" | |
266 "174497791"); | |
267 dbl = BigintOperations::ToDouble(bigint); | |
268 EXPECT_EQ(1.7976931348623157e308, dbl.value()); | |
269 | |
270 bigint = BigintOperations::NewFromCString("100000000000000000000000"); | |
271 dbl = BigintOperations::ToDouble(bigint); | |
272 EXPECT_EQ(1e+23, dbl.value()); | |
273 | |
274 bigint = BigintOperations::NewFromCString("100000000000000000000001"); | |
275 dbl = BigintOperations::ToDouble(bigint); | |
276 EXPECT_EQ(1.0000000000000001e+23, dbl.value()); | |
277 | |
278 // Same but shifted 64 bits to the left. | |
279 bigint = BigintOperations::NewFromCString( | |
280 "1844674407370955161600000000000000000000000"); | |
281 dbl = BigintOperations::ToDouble(bigint); | |
282 EXPECT_EQ(1.844674407370955e+42, dbl.value()); | |
283 | |
284 bigint = BigintOperations::NewFromCString( | |
285 "1844674407370955161600000000000000000000001"); | |
286 dbl = BigintOperations::ToDouble(bigint); | |
287 EXPECT_EQ(1.8446744073709553e+42, dbl.value()); | |
288 } | |
289 | |
290 | |
291 TEST_CASE(BigintHexStrings) { | |
292 { | |
293 const Bigint& bigint = Bigint::Handle( | |
294 BigintOperations::NewFromCString("0x0")); | |
295 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
296 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
297 EXPECT_EQ(0, smi.Value()); | |
298 } | |
299 | |
300 { | |
301 const Bigint& bigint = Bigint::Handle( | |
302 BigintOperations::NewFromCString("0x1")); | |
303 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
304 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
305 EXPECT_EQ(1, smi.Value()); | |
306 } | |
307 | |
308 { | |
309 const Bigint& bigint = Bigint::Handle( | |
310 BigintOperations::NewFromCString("0x123")); | |
311 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
312 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
313 EXPECT_EQ(0x123, smi.Value()); | |
314 } | |
315 | |
316 { | |
317 const Bigint& bigint = Bigint::Handle( | |
318 BigintOperations::NewFromCString("0x123")); | |
319 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
320 EXPECT_STREQ("0x123", str); | |
321 } | |
322 | |
323 { | |
324 const Bigint& bigint = Bigint::Handle( | |
325 BigintOperations::NewFromCString("0xaBcEf")); | |
326 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
327 EXPECT_STREQ("0xABCEF", str); | |
328 } | |
329 | |
330 { | |
331 const char* in = "0x123456789"; | |
332 const Bigint& bigint = Bigint::Handle( | |
333 BigintOperations::NewFromCString(in)); | |
334 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
335 EXPECT_STREQ(in, str); | |
336 } | |
337 | |
338 { | |
339 const char* in = "0xFFFFFFF"; | |
340 const Bigint& bigint = Bigint::Handle( | |
341 BigintOperations::NewFromCString(in)); | |
342 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
343 EXPECT_STREQ(in, str); | |
344 } | |
345 | |
346 { | |
347 const char* in = "0x10000000"; | |
348 const Bigint& bigint = Bigint::Handle( | |
349 BigintOperations::NewFromCString(in)); | |
350 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
351 EXPECT_STREQ(in, str); | |
352 } | |
353 | |
354 { | |
355 const char* in = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
356 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
357 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
358 EXPECT_STREQ(in, str); | |
359 } | |
360 | |
361 { | |
362 const Bigint& bigint = Bigint::Handle( | |
363 BigintOperations::NewFromCString("-0x123")); | |
364 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
365 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
366 EXPECT_EQ(-0x123, smi.Value()); | |
367 } | |
368 | |
369 { | |
370 const Bigint& bigint = Bigint::Handle( | |
371 BigintOperations::NewFromCString("-0x123")); | |
372 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
373 EXPECT_STREQ("-0x123", str); | |
374 } | |
375 | |
376 { | |
377 const Bigint& bigint = Bigint::Handle( | |
378 BigintOperations::NewFromCString("-0xaBcEf")); | |
379 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
380 EXPECT_STREQ("-0xABCEF", str); | |
381 } | |
382 | |
383 { | |
384 const char* in = "-0x123456789"; | |
385 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
386 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
387 EXPECT_STREQ(in, str); | |
388 } | |
389 | |
390 { | |
391 const char* in = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
392 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
393 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
394 EXPECT_STREQ(in, str); | |
395 } | |
396 | |
397 { | |
398 const Bigint& bigint = Bigint::Handle( | |
399 BigintOperations::NewFromCString("0x00000123")); | |
400 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
401 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
402 EXPECT_EQ(0x123, smi.Value()); | |
403 } | |
404 | |
405 { | |
406 const Bigint& bigint = Bigint::Handle( | |
407 BigintOperations::NewFromCString("0x000000123")); | |
408 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
409 EXPECT_STREQ("0x123", str); | |
410 } | |
411 | |
412 { | |
413 const Bigint& bigint = Bigint::Handle( | |
414 BigintOperations::NewFromCString("0x0000aBcEf")); | |
415 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
416 EXPECT_STREQ("0xABCEF", str); | |
417 } | |
418 | |
419 { | |
420 const char* in = "0x00000000000000000000000000000000000000000000123456789"; | |
421 const char* out = "0x123456789"; | |
422 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
423 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
424 EXPECT_STREQ(out, str); | |
425 } | |
426 | |
427 { | |
428 const char* in = "0x00000123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
429 const char* out = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
430 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
431 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
432 EXPECT_STREQ(out, str); | |
433 } | |
434 | |
435 { | |
436 const Bigint& bigint = Bigint::Handle( | |
437 BigintOperations::NewFromCString("-0x00000123")); | |
438 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
439 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
440 EXPECT_EQ(-0x123, smi.Value()); | |
441 } | |
442 | |
443 { | |
444 const Bigint& bigint = Bigint::Handle( | |
445 BigintOperations::NewFromCString("-0x00000123")); | |
446 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
447 EXPECT_STREQ("-0x123", str); | |
448 } | |
449 | |
450 { | |
451 const Bigint& bigint = Bigint::Handle( | |
452 BigintOperations::NewFromCString("-0x000aBcEf")); | |
453 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
454 EXPECT_STREQ("-0xABCEF", str); | |
455 } | |
456 | |
457 { | |
458 const char* in = "-0x00000000000000000000000000000000000000000000123456789"; | |
459 const char* out = "-0x123456789"; | |
460 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
461 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
462 EXPECT_STREQ(out, str); | |
463 } | |
464 | |
465 { | |
466 const char* in = "-0x0000123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
467 const char* out = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
468 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
469 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
470 EXPECT_STREQ(out, str); | |
471 } | |
472 { | |
473 const char* test = "12345678901234567890"; | |
474 const char* out = "0xAB54A98CEB1F0AD2"; | |
475 const Bigint& bigint = Bigint::Handle( | |
476 BigintOperations::NewFromCString(test)); | |
477 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
478 EXPECT_STREQ(out, str); | |
479 } | |
480 { | |
481 const char* test = "-12345678901234567890"; | |
482 const char* out = "-0xAB54A98CEB1F0AD2"; | |
483 const Bigint& bigint = Bigint::Handle( | |
484 BigintOperations::NewFromCString(test)); | |
485 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
486 EXPECT_STREQ(out, str); | |
487 } | |
488 } | |
489 | |
490 | |
491 TEST_CASE(BigintDecStrings) { | |
492 { | |
493 const Bigint& bigint = Bigint::Handle( | |
494 BigintOperations::NewFromCString("0x0")); | |
495 const char* str = | |
496 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
497 EXPECT_STREQ("0", str); | |
498 } | |
499 | |
500 { | |
501 const Bigint& bigint = Bigint::Handle( | |
502 BigintOperations::NewFromCString("0x123")); | |
503 const char* str = | |
504 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
505 EXPECT_STREQ("291", str); | |
506 } | |
507 | |
508 { | |
509 const Bigint& bigint = Bigint::Handle( | |
510 BigintOperations::NewFromCString("0xaBcEf")); | |
511 const char* str = | |
512 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
513 EXPECT_STREQ("703727", str); | |
514 } | |
515 | |
516 { | |
517 const char* in = "0x123456789"; | |
518 const Bigint& bigint = Bigint::Handle( | |
519 BigintOperations::NewFromCString(in)); | |
520 const char* str = | |
521 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
522 EXPECT_STREQ("4886718345", str); | |
523 } | |
524 | |
525 { | |
526 const char* in = "0xFFFFFFF"; | |
527 const Bigint& bigint = Bigint::Handle( | |
528 BigintOperations::NewFromCString(in)); | |
529 const char* str = | |
530 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
531 EXPECT_STREQ("268435455", str); | |
532 } | |
533 | |
534 { | |
535 const char* in = "0x10000000"; | |
536 const Bigint& bigint = Bigint::Handle( | |
537 BigintOperations::NewFromCString(in)); | |
538 const char* str = | |
539 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
540 EXPECT_STREQ("268435456", str); | |
541 } | |
542 | |
543 { | |
544 const char* in = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
545 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
546 const char* str = | |
547 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
548 EXPECT_STREQ("7141946863373290020600059860922167424469804758405880798960", | |
549 str); | |
550 } | |
551 | |
552 { | |
553 const Bigint& bigint = Bigint::Handle( | |
554 BigintOperations::NewFromCString("-0x123")); | |
555 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
556 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
557 EXPECT_EQ(-291, smi.Value()); | |
558 } | |
559 | |
560 { | |
561 const Bigint& bigint = Bigint::Handle( | |
562 BigintOperations::NewFromCString("-0x123")); | |
563 const char* str = | |
564 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
565 EXPECT_STREQ("-291", str); | |
566 } | |
567 | |
568 { | |
569 const Bigint& bigint = Bigint::Handle( | |
570 BigintOperations::NewFromCString("-0xaBcEf")); | |
571 const char* str = | |
572 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
573 EXPECT_STREQ("-703727", str); | |
574 } | |
575 | |
576 { | |
577 const char* in = "-0x123456789"; | |
578 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
579 const char* str = | |
580 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
581 EXPECT_STREQ("-4886718345", str); | |
582 } | |
583 | |
584 { | |
585 const char* in = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
586 const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in)); | |
587 const char* str = | |
588 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
589 EXPECT_STREQ("-7141946863373290020600059860922167424469804758405880798960", | |
590 str); | |
591 } | |
592 | |
593 { | |
594 const Bigint& bigint = Bigint::Handle( | |
595 BigintOperations::NewFromCString("0x00000123")); | |
596 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
597 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
598 EXPECT_EQ(0x123, smi.Value()); | |
599 } | |
600 | |
601 { | |
602 const Bigint& bigint = Bigint::Handle( | |
603 BigintOperations::NewFromCString("0x000000123")); | |
604 const char* str = | |
605 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
606 EXPECT_STREQ("291", str); | |
607 } | |
608 | |
609 { | |
610 const Bigint& bigint = Bigint::Handle( | |
611 BigintOperations::NewFromCString("100000000000000000000000000000000")); | |
612 const char* str = | |
613 BigintOperations::ToDecimalCString(bigint, &ZoneAllocator); | |
614 EXPECT_STREQ("100000000000000000000000000000000", str); | |
615 } | |
616 } | |
617 | |
618 | |
619 static void TestBigintCompare(const char* a, const char* b, int compare) { | |
620 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
621 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
622 int computed_compare = BigintOperations::Compare(bigint_a, bigint_b); | |
623 int inverted_compare = BigintOperations::Compare(bigint_b, bigint_a); | |
624 if (compare == 0) { | |
625 EXPECT(computed_compare == 0); | |
626 EXPECT(inverted_compare == 0); | |
627 } else if (compare < 0) { | |
628 ASSERT(computed_compare < 0); | |
629 EXPECT(computed_compare < 0); | |
630 EXPECT(inverted_compare > 0); | |
631 } else { | |
632 ASSERT(compare > 0); | |
633 EXPECT(computed_compare > 0); | |
634 EXPECT(inverted_compare < 0); | |
635 } | |
636 } | |
637 | |
638 | |
639 TEST_CASE(BigintCompare) { | |
640 TestBigintCompare("0x0", "0x0", 0); | |
641 TestBigintCompare("0x1", "0x1", 0); | |
642 TestBigintCompare("-0x1", "-0x1", 0); | |
643 TestBigintCompare("0x1234567", "0x1234567", 0); | |
644 TestBigintCompare("-0x1234567", "-0x1234567", 0); | |
645 TestBigintCompare("0x12345678", "0x12345678", 0); | |
646 TestBigintCompare("-0x12345678", "-0x12345678", 0); | |
647 TestBigintCompare("0x123456789ABCDEF0", "0x123456789ABCDEF0", 0); | |
648 TestBigintCompare("-0x123456789ABCDEF0", "-0x123456789ABCDEF0", 0); | |
649 TestBigintCompare("0x123456789ABCDEF01", "0x123456789ABCDEF01", 0); | |
650 TestBigintCompare("-0x123456789ABCDEF01", "-0x123456789ABCDEF01", 0); | |
651 TestBigintCompare("0x1", "0x0", 1); | |
652 TestBigintCompare("-0x1", "-0x2", 1); | |
653 TestBigintCompare("0x1234567", "0x1234566", 1); | |
654 TestBigintCompare("-0x1234567", "-0x1234568", 1); | |
655 TestBigintCompare("0x12345678", "0x12345677", 1); | |
656 TestBigintCompare("-0x12345678", "-0x12345679", 1); | |
657 TestBigintCompare("0x123456789ABCDEF1", "0x123456789ABCDEF0", 1); | |
658 TestBigintCompare("-0x123456789ABCDEF0", "-0x123456789ABCDEF1", 1); | |
659 TestBigintCompare("0x123456789ABCDEF02", "0x123456789ABCDEF01", 1); | |
660 TestBigintCompare("-0x123456789ABCDEF00", "-0x123456789ABCDEF01", 1); | |
661 TestBigintCompare("0x10000000", "0xFFFFFFF", 1); | |
662 TestBigintCompare("-0x10000000", "-0xFFFFFFF", -1); | |
663 TestBigintCompare("0x100000000", "0xFFFFFFFF", 1); | |
664 TestBigintCompare("-0x100000000", "-0xFFFFFFFF", -1); | |
665 TestBigintCompare("0x10000000000000000", "0xFFFFFFFFFFFFFFFF", 1); | |
666 TestBigintCompare("-0x10000000000000000", "-0xFFFFFFFFFFFFFFFF", -1); | |
667 TestBigintCompare("0x10000000000000000", "0x0", 1); | |
668 TestBigintCompare("-0x10000000000000000", "0x0", -1); | |
669 TestBigintCompare("-0x1234567", "0x1234566", -1); | |
670 TestBigintCompare("-0x1234567", "0x1234568", -1); | |
671 TestBigintCompare("-0x12345678", "0x12345677", -1); | |
672 TestBigintCompare("-0x12345678", "0x12345670", -1); | |
673 TestBigintCompare("-0x123456789ABCDEF1", "0x123456789ABCDEF0", -1); | |
674 TestBigintCompare("-0x123456789ABCDEF0", "0x123456789ABCDEF1", -1); | |
675 TestBigintCompare("-0x123456789ABCDEF02", "0x123456789ABCDEF01", -1); | |
676 TestBigintCompare("-0x123456789ABCDEF00", "0x123456789ABCDEF01", -1); | |
677 TestBigintCompare("-0x10000000", "0xFFFFFFF", -1); | |
678 TestBigintCompare("-0x10000000", "0xFFFFFFF", -1); | |
679 TestBigintCompare("-0x100000000", "0xFFFFFFFF", -1); | |
680 TestBigintCompare("-0x100000000", "0xFFFFFFFF", -1); | |
681 TestBigintCompare("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", -1); | |
682 TestBigintCompare("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", -1); | |
683 TestBigintCompare("-0x10000000000000000", "0x0", -1); | |
684 TestBigintCompare("-0x10000000000000000", "0x0", -1); | |
685 } | |
686 | |
687 | |
688 TEST_CASE(BigintDecimalStrings) { | |
689 { | |
690 const Bigint& bigint = Bigint::Handle( | |
691 BigintOperations::NewFromCString("0")); | |
692 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
693 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
694 EXPECT_EQ(0, smi.Value()); | |
695 } | |
696 | |
697 { | |
698 const Bigint& bigint = Bigint::Handle( | |
699 BigintOperations::NewFromCString("1")); | |
700 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
701 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
702 EXPECT_EQ(1, smi.Value()); | |
703 } | |
704 | |
705 { | |
706 const Bigint& bigint = Bigint::Handle( | |
707 BigintOperations::NewFromCString("703710")); | |
708 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
709 EXPECT_STREQ("0xABCDE", str); | |
710 } | |
711 | |
712 { | |
713 const Bigint& bigint = Bigint::Handle( | |
714 BigintOperations::NewFromCString("11259375")); | |
715 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
716 EXPECT_STREQ("0xABCDEF", str); | |
717 } | |
718 | |
719 { | |
720 const Bigint& bigint = | |
721 Bigint::Handle(BigintOperations::NewFromCString("1311768467463790320")); | |
722 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
723 EXPECT_STREQ("0x123456789ABCDEF0", str); | |
724 } | |
725 | |
726 { | |
727 const Bigint& bigint = Bigint::Handle( | |
728 BigintOperations::NewFromCString("-0")); | |
729 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
730 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
731 EXPECT_EQ(0, smi.Value()); | |
732 } | |
733 | |
734 { | |
735 const Bigint& bigint = Bigint::Handle( | |
736 BigintOperations::NewFromCString("-1")); | |
737 EXPECT(BigintOperations::FitsIntoSmi(bigint)); | |
738 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint)); | |
739 EXPECT_EQ(-1, smi.Value()); | |
740 } | |
741 | |
742 { | |
743 const Bigint& bigint = Bigint::Handle( | |
744 BigintOperations::NewFromCString("-703710")); | |
745 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
746 EXPECT_STREQ("-0xABCDE", str); | |
747 } | |
748 | |
749 { | |
750 const Bigint& bigint = Bigint::Handle( | |
751 BigintOperations::NewFromCString("-11259375")); | |
752 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
753 EXPECT_STREQ("-0xABCDEF", str); | |
754 } | |
755 | |
756 { | |
757 const Bigint& bigint = Bigint::Handle( | |
758 BigintOperations::NewFromCString("-1311768467463790320")); | |
759 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); | |
760 EXPECT_STREQ("-0x123456789ABCDEF0", str); | |
761 } | |
762 } | |
763 | |
764 | |
765 static void TestBigintAddSubtract(const char* a, | |
766 const char* b, | |
767 const char* sum) { | |
768 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
769 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
770 const Bigint& bigint_sum = | |
771 Bigint::Handle(BigintOperations::NewFromCString(sum)); | |
772 const Bigint& computed_sum = | |
773 Bigint::Handle(BigintOperations::Add(bigint_a, bigint_b)); | |
774 const Bigint& computed_difference1 = | |
775 Bigint::Handle(BigintOperations::Subtract(bigint_sum, bigint_a)); | |
776 const Bigint& computed_difference2 = | |
777 Bigint::Handle(BigintOperations::Subtract(bigint_sum, bigint_b)); | |
778 const char* str_sum = BigintOperations::ToHexCString(computed_sum, | |
779 &ZoneAllocator); | |
780 EXPECT_STREQ(sum, str_sum); | |
781 const char* str_difference1 = | |
782 BigintOperations::ToHexCString(computed_difference1, &ZoneAllocator); | |
783 EXPECT_STREQ(b, str_difference1); | |
784 const char* str_difference2 = | |
785 BigintOperations::ToHexCString(computed_difference2, &ZoneAllocator); | |
786 EXPECT_STREQ(a, str_difference2); | |
787 } | |
788 | |
789 | |
790 TEST_CASE(BigintAddSubtract) { | |
791 const char* zero = "0x0"; | |
792 const char* one = "0x1"; | |
793 const char* minus_one = "-0x1"; | |
794 | |
795 TestBigintAddSubtract(zero, zero, zero); | |
796 TestBigintAddSubtract(zero, one, one); | |
797 TestBigintAddSubtract(one, zero, one); | |
798 TestBigintAddSubtract(one, one, "0x2"); | |
799 TestBigintAddSubtract(minus_one, minus_one, "-0x2"); | |
800 TestBigintAddSubtract("0x123", zero, "0x123"); | |
801 TestBigintAddSubtract(zero, "0x123", "0x123"); | |
802 TestBigintAddSubtract("0x123", one, "0x124"); | |
803 TestBigintAddSubtract(one, "0x123", "0x124"); | |
804 TestBigintAddSubtract("0xFFFFFFF", one, // 28 bit overflow. | |
805 "0x10000000"); | |
806 TestBigintAddSubtract("0xFFFFFFFF", one, // 32 bit overflow. | |
807 "0x100000000"); | |
808 TestBigintAddSubtract("0xFFFFFFFFFFFFFF", one, // 56 bit overflow. | |
809 "0x100000000000000"); | |
810 TestBigintAddSubtract("0xFFFFFFFFFFFFFFFF", one, // 64 bit overflow. | |
811 "0x10000000000000000"); | |
812 TestBigintAddSubtract("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", // 128 bit. | |
813 one, | |
814 "0x100000000000000000000000000000000"); | |
815 TestBigintAddSubtract("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
816 one, | |
817 "0x10000000000000000000000000000000000000000000"); | |
818 TestBigintAddSubtract("0x8000000", // 28 bit overflow. | |
819 "0x8000000", | |
820 "0x10000000"); | |
821 TestBigintAddSubtract("0x80000000", // 32 bit overflow. | |
822 "0x80000000", | |
823 "0x100000000"); | |
824 TestBigintAddSubtract("0x80000000000000", // 56 bit overflow. | |
825 "0x80000000000000", | |
826 "0x100000000000000"); | |
827 TestBigintAddSubtract("0x8000000000000000", // 64 bit overflow. | |
828 "0x8000000000000000", | |
829 "0x10000000000000000"); | |
830 TestBigintAddSubtract("0x80000000000000000000000000000000", // 128 bit. | |
831 "0x80000000000000000000000000000000", | |
832 "0x100000000000000000000000000000000"); | |
833 TestBigintAddSubtract("0x8000000000000000000000000000000000000000000", | |
834 "0x8000000000000000000000000000000000000000000", | |
835 "0x10000000000000000000000000000000000000000000"); | |
836 | |
837 { | |
838 const char* a = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
839 const char* sum1 = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF1"; | |
840 const char* times2 = "0x2468ACF13579BDE02468ACF121579BDE02468ACF13579BDE0"; | |
841 TestBigintAddSubtract(a, zero, a); | |
842 TestBigintAddSubtract(a, one, sum1); | |
843 TestBigintAddSubtract(a, a, times2); | |
844 } | |
845 | |
846 TestBigintAddSubtract("-0x123", minus_one, "-0x124"); | |
847 TestBigintAddSubtract(minus_one, "-0x123", "-0x124"); | |
848 TestBigintAddSubtract("-0xFFFFFFF", minus_one, // 28 bit overflow. | |
849 "-0x10000000"); | |
850 TestBigintAddSubtract("-0xFFFFFFFF", minus_one, // 32 bit overflow. | |
851 "-0x100000000"); | |
852 TestBigintAddSubtract("-0xFFFFFFFFFFFFFF", minus_one, // 56 bit overflow. | |
853 "-0x100000000000000"); | |
854 TestBigintAddSubtract("-0xFFFFFFFFFFFFFFFF", minus_one, // 64 bit overflow. | |
855 "-0x10000000000000000"); | |
856 TestBigintAddSubtract("-0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", // 128 bit. | |
857 minus_one, | |
858 "-0x100000000000000000000000000000000"); | |
859 TestBigintAddSubtract("-0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
860 minus_one, | |
861 "-0x10000000000000000000000000000000000000000000"); | |
862 TestBigintAddSubtract("-0x8000000", // 28 bit overflow. | |
863 "-0x8000000", | |
864 "-0x10000000"); | |
865 TestBigintAddSubtract("-0x80000000", // 32 bit overflow. | |
866 "-0x80000000", | |
867 "-0x100000000"); | |
868 TestBigintAddSubtract("-0x80000000000000", // 56 bit overflow. | |
869 "-0x80000000000000", | |
870 "-0x100000000000000"); | |
871 TestBigintAddSubtract("-0x8000000000000000", // 64 bit overflow. | |
872 "-0x8000000000000000", | |
873 "-0x10000000000000000"); | |
874 TestBigintAddSubtract("-0x80000000000000000000000000000000", // 128 bit. | |
875 "-0x80000000000000000000000000000000", | |
876 "-0x100000000000000000000000000000000"); | |
877 TestBigintAddSubtract("-0x8000000000000000000000000000000000000000000", | |
878 "-0x8000000000000000000000000000000000000000000", | |
879 "-0x10000000000000000000000000000000000000000000"); | |
880 | |
881 { | |
882 const char* a = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; | |
883 const char* sum1 = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF1"; | |
884 const char* times2 = "-0x2468ACF13579BDE02468ACF121579BDE02468ACF13579BDE0"; | |
885 TestBigintAddSubtract(a, zero, a); | |
886 TestBigintAddSubtract(a, minus_one, sum1); | |
887 TestBigintAddSubtract(a, a, times2); | |
888 } | |
889 | |
890 TestBigintAddSubtract("0x10000000000000000000000000000000000000000000", | |
891 "0xFFFF", | |
892 "0x1000000000000000000000000000000000000000FFFF"); | |
893 TestBigintAddSubtract("0x10000000000000000000000000000000000000000000", | |
894 "0xFFFF00000000", | |
895 "0x10000000000000000000000000000000FFFF00000000"); | |
896 TestBigintAddSubtract("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
897 "0x100000000", | |
898 "0x1000000000000000000000000000000000000FFFFFFFF"); | |
899 TestBigintAddSubtract("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
900 "0x10000000000000000000", | |
901 "0x10000000000000000000000000FFFFFFFFFFFFFFFFFFF"); | |
902 | |
903 TestBigintAddSubtract("0xB", "-0x7", "0x4"); | |
904 TestBigintAddSubtract("-0xB", "-0x7", "-0x12"); | |
905 TestBigintAddSubtract("0xB", "0x7", "0x12"); | |
906 TestBigintAddSubtract("-0xB", "0x7", "-0x4"); | |
907 TestBigintAddSubtract("-0x7", "0xB", "0x4"); | |
908 TestBigintAddSubtract("-0x7", "-0xB", "-0x12"); | |
909 TestBigintAddSubtract("0x7", "0xB", "0x12"); | |
910 TestBigintAddSubtract("0x7", "-0xB", "-0x4"); | |
911 } | |
912 | |
913 | |
914 static void TestBigintShift(const char* a, int amount, const char* result) { | |
915 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
916 const Bigint& shifted = | |
917 Bigint::Handle(BigintOperations::ShiftLeft(bigint_a, amount)); | |
918 const char* str_shifted = BigintOperations::ToHexCString(shifted, | |
919 &ZoneAllocator); | |
920 EXPECT_STREQ(result, str_shifted); | |
921 const Bigint& back_shifted = | |
922 Bigint::Handle(BigintOperations::ShiftRight(shifted, amount)); | |
923 const char* str_back_shifted = BigintOperations::ToHexCString(back_shifted, | |
924 &ZoneAllocator); | |
925 EXPECT_STREQ(a, str_back_shifted); | |
926 } | |
927 | |
928 | |
929 TEST_CASE(BigintLeftShift) { | |
930 const char* zero = "0x0"; | |
931 const char* one = "0x1"; | |
932 const char* minus_one = "-0x1"; | |
933 | |
934 TestBigintShift(zero, 0, zero); | |
935 TestBigintShift(one, 0, one); | |
936 TestBigintShift("0x1234", 0, "0x1234"); | |
937 TestBigintShift(zero, 100000, zero); | |
938 TestBigintShift(one, 1, "0x2"); | |
939 TestBigintShift(one, 28, "0x10000000"); | |
940 TestBigintShift(one, 32, "0x100000000"); | |
941 TestBigintShift(one, 64, "0x10000000000000000"); | |
942 TestBigintShift("0x5", 28, "0x50000000"); | |
943 TestBigintShift("0x5", 32, "0x500000000"); | |
944 TestBigintShift("0x5", 56, "0x500000000000000"); | |
945 TestBigintShift("0x5", 64, "0x50000000000000000"); | |
946 TestBigintShift("0x5", 128, "0x500000000000000000000000000000000"); | |
947 TestBigintShift("0x5", 27, "0x28000000"); | |
948 TestBigintShift("0x5", 31, "0x280000000"); | |
949 TestBigintShift("0x5", 55, "0x280000000000000"); | |
950 TestBigintShift("0x5", 63, "0x28000000000000000"); | |
951 TestBigintShift("0x5", 127, "0x280000000000000000000000000000000"); | |
952 TestBigintShift("0x8000001", 1, "0x10000002"); | |
953 TestBigintShift("0x80000001", 1, "0x100000002"); | |
954 TestBigintShift("0x8000000000000001", 1, "0x10000000000000002"); | |
955 TestBigintShift("0x8000001", 29, "0x100000020000000"); | |
956 TestBigintShift("0x80000001", 33, "0x10000000200000000"); | |
957 TestBigintShift("0x8000000000000001", 65, | |
958 "0x100000000000000020000000000000000"); | |
959 TestBigintShift(minus_one, 0, minus_one); | |
960 TestBigintShift("-0x1234", 0, "-0x1234"); | |
961 TestBigintShift(minus_one, 1, "-0x2"); | |
962 TestBigintShift(minus_one, 28, "-0x10000000"); | |
963 TestBigintShift(minus_one, 32, "-0x100000000"); | |
964 TestBigintShift(minus_one, 64, "-0x10000000000000000"); | |
965 TestBigintShift("-0x5", 28, "-0x50000000"); | |
966 TestBigintShift("-0x5", 32, "-0x500000000"); | |
967 TestBigintShift("-0x5", 64, "-0x50000000000000000"); | |
968 TestBigintShift("-0x5", 27, "-0x28000000"); | |
969 TestBigintShift("-0x5", 31, "-0x280000000"); | |
970 TestBigintShift("-0x5", 63, "-0x28000000000000000"); | |
971 TestBigintShift("-0x8000001", 1, "-0x10000002"); | |
972 TestBigintShift("-0x80000001", 1, "-0x100000002"); | |
973 TestBigintShift("-0x8000000000000001", 1, "-0x10000000000000002"); | |
974 TestBigintShift("-0x8000001", 29, "-0x100000020000000"); | |
975 TestBigintShift("-0x80000001", 33, "-0x10000000200000000"); | |
976 TestBigintShift("-0x8000000000000001", 65, | |
977 "-0x100000000000000020000000000000000"); | |
978 } | |
979 | |
980 | |
981 static void TestBigintRightShift( | |
982 const char* a, int amount, const char* result) { | |
983 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
984 const Bigint& shifted = | |
985 Bigint::Handle(BigintOperations::ShiftRight(bigint_a, amount)); | |
986 const char* str_shifted = BigintOperations::ToHexCString(shifted, | |
987 &ZoneAllocator); | |
988 if (strcmp(result, str_shifted)) { | |
989 FAIL2("%s >> %d", a, amount); | |
990 } | |
991 EXPECT_STREQ(result, str_shifted); | |
992 } | |
993 | |
994 | |
995 TEST_CASE(BigintRightShift) { | |
996 const char* zero = "0x0"; | |
997 const char* one = "0x1"; | |
998 const char* minus_one = "-0x1"; | |
999 | |
1000 TestBigintRightShift(one, 1, zero); | |
1001 TestBigintRightShift(minus_one, 1, minus_one); | |
1002 TestBigintRightShift("-0x2", 1, minus_one); | |
1003 TestBigintRightShift("0x12345678", 29, zero); | |
1004 TestBigintRightShift("-0x12345678", 29, minus_one); | |
1005 TestBigintRightShift("-0x12345678", 100, minus_one); | |
1006 TestBigintRightShift("0x5", 1, "0x2"); | |
1007 TestBigintRightShift("0x5", 2, "0x1"); | |
1008 TestBigintRightShift("-0x5", 1, "-0x3"); | |
1009 TestBigintRightShift("-0x5", 2, "-0x2"); | |
1010 TestBigintRightShift("0x10000001", 28, one); | |
1011 TestBigintRightShift("0x100000001", 32, one); | |
1012 TestBigintRightShift("0x10000000000000001", 64, one); | |
1013 TestBigintRightShift("-0x10000001", 28, "-0x2"); | |
1014 TestBigintRightShift("-0x100000001", 32, "-0x2"); | |
1015 TestBigintRightShift("-0x10000000000000001", 64, "-0x2"); | |
1016 TestBigintRightShift("0x30000000", 29, one); | |
1017 TestBigintRightShift("0x300000000", 33, one); | |
1018 TestBigintRightShift("0x30000000000000000", 65, one); | |
1019 TestBigintRightShift("-0x30000000", 29, "-0x2"); | |
1020 TestBigintRightShift("-0x300000000", 33, "-0x2"); | |
1021 TestBigintRightShift("-0x30000000000000000", 65, "-0x2"); | |
1022 } | |
1023 | |
1024 | |
1025 static void TestBigintBitAnd(const char* a, const char* b, const char* result) { | |
1026 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
1027 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
1028 const Bigint& anded = | |
1029 Bigint::Handle(BigintOperations::BitAnd(bigint_a, bigint_b)); | |
1030 const char* str_anded = BigintOperations::ToHexCString(anded, &ZoneAllocator); | |
1031 EXPECT_STREQ(result, str_anded); | |
1032 const Bigint& anded2 = | |
1033 Bigint::Handle(BigintOperations::BitAnd(bigint_b, bigint_a)); | |
1034 const char* str_anded2 = BigintOperations::ToHexCString(anded2, | |
1035 &ZoneAllocator); | |
1036 EXPECT_STREQ(result, str_anded2); | |
1037 } | |
1038 | |
1039 | |
1040 TEST_CASE(BigintBitAnd) { | |
1041 const char* zero = "0x0"; | |
1042 const char* one = "0x1"; | |
1043 const char* minus_one = "-0x1"; | |
1044 | |
1045 TestBigintBitAnd(one, zero, zero); | |
1046 TestBigintBitAnd(one, one, one); | |
1047 TestBigintBitAnd(minus_one, zero, zero); | |
1048 TestBigintBitAnd(minus_one, one, one); | |
1049 TestBigintBitAnd(minus_one, minus_one, minus_one); | |
1050 TestBigintBitAnd("0x5", "0x3", one); | |
1051 TestBigintBitAnd("0x5", minus_one, "0x5"); | |
1052 TestBigintBitAnd("0x50000000", one, zero); | |
1053 TestBigintBitAnd("0x50000000", minus_one, "0x50000000"); | |
1054 TestBigintBitAnd("0x500000000", one, zero); | |
1055 TestBigintBitAnd("0x500000000", minus_one, "0x500000000"); | |
1056 TestBigintBitAnd("0x50000000000000000", one, zero); | |
1057 TestBigintBitAnd("0x50000000000000000", minus_one, "0x50000000000000000"); | |
1058 TestBigintBitAnd("-0x50000000", "-0x50000000", "-0x50000000"); | |
1059 TestBigintBitAnd("-0x500000000", "-0x500000000", "-0x500000000"); | |
1060 TestBigintBitAnd("-0x50000000000000000", | |
1061 "-0x50000000000000000", | |
1062 "-0x50000000000000000"); | |
1063 TestBigintBitAnd("0x1234567890ABCDEF012345678", | |
1064 "0x876543210FEDCBA0987654321", | |
1065 "0x224422000A9C9A0002244220"); | |
1066 TestBigintBitAnd("-0x1234567890ABCDEF012345678", | |
1067 "-0x876543210FEDCBA0987654321", | |
1068 "-0x977557799FEFCFEF997755778"); | |
1069 TestBigintBitAnd("0x1234567890ABCDEF012345678", | |
1070 "-0x876543210FEDCBA0987654321", | |
1071 "0x101014589002044F010101458"); | |
1072 TestBigintBitAnd("0x1234567890ABCDEF012345678FFFFFFFFFFFFFFFFFFFFFFFFF", | |
1073 "-0x876543210FEDCBA0987654321", | |
1074 "0x1234567890ABCDEF012345678789ABCDEF012345F6789ABCDF"); | |
1075 TestBigintBitAnd("0x12345678", "0xFFFFFFF", "0x2345678"); | |
1076 TestBigintBitAnd("0x123456789", "0xFFFFFFFF", "0x23456789"); | |
1077 TestBigintBitAnd("-0x10000000", "0xFFFFFFF", "0x0"); | |
1078 TestBigintBitAnd("-0x100000000", "0xFFFFFFFF", "0x0"); | |
1079 TestBigintBitAnd("-0x10000001", "0xFFFFFFF", "0xFFFFFFF"); | |
1080 TestBigintBitAnd("-0x100000001", "0xFFFFFFFF", "0xFFFFFFFF"); | |
1081 TestBigintBitAnd("-0x10000001", "0x3FFFFFFF", "0x2FFFFFFF"); | |
1082 TestBigintBitAnd("-0x100000001", "0x3FFFFFFFF", "0x2FFFFFFFF"); | |
1083 TestBigintBitAnd("-0x10000000000000001", | |
1084 "0x3FFFFFFFFFFFFFFFF", | |
1085 "0x2FFFFFFFFFFFFFFFF"); | |
1086 TestBigintBitAnd("-0x100000000000000", "0xFFFFFFFFFFFFFF", "0x0"); | |
1087 TestBigintBitAnd("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", "0x0"); | |
1088 TestBigintBitAnd("-0x300000000000000", | |
1089 "0xFFFFFFFFFFFFFFF", | |
1090 "0xD00000000000000"); | |
1091 TestBigintBitAnd("-0x30000000000000000", | |
1092 "0xFFFFFFFFFFFFFFFFF", | |
1093 "0xD0000000000000000"); | |
1094 TestBigintBitAnd("-0x10000000", "-0x10000000", "-0x10000000"); | |
1095 TestBigintBitAnd("-0x100000000", "-0x100000000", "-0x100000000"); | |
1096 TestBigintBitAnd("-0x100000000000000", | |
1097 "-0x100000000000000", | |
1098 "-0x100000000000000"); | |
1099 TestBigintBitAnd("-0x10000000000000000", | |
1100 "-0x10000000000000000", | |
1101 "-0x10000000000000000"); | |
1102 TestBigintBitAnd("-0x3", "-0x2", "-0x4"); | |
1103 TestBigintBitAnd("-0x10000000", "-0x10000001", "-0x20000000"); | |
1104 TestBigintBitAnd("-0x100000000", "-0x100000001", "-0x200000000"); | |
1105 TestBigintBitAnd("-0x100000000000000", | |
1106 "-0x100000000000001", | |
1107 "-0x200000000000000"); | |
1108 TestBigintBitAnd("-0x10000000000000000", | |
1109 "-0x10000000000000001", | |
1110 "-0x20000000000000000"); | |
1111 TestBigintBitAnd("0x123456789ABCDEF01234567890", | |
1112 "0x3FFFFFFF", // Max Smi for 32 bits. | |
1113 "0x34567890"); | |
1114 TestBigintBitAnd("0x123456789ABCDEF01274567890", | |
1115 "0x3FFFFFFF", // Max Smi for 32 bits. | |
1116 "0x34567890"); | |
1117 TestBigintBitAnd("0x123456789ABCDEF01234567890", | |
1118 "0x40000000", // Max Smi for 32 bits + 1. | |
1119 "0x0"); | |
1120 TestBigintBitAnd("0x123456789ABCDEF01274567890", | |
1121 "0x40000000", // Max Smi for 32 bits + 1. | |
1122 "0x40000000"); | |
1123 TestBigintBitAnd("0x123456789ABCDEF01234567890", | |
1124 "0x3FFFFFFFFFFFFFFF", // Max Smi for 64 bits. | |
1125 "0x3CDEF01234567890"); | |
1126 TestBigintBitAnd("0x123456789ACCDEF01234567890", | |
1127 "0x4000000000000000", // Max Smi for 64 bits + 1. | |
1128 "0x4000000000000000"); | |
1129 TestBigintBitAnd("0x123456789ABCDEF01234567890", | |
1130 "0x4000000000000000", // Max Smi for 64 bits + 1. | |
1131 "0x0"); | |
1132 } | |
1133 | |
1134 | |
1135 static void TestBigintBitOr(const char* a, const char* b, const char* result) { | |
1136 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
1137 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
1138 const Bigint& ored = | |
1139 Bigint::Handle(BigintOperations::BitOr(bigint_a, bigint_b)); | |
1140 const char* str_ored = BigintOperations::ToHexCString(ored, &ZoneAllocator); | |
1141 EXPECT_STREQ(result, str_ored); | |
1142 const Bigint& ored2 = | |
1143 Bigint::Handle(BigintOperations::BitOr(bigint_b, bigint_a)); | |
1144 const char* str_ored2 = BigintOperations::ToHexCString(ored2, &ZoneAllocator); | |
1145 EXPECT_STREQ(result, str_ored2); | |
1146 } | |
1147 | |
1148 | |
1149 TEST_CASE(BigintBitOr) { | |
1150 const char* zero = "0x0"; | |
1151 const char* one = "0x1"; | |
1152 const char* minus_one = "-0x1"; | |
1153 | |
1154 TestBigintBitOr(one, zero, one); | |
1155 TestBigintBitOr(one, one, one); | |
1156 TestBigintBitOr(minus_one, zero, minus_one); | |
1157 TestBigintBitOr(minus_one, one, minus_one); | |
1158 TestBigintBitOr(minus_one, minus_one, minus_one); | |
1159 TestBigintBitOr("-0x3", one, "-0x3"); | |
1160 TestBigintBitOr("0x5", "0x3", "0x7"); | |
1161 TestBigintBitOr("0x5", minus_one, minus_one); | |
1162 TestBigintBitOr("0x5", zero, "0x5"); | |
1163 TestBigintBitOr("0x50000000", one, "0x50000001"); | |
1164 TestBigintBitOr("0x50000000", minus_one, minus_one); | |
1165 TestBigintBitOr("0x500000000", one, "0x500000001"); | |
1166 TestBigintBitOr("0x500000000", minus_one, minus_one); | |
1167 TestBigintBitOr("0x50000000000000000", one, "0x50000000000000001"); | |
1168 TestBigintBitOr("0x50000000000000000", minus_one, minus_one); | |
1169 TestBigintBitOr("-0x50000000", "-0x50000000", "-0x50000000"); | |
1170 TestBigintBitOr("-0x500000000", "-0x500000000", "-0x500000000"); | |
1171 TestBigintBitOr("-0x50000000000000000", | |
1172 "-0x50000000000000000", | |
1173 "-0x50000000000000000"); | |
1174 TestBigintBitOr("0x1234567890ABCDEF012345678", | |
1175 "0x876543210FEDCBA0987654321", | |
1176 "0x977557799FEFCFEF997755779"); | |
1177 TestBigintBitOr("-0x1234567890ABCDEF012345678", | |
1178 "-0x876543210FEDCBA0987654321", | |
1179 "-0x224422000A9C9A0002244221"); | |
1180 TestBigintBitOr("0x1234567890ABCDEF012345678", | |
1181 "-0x876543210FEDCBA0987654321", | |
1182 "-0x854101010F440200985410101"); | |
1183 TestBigintBitOr("0x1234567890ABCDEF012345678FFFFFFFFFFFFFFFFFFFFFFFFF", | |
1184 "-0x876543210FEDCBA0987654321", | |
1185 "-0x1"); | |
1186 TestBigintBitOr("0x12345678", "0xFFFFFFF", "0x1FFFFFFF"); | |
1187 TestBigintBitOr("0x123456789", "0xFFFFFFFF", "0x1FFFFFFFF"); | |
1188 TestBigintBitOr("-0x10000000", "0xFFFFFFF", "-0x1"); | |
1189 TestBigintBitOr("-0x100000000", "0xFFFFFFFF", "-0x1"); | |
1190 TestBigintBitOr("-0x10000001", "0xFFFFFFF", "-0x10000001"); | |
1191 TestBigintBitOr("-0x100000001", "0xFFFFFFFF", "-0x100000001"); | |
1192 TestBigintBitOr("-0x10000001", "0x3FFFFFFF", "-0x1"); | |
1193 TestBigintBitOr("-0x100000001", "0x3FFFFFFFF", "-0x1"); | |
1194 TestBigintBitOr("-0x10000000000000001", "0x3FFFFFFFFFFFFFFFF", "-0x1"); | |
1195 TestBigintBitOr("-0x100000000000000", "0xFFFFFFFFFFFFFF", "-0x1"); | |
1196 TestBigintBitOr("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", "-0x1"); | |
1197 TestBigintBitOr("-0x300000000000000", "0xFFFFFFFFFFFFFFF", "-0x1"); | |
1198 TestBigintBitOr("-0x30000000000000000", "0xFFFFFFFFFFFFFFFFF", "-0x1"); | |
1199 TestBigintBitOr("-0x10000000", "-0x10000000", "-0x10000000"); | |
1200 TestBigintBitOr("-0x100000000", "-0x100000000", "-0x100000000"); | |
1201 TestBigintBitOr("-0x100000000000000", | |
1202 "-0x100000000000000", | |
1203 "-0x100000000000000"); | |
1204 TestBigintBitOr("-0x10000000000000000", | |
1205 "-0x10000000000000000", | |
1206 "-0x10000000000000000"); | |
1207 TestBigintBitOr("-0x10000000", "-0x10000001", "-0x1"); | |
1208 TestBigintBitOr("-0x100000000", "-0x100000001", "-0x1"); | |
1209 TestBigintBitOr("-0x100000000000000", "-0x100000000000001", "-0x1"); | |
1210 TestBigintBitOr("-0x10000000000000000", "-0x10000000000000001", "-0x1"); | |
1211 TestBigintBitOr("-0x10000000000000000", "-0x1", "-0x1"); | |
1212 } | |
1213 | |
1214 | |
1215 static void TestBigintBitXor(const char* a, const char* b, const char* result) { | |
1216 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
1217 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
1218 const Bigint& xored = | |
1219 Bigint::Handle(BigintOperations::BitXor(bigint_a, bigint_b)); | |
1220 const char* str_xored = BigintOperations::ToHexCString(xored, &ZoneAllocator); | |
1221 EXPECT_STREQ(result, str_xored); | |
1222 const Bigint& xored2 = | |
1223 Bigint::Handle(BigintOperations::BitXor(bigint_b, bigint_a)); | |
1224 const char* str_xored2 = BigintOperations::ToHexCString(xored2, | |
1225 &ZoneAllocator); | |
1226 EXPECT_STREQ(result, str_xored2); | |
1227 const Bigint& xored3 = | |
1228 Bigint::Handle(BigintOperations::BitXor(bigint_a, xored2)); | |
1229 const char* str_xored3 = BigintOperations::ToHexCString(xored3, | |
1230 &ZoneAllocator); | |
1231 EXPECT_STREQ(b, str_xored3); | |
1232 const Bigint& xored4 = | |
1233 Bigint::Handle(BigintOperations::BitXor(xored2, bigint_a)); | |
1234 const char* str_xored4 = BigintOperations::ToHexCString(xored4, | |
1235 &ZoneAllocator); | |
1236 EXPECT_STREQ(b, str_xored4); | |
1237 const Bigint& xored5 = | |
1238 Bigint::Handle(BigintOperations::BitXor(bigint_b, xored2)); | |
1239 const char* str_xored5 = BigintOperations::ToHexCString(xored5, | |
1240 &ZoneAllocator); | |
1241 EXPECT_STREQ(a, str_xored5); | |
1242 const Bigint& xored6 = | |
1243 Bigint::Handle(BigintOperations::BitXor(xored2, bigint_b)); | |
1244 const char* str_xored6 = BigintOperations::ToHexCString(xored6, | |
1245 &ZoneAllocator); | |
1246 EXPECT_STREQ(a, str_xored6); | |
1247 } | |
1248 | |
1249 | |
1250 TEST_CASE(BigintBitXor) { | |
1251 const char* zero = "0x0"; | |
1252 const char* one = "0x1"; | |
1253 const char* minus_one = "-0x1"; | |
1254 | |
1255 TestBigintBitXor(one, zero, one); | |
1256 TestBigintBitXor(one, one, zero); | |
1257 TestBigintBitXor(minus_one, zero, minus_one); | |
1258 TestBigintBitXor(minus_one, one, "-0x2"); | |
1259 TestBigintBitXor(minus_one, minus_one, zero); | |
1260 TestBigintBitXor("0x5", "0x3", "0x6"); | |
1261 TestBigintBitXor("0x5", minus_one, "-0x6"); | |
1262 TestBigintBitXor("0x5", zero, "0x5"); | |
1263 TestBigintBitXor(minus_one, "-0x8", "0x7"); | |
1264 TestBigintBitXor("0x50000000", one, "0x50000001"); | |
1265 TestBigintBitXor("0x50000000", minus_one, "-0x50000001"); | |
1266 TestBigintBitXor("0x500000000", one, "0x500000001"); | |
1267 TestBigintBitXor("0x500000000", minus_one, "-0x500000001"); | |
1268 TestBigintBitXor("0x50000000000000000", one, "0x50000000000000001"); | |
1269 TestBigintBitXor("0x50000000000000000", minus_one, "-0x50000000000000001"); | |
1270 TestBigintBitXor("-0x50000000", "-0x50000000", zero); | |
1271 TestBigintBitXor("-0x500000000", "-0x500000000", zero); | |
1272 TestBigintBitXor("-0x50000000000000000", "-0x50000000000000000", zero); | |
1273 TestBigintBitXor("0x1234567890ABCDEF012345678", | |
1274 "0x876543210FEDCBA0987654321", | |
1275 "0x955115599F46064F995511559"); | |
1276 TestBigintBitXor("-0x1234567890ABCDEF012345678", | |
1277 "-0x876543210FEDCBA0987654321", | |
1278 "0x955115599F46064F995511557"); | |
1279 TestBigintBitXor("0x1234567890ABCDEF012345678", | |
1280 "-0x876543210FEDCBA0987654321", | |
1281 "-0x955115599F46064F995511559"); | |
1282 TestBigintBitXor("0x1234567890ABCDEF012345678FFFFFFFFFFFFFFFFFFFFFFFFF", | |
1283 "-0x876543210FEDCBA0987654321", | |
1284 "-0x1234567890ABCDEF012345678789ABCDEF012345F6789ABCE0"); | |
1285 TestBigintBitXor("0x12345678", "0xFFFFFFF", "0x1DCBA987"); | |
1286 TestBigintBitXor("0x123456789", "0xFFFFFFFF", "0x1DCBA9876"); | |
1287 TestBigintBitXor("-0x10000000", "0xFFFFFFF", "-0x1"); | |
1288 TestBigintBitXor("-0x100000000", "0xFFFFFFFF", "-0x1"); | |
1289 TestBigintBitXor("-0x10000001", "0xFFFFFFF", "-0x20000000"); | |
1290 TestBigintBitXor("-0x100000001", "0xFFFFFFFF", "-0x200000000"); | |
1291 TestBigintBitXor("-0x10000001", "0x3FFFFFFF", "-0x30000000"); | |
1292 TestBigintBitXor("-0x100000001", "0x3FFFFFFFF", "-0x300000000"); | |
1293 TestBigintBitXor("-0x10000000000000001", | |
1294 "0x3FFFFFFFFFFFFFFFF", | |
1295 "-0x30000000000000000"); | |
1296 TestBigintBitXor("-0x100000000000000", "0xFFFFFFFFFFFFFF", "-0x1"); | |
1297 TestBigintBitXor("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", "-0x1"); | |
1298 TestBigintBitXor("-0x300000000000000", | |
1299 "0xFFFFFFFFFFFFFFF", | |
1300 "-0xD00000000000001"); | |
1301 TestBigintBitXor("-0x30000000000000000", | |
1302 "0xFFFFFFFFFFFFFFFFF", | |
1303 "-0xD0000000000000001"); | |
1304 TestBigintBitXor("-0x10000000", "-0x10000000", zero); | |
1305 TestBigintBitXor("-0x100000000", "-0x100000000", zero); | |
1306 TestBigintBitXor("-0x100000000000000", "-0x100000000000000", zero); | |
1307 TestBigintBitXor("-0x10000000000000000", "-0x10000000000000000", zero); | |
1308 TestBigintBitXor("-0x10000000", "-0x10000001", "0x1FFFFFFF"); | |
1309 TestBigintBitXor("-0x100000000", "-0x100000001", "0x1FFFFFFFF"); | |
1310 TestBigintBitXor("-0x100000000000000", | |
1311 "-0x100000000000001", | |
1312 "0x1FFFFFFFFFFFFFF"); | |
1313 TestBigintBitXor("-0x10000000000000000", | |
1314 "-0x10000000000000001", | |
1315 "0x1FFFFFFFFFFFFFFFF"); | |
1316 } | |
1317 | |
1318 | |
1319 static void TestBigintBitNot(const char* a, const char* result) { | |
1320 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
1321 const Bigint& inverted = | |
1322 Bigint::Handle(BigintOperations::BitNot(bigint_a)); | |
1323 const char* str_inverted = BigintOperations::ToHexCString(inverted, | |
1324 &ZoneAllocator); | |
1325 EXPECT_STREQ(result, str_inverted); | |
1326 const Bigint& back = | |
1327 Bigint::Handle(BigintOperations::BitNot(inverted)); | |
1328 const char* str_back = BigintOperations::ToHexCString(back, &ZoneAllocator); | |
1329 EXPECT_STREQ(a, str_back); | |
1330 } | |
1331 | |
1332 | |
1333 TEST_CASE(BigintBitNot) { | |
1334 const char* zero = "0x0"; | |
1335 const char* one = "0x1"; | |
1336 const char* minus_one = "-0x1"; | |
1337 | |
1338 TestBigintBitNot(zero, minus_one); | |
1339 TestBigintBitNot(one, "-0x2"); | |
1340 TestBigintBitNot("0x5", "-0x6"); | |
1341 TestBigintBitNot("0x50000000", "-0x50000001"); | |
1342 TestBigintBitNot("0xFFFFFFF", "-0x10000000"); | |
1343 TestBigintBitNot("0xFFFFFFFF", "-0x100000000"); | |
1344 TestBigintBitNot("0xFFFFFFFFFFFFFF", "-0x100000000000000"); | |
1345 TestBigintBitNot("0xFFFFFFFFFFFFFFFF", "-0x10000000000000000"); | |
1346 TestBigintBitNot("0x1234567890ABCDEF012345678", | |
1347 "-0x1234567890ABCDEF012345679"); | |
1348 } | |
1349 | |
1350 | |
1351 static void TestBigintMultiplyDivide(const char* a, | |
1352 const char* b, | |
1353 const char* product) { | |
1354 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
1355 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
1356 const Bigint& computed_product = | |
1357 Bigint::Handle(BigintOperations::Multiply(bigint_a, bigint_b)); | |
1358 const char* str_product = BigintOperations::ToHexCString(computed_product, | |
1359 &ZoneAllocator); | |
1360 EXPECT_STREQ(product, str_product); | |
1361 const Bigint& computed_product2 = | |
1362 Bigint::Handle(BigintOperations::Multiply(bigint_b, bigint_a)); | |
1363 const char* str_product2 = BigintOperations::ToHexCString(computed_product2, | |
1364 &ZoneAllocator); | |
1365 EXPECT_STREQ(product, str_product2); | |
1366 | |
1367 const Bigint& bigint_product = | |
1368 Bigint::Handle(BigintOperations::NewFromCString(product)); | |
1369 if (!bigint_a.IsZero()) { | |
1370 const Bigint& computed_quotient1 = | |
1371 Bigint::Handle(BigintOperations::Divide(bigint_product, bigint_a)); | |
1372 const char* str_quotient1 = | |
1373 BigintOperations::ToHexCString(computed_quotient1, &ZoneAllocator); | |
1374 EXPECT_STREQ(b, str_quotient1); | |
1375 } | |
1376 | |
1377 if (!bigint_b.IsZero()) { | |
1378 const Bigint& computed_quotient2 = | |
1379 Bigint::Handle(BigintOperations::Divide(bigint_product, bigint_b)); | |
1380 const char* str_quotient2 = | |
1381 BigintOperations::ToHexCString(computed_quotient2, &ZoneAllocator); | |
1382 EXPECT_STREQ(a, str_quotient2); | |
1383 } | |
1384 } | |
1385 | |
1386 | |
1387 TEST_CASE(BigintMultiplyDivide) { | |
1388 const char* zero = "0x0"; | |
1389 const char* one = "0x1"; | |
1390 const char* minus_one = "-0x1"; | |
1391 | |
1392 TestBigintMultiplyDivide(zero, zero, zero); | |
1393 TestBigintMultiplyDivide(one, one, one); | |
1394 TestBigintMultiplyDivide(one, zero, zero); | |
1395 TestBigintMultiplyDivide(zero, one, zero); | |
1396 TestBigintMultiplyDivide(one, minus_one, minus_one); | |
1397 TestBigintMultiplyDivide(minus_one, minus_one, one); | |
1398 TestBigintMultiplyDivide("0x42", one, "0x42"); | |
1399 TestBigintMultiplyDivide("0x42", "0x2", "0x84"); | |
1400 TestBigintMultiplyDivide("0xFFFF", "0x2", "0x1FFFE"); | |
1401 TestBigintMultiplyDivide("0x3", "0x5", "0xF"); | |
1402 TestBigintMultiplyDivide("0xFFFFF", "0x5", "0x4FFFFB"); | |
1403 TestBigintMultiplyDivide("0xFFFFFFF", "0x5", "0x4FFFFFFB"); | |
1404 TestBigintMultiplyDivide("0xFFFFFFFF", "0x5", "0x4FFFFFFFB"); | |
1405 TestBigintMultiplyDivide("0xFFFFFFFFFFFFFFFF", "0x5", "0x4FFFFFFFFFFFFFFFB"); | |
1406 TestBigintMultiplyDivide("0xFFFFFFFFFFFFFFFF", "0x3039", | |
1407 "0x3038FFFFFFFFFFFFCFC7"); | |
1408 TestBigintMultiplyDivide("0xFFFFFFFFFFFFFFFF", | |
1409 "0xFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
1410 "0xFFFFFFFFFFFFFFFEFFFFFFFFFF0000000000000001"); | |
1411 TestBigintMultiplyDivide( | |
1412 "0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000", | |
1413 "0xFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000", | |
1414 "0xFFFFFFFFFFFFFFFEFFFFFFFFFF000000000000000100000000000000" | |
1415 "000000000000000000000000000000000000000000000000000000000000"); | |
1416 TestBigintMultiplyDivide("0x10000001", "0x5", "0x50000005"); | |
1417 TestBigintMultiplyDivide( | |
1418 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
1419 "01234567890ABCDEF01234567890ABCDEF", | |
1420 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
1421 "01234567890ABCDEF01234567890ABCDEF", | |
1422 "0x14B66DC328828BCA670CBE52943AA3894CCCE15C8F5ED1E55F" | |
1423 "328F6D3F579F992299850C4B5B95213EF3FB7B4E73B5F43D4299" | |
1424 "5B9F6FD5441C275F2FF89F86F28F47A94CA37481090DCCCDCA6475F09A2F2A521"); | |
1425 TestBigintMultiplyDivide( | |
1426 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
1427 "01234567890ABCDEF", | |
1428 "0x1234567890123456789012345678901234567890123456789012345678901234567890" | |
1429 "123456789012345678901234567890123456789012345678901234567890123456789012" | |
1430 "345678901234567890123456789012345678901234567890123456789012345678901234" | |
1431 "567890123456789012345678901234567890123456789012345678901234567890123456" | |
1432 "789012345678901234567890123456789012345678901234567890123456789012345678" | |
1433 "90123456789012345678901234567890", | |
1434 "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2" | |
1435 "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A" | |
1436 "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F" | |
1437 "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B" | |
1438 "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57" | |
1439 "0F4A8F0B570F4A8F0B570F4A8F0B570F35D89D93E776C67DD864B2034B5C739007933027" | |
1440 "5CDFD41E07A15D0F5AD5256BED5F1CF91FBA375DE70"); | |
1441 TestBigintMultiplyDivide( | |
1442 "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1443 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1444 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1445 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1446 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1447 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1448 "FFFFFFFFFFFFFFFFF", | |
1449 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1450 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
1451 "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1452 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFF" | |
1453 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1454 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1455 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1456 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1457 "FFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000" | |
1458 "0000000000000000000000000000000000000000000000000000000000000000000001"); | |
1459 TestBigintMultiplyDivide( | |
1460 "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1461 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1462 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1463 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1464 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1465 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1466 "FFFFFFFFFFFFFFFFF", | |
1467 "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1468 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1469 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1470 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1471 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1472 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1473 "FFFFFFFFFFFFFFFFF", | |
1474 "0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1475 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1476 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1477 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1478 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1479 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1480 "FFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000" | |
1481 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1482 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1483 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1484 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1485 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1486 "0000000000000000000000000000001"); | |
1487 | |
1488 // A 256 28-bit digits number squared. | |
1489 TestBigintMultiplyDivide( | |
1490 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1491 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1492 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1493 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1494 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1495 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1496 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1497 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1498 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1499 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1500 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1501 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1502 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1503 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1504 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1505 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1506 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1507 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1508 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1509 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1510 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1511 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1512 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1513 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1514 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
1515 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1516 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1517 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1518 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1519 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1520 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1521 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1522 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1523 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1524 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1525 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1526 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1527 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1528 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1529 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1530 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1531 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1532 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1533 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1534 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1535 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1536 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1537 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1538 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1539 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
1540 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1541 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1542 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1543 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1544 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1545 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1546 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1547 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1548 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1549 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1550 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1551 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1552 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1553 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1554 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1555 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1556 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1557 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1558 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1559 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1560 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1561 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1562 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1563 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1564 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000" | |
1565 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1566 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1567 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1568 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1569 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1570 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1571 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1572 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1573 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1574 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1575 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1576 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1577 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1578 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1579 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1580 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1581 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1582 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1583 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1584 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1585 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1586 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1587 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1588 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
1589 "0000000000000000000000000000000000000000000000000000000001"); | |
1590 | |
1591 | |
1592 TestBigintMultiplyDivide( | |
1593 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1594 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1595 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1596 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1597 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1598 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1599 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1600 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1601 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1602 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1603 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1604 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1605 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1606 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1607 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1608 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1609 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1610 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1611 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1612 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1613 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1614 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1615 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1616 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1617 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
1618 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1619 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1620 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1621 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1622 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1623 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1624 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1625 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1626 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1627 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1628 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1629 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1630 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1631 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1632 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1633 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1634 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1635 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1636 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1637 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1638 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1639 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1640 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1641 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1642 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1643 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1644 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1645 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1646 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1647 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1648 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1649 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1650 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1651 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1652 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1653 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1654 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1655 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1656 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1657 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1658 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1659 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1660 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1661 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1662 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1663 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1664 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1665 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1666 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1667 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1668 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1669 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1670 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1671 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1672 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1673 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1674 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1675 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1676 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1677 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1678 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1679 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1680 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1681 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1682 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1683 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1684 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1685 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1686 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1687 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1688 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1689 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1690 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1691 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1692 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1693 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1694 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1695 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1696 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1697 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1698 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1699 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1700 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1701 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1702 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1703 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1704 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1705 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1706 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1707 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1708 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1709 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1710 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1711 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1712 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1713 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1714 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1715 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1716 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1717 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1718 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1719 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1720 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1721 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1722 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1723 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1724 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1725 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1726 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1727 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1728 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1729 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1730 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1731 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1732 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1733 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1734 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1735 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1736 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1737 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1738 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1739 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1740 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1741 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1742 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1743 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1744 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1745 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1746 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1747 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1748 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1749 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1750 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1751 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1752 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1753 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1754 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1755 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1756 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1757 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1758 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1759 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1760 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1761 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1762 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1763 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1764 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1765 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1766 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1767 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1768 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1769 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1770 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1771 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1772 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1773 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1774 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1775 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1776 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1777 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1778 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1779 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1780 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1781 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1782 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1783 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1784 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1785 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1786 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1787 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1788 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1789 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1790 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1791 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1792 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1793 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1794 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1795 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1796 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1797 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1798 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1799 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1800 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1801 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1802 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1803 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1804 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1805 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1806 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1807 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1808 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1809 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1810 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1811 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1812 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1813 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1814 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1815 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1816 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1817 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1818 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1819 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1820 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1821 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1822 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1823 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1824 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1825 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1826 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1827 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1828 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1829 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1830 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1831 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1832 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1833 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1834 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1835 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1836 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1837 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1838 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1839 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1840 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1841 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1842 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1843 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1844 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1845 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1846 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1847 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1848 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1849 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1850 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1851 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1852 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1853 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1854 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1855 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1856 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1857 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1858 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1859 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1860 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1861 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1862 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1863 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1864 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1865 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1866 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", | |
1867 "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1868 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1869 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1870 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1871 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1872 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1873 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1874 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1875 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1876 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1877 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1878 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1879 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1880 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1881 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1882 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1883 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1884 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1885 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1886 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1887 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1888 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1889 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1890 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1891 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFF" | |
1892 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1893 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1894 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1895 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1896 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1897 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1898 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1899 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1900 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1901 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1902 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1903 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1904 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1905 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1906 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1907 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1908 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1909 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1910 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1911 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1912 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1913 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1914 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1915 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1916 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1917 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1918 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1919 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1920 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1921 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1922 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1923 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1924 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1925 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1926 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1927 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1928 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1929 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1930 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1931 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1932 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1933 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1934 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1935 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1936 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1937 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1938 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1939 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1940 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1941 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1942 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1943 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1944 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1945 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1946 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1947 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1948 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1949 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1950 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1951 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1952 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1953 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1954 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1955 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1956 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1957 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1958 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1959 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1960 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1961 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1962 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1963 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1964 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1965 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1966 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1967 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1968 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1969 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1970 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1971 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1972 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1973 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1974 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1975 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1976 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1977 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1978 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1979 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1980 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1981 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1982 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1983 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1984 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1985 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1986 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1987 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1988 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1989 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1990 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1991 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1992 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1993 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1994 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1995 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1996 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1997 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1998 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
1999 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2000 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2001 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2002 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2003 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2004 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2005 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2006 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2007 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2008 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2009 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2010 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2011 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2012 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2013 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2014 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2015 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2016 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2017 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2018 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2019 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2020 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2021 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2022 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2023 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2024 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2025 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2026 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2027 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2028 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2029 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2030 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2031 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2032 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2033 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2034 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2035 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2036 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2037 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2038 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2039 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2040 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2041 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2042 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2043 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2044 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2045 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2046 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2047 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2048 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2049 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2050 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2051 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2052 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2053 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2054 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2055 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2056 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2057 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2058 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2059 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2060 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2061 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2062 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2063 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2064 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2065 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2066 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2067 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2068 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2069 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2070 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2071 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2072 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2073 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2074 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2075 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2076 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2077 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2078 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2079 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2080 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2081 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2082 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2083 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2084 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2085 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2086 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2087 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2088 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2089 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2090 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2091 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2092 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2093 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2094 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2095 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2096 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2097 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2098 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2099 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2100 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2101 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2102 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2103 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2104 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2105 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2106 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2107 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2108 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2109 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2110 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2111 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2112 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2113 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2114 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
2115 "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000" | |
2116 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2117 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2118 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2119 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2120 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2121 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2122 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2123 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2124 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2125 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2126 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2127 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2128 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2129 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2130 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2131 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2132 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2133 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2134 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2135 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2136 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2137 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2138 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2139 "000000000000000000000000000000000000000000000000000000000000000000000000" | |
2140 "0000000000000000000000000000000000000000000000000000000001"); | |
2141 } | |
2142 | |
2143 | |
2144 static void TestBigintDivideRemainder(const char* a, | |
2145 const char* b, | |
2146 const char* quotient, | |
2147 const char* remainder) { | |
2148 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); | |
2149 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); | |
2150 const Bigint& computed_quotient = | |
2151 Bigint::Handle(BigintOperations::Divide(bigint_a, bigint_b)); | |
2152 const Bigint& computed_remainder = | |
2153 Bigint::Handle(BigintOperations::Remainder(bigint_a, bigint_b)); | |
2154 const char* str_quotient = BigintOperations::ToHexCString(computed_quotient, | |
2155 &ZoneAllocator); | |
2156 const char* str_remainder = | |
2157 BigintOperations::ToHexCString(computed_remainder, &ZoneAllocator); | |
2158 EXPECT_STREQ(quotient, str_quotient); | |
2159 EXPECT_STREQ(remainder, str_remainder); | |
2160 } | |
2161 | |
2162 | |
2163 TEST_CASE(BigintDivideRemainder) { | |
2164 const char* zero = "0x0"; | |
2165 const char* one = "0x1"; | |
2166 const char* minus_one = "-0x1"; | |
2167 | |
2168 TestBigintDivideRemainder(one, one, one, zero); | |
2169 TestBigintDivideRemainder(zero, one, zero, zero); | |
2170 TestBigintDivideRemainder(minus_one, one, minus_one, zero); | |
2171 TestBigintDivideRemainder(one, "0x2", zero, one); | |
2172 TestBigintDivideRemainder(minus_one, "0x7", zero, minus_one); | |
2173 TestBigintDivideRemainder("0xB", "0x7", one, "0x4"); | |
2174 TestBigintDivideRemainder("0x12345678", "0x7", "0x299C335", "0x5"); | |
2175 TestBigintDivideRemainder("-0x12345678", "0x7", "-0x299C335", "-0x5"); | |
2176 TestBigintDivideRemainder("0x12345678", "-0x7", "-0x299C335", "0x5"); | |
2177 TestBigintDivideRemainder("-0x12345678", "-0x7", "0x299C335", "-0x5"); | |
2178 TestBigintDivideRemainder("0x7", "0x12345678", zero, "0x7"); | |
2179 TestBigintDivideRemainder("-0x7", "0x12345678", zero, "-0x7"); | |
2180 TestBigintDivideRemainder("-0x7", "-0x12345678", zero, "-0x7"); | |
2181 TestBigintDivideRemainder("0x7", "-0x12345678", zero, "0x7"); | |
2182 TestBigintDivideRemainder("0x12345678", "0x7", "0x299C335", "0x5"); | |
2183 TestBigintDivideRemainder("-0x12345678", "0x7", "-0x299C335", "-0x5"); | |
2184 TestBigintDivideRemainder("0x12345678", "-0x7", "-0x299C335", "0x5"); | |
2185 TestBigintDivideRemainder("-0x12345678", "-0x7", "0x299C335", "-0x5"); | |
2186 TestBigintDivideRemainder( | |
2187 "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2" | |
2188 "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A" | |
2189 "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F" | |
2190 "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B" | |
2191 "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57" | |
2192 "0F4A8F0B570F4A8F0B570F4A8F0B570F35D89D93E776C67DD864B2034B5C739007933027" | |
2193 "5CDFD41E07A15D0F5AD5256BED5F1CF91FBA375DE70", | |
2194 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
2195 "01234567890ABCDEF", | |
2196 "0x1234567890123456789012345678901234567890123456789012345678901234567890" | |
2197 "123456789012345678901234567890123456789012345678901234567890123456789012" | |
2198 "345678901234567890123456789012345678901234567890123456789012345678901234" | |
2199 "567890123456789012345678901234567890123456789012345678901234567890123456" | |
2200 "789012345678901234567890123456789012345678901234567890123456789012345678" | |
2201 "90123456789012345678901234567890", | |
2202 zero); | |
2203 TestBigintDivideRemainder( | |
2204 "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2" | |
2205 "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A" | |
2206 "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F" | |
2207 "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B" | |
2208 "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57" | |
2209 "0F4A8F0B570F4A8F0B570F4A8F0B570F35D89D93E776C67DD864B2034B5C739007933027" | |
2210 "5CDFD41E07A15D0F5AD5256BED5F1CF91FBA375DE71", | |
2211 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
2212 "01234567890ABCDEF", | |
2213 "0x1234567890123456789012345678901234567890123456789012345678901234567890" | |
2214 "123456789012345678901234567890123456789012345678901234567890123456789012" | |
2215 "345678901234567890123456789012345678901234567890123456789012345678901234" | |
2216 "567890123456789012345678901234567890123456789012345678901234567890123456" | |
2217 "789012345678901234567890123456789012345678901234567890123456789012345678" | |
2218 "90123456789012345678901234567890", | |
2219 one); | |
2220 TestBigintDivideRemainder( | |
2221 "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2" | |
2222 "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A" | |
2223 "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F" | |
2224 "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B" | |
2225 "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57" | |
2226 "0F4A8F0B570F4A8F0B570F4A8F0B5710591E051CF233A56DEA99087BDC08417F08B6758E" | |
2227 "E5EA90FCF7B39165D365D139DC60403E8743421AC5E", | |
2228 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
2229 "01234567890ABCDEF", | |
2230 "0x1234567890123456789012345678901234567890123456789012345678901234567890" | |
2231 "123456789012345678901234567890123456789012345678901234567890123456789012" | |
2232 "345678901234567890123456789012345678901234567890123456789012345678901234" | |
2233 "567890123456789012345678901234567890123456789012345678901234567890123456" | |
2234 "789012345678901234567890123456789012345678901234567890123456789012345678" | |
2235 "90123456789012345678901234567890", | |
2236 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" | |
2237 "01234567890ABCDEE"); | |
2238 } | |
2239 | |
2240 } // namespace dart | |
OLD | NEW |