// Game Boy Advance library for Logic Machines F'05 // Version 7, December 7, 2005 #include "gba_systemcalls.h" #include "gbaio.h" extern const short cosine_table[]; #define COSINE_TABLE_VALUE_SHIFT 2 #define COSINE_TABLE_DEGREE_SHIFT 4 #define COSINE_TABLE_DEGREE_SCALE 16 real cosr(real a) { short v = cosine_table[(NormalizeAngle(a)) >> (REAL_SHIFT - COSINE_TABLE_DEGREE_SHIFT)]; return v << COSINE_TABLE_VALUE_SHIFT; } real sinr(real a) { short v = cosine_table[NormalizeAngle(a - REAL(64)) >> (REAL_SHIFT - COSINE_TABLE_DEGREE_SHIFT)]; return v << COSINE_TABLE_VALUE_SHIFT; } real asinr(real x) { int a, step, dir; if (x < REAL(-1) || x > REAL(1)) return 0; a = 64 * COSINE_TABLE_DEGREE_SCALE; // 90 degrees step = 32 * COSINE_TABLE_DEGREE_SCALE; dir = -1; while (step > 0) { real cosa = cosine_table[a] << COSINE_TABLE_VALUE_SHIFT; // printf("%f %d %d %d (%f)\n", FLOAT(x), a, step, dir, FLOAT(cosa)); if (x > cosa) { if (dir == 1) { step >>= 1; dir = -1; } } else if (x < cosa) { if (dir == -1) { step >>= 1; dir = 1; } } else break; if (dir == 1) a += step; else a -= step; } return REAL(64) - (a << (REAL_SHIFT - COSINE_TABLE_DEGREE_SHIFT)); } real sqrtr(real x) { u16 s; if (x <= REAL(0)) return REAL(0); s = Sqrt(x); return (s<<(REAL_SHIFT/2)); } #if 0 real old_sqrtr(real x) { real tmp, odd, root, last_root, half; int loops; if (x <= REAL(0)) return REAL(0); // first use pell's method to find integer approximation if (x < REAL(1)) root = REAL(1); else { root = REAL(0); odd = REAL(1); tmp = x; while (tmp >= odd) { root += REAL(1); tmp -= odd; odd += REAL(2); } } // then use babylonian method to find real approximation loops = 0; half = divr(REAL(1), REAL(2)); do { last_root = root; root = mulr(half, root + divr(x, root)); ++loops; } while (root != last_root && loops < 10); return root; } #endif real absr(real x) { if (x < REAL(0)) return -x; else return x; } real GetDistanceBetweenPoints(realpoint *pointOne, realpoint *pointTwo) { real deltaXBetweenPoints, deltaYBetweenPoints; deltaXBetweenPoints = pointTwo->x - pointOne->x; deltaYBetweenPoints = pointTwo->y - pointOne->y; if (deltaXBetweenPoints == REAL(0)) return absr(deltaYBetweenPoints); if (deltaYBetweenPoints == REAL(0)) return absr(deltaXBetweenPoints); return sqrtr(mulr(deltaXBetweenPoints, deltaXBetweenPoints) + mulr(deltaYBetweenPoints, deltaYBetweenPoints)); } real GetAngleBetweenPoints(realpoint *pointOne, realpoint *pointTwo) { real deltaYBetweenPoints; real distanceBetweenPoints; real answer; distanceBetweenPoints = GetDistanceBetweenPoints(pointOne, pointTwo); if (distanceBetweenPoints == REAL(0)) return 0; deltaYBetweenPoints = pointTwo->y - pointOne->y; answer = asinr(divr(deltaYBetweenPoints, distanceBetweenPoints)); // Quadrant two if ((pointTwo->x < pointOne->x) && (pointTwo->y >= pointOne->y)) { answer = REAL(128) - answer; // Quadrant three } else if ((pointTwo->x <= pointOne->x) && (pointTwo->y < pointOne->y)) { answer = REAL(128) - answer; // Quadrant four } else if ((pointTwo->x > pointOne->x) && (pointTwo->y < pointOne->y)) { answer = REAL(256) + answer; } // Quadrant one return answer; } // Adjusting a degree heading sometimes results in angles // greater than 360 or less than 0. This routine translates those angles // into their correct 0 to 360 range equivalents. real NormalizeAngle(real angle) { // If the angle is negative, add 360 to it. while (angle < REAL(0)) angle += REAL(256); // If the angle is over 360, subtract 360 from it. while (angle >= REAL(256)) angle -= REAL(256); // If we get here, the angle is between 0 and 360 and therefore // no adjustment is necessary. Just return the angle. return angle; } // Rotates a source angle towards a target angle by the specified number of degrees, // always using the shortest path (CW or CCW). Returns the source angle's new angle. real ChaseAngle(real targetAngle, real sourceAngle, real degreesToRotate) { real targetAngleRelativeToZero; // If the difference between the angles is less than the amount we want to rotate per frame, // then just snap the source angle to the target angle. if (GetDeltaBetweenAngles(sourceAngle, targetAngle) < degreesToRotate) return targetAngle; // Otherwise, express the target angle relative to 0 degrees due east. targetAngleRelativeToZero = NormalizeAngle(targetAngle - sourceAngle); // If the new target angle is within a 180 clockwise swoop from 0 degrees, // we'll want to rotate clockwise, if (targetAngleRelativeToZero < REAL(128)) { sourceAngle += degreesToRotate; // otherwise, counterclockwise. } else sourceAngle -= degreesToRotate; // Finally, normalize and return the new angle. return NormalizeAngle(sourceAngle); } // Returns the smallest sweep between two angles. real GetDeltaBetweenAngles(real angleOne, real angleTwo) { real deltaBetweenAngles; // Find the difference between the two angles. deltaBetweenAngles = absr(angleTwo - angleOne); // If the delta is greater than 180 degrees, calculate the // smaller angle by subtracting the delta from 360 degrees. if (deltaBetweenAngles > REAL(128)) deltaBetweenAngles = REAL(256) - deltaBetweenAngles; // Finally, return the delta. return deltaBetweenAngles; } static void updateVector(vector *theVector); // VECTORS!! Vectors are used in Zap to move stuff around and to bounce stuff off of each other. // So, we built routines like MovePointUsingVector, AccelerateVector and CollideVectors. These // routines rely upon some slightly lower level routines which break the vector up into its x and y // components and deal with the ugliness of radians so that we can keep everything in the game in // happy friendly degrees. Vectors are cool, but they can be slooow since these lower level routines // need to make some math toolbox calls like sin, cos, and arcsin. The trick, then, is to call those // math functions only when absolutely necessary. For example, when we want to speed up an alien and move // it in a certain direction, we call AccelerateVector then MovePointUsingVector. Both routines need // to know the vector's X/Y components, which requires sin/cos computations. But computing them in each // routine is a waste of time. And that, kiddies, is why we ended up with a vector struct that's more than // just the standard magnitude and direction. Our's includes sin and cos too, and uses a lastDirection field to // know when the vector needs to be updated! We begin every vector's life then with a single call to InitVector: void InitVector(vector *theVector) { theVector->magnitude = REAL(0); theVector->direction = REAL(0); theVector->lastDirection = REAL(1); // force update updateVector(theVector); } // Then, every time we use that vector, we check lastDirection to see if it's heading in a new direction. // If so, we call updateVector which sorts out the vector's heading in radians, calculates its sin and cos, // and finally stores its current direction in lastDirection. static void updateVector(vector *theVector) { real degrees; if (theVector->lastDirection == theVector->direction) return; degrees = theVector->lastDirection = theVector->direction = NormalizeAngle(theVector->direction); theVector->cos = cosr(degrees); theVector->sin = sinr(degrees); } // Now, when we call a basic vector routine like MovePointUsingVector // which in turn calls GetX/YComponentOfVector, we make use of all the info // that was precalculated in updateVector (and only recalculating that // stuff if the angle has changed). void MovePointUsingVector(realpoint *sourcePoint, vector *theVector) { if (theVector->magnitude == REAL(0)) return; // Adjust the source point by the vector's x and y components. sourcePoint->x += GetXComponentOfVector(theVector); sourcePoint->y += GetYComponentOfVector(theVector); } real GetXComponentOfVector(vector *theVector) { updateVector(theVector); return mulr(theVector->cos, theVector->magnitude); } real GetYComponentOfVector(vector *theVector) { updateVector(theVector); return mulr(theVector->sin, theVector->magnitude); } void AccelerateVector(vector *theVector, vector *theAcceleration, real maxMagnitude) { AddVectors(theVector, theAcceleration); if (theVector->magnitude > maxMagnitude) theVector->magnitude = maxMagnitude; } real AccelerateQuantity(real theQuantity, real theAcceleration, real maxQuantity) { theQuantity += theAcceleration; if (theQuantity > maxQuantity) theQuantity = maxQuantity; return theQuantity; } void AddVectors(vector *resultVector, vector *theVector) { realpoint resultPoint; if (theVector->magnitude == REAL(0)) return; if (resultVector->magnitude == REAL(0)) { *resultVector = *theVector; return; } // Break the two input vectors up into their x and y components, // then add them up to get the x and y components of our new vector. resultPoint.x = GetXComponentOfVector(resultVector) + GetXComponentOfVector(theVector); resultPoint.y = GetYComponentOfVector(resultVector) + GetYComponentOfVector(theVector); CreateVectorFromPoint(resultVector, &resultPoint); } void CreateVectorFromPoint(vector *resultVector, realpoint *point) { realpoint pointZero; realpoint pt; pointZero.x = REAL(0); pointZero.y = REAL(0); pt = *point; // Express the new vector as two points in space, // from which we can then extract the vector's magnitude and direction. resultVector->magnitude = GetDistanceBetweenPoints(&pointZero, &pt); if (resultVector->magnitude < REAL(100)) { pt.x = mulr(pt.x, REAL(10)); pt.y = mulr(pt.y, REAL(10)); } resultVector->direction = GetAngleBetweenPoints(&pointZero, &pt); } // Elastically collide two spherical objects of equal mass. // Uses some fancy math to calculate the parallel and perpendicular // componenents of the two object's vectors, then swaps the perpendicular // components. Tickle me elmo. void CreateVectorFromPoint2(real x, real y, vector *vec) { realpoint pt; pt.x = x; pt.y = y; CreateVectorFromPoint(vec, &pt); } void CollideVectors(vector *v1, vector *v2) { real v1h, v1v, v2h, v2v; vector v1par, v1perp, v2par, v2perp; real v1parH, v1parV, v1perpH, v1perpV, v2parH, v2parV, v2perpH, v2perpV; real v1squaredLength, v2squaredLength, dotProduct; real epsilon; v1h = GetXComponentOfVector(v1); v1v = GetYComponentOfVector(v1); v2h = GetXComponentOfVector(v2); v2v = GetYComponentOfVector(v2); v1squaredLength = mulr(v1h, v1h) + mulr(v1v, v1v); v2squaredLength = mulr(v2h, v2h) + mulr(v2v, v2v); epsilon = REAL(0.1); if (v1squaredLength < epsilon) { real temp = v1->magnitude; *v1 = *v2; v2->magnitude = temp; return; } else if (v2squaredLength < epsilon) { real temp = v2->magnitude; *v2 = *v1; v1->magnitude = temp; return; } dotProduct = mulr(v1h, v2h) + mulr(v1v, v2v); v1parH = divr(mulr(v2h, dotProduct), v2squaredLength); v1parV = divr(mulr(v2v, dotProduct), v2squaredLength); CreateVectorFromPoint2(v1parH, v1parV, &v1par); v1perpH = v1h - v1parH; v1perpV = v1v - v1parV; CreateVectorFromPoint2(v1perpH, v1perpV, &v1perp); v2parH = divr(mulr(v1h, dotProduct), v1squaredLength); v2parV = divr(mulr(v1v, dotProduct), v1squaredLength); CreateVectorFromPoint2(v2parH, v2parV, &v2par); v2perpH = v2h - v2parH; v2perpV = v2v - v2parV; CreateVectorFromPoint2(v2perpH, v2perpV, &v2perp); AddVectors(&v1par, &v2perp); AddVectors(&v2par, &v1perp); *v1 = v1par; *v2 = v2par; } const short cosine_table[] = { 0x4000, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3ffe, 0x3ffe, 0x3ffe, 0x3ffd, 0x3ffd, 0x3ffc, 0x3ffc, 0x3ffb, 0x3ffb, 0x3ffa, 0x3ff9, 0x3ff9, 0x3ff8, 0x3ff7, 0x3ff6, 0x3ff5, 0x3ff4, 0x3ff3, 0x3ff2, 0x3ff1, 0x3ff0, 0x3fef, 0x3fee, 0x3fed, 0x3fec, 0x3feb, 0x3fe9, 0x3fe8, 0x3fe7, 0x3fe5, 0x3fe4, 0x3fe2, 0x3fe1, 0x3fdf, 0x3fde, 0x3fdc, 0x3fda, 0x3fd8, 0x3fd7, 0x3fd5, 0x3fd3, 0x3fd1, 0x3fcf, 0x3fcd, 0x3fcb, 0x3fc9, 0x3fc7, 0x3fc5, 0x3fc3, 0x3fc1, 0x3fbf, 0x3fbc, 0x3fba, 0x3fb8, 0x3fb5, 0x3fb3, 0x3fb1, 0x3fae, 0x3fac, 0x3fa9, 0x3fa6, 0x3fa4, 0x3fa1, 0x3f9e, 0x3f9c, 0x3f99, 0x3f96, 0x3f93, 0x3f90, 0x3f8d, 0x3f8a, 0x3f87, 0x3f84, 0x3f81, 0x3f7e, 0x3f7b, 0x3f78, 0x3f74, 0x3f71, 0x3f6e, 0x3f6a, 0x3f67, 0x3f64, 0x3f60, 0x3f5d, 0x3f59, 0x3f55, 0x3f52, 0x3f4e, 0x3f4a, 0x3f47, 0x3f43, 0x3f3f, 0x3f3b, 0x3f37, 0x3f33, 0x3f2f, 0x3f2b, 0x3f27, 0x3f23, 0x3f1f, 0x3f1b, 0x3f17, 0x3f13, 0x3f0e, 0x3f0a, 0x3f06, 0x3f01, 0x3efd, 0x3ef8, 0x3ef4, 0x3eef, 0x3eeb, 0x3ee6, 0x3ee1, 0x3edd, 0x3ed8, 0x3ed3, 0x3ece, 0x3eca, 0x3ec5, 0x3ec0, 0x3ebb, 0x3eb6, 0x3eb1, 0x3eac, 0x3ea7, 0x3ea1, 0x3e9c, 0x3e97, 0x3e92, 0x3e8c, 0x3e87, 0x3e82, 0x3e7c, 0x3e77, 0x3e71, 0x3e6c, 0x3e66, 0x3e61, 0x3e5b, 0x3e55, 0x3e50, 0x3e4a, 0x3e44, 0x3e3e, 0x3e38, 0x3e33, 0x3e2d, 0x3e27, 0x3e21, 0x3e1b, 0x3e14, 0x3e0e, 0x3e08, 0x3e02, 0x3dfc, 0x3df5, 0x3def, 0x3de9, 0x3de2, 0x3ddc, 0x3dd6, 0x3dcf, 0x3dc9, 0x3dc2, 0x3dbb, 0x3db5, 0x3dae, 0x3da7, 0x3da1, 0x3d9a, 0x3d93, 0x3d8c, 0x3d85, 0x3d7e, 0x3d77, 0x3d70, 0x3d69, 0x3d62, 0x3d5b, 0x3d54, 0x3d4d, 0x3d45, 0x3d3e, 0x3d37, 0x3d2f, 0x3d28, 0x3d21, 0x3d19, 0x3d12, 0x3d0a, 0x3d02, 0x3cfb, 0x3cf3, 0x3cec, 0x3ce4, 0x3cdc, 0x3cd4, 0x3ccc, 0x3cc5, 0x3cbd, 0x3cb5, 0x3cad, 0x3ca5, 0x3c9d, 0x3c95, 0x3c8c, 0x3c84, 0x3c7c, 0x3c74, 0x3c6c, 0x3c63, 0x3c5b, 0x3c53, 0x3c4a, 0x3c42, 0x3c39, 0x3c31, 0x3c28, 0x3c20, 0x3c17, 0x3c0e, 0x3c06, 0x3bfd, 0x3bf4, 0x3beb, 0x3be2, 0x3bda, 0x3bd1, 0x3bc8, 0x3bbf, 0x3bb6, 0x3bad, 0x3ba3, 0x3b9a, 0x3b91, 0x3b88, 0x3b7f, 0x3b75, 0x3b6c, 0x3b63, 0x3b59, 0x3b50, 0x3b47, 0x3b3d, 0x3b34, 0x3b2a, 0x3b20, 0x3b17, 0x3b0d, 0x3b03, 0x3afa, 0x3af0, 0x3ae6, 0x3adc, 0x3ad2, 0x3ac8, 0x3abe, 0x3ab4, 0x3aaa, 0x3aa0, 0x3a96, 0x3a8c, 0x3a82, 0x3a78, 0x3a6d, 0x3a63, 0x3a59, 0x3a4f, 0x3a44, 0x3a3a, 0x3a2f, 0x3a25, 0x3a1a, 0x3a10, 0x3a05, 0x39fb, 0x39f0, 0x39e5, 0x39da, 0x39d0, 0x39c5, 0x39ba, 0x39af, 0x39a4, 0x3999, 0x398e, 0x3983, 0x3978, 0x396d, 0x3962, 0x3957, 0x394c, 0x3941, 0x3935, 0x392a, 0x391f, 0x3913, 0x3908, 0x38fd, 0x38f1, 0x38e6, 0x38da, 0x38cf, 0x38c3, 0x38b7, 0x38ac, 0x38a0, 0x3894, 0x3889, 0x387d, 0x3871, 0x3865, 0x3859, 0x384d, 0x3841, 0x3835, 0x3829, 0x381d, 0x3811, 0x3805, 0x37f9, 0x37ed, 0x37e0, 0x37d4, 0x37c8, 0x37bb, 0x37af, 0x37a3, 0x3796, 0x378a, 0x377d, 0x3771, 0x3764, 0x3757, 0x374b, 0x373e, 0x3731, 0x3725, 0x3718, 0x370b, 0x36fe, 0x36f1, 0x36e5, 0x36d8, 0x36cb, 0x36be, 0x36b1, 0x36a4, 0x3696, 0x3689, 0x367c, 0x366f, 0x3662, 0x3654, 0x3647, 0x363a, 0x362c, 0x361f, 0x3612, 0x3604, 0x35f7, 0x35e9, 0x35dc, 0x35ce, 0x35c0, 0x35b3, 0x35a5, 0x3597, 0x3589, 0x357c, 0x356e, 0x3560, 0x3552, 0x3544, 0x3536, 0x3528, 0x351a, 0x350c, 0x34fe, 0x34f0, 0x34e2, 0x34d4, 0x34c6, 0x34b7, 0x34a9, 0x349b, 0x348c, 0x347e, 0x3470, 0x3461, 0x3453, 0x3444, 0x3436, 0x3427, 0x3419, 0x340a, 0x33fb, 0x33ed, 0x33de, 0x33cf, 0x33c1, 0x33b2, 0x33a3, 0x3394, 0x3385, 0x3376, 0x3367, 0x3358, 0x3349, 0x333a, 0x332b, 0x331c, 0x330d, 0x32fe, 0x32ee, 0x32df, 0x32d0, 0x32c1, 0x32b1, 0x32a2, 0x3293, 0x3283, 0x3274, 0x3264, 0x3255, 0x3245, 0x3236, 0x3226, 0x3216, 0x3207, 0x31f7, 0x31e7, 0x31d8, 0x31c8, 0x31b8, 0x31a8, 0x3198, 0x3188, 0x3179, 0x3169, 0x3159, 0x3149, 0x3138, 0x3128, 0x3118, 0x3108, 0x30f8, 0x30e8, 0x30d8, 0x30c7, 0x30b7, 0x30a7, 0x3096, 0x3086, 0x3076, 0x3065, 0x3055, 0x3044, 0x3034, 0x3023, 0x3013, 0x3002, 0x2ff1, 0x2fe1, 0x2fd0, 0x2fbf, 0x2faf, 0x2f9e, 0x2f8d, 0x2f7c, 0x2f6b, 0x2f5a, 0x2f49, 0x2f38, 0x2f28, 0x2f16, 0x2f05, 0x2ef4, 0x2ee3, 0x2ed2, 0x2ec1, 0x2eb0, 0x2e9f, 0x2e8d, 0x2e7c, 0x2e6b, 0x2e5a, 0x2e48, 0x2e37, 0x2e25, 0x2e14, 0x2e03, 0x2df1, 0x2de0, 0x2dce, 0x2dbc, 0x2dab, 0x2d99, 0x2d88, 0x2d76, 0x2d64, 0x2d52, 0x2d41, 0x2d2f, 0x2d1d, 0x2d0b, 0x2cf9, 0x2ce8, 0x2cd6, 0x2cc4, 0x2cb2, 0x2ca0, 0x2c8e, 0x2c7c, 0x2c6a, 0x2c57, 0x2c45, 0x2c33, 0x2c21, 0x2c0f, 0x2bfc, 0x2bea, 0x2bd8, 0x2bc6, 0x2bb3, 0x2ba1, 0x2b8e, 0x2b7c, 0x2b6a, 0x2b57, 0x2b45, 0x2b32, 0x2b20, 0x2b0d, 0x2afa, 0x2ae8, 0x2ad5, 0x2ac2, 0x2ab0, 0x2a9d, 0x2a8a, 0x2a77, 0x2a65, 0x2a52, 0x2a3f, 0x2a2c, 0x2a19, 0x2a06, 0x29f3, 0x29e0, 0x29cd, 0x29ba, 0x29a7, 0x2994, 0x2981, 0x296e, 0x295a, 0x2947, 0x2934, 0x2921, 0x290e, 0x28fa, 0x28e7, 0x28d4, 0x28c0, 0x28ad, 0x2899, 0x2886, 0x2872, 0x285f, 0x284b, 0x2838, 0x2824, 0x2811, 0x27fd, 0x27ea, 0x27d6, 0x27c2, 0x27af, 0x279b, 0x2787, 0x2773, 0x275f, 0x274c, 0x2738, 0x2724, 0x2710, 0x26fc, 0x26e8, 0x26d4, 0x26c0, 0x26ac, 0x2698, 0x2684, 0x2670, 0x265c, 0x2648, 0x2634, 0x261f, 0x260b, 0x25f7, 0x25e3, 0x25cf, 0x25ba, 0x25a6, 0x2592, 0x257d, 0x2569, 0x2554, 0x2540, 0x252c, 0x2517, 0x2503, 0x24ee, 0x24da, 0x24c5, 0x24b0, 0x249c, 0x2487, 0x2473, 0x245e, 0x2449, 0x2434, 0x2420, 0x240b, 0x23f6, 0x23e1, 0x23cd, 0x23b8, 0x23a3, 0x238e, 0x2379, 0x2364, 0x234f, 0x233a, 0x2325, 0x2310, 0x22fb, 0x22e6, 0x22d1, 0x22bc, 0x22a7, 0x2292, 0x227d, 0x2267, 0x2252, 0x223d, 0x2228, 0x2212, 0x21fd, 0x21e8, 0x21d2, 0x21bd, 0x21a8, 0x2192, 0x217d, 0x2168, 0x2152, 0x213d, 0x2127, 0x2112, 0x20fc, 0x20e7, 0x20d1, 0x20bb, 0x20a6, 0x2090, 0x207b, 0x2065, 0x204f, 0x2039, 0x2024, 0x200e, 0x1ff8, 0x1fe2, 0x1fcd, 0x1fb7, 0x1fa1, 0x1f8b, 0x1f75, 0x1f5f, 0x1f49, 0x1f34, 0x1f1e, 0x1f08, 0x1ef2, 0x1edc, 0x1ec6, 0x1eb0, 0x1e99, 0x1e83, 0x1e6d, 0x1e57, 0x1e41, 0x1e2b, 0x1e15, 0x1dfe, 0x1de8, 0x1dd2, 0x1dbc, 0x1da6, 0x1d8f, 0x1d79, 0x1d63, 0x1d4c, 0x1d36, 0x1d20, 0x1d09, 0x1cf3, 0x1cdc, 0x1cc6, 0x1caf, 0x1c99, 0x1c83, 0x1c6c, 0x1c55, 0x1c3f, 0x1c28, 0x1c12, 0x1bfb, 0x1be5, 0x1bce, 0x1bb7, 0x1ba1, 0x1b8a, 0x1b73, 0x1b5d, 0x1b46, 0x1b2f, 0x1b18, 0x1b02, 0x1aeb, 0x1ad4, 0x1abd, 0x1aa6, 0x1a8f, 0x1a79, 0x1a62, 0x1a4b, 0x1a34, 0x1a1d, 0x1a06, 0x19ef, 0x19d8, 0x19c1, 0x19aa, 0x1993, 0x197c, 0x1965, 0x194e, 0x1937, 0x1920, 0x1908, 0x18f1, 0x18da, 0x18c3, 0x18ac, 0x1895, 0x187d, 0x1866, 0x184f, 0x1838, 0x1820, 0x1809, 0x17f2, 0x17da, 0x17c3, 0x17ac, 0x1794, 0x177d, 0x1766, 0x174e, 0x1737, 0x171f, 0x1708, 0x16f1, 0x16d9, 0x16c2, 0x16aa, 0x1693, 0x167b, 0x1664, 0x164c, 0x1634, 0x161d, 0x1605, 0x15ee, 0x15d6, 0x15be, 0x15a7, 0x158f, 0x1577, 0x1560, 0x1548, 0x1530, 0x1519, 0x1501, 0x14e9, 0x14d1, 0x14ba, 0x14a2, 0x148a, 0x1472, 0x145a, 0x1443, 0x142b, 0x1413, 0x13fb, 0x13e3, 0x13cb, 0x13b3, 0x139b, 0x1383, 0x136c, 0x1354, 0x133c, 0x1324, 0x130c, 0x12f4, 0x12dc, 0x12c4, 0x12ac, 0x1294, 0x127b, 0x1263, 0x124b, 0x1233, 0x121b, 0x1203, 0x11eb, 0x11d3, 0x11bb, 0x11a2, 0x118a, 0x1172, 0x115a, 0x1142, 0x112a, 0x1111, 0x10f9, 0x10e1, 0x10c9, 0x10b0, 0x1098, 0x1080, 0x1068, 0x104f, 0x1037, 0x101f, 0x1006, 0x0fee, 0x0fd6, 0x0fbd, 0x0fa5, 0x0f8c, 0x0f74, 0x0f5c, 0x0f43, 0x0f2b, 0x0f12, 0x0efa, 0x0ee2, 0x0ec9, 0x0eb1, 0x0e98, 0x0e80, 0x0e67, 0x0e4f, 0x0e36, 0x0e1e, 0x0e05, 0x0ded, 0x0dd4, 0x0dbc, 0x0da3, 0x0d8b, 0x0d72, 0x0d59, 0x0d41, 0x0d28, 0x0d10, 0x0cf7, 0x0cde, 0x0cc6, 0x0cad, 0x0c95, 0x0c7c, 0x0c63, 0x0c4b, 0x0c32, 0x0c19, 0x0c01, 0x0be8, 0x0bcf, 0x0bb6, 0x0b9e, 0x0b85, 0x0b6c, 0x0b54, 0x0b3b, 0x0b22, 0x0b09, 0x0af1, 0x0ad8, 0x0abf, 0x0aa6, 0x0a8d, 0x0a75, 0x0a5c, 0x0a43, 0x0a2a, 0x0a11, 0x09f9, 0x09e0, 0x09c7, 0x09ae, 0x0995, 0x097c, 0x0964, 0x094b, 0x0932, 0x0919, 0x0900, 0x08e7, 0x08ce, 0x08b5, 0x089c, 0x0884, 0x086b, 0x0852, 0x0839, 0x0820, 0x0807, 0x07ee, 0x07d5, 0x07bc, 0x07a3, 0x078a, 0x0771, 0x0758, 0x073f, 0x0726, 0x070d, 0x06f4, 0x06db, 0x06c2, 0x06a9, 0x0690, 0x0677, 0x065e, 0x0645, 0x062c, 0x0613, 0x05fa, 0x05e1, 0x05c8, 0x05af, 0x0596, 0x057d, 0x0564, 0x054b, 0x0532, 0x0519, 0x0500, 0x04e7, 0x04ce, 0x04b5, 0x049c, 0x0483, 0x046a, 0x0451, 0x0437, 0x041e, 0x0405, 0x03ec, 0x03d3, 0x03ba, 0x03a1, 0x0388, 0x036f, 0x0356, 0x033d, 0x0323, 0x030a, 0x02f1, 0x02d8, 0x02bf, 0x02a6, 0x028d, 0x0274, 0x025b, 0x0241, 0x0228, 0x020f, 0x01f6, 0x01dd, 0x01c4, 0x01ab, 0x0192, 0x0178, 0x015f, 0x0146, 0x012d, 0x0114, 0x00fb, 0x00e2, 0x00c9, 0x00af, 0x0096, 0x007d, 0x0064, 0x004b, 0x0032, 0x0019, 0x0000, 0xffe7, 0xffcd, 0xffb4, 0xff9b, 0xff82, 0xff69, 0xff50, 0xff37, 0xff1e, 0xff04, 0xfeeb, 0xfed2, 0xfeb9, 0xfea0, 0xfe87, 0xfe6e, 0xfe55, 0xfe3b, 0xfe22, 0xfe09, 0xfdf0, 0xfdd7, 0xfdbe, 0xfda5, 0xfd8c, 0xfd72, 0xfd59, 0xfd40, 0xfd27, 0xfd0e, 0xfcf5, 0xfcdc, 0xfcc3, 0xfcaa, 0xfc91, 0xfc77, 0xfc5e, 0xfc45, 0xfc2c, 0xfc13, 0xfbfa, 0xfbe1, 0xfbc8, 0xfbaf, 0xfb96, 0xfb7d, 0xfb64, 0xfb4a, 0xfb31, 0xfb18, 0xfaff, 0xfae6, 0xfacd, 0xfab4, 0xfa9b, 0xfa82, 0xfa69, 0xfa50, 0xfa37, 0xfa1e, 0xfa05, 0xf9ec, 0xf9d3, 0xf9ba, 0xf9a1, 0xf988, 0xf96f, 0xf956, 0xf93d, 0xf924, 0xf90b, 0xf8f2, 0xf8d9, 0xf8c0, 0xf8a7, 0xf88e, 0xf875, 0xf85c, 0xf843, 0xf82a, 0xf811, 0xf7f8, 0xf7df, 0xf7c6, 0xf7ae, 0xf795, 0xf77c, 0xf763, 0xf74a, 0xf731, 0xf718, 0xf6ff, 0xf6e6, 0xf6cd, 0xf6b5, 0xf69c, 0xf683, 0xf66a, 0xf651, 0xf638, 0xf61f, 0xf607, 0xf5ee, 0xf5d5, 0xf5bc, 0xf5a3, 0xf58b, 0xf572, 0xf559, 0xf540, 0xf527, 0xf50f, 0xf4f6, 0xf4dd, 0xf4c4, 0xf4ac, 0xf493, 0xf47a, 0xf462, 0xf449, 0xf430, 0xf417, 0xf3ff, 0xf3e6, 0xf3cd, 0xf3b5, 0xf39c, 0xf383, 0xf36b, 0xf352, 0xf339, 0xf321, 0xf308, 0xf2f0, 0xf2d7, 0xf2be, 0xf2a6, 0xf28d, 0xf275, 0xf25c, 0xf244, 0xf22b, 0xf213, 0xf1fa, 0xf1e1, 0xf1c9, 0xf1b0, 0xf198, 0xf17f, 0xf167, 0xf14f, 0xf136, 0xf11e, 0xf105, 0xf0ed, 0xf0d4, 0xf0bc, 0xf0a4, 0xf08b, 0xf073, 0xf05a, 0xf042, 0xf02a, 0xf011, 0xeff9, 0xefe1, 0xefc8, 0xefb0, 0xef98, 0xef7f, 0xef67, 0xef4f, 0xef37, 0xef1e, 0xef06, 0xeeee, 0xeed6, 0xeebe, 0xeea5, 0xee8d, 0xee75, 0xee5d, 0xee45, 0xee2c, 0xee14, 0xedfc, 0xede4, 0xedcc, 0xedb4, 0xed9c, 0xed84, 0xed6c, 0xed54, 0xed3c, 0xed24, 0xed0c, 0xecf4, 0xecdc, 0xecc4, 0xecac, 0xec94, 0xec7c, 0xec64, 0xec4c, 0xec34, 0xec1c, 0xec04, 0xebec, 0xebd5, 0xebbd, 0xeba5, 0xeb8d, 0xeb75, 0xeb5d, 0xeb46, 0xeb2e, 0xeb16, 0xeafe, 0xeae7, 0xeacf, 0xeab7, 0xea9f, 0xea88, 0xea70, 0xea58, 0xea41, 0xea29, 0xea12, 0xe9fa, 0xe9e2, 0xe9cb, 0xe9b3, 0xe99c, 0xe984, 0xe96d, 0xe955, 0xe93e, 0xe926, 0xe90f, 0xe8f7, 0xe8e0, 0xe8c8, 0xe8b1, 0xe89a, 0xe882, 0xe86b, 0xe853, 0xe83c, 0xe825, 0xe80d, 0xe7f6, 0xe7df, 0xe7c8, 0xe7b0, 0xe799, 0xe782, 0xe76b, 0xe753, 0xe73c, 0xe725, 0xe70e, 0xe6f7, 0xe6e0, 0xe6c9, 0xe6b1, 0xe69a, 0xe683, 0xe66c, 0xe655, 0xe63e, 0xe627, 0xe610, 0xe5f9, 0xe5e2, 0xe5cb, 0xe5b4, 0xe59e, 0xe587, 0xe570, 0xe559, 0xe542, 0xe52b, 0xe514, 0xe4fe, 0xe4e7, 0xe4d0, 0xe4b9, 0xe4a3, 0xe48c, 0xe475, 0xe45f, 0xe448, 0xe431, 0xe41b, 0xe404, 0xe3ed, 0xe3d7, 0xe3c0, 0xe3aa, 0xe393, 0xe37d, 0xe366, 0xe350, 0xe339, 0xe323, 0xe30c, 0xe2f6, 0xe2e0, 0xe2c9, 0xe2b3, 0xe29d, 0xe286, 0xe270, 0xe25a, 0xe243, 0xe22d, 0xe217, 0xe201, 0xe1eb, 0xe1d4, 0xe1be, 0xe1a8, 0xe192, 0xe17c, 0xe166, 0xe150, 0xe13a, 0xe124, 0xe10e, 0xe0f8, 0xe0e2, 0xe0cc, 0xe0b6, 0xe0a0, 0xe08a, 0xe074, 0xe05e, 0xe048, 0xe033, 0xe01d, 0xe007, 0xdff1, 0xdfdc, 0xdfc6, 0xdfb0, 0xdf9a, 0xdf85, 0xdf6f, 0xdf59, 0xdf44, 0xdf2e, 0xdf19, 0xdf03, 0xdeee, 0xded8, 0xdec3, 0xdead, 0xde98, 0xde82, 0xde6d, 0xde57, 0xde42, 0xde2d, 0xde17, 0xde02, 0xdded, 0xddd8, 0xddc2, 0xddad, 0xdd98, 0xdd83, 0xdd6e, 0xdd58, 0xdd43, 0xdd2e, 0xdd19, 0xdd04, 0xdcef, 0xdcda, 0xdcc5, 0xdcb0, 0xdc9b, 0xdc86, 0xdc71, 0xdc5c, 0xdc48, 0xdc33, 0xdc1e, 0xdc09, 0xdbf4, 0xdbe0, 0xdbcb, 0xdbb6, 0xdba1, 0xdb8d, 0xdb78, 0xdb63, 0xdb4f, 0xdb3a, 0xdb26, 0xdb11, 0xdafd, 0xdae8, 0xdad4, 0xdabf, 0xdaab, 0xda96, 0xda82, 0xda6e, 0xda59, 0xda45, 0xda31, 0xda1c, 0xda08, 0xd9f4, 0xd9e0, 0xd9cc, 0xd9b7, 0xd9a3, 0xd98f, 0xd97b, 0xd967, 0xd953, 0xd93f, 0xd92b, 0xd917, 0xd903, 0xd8ef, 0xd8db, 0xd8c7, 0xd8b4, 0xd8a0, 0xd88c, 0xd878, 0xd864, 0xd851, 0xd83d, 0xd829, 0xd816, 0xd802, 0xd7ee, 0xd7db, 0xd7c7, 0xd7b4, 0xd7a0, 0xd78d, 0xd779, 0xd766, 0xd752, 0xd73f, 0xd72c, 0xd718, 0xd705, 0xd6f2, 0xd6de, 0xd6cb, 0xd6b8, 0xd6a5, 0xd692, 0xd67e, 0xd66b, 0xd658, 0xd645, 0xd632, 0xd61f, 0xd60c, 0xd5f9, 0xd5e6, 0xd5d3, 0xd5c0, 0xd5ae, 0xd59b, 0xd588, 0xd575, 0xd562, 0xd550, 0xd53d, 0xd52a, 0xd518, 0xd505, 0xd4f2, 0xd4e0, 0xd4cd, 0xd4bb, 0xd4a8, 0xd496, 0xd483, 0xd471, 0xd45e, 0xd44c, 0xd43a, 0xd427, 0xd415, 0xd403, 0xd3f1, 0xd3de, 0xd3cc, 0xd3ba, 0xd3a8, 0xd396, 0xd384, 0xd372, 0xd360, 0xd34e, 0xd33c, 0xd32a, 0xd318, 0xd306, 0xd2f4, 0xd2e2, 0xd2d0, 0xd2bf, 0xd2ad, 0xd29b, 0xd289, 0xd278, 0xd266, 0xd254, 0xd243, 0xd231, 0xd220, 0xd20e, 0xd1fd, 0xd1eb, 0xd1da, 0xd1c8, 0xd1b7, 0xd1a6, 0xd194, 0xd183, 0xd172, 0xd161, 0xd14f, 0xd13e, 0xd12d, 0xd11c, 0xd10b, 0xd0fa, 0xd0e9, 0xd0d8, 0xd0c7, 0xd0b6, 0xd0a5, 0xd094, 0xd083, 0xd072, 0xd062, 0xd051, 0xd040, 0xd02f, 0xd01f, 0xd00e, 0xcffd, 0xcfed, 0xcfdc, 0xcfcc, 0xcfbb, 0xcfab, 0xcf9a, 0xcf8a, 0xcf79, 0xcf69, 0xcf59, 0xcf48, 0xcf38, 0xcf28, 0xcf17, 0xcf07, 0xcef7, 0xcee7, 0xced7, 0xcec7, 0xceb7, 0xcea7, 0xce97, 0xce87, 0xce77, 0xce67, 0xce57, 0xce47, 0xce37, 0xce28, 0xce18, 0xce08, 0xcdf8, 0xcde9, 0xcdd9, 0xcdca, 0xcdba, 0xcdaa, 0xcd9b, 0xcd8b, 0xcd7c, 0xcd6d, 0xcd5d, 0xcd4e, 0xcd3f, 0xcd2f, 0xcd20, 0xcd11, 0xcd02, 0xccf2, 0xcce3, 0xccd4, 0xccc5, 0xccb6, 0xcca7, 0xcc98, 0xcc89, 0xcc7a, 0xcc6b, 0xcc5c, 0xcc4e, 0xcc3f, 0xcc30, 0xcc21, 0xcc13, 0xcc04, 0xcbf5, 0xcbe7, 0xcbd8, 0xcbc9, 0xcbbb, 0xcbac, 0xcb9e, 0xcb90, 0xcb81, 0xcb73, 0xcb64, 0xcb56, 0xcb48, 0xcb3a, 0xcb2b, 0xcb1d, 0xcb0f, 0xcb01, 0xcaf3, 0xcae5, 0xcad7, 0xcac9, 0xcabb, 0xcaad, 0xca9f, 0xca91, 0xca84, 0xca76, 0xca68, 0xca5a, 0xca4d, 0xca3f, 0xca31, 0xca24, 0xca16, 0xca09, 0xc9fb, 0xc9ee, 0xc9e0, 0xc9d3, 0xc9c5, 0xc9b8, 0xc9ab, 0xc99e, 0xc990, 0xc983, 0xc976, 0xc969, 0xc95c, 0xc94f, 0xc942, 0xc935, 0xc928, 0xc91b, 0xc90e, 0xc901, 0xc8f4, 0xc8e7, 0xc8db, 0xc8ce, 0xc8c1, 0xc8b4, 0xc8a8, 0xc89b, 0xc88f, 0xc882, 0xc876, 0xc869, 0xc85d, 0xc850, 0xc844, 0xc838, 0xc82b, 0xc81f, 0xc813, 0xc807, 0xc7fa, 0xc7ee, 0xc7e2, 0xc7d6, 0xc7ca, 0xc7be, 0xc7b2, 0xc7a6, 0xc79a, 0xc78e, 0xc783, 0xc777, 0xc76b, 0xc75f, 0xc754, 0xc748, 0xc73c, 0xc731, 0xc725, 0xc71a, 0xc70e, 0xc703, 0xc6f7, 0xc6ec, 0xc6e0, 0xc6d5, 0xc6ca, 0xc6bf, 0xc6b3, 0xc6a8, 0xc69d, 0xc692, 0xc687, 0xc67c, 0xc671, 0xc666, 0xc65b, 0xc650, 0xc645, 0xc63a, 0xc630, 0xc625, 0xc61a, 0xc60f, 0xc605, 0xc5fa, 0xc5ef, 0xc5e5, 0xc5da, 0xc5d0, 0xc5c5, 0xc5bb, 0xc5b1, 0xc5a6, 0xc59c, 0xc592, 0xc588, 0xc57d, 0xc573, 0xc569, 0xc55f, 0xc555, 0xc54b, 0xc541, 0xc537, 0xc52d, 0xc523, 0xc519, 0xc50f, 0xc506, 0xc4fc, 0xc4f2, 0xc4e9, 0xc4df, 0xc4d5, 0xc4cc, 0xc4c2, 0xc4b9, 0xc4af, 0xc4a6, 0xc49c, 0xc493, 0xc48a, 0xc481, 0xc477, 0xc46e, 0xc465, 0xc45c, 0xc453, 0xc44a, 0xc441, 0xc438, 0xc42f, 0xc426, 0xc41d, 0xc414, 0xc40b, 0xc402, 0xc3fa, 0xc3f1, 0xc3e8, 0xc3e0, 0xc3d7, 0xc3ce, 0xc3c6, 0xc3bd, 0xc3b5, 0xc3ad, 0xc3a4, 0xc39c, 0xc394, 0xc38b, 0xc383, 0xc37b, 0xc373, 0xc36b, 0xc363, 0xc35b, 0xc352, 0xc34b, 0xc343, 0xc33b, 0xc333, 0xc32b, 0xc323, 0xc31b, 0xc314, 0xc30c, 0xc304, 0xc2fd, 0xc2f5, 0xc2ee, 0xc2e6, 0xc2df, 0xc2d7, 0xc2d0, 0xc2c9, 0xc2c1, 0xc2ba, 0xc2b3, 0xc2ac, 0xc2a4, 0xc29d, 0xc296, 0xc28f, 0xc288, 0xc281, 0xc27a, 0xc273, 0xc26c, 0xc266, 0xc25f, 0xc258, 0xc251, 0xc24b, 0xc244, 0xc23d, 0xc237, 0xc230, 0xc22a, 0xc223, 0xc21d, 0xc216, 0xc210, 0xc20a, 0xc203, 0xc1fd, 0xc1f7, 0xc1f1, 0xc1eb, 0xc1e5, 0xc1df, 0xc1d9, 0xc1d3, 0xc1cd, 0xc1c7, 0xc1c1, 0xc1bb, 0xc1b5, 0xc1b0, 0xc1aa, 0xc1a4, 0xc19f, 0xc199, 0xc193, 0xc18e, 0xc188, 0xc183, 0xc17d, 0xc178, 0xc173, 0xc16d, 0xc168, 0xc163, 0xc15e, 0xc159, 0xc154, 0xc14e, 0xc149, 0xc144, 0xc13f, 0xc13b, 0xc136, 0xc131, 0xc12c, 0xc127, 0xc123, 0xc11e, 0xc119, 0xc115, 0xc110, 0xc10b, 0xc107, 0xc102, 0xc0fe, 0xc0fa, 0xc0f5, 0xc0f1, 0xc0ed, 0xc0e8, 0xc0e4, 0xc0e0, 0xc0dc, 0xc0d8, 0xc0d4, 0xc0d0, 0xc0cc, 0xc0c8, 0xc0c4, 0xc0c0, 0xc0bc, 0xc0b9, 0xc0b5, 0xc0b1, 0xc0ad, 0xc0aa, 0xc0a6, 0xc0a3, 0xc09f, 0xc09c, 0xc098, 0xc095, 0xc091, 0xc08e, 0xc08b, 0xc088, 0xc084, 0xc081, 0xc07e, 0xc07b, 0xc078, 0xc075, 0xc072, 0xc06f, 0xc06c, 0xc069, 0xc066, 0xc064, 0xc061, 0xc05e, 0xc05b, 0xc059, 0xc056, 0xc054, 0xc051, 0xc04f, 0xc04c, 0xc04a, 0xc047, 0xc045, 0xc043, 0xc041, 0xc03e, 0xc03c, 0xc03a, 0xc038, 0xc036, 0xc034, 0xc032, 0xc030, 0xc02e, 0xc02c, 0xc02a, 0xc029, 0xc027, 0xc025, 0xc023, 0xc022, 0xc020, 0xc01f, 0xc01d, 0xc01c, 0xc01a, 0xc019, 0xc017, 0xc016, 0xc015, 0xc013, 0xc012, 0xc011, 0xc010, 0xc00f, 0xc00e, 0xc00d, 0xc00c, 0xc00b, 0xc00a, 0xc009, 0xc008, 0xc007, 0xc007, 0xc006, 0xc005, 0xc005, 0xc004, 0xc004, 0xc003, 0xc003, 0xc002, 0xc002, 0xc001, 0xc001, 0xc001, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc001, 0xc001, 0xc001, 0xc002, 0xc002, 0xc003, 0xc003, 0xc004, 0xc004, 0xc005, 0xc005, 0xc006, 0xc007, 0xc007, 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012, 0xc013, 0xc015, 0xc016, 0xc017, 0xc019, 0xc01a, 0xc01c, 0xc01d, 0xc01f, 0xc020, 0xc022, 0xc023, 0xc025, 0xc027, 0xc029, 0xc02a, 0xc02c, 0xc02e, 0xc030, 0xc032, 0xc034, 0xc036, 0xc038, 0xc03a, 0xc03c, 0xc03e, 0xc041, 0xc043, 0xc045, 0xc047, 0xc04a, 0xc04c, 0xc04f, 0xc051, 0xc054, 0xc056, 0xc059, 0xc05b, 0xc05e, 0xc061, 0xc064, 0xc066, 0xc069, 0xc06c, 0xc06f, 0xc072, 0xc075, 0xc078, 0xc07b, 0xc07e, 0xc081, 0xc084, 0xc088, 0xc08b, 0xc08e, 0xc091, 0xc095, 0xc098, 0xc09c, 0xc09f, 0xc0a3, 0xc0a6, 0xc0aa, 0xc0ad, 0xc0b1, 0xc0b5, 0xc0b9, 0xc0bc, 0xc0c0, 0xc0c4, 0xc0c8, 0xc0cc, 0xc0d0, 0xc0d4, 0xc0d8, 0xc0dc, 0xc0e0, 0xc0e4, 0xc0e8, 0xc0ed, 0xc0f1, 0xc0f5, 0xc0fa, 0xc0fe, 0xc102, 0xc107, 0xc10b, 0xc110, 0xc115, 0xc119, 0xc11e, 0xc123, 0xc127, 0xc12c, 0xc131, 0xc136, 0xc13b, 0xc13f, 0xc144, 0xc149, 0xc14e, 0xc154, 0xc159, 0xc15e, 0xc163, 0xc168, 0xc16d, 0xc173, 0xc178, 0xc17d, 0xc183, 0xc188, 0xc18e, 0xc193, 0xc199, 0xc19f, 0xc1a4, 0xc1aa, 0xc1b0, 0xc1b5, 0xc1bb, 0xc1c1, 0xc1c7, 0xc1cd, 0xc1d3, 0xc1d9, 0xc1df, 0xc1e5, 0xc1eb, 0xc1f1, 0xc1f7, 0xc1fd, 0xc203, 0xc20a, 0xc210, 0xc216, 0xc21d, 0xc223, 0xc22a, 0xc230, 0xc237, 0xc23d, 0xc244, 0xc24b, 0xc251, 0xc258, 0xc25f, 0xc266, 0xc26c, 0xc273, 0xc27a, 0xc281, 0xc288, 0xc28f, 0xc296, 0xc29d, 0xc2a4, 0xc2ac, 0xc2b3, 0xc2ba, 0xc2c1, 0xc2c9, 0xc2d0, 0xc2d7, 0xc2df, 0xc2e6, 0xc2ee, 0xc2f5, 0xc2fd, 0xc304, 0xc30c, 0xc314, 0xc31b, 0xc323, 0xc32b, 0xc333, 0xc33b, 0xc343, 0xc34b, 0xc352, 0xc35b, 0xc363, 0xc36b, 0xc373, 0xc37b, 0xc383, 0xc38b, 0xc394, 0xc39c, 0xc3a4, 0xc3ad, 0xc3b5, 0xc3bd, 0xc3c6, 0xc3ce, 0xc3d7, 0xc3e0, 0xc3e8, 0xc3f1, 0xc3fa, 0xc402, 0xc40b, 0xc414, 0xc41d, 0xc426, 0xc42f, 0xc438, 0xc441, 0xc44a, 0xc453, 0xc45c, 0xc465, 0xc46e, 0xc477, 0xc481, 0xc48a, 0xc493, 0xc49c, 0xc4a6, 0xc4af, 0xc4b9, 0xc4c2, 0xc4cc, 0xc4d5, 0xc4df, 0xc4e9, 0xc4f2, 0xc4fc, 0xc506, 0xc50f, 0xc519, 0xc523, 0xc52d, 0xc537, 0xc541, 0xc54b, 0xc555, 0xc55f, 0xc569, 0xc573, 0xc57d, 0xc588, 0xc592, 0xc59c, 0xc5a6, 0xc5b1, 0xc5bb, 0xc5c5, 0xc5d0, 0xc5da, 0xc5e5, 0xc5ef, 0xc5fa, 0xc605, 0xc60f, 0xc61a, 0xc625, 0xc630, 0xc63a, 0xc645, 0xc650, 0xc65b, 0xc666, 0xc671, 0xc67c, 0xc687, 0xc692, 0xc69d, 0xc6a8, 0xc6b3, 0xc6bf, 0xc6ca, 0xc6d5, 0xc6e0, 0xc6ec, 0xc6f7, 0xc703, 0xc70e, 0xc71a, 0xc725, 0xc731, 0xc73c, 0xc748, 0xc754, 0xc75f, 0xc76b, 0xc777, 0xc783, 0xc78e, 0xc79a, 0xc7a6, 0xc7b2, 0xc7be, 0xc7ca, 0xc7d6, 0xc7e2, 0xc7ee, 0xc7fa, 0xc807, 0xc813, 0xc81f, 0xc82b, 0xc838, 0xc844, 0xc850, 0xc85d, 0xc869, 0xc876, 0xc882, 0xc88f, 0xc89b, 0xc8a8, 0xc8b4, 0xc8c1, 0xc8ce, 0xc8db, 0xc8e7, 0xc8f4, 0xc901, 0xc90e, 0xc91b, 0xc928, 0xc935, 0xc942, 0xc94f, 0xc95c, 0xc969, 0xc976, 0xc983, 0xc990, 0xc99e, 0xc9ab, 0xc9b8, 0xc9c5, 0xc9d3, 0xc9e0, 0xc9ee, 0xc9fb, 0xca09, 0xca16, 0xca24, 0xca31, 0xca3f, 0xca4d, 0xca5a, 0xca68, 0xca76, 0xca84, 0xca91, 0xca9f, 0xcaad, 0xcabb, 0xcac9, 0xcad7, 0xcae5, 0xcaf3, 0xcb01, 0xcb0f, 0xcb1d, 0xcb2b, 0xcb3a, 0xcb48, 0xcb56, 0xcb64, 0xcb73, 0xcb81, 0xcb90, 0xcb9e, 0xcbac, 0xcbbb, 0xcbc9, 0xcbd8, 0xcbe7, 0xcbf5, 0xcc04, 0xcc13, 0xcc21, 0xcc30, 0xcc3f, 0xcc4e, 0xcc5c, 0xcc6b, 0xcc7a, 0xcc89, 0xcc98, 0xcca7, 0xccb6, 0xccc5, 0xccd4, 0xcce3, 0xccf2, 0xcd02, 0xcd11, 0xcd20, 0xcd2f, 0xcd3f, 0xcd4e, 0xcd5d, 0xcd6d, 0xcd7c, 0xcd8b, 0xcd9b, 0xcdaa, 0xcdba, 0xcdca, 0xcdd9, 0xcde9, 0xcdf8, 0xce08, 0xce18, 0xce28, 0xce37, 0xce47, 0xce57, 0xce67, 0xce77, 0xce87, 0xce97, 0xcea7, 0xceb7, 0xcec7, 0xced7, 0xcee7, 0xcef7, 0xcf07, 0xcf17, 0xcf28, 0xcf38, 0xcf48, 0xcf59, 0xcf69, 0xcf79, 0xcf8a, 0xcf9a, 0xcfab, 0xcfbb, 0xcfcc, 0xcfdc, 0xcfed, 0xcffd, 0xd00e, 0xd01f, 0xd02f, 0xd040, 0xd051, 0xd062, 0xd072, 0xd083, 0xd094, 0xd0a5, 0xd0b6, 0xd0c7, 0xd0d8, 0xd0e9, 0xd0fa, 0xd10b, 0xd11c, 0xd12d, 0xd13e, 0xd14f, 0xd161, 0xd172, 0xd183, 0xd194, 0xd1a6, 0xd1b7, 0xd1c8, 0xd1da, 0xd1eb, 0xd1fd, 0xd20e, 0xd220, 0xd231, 0xd243, 0xd254, 0xd266, 0xd278, 0xd289, 0xd29b, 0xd2ad, 0xd2bf, 0xd2d0, 0xd2e2, 0xd2f4, 0xd306, 0xd318, 0xd32a, 0xd33c, 0xd34e, 0xd360, 0xd372, 0xd384, 0xd396, 0xd3a8, 0xd3ba, 0xd3cc, 0xd3de, 0xd3f1, 0xd403, 0xd415, 0xd427, 0xd43a, 0xd44c, 0xd45e, 0xd471, 0xd483, 0xd496, 0xd4a8, 0xd4bb, 0xd4cd, 0xd4e0, 0xd4f2, 0xd505, 0xd518, 0xd52a, 0xd53d, 0xd550, 0xd562, 0xd575, 0xd588, 0xd59b, 0xd5ae, 0xd5c0, 0xd5d3, 0xd5e6, 0xd5f9, 0xd60c, 0xd61f, 0xd632, 0xd645, 0xd658, 0xd66b, 0xd67e, 0xd692, 0xd6a5, 0xd6b8, 0xd6cb, 0xd6de, 0xd6f2, 0xd705, 0xd718, 0xd72c, 0xd73f, 0xd752, 0xd766, 0xd779, 0xd78d, 0xd7a0, 0xd7b4, 0xd7c7, 0xd7db, 0xd7ee, 0xd802, 0xd816, 0xd829, 0xd83d, 0xd851, 0xd864, 0xd878, 0xd88c, 0xd8a0, 0xd8b4, 0xd8c7, 0xd8db, 0xd8ef, 0xd903, 0xd917, 0xd92b, 0xd93f, 0xd953, 0xd967, 0xd97b, 0xd98f, 0xd9a3, 0xd9b7, 0xd9cc, 0xd9e0, 0xd9f4, 0xda08, 0xda1c, 0xda31, 0xda45, 0xda59, 0xda6e, 0xda82, 0xda96, 0xdaab, 0xdabf, 0xdad4, 0xdae8, 0xdafd, 0xdb11, 0xdb26, 0xdb3a, 0xdb4f, 0xdb63, 0xdb78, 0xdb8d, 0xdba1, 0xdbb6, 0xdbcb, 0xdbe0, 0xdbf4, 0xdc09, 0xdc1e, 0xdc33, 0xdc48, 0xdc5c, 0xdc71, 0xdc86, 0xdc9b, 0xdcb0, 0xdcc5, 0xdcda, 0xdcef, 0xdd04, 0xdd19, 0xdd2e, 0xdd43, 0xdd58, 0xdd6e, 0xdd83, 0xdd98, 0xddad, 0xddc2, 0xddd8, 0xdded, 0xde02, 0xde17, 0xde2d, 0xde42, 0xde57, 0xde6d, 0xde82, 0xde98, 0xdead, 0xdec3, 0xded8, 0xdeee, 0xdf03, 0xdf19, 0xdf2e, 0xdf44, 0xdf59, 0xdf6f, 0xdf85, 0xdf9a, 0xdfb0, 0xdfc6, 0xdfdb, 0xdff1, 0xe007, 0xe01d, 0xe033, 0xe048, 0xe05e, 0xe074, 0xe08a, 0xe0a0, 0xe0b6, 0xe0cc, 0xe0e2, 0xe0f8, 0xe10e, 0xe124, 0xe13a, 0xe150, 0xe166, 0xe17c, 0xe192, 0xe1a8, 0xe1be, 0xe1d4, 0xe1eb, 0xe201, 0xe217, 0xe22d, 0xe243, 0xe25a, 0xe270, 0xe286, 0xe29d, 0xe2b3, 0xe2c9, 0xe2e0, 0xe2f6, 0xe30c, 0xe323, 0xe339, 0xe350, 0xe366, 0xe37d, 0xe393, 0xe3aa, 0xe3c0, 0xe3d7, 0xe3ed, 0xe404, 0xe41b, 0xe431, 0xe448, 0xe45f, 0xe475, 0xe48c, 0xe4a3, 0xe4b9, 0xe4d0, 0xe4e7, 0xe4fe, 0xe514, 0xe52b, 0xe542, 0xe559, 0xe570, 0xe587, 0xe59e, 0xe5b4, 0xe5cb, 0xe5e2, 0xe5f9, 0xe610, 0xe627, 0xe63e, 0xe655, 0xe66c, 0xe683, 0xe69a, 0xe6b1, 0xe6c9, 0xe6e0, 0xe6f7, 0xe70e, 0xe725, 0xe73c, 0xe753, 0xe76b, 0xe782, 0xe799, 0xe7b0, 0xe7c8, 0xe7df, 0xe7f6, 0xe80d, 0xe825, 0xe83c, 0xe853, 0xe86b, 0xe882, 0xe89a, 0xe8b1, 0xe8c8, 0xe8e0, 0xe8f7, 0xe90f, 0xe926, 0xe93e, 0xe955, 0xe96d, 0xe984, 0xe99c, 0xe9b3, 0xe9cb, 0xe9e2, 0xe9fa, 0xea12, 0xea29, 0xea41, 0xea58, 0xea70, 0xea88, 0xea9f, 0xeab7, 0xeacf, 0xeae7, 0xeafe, 0xeb16, 0xeb2e, 0xeb46, 0xeb5d, 0xeb75, 0xeb8d, 0xeba5, 0xebbd, 0xebd5, 0xebec, 0xec04, 0xec1c, 0xec34, 0xec4c, 0xec64, 0xec7c, 0xec94, 0xecac, 0xecc4, 0xecdc, 0xecf4, 0xed0c, 0xed24, 0xed3c, 0xed54, 0xed6c, 0xed84, 0xed9c, 0xedb4, 0xedcc, 0xede4, 0xedfc, 0xee14, 0xee2c, 0xee45, 0xee5d, 0xee75, 0xee8d, 0xeea5, 0xeebe, 0xeed6, 0xeeee, 0xef06, 0xef1e, 0xef37, 0xef4f, 0xef67, 0xef7f, 0xef98, 0xefb0, 0xefc8, 0xefe1, 0xeff9, 0xf011, 0xf02a, 0xf042, 0xf05a, 0xf073, 0xf08b, 0xf0a4, 0xf0bc, 0xf0d4, 0xf0ed, 0xf105, 0xf11e, 0xf136, 0xf14f, 0xf167, 0xf17f, 0xf198, 0xf1b0, 0xf1c9, 0xf1e1, 0xf1fa, 0xf213, 0xf22b, 0xf244, 0xf25c, 0xf275, 0xf28d, 0xf2a6, 0xf2be, 0xf2d7, 0xf2f0, 0xf308, 0xf321, 0xf339, 0xf352, 0xf36b, 0xf383, 0xf39c, 0xf3b5, 0xf3cd, 0xf3e6, 0xf3ff, 0xf417, 0xf430, 0xf449, 0xf462, 0xf47a, 0xf493, 0xf4ac, 0xf4c4, 0xf4dd, 0xf4f6, 0xf50f, 0xf527, 0xf540, 0xf559, 0xf572, 0xf58b, 0xf5a3, 0xf5bc, 0xf5d5, 0xf5ee, 0xf607, 0xf61f, 0xf638, 0xf651, 0xf66a, 0xf683, 0xf69c, 0xf6b5, 0xf6cd, 0xf6e6, 0xf6ff, 0xf718, 0xf731, 0xf74a, 0xf763, 0xf77c, 0xf795, 0xf7ae, 0xf7c6, 0xf7df, 0xf7f8, 0xf811, 0xf82a, 0xf843, 0xf85c, 0xf875, 0xf88e, 0xf8a7, 0xf8c0, 0xf8d9, 0xf8f2, 0xf90b, 0xf924, 0xf93d, 0xf956, 0xf96f, 0xf988, 0xf9a1, 0xf9ba, 0xf9d3, 0xf9ec, 0xfa05, 0xfa1e, 0xfa37, 0xfa50, 0xfa69, 0xfa82, 0xfa9b, 0xfab4, 0xfacd, 0xfae6, 0xfaff, 0xfb18, 0xfb31, 0xfb4a, 0xfb64, 0xfb7d, 0xfb96, 0xfbaf, 0xfbc8, 0xfbe1, 0xfbfa, 0xfc13, 0xfc2c, 0xfc45, 0xfc5e, 0xfc77, 0xfc91, 0xfcaa, 0xfcc3, 0xfcdc, 0xfcf5, 0xfd0e, 0xfd27, 0xfd40, 0xfd59, 0xfd72, 0xfd8c, 0xfda5, 0xfdbe, 0xfdd7, 0xfdf0, 0xfe09, 0xfe22, 0xfe3b, 0xfe55, 0xfe6e, 0xfe87, 0xfea0, 0xfeb9, 0xfed2, 0xfeeb, 0xff04, 0xff1e, 0xff37, 0xff50, 0xff69, 0xff82, 0xff9b, 0xffb4, 0xffcd, 0xffe7, 0x0000, 0x0019, 0x0032, 0x004b, 0x0064, 0x007d, 0x0096, 0x00af, 0x00c9, 0x00e2, 0x00fb, 0x0114, 0x012d, 0x0146, 0x015f, 0x0178, 0x0192, 0x01ab, 0x01c4, 0x01dd, 0x01f6, 0x020f, 0x0228, 0x0241, 0x025b, 0x0274, 0x028d, 0x02a6, 0x02bf, 0x02d8, 0x02f1, 0x030a, 0x0323, 0x033d, 0x0356, 0x036f, 0x0388, 0x03a1, 0x03ba, 0x03d3, 0x03ec, 0x0405, 0x041e, 0x0437, 0x0451, 0x046a, 0x0483, 0x049c, 0x04b5, 0x04ce, 0x04e7, 0x0500, 0x0519, 0x0532, 0x054b, 0x0564, 0x057d, 0x0596, 0x05af, 0x05c8, 0x05e1, 0x05fa, 0x0613, 0x062c, 0x0645, 0x065e, 0x0677, 0x0690, 0x06a9, 0x06c2, 0x06db, 0x06f4, 0x070d, 0x0726, 0x073f, 0x0758, 0x0771, 0x078a, 0x07a3, 0x07bc, 0x07d5, 0x07ee, 0x0807, 0x0820, 0x0839, 0x0852, 0x086b, 0x0884, 0x089c, 0x08b5, 0x08ce, 0x08e7, 0x0900, 0x0919, 0x0932, 0x094b, 0x0964, 0x097c, 0x0995, 0x09ae, 0x09c7, 0x09e0, 0x09f9, 0x0a11, 0x0a2a, 0x0a43, 0x0a5c, 0x0a75, 0x0a8d, 0x0aa6, 0x0abf, 0x0ad8, 0x0af1, 0x0b09, 0x0b22, 0x0b3b, 0x0b54, 0x0b6c, 0x0b85, 0x0b9e, 0x0bb6, 0x0bcf, 0x0be8, 0x0c01, 0x0c19, 0x0c32, 0x0c4b, 0x0c63, 0x0c7c, 0x0c95, 0x0cad, 0x0cc6, 0x0cde, 0x0cf7, 0x0d10, 0x0d28, 0x0d41, 0x0d59, 0x0d72, 0x0d8b, 0x0da3, 0x0dbc, 0x0dd4, 0x0ded, 0x0e05, 0x0e1e, 0x0e36, 0x0e4f, 0x0e67, 0x0e80, 0x0e98, 0x0eb1, 0x0ec9, 0x0ee2, 0x0efa, 0x0f12, 0x0f2b, 0x0f43, 0x0f5c, 0x0f74, 0x0f8c, 0x0fa5, 0x0fbd, 0x0fd6, 0x0fee, 0x1006, 0x101f, 0x1037, 0x104f, 0x1068, 0x1080, 0x1098, 0x10b0, 0x10c9, 0x10e1, 0x10f9, 0x1111, 0x112a, 0x1142, 0x115a, 0x1172, 0x118a, 0x11a2, 0x11bb, 0x11d3, 0x11eb, 0x1203, 0x121b, 0x1233, 0x124b, 0x1263, 0x127b, 0x1294, 0x12ac, 0x12c4, 0x12dc, 0x12f4, 0x130c, 0x1324, 0x133c, 0x1354, 0x136c, 0x1383, 0x139b, 0x13b3, 0x13cb, 0x13e3, 0x13fb, 0x1413, 0x142b, 0x1443, 0x145a, 0x1472, 0x148a, 0x14a2, 0x14ba, 0x14d1, 0x14e9, 0x1501, 0x1519, 0x1530, 0x1548, 0x1560, 0x1577, 0x158f, 0x15a7, 0x15be, 0x15d6, 0x15ee, 0x1605, 0x161d, 0x1634, 0x164c, 0x1664, 0x167b, 0x1693, 0x16aa, 0x16c2, 0x16d9, 0x16f1, 0x1708, 0x171f, 0x1737, 0x174e, 0x1766, 0x177d, 0x1794, 0x17ac, 0x17c3, 0x17da, 0x17f2, 0x1809, 0x1820, 0x1838, 0x184f, 0x1866, 0x187d, 0x1895, 0x18ac, 0x18c3, 0x18da, 0x18f1, 0x1908, 0x1920, 0x1937, 0x194e, 0x1965, 0x197c, 0x1993, 0x19aa, 0x19c1, 0x19d8, 0x19ef, 0x1a06, 0x1a1d, 0x1a34, 0x1a4b, 0x1a62, 0x1a79, 0x1a8f, 0x1aa6, 0x1abd, 0x1ad4, 0x1aeb, 0x1b02, 0x1b18, 0x1b2f, 0x1b46, 0x1b5d, 0x1b73, 0x1b8a, 0x1ba1, 0x1bb7, 0x1bce, 0x1be5, 0x1bfb, 0x1c12, 0x1c28, 0x1c3f, 0x1c55, 0x1c6c, 0x1c83, 0x1c99, 0x1caf, 0x1cc6, 0x1cdc, 0x1cf3, 0x1d09, 0x1d20, 0x1d36, 0x1d4c, 0x1d63, 0x1d79, 0x1d8f, 0x1da6, 0x1dbc, 0x1dd2, 0x1de8, 0x1dfe, 0x1e15, 0x1e2b, 0x1e41, 0x1e57, 0x1e6d, 0x1e83, 0x1e99, 0x1eb0, 0x1ec6, 0x1edc, 0x1ef2, 0x1f08, 0x1f1e, 0x1f34, 0x1f49, 0x1f5f, 0x1f75, 0x1f8b, 0x1fa1, 0x1fb7, 0x1fcd, 0x1fe2, 0x1ff8, 0x200e, 0x2024, 0x2039, 0x204f, 0x2065, 0x207b, 0x2090, 0x20a6, 0x20bb, 0x20d1, 0x20e7, 0x20fc, 0x2112, 0x2127, 0x213d, 0x2152, 0x2168, 0x217d, 0x2192, 0x21a8, 0x21bd, 0x21d2, 0x21e8, 0x21fd, 0x2212, 0x2228, 0x223d, 0x2252, 0x2267, 0x227d, 0x2292, 0x22a7, 0x22bc, 0x22d1, 0x22e6, 0x22fb, 0x2310, 0x2325, 0x233a, 0x234f, 0x2364, 0x2379, 0x238e, 0x23a3, 0x23b8, 0x23cd, 0x23e1, 0x23f6, 0x240b, 0x2420, 0x2434, 0x2449, 0x245e, 0x2473, 0x2487, 0x249c, 0x24b0, 0x24c5, 0x24da, 0x24ee, 0x2503, 0x2517, 0x252c, 0x2540, 0x2554, 0x2569, 0x257d, 0x2592, 0x25a6, 0x25ba, 0x25cf, 0x25e3, 0x25f7, 0x260b, 0x261f, 0x2634, 0x2648, 0x265c, 0x2670, 0x2684, 0x2698, 0x26ac, 0x26c0, 0x26d4, 0x26e8, 0x26fc, 0x2710, 0x2724, 0x2738, 0x274c, 0x275f, 0x2773, 0x2787, 0x279b, 0x27af, 0x27c2, 0x27d6, 0x27ea, 0x27fd, 0x2811, 0x2824, 0x2838, 0x284b, 0x285f, 0x2872, 0x2886, 0x2899, 0x28ad, 0x28c0, 0x28d4, 0x28e7, 0x28fa, 0x290e, 0x2921, 0x2934, 0x2947, 0x295a, 0x296e, 0x2981, 0x2994, 0x29a7, 0x29ba, 0x29cd, 0x29e0, 0x29f3, 0x2a06, 0x2a19, 0x2a2c, 0x2a3f, 0x2a52, 0x2a65, 0x2a77, 0x2a8a, 0x2a9d, 0x2ab0, 0x2ac2, 0x2ad5, 0x2ae8, 0x2afa, 0x2b0d, 0x2b20, 0x2b32, 0x2b45, 0x2b57, 0x2b6a, 0x2b7c, 0x2b8e, 0x2ba1, 0x2bb3, 0x2bc6, 0x2bd8, 0x2bea, 0x2bfc, 0x2c0f, 0x2c21, 0x2c33, 0x2c45, 0x2c57, 0x2c6a, 0x2c7c, 0x2c8e, 0x2ca0, 0x2cb2, 0x2cc4, 0x2cd6, 0x2ce8, 0x2cf9, 0x2d0b, 0x2d1d, 0x2d2f, 0x2d41, 0x2d52, 0x2d64, 0x2d76, 0x2d88, 0x2d99, 0x2dab, 0x2dbc, 0x2dce, 0x2de0, 0x2df1, 0x2e03, 0x2e14, 0x2e25, 0x2e37, 0x2e48, 0x2e5a, 0x2e6b, 0x2e7c, 0x2e8d, 0x2e9f, 0x2eb0, 0x2ec1, 0x2ed2, 0x2ee3, 0x2ef4, 0x2f05, 0x2f16, 0x2f28, 0x2f38, 0x2f49, 0x2f5a, 0x2f6b, 0x2f7c, 0x2f8d, 0x2f9e, 0x2faf, 0x2fbf, 0x2fd0, 0x2fe1, 0x2ff1, 0x3002, 0x3013, 0x3023, 0x3034, 0x3044, 0x3055, 0x3065, 0x3076, 0x3086, 0x3096, 0x30a7, 0x30b7, 0x30c7, 0x30d8, 0x30e8, 0x30f8, 0x3108, 0x3118, 0x3128, 0x3138, 0x3149, 0x3159, 0x3169, 0x3179, 0x3188, 0x3198, 0x31a8, 0x31b8, 0x31c8, 0x31d8, 0x31e7, 0x31f7, 0x3207, 0x3216, 0x3226, 0x3236, 0x3245, 0x3255, 0x3264, 0x3274, 0x3283, 0x3293, 0x32a2, 0x32b1, 0x32c1, 0x32d0, 0x32df, 0x32ee, 0x32fe, 0x330d, 0x331c, 0x332b, 0x333a, 0x3349, 0x3358, 0x3367, 0x3376, 0x3385, 0x3394, 0x33a3, 0x33b2, 0x33c1, 0x33cf, 0x33de, 0x33ed, 0x33fb, 0x340a, 0x3419, 0x3427, 0x3436, 0x3444, 0x3453, 0x3461, 0x3470, 0x347e, 0x348c, 0x349b, 0x34a9, 0x34b7, 0x34c6, 0x34d4, 0x34e2, 0x34f0, 0x34fe, 0x350c, 0x351a, 0x3528, 0x3536, 0x3544, 0x3552, 0x3560, 0x356e, 0x357c, 0x3589, 0x3597, 0x35a5, 0x35b3, 0x35c0, 0x35ce, 0x35dc, 0x35e9, 0x35f7, 0x3604, 0x3612, 0x361f, 0x362c, 0x363a, 0x3647, 0x3654, 0x3662, 0x366f, 0x367c, 0x3689, 0x3696, 0x36a4, 0x36b1, 0x36be, 0x36cb, 0x36d8, 0x36e5, 0x36f1, 0x36fe, 0x370b, 0x3718, 0x3725, 0x3731, 0x373e, 0x374b, 0x3757, 0x3764, 0x3771, 0x377d, 0x378a, 0x3796, 0x37a3, 0x37af, 0x37bb, 0x37c8, 0x37d4, 0x37e0, 0x37ed, 0x37f9, 0x3805, 0x3811, 0x381d, 0x3829, 0x3835, 0x3841, 0x384d, 0x3859, 0x3865, 0x3871, 0x387d, 0x3889, 0x3894, 0x38a0, 0x38ac, 0x38b7, 0x38c3, 0x38cf, 0x38da, 0x38e6, 0x38f1, 0x38fd, 0x3908, 0x3913, 0x391f, 0x392a, 0x3935, 0x3941, 0x394c, 0x3957, 0x3962, 0x396d, 0x3978, 0x3983, 0x398e, 0x3999, 0x39a4, 0x39af, 0x39ba, 0x39c5, 0x39d0, 0x39da, 0x39e5, 0x39f0, 0x39fb, 0x3a05, 0x3a10, 0x3a1a, 0x3a25, 0x3a2f, 0x3a3a, 0x3a44, 0x3a4f, 0x3a59, 0x3a63, 0x3a6d, 0x3a78, 0x3a82, 0x3a8c, 0x3a96, 0x3aa0, 0x3aaa, 0x3ab4, 0x3abe, 0x3ac8, 0x3ad2, 0x3adc, 0x3ae6, 0x3af0, 0x3afa, 0x3b03, 0x3b0d, 0x3b17, 0x3b20, 0x3b2a, 0x3b34, 0x3b3d, 0x3b47, 0x3b50, 0x3b59, 0x3b63, 0x3b6c, 0x3b75, 0x3b7f, 0x3b88, 0x3b91, 0x3b9a, 0x3ba3, 0x3bad, 0x3bb6, 0x3bbf, 0x3bc8, 0x3bd1, 0x3bda, 0x3be2, 0x3beb, 0x3bf4, 0x3bfd, 0x3c06, 0x3c0e, 0x3c17, 0x3c20, 0x3c28, 0x3c31, 0x3c39, 0x3c42, 0x3c4a, 0x3c53, 0x3c5b, 0x3c63, 0x3c6c, 0x3c74, 0x3c7c, 0x3c84, 0x3c8c, 0x3c95, 0x3c9d, 0x3ca5, 0x3cad, 0x3cb5, 0x3cbd, 0x3cc5, 0x3ccc, 0x3cd4, 0x3cdc, 0x3ce4, 0x3cec, 0x3cf3, 0x3cfb, 0x3d02, 0x3d0a, 0x3d12, 0x3d19, 0x3d21, 0x3d28, 0x3d2f, 0x3d37, 0x3d3e, 0x3d45, 0x3d4d, 0x3d54, 0x3d5b, 0x3d62, 0x3d69, 0x3d70, 0x3d77, 0x3d7e, 0x3d85, 0x3d8c, 0x3d93, 0x3d9a, 0x3da1, 0x3da7, 0x3dae, 0x3db5, 0x3dbb, 0x3dc2, 0x3dc9, 0x3dcf, 0x3dd6, 0x3ddc, 0x3de2, 0x3de9, 0x3def, 0x3df5, 0x3dfc, 0x3e02, 0x3e08, 0x3e0e, 0x3e14, 0x3e1b, 0x3e21, 0x3e27, 0x3e2d, 0x3e33, 0x3e38, 0x3e3e, 0x3e44, 0x3e4a, 0x3e50, 0x3e55, 0x3e5b, 0x3e61, 0x3e66, 0x3e6c, 0x3e71, 0x3e77, 0x3e7c, 0x3e82, 0x3e87, 0x3e8c, 0x3e92, 0x3e97, 0x3e9c, 0x3ea1, 0x3ea7, 0x3eac, 0x3eb1, 0x3eb6, 0x3ebb, 0x3ec0, 0x3ec5, 0x3eca, 0x3ece, 0x3ed3, 0x3ed8, 0x3edd, 0x3ee1, 0x3ee6, 0x3eeb, 0x3eef, 0x3ef4, 0x3ef8, 0x3efd, 0x3f01, 0x3f06, 0x3f0a, 0x3f0e, 0x3f13, 0x3f17, 0x3f1b, 0x3f1f, 0x3f23, 0x3f27, 0x3f2b, 0x3f2f, 0x3f33, 0x3f37, 0x3f3b, 0x3f3f, 0x3f43, 0x3f47, 0x3f4a, 0x3f4e, 0x3f52, 0x3f55, 0x3f59, 0x3f5d, 0x3f60, 0x3f64, 0x3f67, 0x3f6a, 0x3f6e, 0x3f71, 0x3f74, 0x3f78, 0x3f7b, 0x3f7e, 0x3f81, 0x3f84, 0x3f87, 0x3f8a, 0x3f8d, 0x3f90, 0x3f93, 0x3f96, 0x3f99, 0x3f9c, 0x3f9e, 0x3fa1, 0x3fa4, 0x3fa6, 0x3fa9, 0x3fac, 0x3fae, 0x3fb1, 0x3fb3, 0x3fb5, 0x3fb8, 0x3fba, 0x3fbc, 0x3fbf, 0x3fc1, 0x3fc3, 0x3fc5, 0x3fc7, 0x3fc9, 0x3fcb, 0x3fcd, 0x3fcf, 0x3fd1, 0x3fd3, 0x3fd5, 0x3fd7, 0x3fd8, 0x3fda, 0x3fdc, 0x3fde, 0x3fdf, 0x3fe1, 0x3fe2, 0x3fe4, 0x3fe5, 0x3fe7, 0x3fe8, 0x3fe9, 0x3feb, 0x3fec, 0x3fed, 0x3fee, 0x3fef, 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3, 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7, 0x3ff8, 0x3ff9, 0x3ff9, 0x3ffa, 0x3ffb, 0x3ffb, 0x3ffc, 0x3ffc, 0x3ffd, 0x3ffd, 0x3ffe, 0x3ffe, 0x3ffe, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, };