1/************************************************************************
2 * Copyright (C) 1996-2014, International Business Machines Corporation
3 * and others. All Rights Reserved.
4 ************************************************************************
5 *  2003-nov-07   srl       Port from Java
6 */
7
8#include "astro.h"
9
10#if !UCONFIG_NO_FORMATTING
11
12#include "unicode/calendar.h"
13#include <math.h>
14#include <float.h>
15#include "unicode/putil.h"
16#include "uhash.h"
17#include "umutex.h"
18#include "ucln_in.h"
19#include "putilimp.h"
20#include <stdio.h>  // for toString()
21
22#if defined (PI)
23#undef PI
24#endif
25
26#ifdef U_DEBUG_ASTRO
27# include "uresimp.h" // for debugging
28
29static void debug_astro_loc(const char *f, int32_t l)
30{
31  fprintf(stderr, "%s:%d: ", f, l);
32}
33
34static void debug_astro_msg(const char *pat, ...)
35{
36  va_list ap;
37  va_start(ap, pat);
38  vfprintf(stderr, pat, ap);
39  fflush(stderr);
40}
41#include "unicode/datefmt.h"
42#include "unicode/ustring.h"
43static const char * debug_astro_date(UDate d) {
44  static char gStrBuf[1024];
45  static DateFormat *df = NULL;
46  if(df == NULL) {
47    df = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS());
48    df->adoptTimeZone(TimeZone::getGMT()->clone());
49  }
50  UnicodeString str;
51  df->format(d,str);
52  u_austrncpy(gStrBuf,str.getTerminatedBuffer(),sizeof(gStrBuf)-1);
53  return gStrBuf;
54}
55
56// must use double parens, i.e.:  U_DEBUG_ASTRO_MSG(("four is: %d",4));
57#define U_DEBUG_ASTRO_MSG(x) {debug_astro_loc(__FILE__,__LINE__);debug_astro_msg x;}
58#else
59#define U_DEBUG_ASTRO_MSG(x)
60#endif
61
62static inline UBool isINVALID(double d) {
63  return(uprv_isNaN(d));
64}
65
66static UMutex ccLock = U_MUTEX_INITIALIZER;
67
68U_CDECL_BEGIN
69static UBool calendar_astro_cleanup(void) {
70  return TRUE;
71}
72U_CDECL_END
73
74U_NAMESPACE_BEGIN
75
76/**
77 * The number of standard hours in one sidereal day.
78 * Approximately 24.93.
79 * @internal
80 * @deprecated ICU 2.4. This class may be removed or modified.
81 */
82#define SIDEREAL_DAY (23.93446960027)
83
84/**
85 * The number of sidereal hours in one mean solar day.
86 * Approximately 24.07.
87 * @internal
88 * @deprecated ICU 2.4. This class may be removed or modified.
89 */
90#define SOLAR_DAY  (24.065709816)
91
92/**
93 * The average number of solar days from one new moon to the next.  This is the time
94 * it takes for the moon to return the same ecliptic longitude as the sun.
95 * It is longer than the sidereal month because the sun's longitude increases
96 * during the year due to the revolution of the earth around the sun.
97 * Approximately 29.53.
98 *
99 * @see #SIDEREAL_MONTH
100 * @internal
101 * @deprecated ICU 2.4. This class may be removed or modified.
102 */
103const double CalendarAstronomer::SYNODIC_MONTH  = 29.530588853;
104
105/**
106 * The average number of days it takes
107 * for the moon to return to the same ecliptic longitude relative to the
108 * stellar background.  This is referred to as the sidereal month.
109 * It is shorter than the synodic month due to
110 * the revolution of the earth around the sun.
111 * Approximately 27.32.
112 *
113 * @see #SYNODIC_MONTH
114 * @internal
115 * @deprecated ICU 2.4. This class may be removed or modified.
116 */
117#define SIDEREAL_MONTH  27.32166
118
119/**
120 * The average number number of days between successive vernal equinoxes.
121 * Due to the precession of the earth's
122 * axis, this is not precisely the same as the sidereal year.
123 * Approximately 365.24
124 *
125 * @see #SIDEREAL_YEAR
126 * @internal
127 * @deprecated ICU 2.4. This class may be removed or modified.
128 */
129#define TROPICAL_YEAR  365.242191
130
131/**
132 * The average number of days it takes
133 * for the sun to return to the same position against the fixed stellar
134 * background.  This is the duration of one orbit of the earth about the sun
135 * as it would appear to an outside observer.
136 * Due to the precession of the earth's
137 * axis, this is not precisely the same as the tropical year.
138 * Approximately 365.25.
139 *
140 * @see #TROPICAL_YEAR
141 * @internal
142 * @deprecated ICU 2.4. This class may be removed or modified.
143 */
144#define SIDEREAL_YEAR  365.25636
145
146//-------------------------------------------------------------------------
147// Time-related constants
148//-------------------------------------------------------------------------
149
150/**
151 * The number of milliseconds in one second.
152 * @internal
153 * @deprecated ICU 2.4. This class may be removed or modified.
154 */
155#define SECOND_MS  U_MILLIS_PER_SECOND
156
157/**
158 * The number of milliseconds in one minute.
159 * @internal
160 * @deprecated ICU 2.4. This class may be removed or modified.
161 */
162#define MINUTE_MS  U_MILLIS_PER_MINUTE
163
164/**
165 * The number of milliseconds in one hour.
166 * @internal
167 * @deprecated ICU 2.4. This class may be removed or modified.
168 */
169#define HOUR_MS   U_MILLIS_PER_HOUR
170
171/**
172 * The number of milliseconds in one day.
173 * @internal
174 * @deprecated ICU 2.4. This class may be removed or modified.
175 */
176#define DAY_MS U_MILLIS_PER_DAY
177
178/**
179 * The start of the julian day numbering scheme used by astronomers, which
180 * is 1/1/4713 BC (Julian), 12:00 GMT.  This is given as the number of milliseconds
181 * since 1/1/1970 AD (Gregorian), a negative number.
182 * Note that julian day numbers and
183 * the Julian calendar are <em>not</em> the same thing.  Also note that
184 * julian days start at <em>noon</em>, not midnight.
185 * @internal
186 * @deprecated ICU 2.4. This class may be removed or modified.
187 */
188#define JULIAN_EPOCH_MS  -210866760000000.0
189
190
191/**
192 * Milliseconds value for 0.0 January 2000 AD.
193 */
194#define EPOCH_2000_MS  946598400000.0
195
196//-------------------------------------------------------------------------
197// Assorted private data used for conversions
198//-------------------------------------------------------------------------
199
200// My own copies of these so compilers are more likely to optimize them away
201const double CalendarAstronomer::PI = 3.14159265358979323846;
202
203#define CalendarAstronomer_PI2  (CalendarAstronomer::PI*2.0)
204#define RAD_HOUR  ( 12 / CalendarAstronomer::PI )     // radians -> hours
205#define DEG_RAD ( CalendarAstronomer::PI / 180 )      // degrees -> radians
206#define RAD_DEG  ( 180 / CalendarAstronomer::PI )     // radians -> degrees
207
208/***
209 * Given 'value', add or subtract 'range' until 0 <= 'value' < range.
210 * The modulus operator.
211 */
212inline static double normalize(double value, double range)  {
213    return value - range * ClockMath::floorDivide(value, range);
214}
215
216/**
217 * Normalize an angle so that it's in the range 0 - 2pi.
218 * For positive angles this is just (angle % 2pi), but the Java
219 * mod operator doesn't work that way for negative numbers....
220 */
221inline static double norm2PI(double angle)  {
222    return normalize(angle, CalendarAstronomer::PI * 2.0);
223}
224
225/**
226 * Normalize an angle into the range -PI - PI
227 */
228inline static  double normPI(double angle)  {
229    return normalize(angle + CalendarAstronomer::PI, CalendarAstronomer::PI * 2.0) - CalendarAstronomer::PI;
230}
231
232//-------------------------------------------------------------------------
233// Constructors
234//-------------------------------------------------------------------------
235
236/**
237 * Construct a new <code>CalendarAstronomer</code> object that is initialized to
238 * the current date and time.
239 * @internal
240 * @deprecated ICU 2.4. This class may be removed or modified.
241 */
242CalendarAstronomer::CalendarAstronomer():
243  fTime(Calendar::getNow()), fLongitude(0.0), fLatitude(0.0), fGmtOffset(0.0), moonPosition(0,0), moonPositionSet(FALSE) {
244  clearCache();
245}
246
247/**
248 * Construct a new <code>CalendarAstronomer</code> object that is initialized to
249 * the specified date and time.
250 * @internal
251 * @deprecated ICU 2.4. This class may be removed or modified.
252 */
253CalendarAstronomer::CalendarAstronomer(UDate d): fTime(d), fLongitude(0.0), fLatitude(0.0), fGmtOffset(0.0), moonPosition(0,0), moonPositionSet(FALSE) {
254  clearCache();
255}
256
257/**
258 * Construct a new <code>CalendarAstronomer</code> object with the given
259 * latitude and longitude.  The object's time is set to the current
260 * date and time.
261 * <p>
262 * @param longitude The desired longitude, in <em>degrees</em> east of
263 *                  the Greenwich meridian.
264 *
265 * @param latitude  The desired latitude, in <em>degrees</em>.  Positive
266 *                  values signify North, negative South.
267 *
268 * @see java.util.Date#getTime()
269 * @internal
270 * @deprecated ICU 2.4. This class may be removed or modified.
271 */
272CalendarAstronomer::CalendarAstronomer(double longitude, double latitude) :
273  fTime(Calendar::getNow()), moonPosition(0,0), moonPositionSet(FALSE) {
274  fLongitude = normPI(longitude * (double)DEG_RAD);
275  fLatitude  = normPI(latitude  * (double)DEG_RAD);
276  fGmtOffset = (double)(fLongitude * 24. * (double)HOUR_MS / (double)CalendarAstronomer_PI2);
277  clearCache();
278}
279
280CalendarAstronomer::~CalendarAstronomer()
281{
282}
283
284//-------------------------------------------------------------------------
285// Time and date getters and setters
286//-------------------------------------------------------------------------
287
288/**
289 * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
290 * astronomical calculations are performed based on this time setting.
291 *
292 * @param aTime the date and time, expressed as the number of milliseconds since
293 *              1/1/1970 0:00 GMT (Gregorian).
294 *
295 * @see #setDate
296 * @see #getTime
297 * @internal
298 * @deprecated ICU 2.4. This class may be removed or modified.
299 */
300void CalendarAstronomer::setTime(UDate aTime) {
301    fTime = aTime;
302    U_DEBUG_ASTRO_MSG(("setTime(%.1lf, %sL)\n", aTime, debug_astro_date(aTime+fGmtOffset)));
303    clearCache();
304}
305
306/**
307 * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
308 * astronomical calculations are performed based on this time setting.
309 *
310 * @param jdn   the desired time, expressed as a "julian day number",
311 *              which is the number of elapsed days since
312 *              1/1/4713 BC (Julian), 12:00 GMT.  Note that julian day
313 *              numbers start at <em>noon</em>.  To get the jdn for
314 *              the corresponding midnight, subtract 0.5.
315 *
316 * @see #getJulianDay
317 * @see #JULIAN_EPOCH_MS
318 * @internal
319 * @deprecated ICU 2.4. This class may be removed or modified.
320 */
321void CalendarAstronomer::setJulianDay(double jdn) {
322    fTime = (double)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
323    clearCache();
324    julianDay = jdn;
325}
326
327/**
328 * Get the current time of this <code>CalendarAstronomer</code> object,
329 * represented as the number of milliseconds since
330 * 1/1/1970 AD 0:00 GMT (Gregorian).
331 *
332 * @see #setTime
333 * @see #getDate
334 * @internal
335 * @deprecated ICU 2.4. This class may be removed or modified.
336 */
337UDate CalendarAstronomer::getTime() {
338    return fTime;
339}
340
341/**
342 * Get the current time of this <code>CalendarAstronomer</code> object,
343 * expressed as a "julian day number", which is the number of elapsed
344 * days since 1/1/4713 BC (Julian), 12:00 GMT.
345 *
346 * @see #setJulianDay
347 * @see #JULIAN_EPOCH_MS
348 * @internal
349 * @deprecated ICU 2.4. This class may be removed or modified.
350 */
351double CalendarAstronomer::getJulianDay() {
352    if (isINVALID(julianDay)) {
353        julianDay = (fTime - (double)JULIAN_EPOCH_MS) / (double)DAY_MS;
354    }
355    return julianDay;
356}
357
358/**
359 * Return this object's time expressed in julian centuries:
360 * the number of centuries after 1/1/1900 AD, 12:00 GMT
361 *
362 * @see #getJulianDay
363 * @internal
364 * @deprecated ICU 2.4. This class may be removed or modified.
365 */
366double CalendarAstronomer::getJulianCentury() {
367    if (isINVALID(julianCentury)) {
368        julianCentury = (getJulianDay() - 2415020.0) / 36525.0;
369    }
370    return julianCentury;
371}
372
373/**
374 * Returns the current Greenwich sidereal time, measured in hours
375 * @internal
376 * @deprecated ICU 2.4. This class may be removed or modified.
377 */
378double CalendarAstronomer::getGreenwichSidereal() {
379    if (isINVALID(siderealTime)) {
380        // See page 86 of "Practical Astronomy with your Calculator",
381        // by Peter Duffet-Smith, for details on the algorithm.
382
383        double UT = normalize(fTime/(double)HOUR_MS, 24.);
384
385        siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24.);
386    }
387    return siderealTime;
388}
389
390double CalendarAstronomer::getSiderealOffset() {
391    if (isINVALID(siderealT0)) {
392        double JD  = uprv_floor(getJulianDay() - 0.5) + 0.5;
393        double S   = JD - 2451545.0;
394        double T   = S / 36525.0;
395        siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
396    }
397    return siderealT0;
398}
399
400/**
401 * Returns the current local sidereal time, measured in hours
402 * @internal
403 * @deprecated ICU 2.4. This class may be removed or modified.
404 */
405double CalendarAstronomer::getLocalSidereal() {
406    return normalize(getGreenwichSidereal() + (fGmtOffset/(double)HOUR_MS), 24.);
407}
408
409/**
410 * Converts local sidereal time to Universal Time.
411 *
412 * @param lst   The Local Sidereal Time, in hours since sidereal midnight
413 *              on this object's current date.
414 *
415 * @return      The corresponding Universal Time, in milliseconds since
416 *              1 Jan 1970, GMT.
417 */
418double CalendarAstronomer::lstToUT(double lst) {
419    // Convert to local mean time
420    double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
421
422    // Then find local midnight on this day
423    double base = (DAY_MS * ClockMath::floorDivide(fTime + fGmtOffset,(double)DAY_MS)) - fGmtOffset;
424
425    //out("    lt  =" + lt + " hours");
426    //out("    base=" + new Date(base));
427
428    return base + (long)(lt * HOUR_MS);
429}
430
431
432//-------------------------------------------------------------------------
433// Coordinate transformations, all based on the current time of this object
434//-------------------------------------------------------------------------
435
436/**
437 * Convert from ecliptic to equatorial coordinates.
438 *
439 * @param ecliptic  A point in the sky in ecliptic coordinates.
440 * @return          The corresponding point in equatorial coordinates.
441 * @internal
442 * @deprecated ICU 2.4. This class may be removed or modified.
443 */
444CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, const CalendarAstronomer::Ecliptic& ecliptic)
445{
446    return eclipticToEquatorial(result, ecliptic.longitude, ecliptic.latitude);
447}
448
449/**
450 * Convert from ecliptic to equatorial coordinates.
451 *
452 * @param eclipLong     The ecliptic longitude
453 * @param eclipLat      The ecliptic latitude
454 *
455 * @return              The corresponding point in equatorial coordinates.
456 * @internal
457 * @deprecated ICU 2.4. This class may be removed or modified.
458 */
459CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, double eclipLong, double eclipLat)
460{
461    // See page 42 of "Practical Astronomy with your Calculator",
462    // by Peter Duffet-Smith, for details on the algorithm.
463
464    double obliq = eclipticObliquity();
465    double sinE = ::sin(obliq);
466    double cosE = cos(obliq);
467
468    double sinL = ::sin(eclipLong);
469    double cosL = cos(eclipLong);
470
471    double sinB = ::sin(eclipLat);
472    double cosB = cos(eclipLat);
473    double tanB = tan(eclipLat);
474
475    result.set(atan2(sinL*cosE - tanB*sinE, cosL),
476        asin(sinB*cosE + cosB*sinE*sinL) );
477    return result;
478}
479
480/**
481 * Convert from ecliptic longitude to equatorial coordinates.
482 *
483 * @param eclipLong     The ecliptic longitude
484 *
485 * @return              The corresponding point in equatorial coordinates.
486 * @internal
487 * @deprecated ICU 2.4. This class may be removed or modified.
488 */
489CalendarAstronomer::Equatorial& CalendarAstronomer::eclipticToEquatorial(CalendarAstronomer::Equatorial& result, double eclipLong)
490{
491    return eclipticToEquatorial(result, eclipLong, 0);  // TODO: optimize
492}
493
494/**
495 * @internal
496 * @deprecated ICU 2.4. This class may be removed or modified.
497 */
498CalendarAstronomer::Horizon& CalendarAstronomer::eclipticToHorizon(CalendarAstronomer::Horizon& result, double eclipLong)
499{
500    Equatorial equatorial;
501    eclipticToEquatorial(equatorial, eclipLong);
502
503    double H = getLocalSidereal()*CalendarAstronomer::PI/12 - equatorial.ascension;     // Hour-angle
504
505    double sinH = ::sin(H);
506    double cosH = cos(H);
507    double sinD = ::sin(equatorial.declination);
508    double cosD = cos(equatorial.declination);
509    double sinL = ::sin(fLatitude);
510    double cosL = cos(fLatitude);
511
512    double altitude = asin(sinD*sinL + cosD*cosL*cosH);
513    double azimuth  = atan2(-cosD*cosL*sinH, sinD - sinL * ::sin(altitude));
514
515    result.set(azimuth, altitude);
516    return result;
517}
518
519
520//-------------------------------------------------------------------------
521// The Sun
522//-------------------------------------------------------------------------
523
524//
525// Parameters of the Sun's orbit as of the epoch Jan 0.0 1990
526// Angles are in radians (after multiplying by CalendarAstronomer::PI/180)
527//
528#define JD_EPOCH  2447891.5 // Julian day of epoch
529
530#define SUN_ETA_G    (279.403303 * CalendarAstronomer::PI/180) // Ecliptic longitude at epoch
531#define SUN_OMEGA_G  (282.768422 * CalendarAstronomer::PI/180) // Ecliptic longitude of perigee
532#define SUN_E         0.016713          // Eccentricity of orbit
533//double sunR0        1.495585e8        // Semi-major axis in KM
534//double sunTheta0    (0.533128 * CalendarAstronomer::PI/180) // Angular diameter at R0
535
536// winter solstice moon date/times 1900-2100 (in UTC)
537// These are in UDate/10000.0 (i.e. in units of 10 seconds) to fit into 32 bits.
538// sources from e.g.
539// http://www.timeanddate.com/calendar/seasons.html?year=1900&n=0
540// http://astropixels.com/ephemeris/soleq2001.html
541// These 2 tables are just 808 bytes each but but greatly improve both the
542// accuracy (and speed for one) of the relevant methods for the relevant time range.
543// For getSunTime:
544// before fix, errors of up to +73 / -101 min or more; after, errors always less than 1 min.
545// about 17 times faster with the fix.
546// For getSunLongitude:
547// before fix, only accurate to about 0.07 degree; this was enough so Chinese calendar
548// calculations were off by a month in some cases.
549// after fix, about 100 times more accurate.
550// speed is about the same.
551static const int32_t winterSolsticeDates[] = {
552//  millis/10K     date
553    -220984944, // 1899 Dec 22, 00:56
554    -217829274, // 1900 Dec 22, 06:41
555    -214673538, // 1901 Dec 22, 12:37
556    -211517790, // 1902 Dec 22, 18:35
557    -208362120, // 1903 Dec 23, 00:20
558    -205206396, // 1904 Dec 22, 06:14
559    -202050696, // 1905 Dec 22, 12:04
560    -198895002, // 1906 Dec 22, 17:53
561    -195739254, // 1907 Dec 22, 23:51
562    -192583602, // 1908 Dec 22, 05:33
563    -189427920, // 1909 Dec 22, 11:20
564    -186272208, // 1910 Dec 22, 17:12
565    -183116562, // 1911 Dec 22, 22:53
566    -179960850, // 1912 Dec 22, 04:45
567    -176805150, // 1913 Dec 22, 10:35
568    -173649468, // 1914 Dec 22, 16:22
569    -170493744, // 1915 Dec 22, 22:16
570    -167338086, // 1916 Dec 22, 03:59
571    -164182404, // 1917 Dec 22, 09:46
572    -161026674, // 1918 Dec 22, 15:41
573    -157870998, // 1919 Dec 22, 21:27
574    -154715298, // 1920 Dec 22, 03:17
575    -151559592, // 1921 Dec 22, 09:08
576    -148403898, // 1922 Dec 22, 14:57
577    -145248162, // 1923 Dec 22, 20:53
578    -142092450, // 1924 Dec 22, 02:45
579    -138936738, // 1925 Dec 22, 08:37
580    -135781002, // 1926 Dec 22, 14:33
581    -132625332, // 1927 Dec 22, 20:18
582    -129469656, // 1928 Dec 22, 02:04
583    -126313962, // 1929 Dec 22, 07:53
584    -123158286, // 1930 Dec 22, 13:39
585    -120002586, // 1931 Dec 22, 19:29
586    -116846916, // 1932 Dec 22, 01:14
587    -113691252, // 1933 Dec 22, 06:58
588    -110535546, // 1934 Dec 22, 12:49
589    -107379858, // 1935 Dec 22, 18:37
590    -104224158, // 1936 Dec 22, 00:27
591    -101068428, // 1937 Dec 22, 06:22
592     -97912722, // 1938 Dec 22, 12:13
593     -94757004, // 1939 Dec 22, 18:06
594     -91601310, // 1940 Dec 21, 23:55
595     -88445616, // 1941 Dec 22, 05:44
596     -85289886, // 1942 Dec 22, 11:39
597     -82134186, // 1943 Dec 22, 17:29
598     -78978510, // 1944 Dec 21, 23:15
599     -75822822, // 1945 Dec 22, 05:03
600     -72667122, // 1946 Dec 22, 10:53
601     -69511422, // 1947 Dec 22, 16:43
602     -66355722, // 1948 Dec 21, 22:33
603     -63200022, // 1949 Dec 22, 04:23
604     -60044322, // 1950 Dec 22, 10:13
605     -56888640, // 1951 Dec 22, 16:00
606     -53732982, // 1952 Dec 21, 21:43
607     -50577294, // 1953 Dec 22, 03:31
608     -47421576, // 1954 Dec 22, 09:24
609     -44265894, // 1955 Dec 22, 15:11
610     -41110200, // 1956 Dec 21, 21:00
611     -37954506, // 1957 Dec 22, 02:49
612     -34798800, // 1958 Dec 22, 08:40
613     -31643076, // 1959 Dec 22, 14:34
614     -28487364, // 1960 Dec 21, 20:26
615     -25331646, // 1961 Dec 22, 02:19
616     -22175910, // 1962 Dec 22, 08:15
617     -19020228, // 1963 Dec 22, 14:02
618     -15864546, // 1964 Dec 21, 19:49
619     -12708840, // 1965 Dec 22, 01:40
620      -9553152, // 1966 Dec 22, 07:28
621      -6397464, // 1967 Dec 22, 13:16
622      -3241800, // 1968 Dec 21, 19:00
623        -86136, // 1969 Dec 22, 00:44
624       3069576, // 1970 Dec 22, 06:36
625       6225264, // 1971 Dec 22, 12:24
626       9380958, // 1972 Dec 21, 18:13
627      12536688, // 1973 Dec 22, 00:08
628      15692376, // 1974 Dec 22, 05:56
629      18848070, // 1975 Dec 22, 11:45
630      22003770, // 1976 Dec 21, 17:35
631      25159458, // 1977 Dec 21, 23:23
632      28315206, // 1978 Dec 22, 05:21
633      31470900, // 1979 Dec 22, 11:10
634      34626576, // 1980 Dec 21, 16:56
635      37782306, // 1981 Dec 21, 22:51
636      40937988, // 1982 Dec 22, 04:38
637      44093700, // 1983 Dec 22, 10:30
638      47249418, // 1984 Dec 21, 16:23
639      50405088, // 1985 Dec 21, 22:08
640      53560812, // 1986 Dec 22, 04:02
641      56716476, // 1987 Dec 22, 09:46
642      59872128, // 1988 Dec 21, 15:28
643      63027852, // 1989 Dec 21, 21:22
644      66183522, // 1990 Dec 22, 03:07
645      69339198, // 1991 Dec 22, 08:53
646      72494898, // 1992 Dec 21, 14:43
647      75650556, // 1993 Dec 21, 20:26
648      78806298, // 1994 Dec 22, 02:23
649      81962022, // 1995 Dec 22, 08:17
650      85117716, // 1996 Dec 21, 14:06
651      88273482, // 1997 Dec 21, 20:07
652      91429176, // 1998 Dec 22, 01:56
653      94584864, // 1999 Dec 22, 07:44
654      97740588, // 2000 Dec 21, 13:38
655     100896246, // 2001 Dec 21, 19:21
656     104051964, // 2002 Dec 22, 01:14
657     107207664, // 2003 Dec 22, 07:04
658     110363292, // 2004 Dec 21, 12:42
659     113519010, // 2005 Dec 21, 18:35
660     116674692, // 2006 Dec 22, 00:22
661     119830362, // 2007 Dec 22, 06:07
662     122986104, // 2008 Dec 21, 12:04
663     126141762, // 2009 Dec 21, 17:47
664     129297468, // 2010 Dec 21, 23:38
665     132453180, // 2011 Dec 22, 05:30
666     135608832, // 2012 Dec 21, 11:12
667     138764586, // 2013 Dec 21, 17:11
668     141920298, // 2014 Dec 21, 23:03
669     145075968, // 2015 Dec 22, 04:48
670     148231704, // 2016 Dec 21, 10:44
671     151387368, // 2017 Dec 21, 16:28
672     154543092, // 2018 Dec 21, 22:22
673     157698834, // 2019 Dec 22, 04:19
674     160854492, // 2020 Dec 21, 10:02
675     164010234, // 2021 Dec 21, 15:59
676     167165928, // 2022 Dec 21, 21:48
677     170321562, // 2023 Dec 22, 03:27
678     173477280, // 2024 Dec 21, 09:20
679     176632938, // 2025 Dec 21, 15:03
680     179788620, // 2026 Dec 21, 20:50
681     182944332, // 2027 Dec 22, 02:42
682     186099960, // 2028 Dec 21, 08:20
683     189255684, // 2029 Dec 21, 14:14
684     192411414, // 2030 Dec 21, 20:09
685     195567090, // 2031 Dec 22, 01:55
686     198722856, // 2032 Dec 21, 07:56
687     201878550, // 2033 Dec 21, 13:45
688     205034244, // 2034 Dec 21, 19:34
689     208189986, // 2035 Dec 22, 01:31
690     211345638, // 2036 Dec 21, 07:13
691     214501362, // 2037 Dec 21, 13:07
692     217657092, // 2038 Dec 21, 19:02
693     220812720, // 2039 Dec 22, 00:40
694     223968438, // 2040 Dec 21, 06:33
695     227124108, // 2041 Dec 21, 12:18
696     230279784, // 2042 Dec 21, 18:04
697     233435526, // 2043 Dec 22, 00:01
698     236591184, // 2044 Dec 21, 05:44
699     239746890, // 2045 Dec 21, 11:35
700     242902608, // 2046 Dec 21, 17:28
701     246058242, // 2047 Dec 21, 23:07
702     249213972, // 2048 Dec 21, 05:02
703     252369672, // 2049 Dec 21, 10:52
704     255525348, // 2050 Dec 21, 16:38
705     258681078, // 2051 Dec 21, 22:33
706     261836742, // 2052 Dec 21, 04:17
707     264992454, // 2053 Dec 21, 10:09
708     268148214, // 2054 Dec 21, 16:09
709     271303890, // 2055 Dec 21, 21:55
710     274459626, // 2056 Dec 21, 03:51
711     277615332, // 2057 Dec 21, 09:42
712     280770990, // 2058 Dec 21, 15:25
713     283926708, // 2059 Dec 21, 21:18
714     287082366, // 2060 Dec 21, 03:01
715     290238048, // 2061 Dec 21, 08:48
716     293393772, // 2062 Dec 21, 14:42
717     296549406, // 2063 Dec 21, 20:21
718     299705088, // 2064 Dec 21, 02:08
719     302860800, // 2065 Dec 21, 08:00
720     306016470, // 2066 Dec 21, 13:45
721     309172218, // 2067 Dec 21, 19:43
722     312327912, // 2068 Dec 21, 01:32
723     315483612, // 2069 Dec 21, 07:22
724     318639354, // 2070 Dec 21, 13:19
725     321795018, // 2071 Dec 21, 19:03
726     324950736, // 2072 Dec 21, 00:56
727     328106460, // 2073 Dec 21, 06:50
728     331262130, // 2074 Dec 21, 12:35
729     334417842, // 2075 Dec 21, 18:27
730     337573518, // 2076 Dec 21, 00:13
731     340729200, // 2077 Dec 21, 06:00
732     343884942, // 2078 Dec 21, 11:57
733     347040624, // 2079 Dec 21, 17:44
734     350196312, // 2080 Dec 20, 23:32
735     353352012, // 2081 Dec 21, 05:22
736     356507664, // 2082 Dec 21, 11:04
737     359663358, // 2083 Dec 21, 16:53
738     362819046, // 2084 Dec 20, 22:41
739     365974728, // 2085 Dec 21, 04:28
740     369130452, // 2086 Dec 21, 10:22
741     372286128, // 2087 Dec 21, 16:08
742     375441816, // 2088 Dec 20, 21:56
743     378597552, // 2089 Dec 21, 03:52
744     381753258, // 2090 Dec 21, 09:43
745     384908988, // 2091 Dec 21, 15:38
746     388064706, // 2092 Dec 20, 21:31
747     391220400, // 2093 Dec 21, 03:20
748     394376118, // 2094 Dec 21, 09:13
749     397531800, // 2095 Dec 21, 15:00
750     400687476, // 2096 Dec 20, 20:46
751     403843176, // 2097 Dec 21, 02:36
752     406998840, // 2098 Dec 21, 08:20
753     410154504, // 2099 Dec 21, 14:04
754     413310186, // 2100 Dec 21, 19:51
755};
756enum { kWinterSolsticeDatesCount = sizeof(winterSolsticeDates)/sizeof(winterSolsticeDates[0]) };
757
758static const UDate winterSolsticeDatesFirst = 10000.0 * -220984944; // winterSolsticeDates[0];
759static const UDate winterSolsticeDatesLast  = 10000.0 *  413310186; // winterSolsticeDates[kWinterSolsticeDatesCount-1];
760static const UDate winterSolsticeDatesRange = 10000.0 * (413310186 + 220984944); // winterSolsticeDatesLast - winterSolsticeDatesFirst;
761
762static const int8_t sunLongitudeAdjustmts[][4] = {
763//  adjustments x 100000 for
764//  computed solar longitudes
765//  (in radians) at times
766//  corresponding to actual
767//  longitudes (degrees) of
768//     270     0    90   180       for 12 months from
769//     ---   ---   ---   ---       ------------------
770    {   85,   25,  -89,  -32 }, // 1899 Dec 22, 00:56
771    {   90,   30,  -88,  -33 }, // 1900 Dec 22, 06:41
772    {   81,   26,  -86,  -29 }, // 1901 Dec 22, 12:37
773    {   69,   14,  -87,  -30 }, // 1902 Dec 22, 18:35
774    {   74,   21,  -84,  -38 }, // 1903 Dec 23, 00:20
775    {   68,    7,  -98,  -40 }, // 1904 Dec 22, 06:14
776    {   66,    0, -100,  -35 }, // 1905 Dec 22, 12:04
777    {   66,   10,  -91,  -41 }, // 1906 Dec 22, 17:53
778    {   54,    3, -100,  -42 }, // 1907 Dec 22, 23:51
779    {   63,    7,  -97,  -40 }, // 1908 Dec 22, 05:33
780    {   65,    6,  -90,  -36 }, // 1909 Dec 22, 11:20
781    {   61,    3,  -88,  -33 }, // 1910 Dec 22, 17:12
782    {   70,   20,  -79,  -36 }, // 1911 Dec 22, 22:53
783    {   66,   19,  -84,  -31 }, // 1912 Dec 22, 04:45
784    {   65,   14,  -80,  -22 }, // 1913 Dec 22, 10:35
785    {   67,   25,  -64,  -24 }, // 1914 Dec 22, 16:22
786    {   61,   16,  -71,  -26 }, // 1915 Dec 22, 22:16
787    {   68,   14,  -72,  -22 }, // 1916 Dec 22, 03:59
788    {   70,   15,  -68,  -19 }, // 1917 Dec 22, 09:46
789    {   62,    9,  -74,  -20 }, // 1918 Dec 22, 15:41
790    {   66,   20,  -71,  -24 }, // 1919 Dec 22, 21:27
791    {   64,   16,  -80,  -28 }, // 1920 Dec 22, 03:17
792    {   61,    6,  -82,  -29 }, // 1921 Dec 22, 09:08
793    {   61,   15,  -67,  -34 }, // 1922 Dec 22, 14:57
794    {   52,   12,  -76,  -43 }, // 1923 Dec 22, 20:53
795    {   48,    8,  -78,  -37 }, // 1924 Dec 22, 02:45
796    {   44,    8,  -68,  -32 }, // 1925 Dec 22, 08:37
797    {   35,   -2,  -72,  -33 }, // 1926 Dec 22, 14:33
798    {   40,    2,  -67,  -32 }, // 1927 Dec 22, 20:18
799    {   43,    0,  -74,  -30 }, // 1928 Dec 22, 02:04
800    {   43,   -6,  -78,  -24 }, // 1929 Dec 22, 07:53
801    {   46,    7,  -62,  -22 }, // 1930 Dec 22, 13:39
802    {   45,    8,  -69,  -27 }, // 1931 Dec 22, 19:29
803    {   49,    7,  -69,  -23 }, // 1932 Dec 22, 01:14
804    {   55,   13,  -54,  -17 }, // 1933 Dec 22, 06:58
805    {   52,   10,  -56,  -22 }, // 1934 Dec 22, 12:49
806    {   53,   22,  -49,  -21 }, // 1935 Dec 22, 18:37
807    {   52,   23,  -52,  -19 }, // 1936 Dec 22, 00:27
808    {   44,   12,  -54,  -17 }, // 1937 Dec 22, 06:22
809    {   41,   16,  -40,  -18 }, // 1938 Dec 22, 12:13
810    {   36,    8,  -49,  -26 }, // 1939 Dec 22, 18:06
811    {   36,    0,  -59,  -25 }, // 1940 Dec 21, 23:55
812    {   35,   -2,  -52,  -20 }, // 1941 Dec 22, 05:44
813    {   28,   -7,  -60,  -26 }, // 1942 Dec 22, 11:39
814    {   26,   -2,  -62,  -27 }, // 1943 Dec 22, 17:29
815    {   30,   -2,  -63,  -28 }, // 1944 Dec 21, 23:15
816    {   31,  -11,  -68,  -30 }, // 1945 Dec 22, 05:03
817    {   29,   -1,  -51,  -29 }, // 1946 Dec 22, 10:53
818    {   27,    4,  -55,  -34 }, // 1947 Dec 22, 16:43
819    {   26,    1,  -59,  -29 }, // 1948 Dec 21, 22:33
820    {   24,    3,  -40,  -16 }, // 1949 Dec 22, 04:23
821    {   23,    1,  -41,  -21 }, // 1950 Dec 22, 10:13
822    {   25,    3,  -40,  -19 }, // 1951 Dec 22, 16:00
823    {   32,    4,  -38,  -11 }, // 1952 Dec 21, 21:43
824    {   33,    0,  -44,  -12 }, // 1953 Dec 22, 03:31
825    {   28,    8,  -31,   -8 }, // 1954 Dec 22, 09:24
826    {   30,   11,  -35,  -14 }, // 1955 Dec 22, 15:11
827    {   30,    4,  -45,  -17 }, // 1956 Dec 21, 21:00
828    {   29,    4,  -30,  -10 }, // 1957 Dec 22, 02:49
829    {   27,    2,  -35,  -22 }, // 1958 Dec 22, 08:40
830    {   20,    3,  -39,  -25 }, // 1959 Dec 22, 14:34
831    {   16,    3,  -38,  -18 }, // 1960 Dec 21, 20:26
832    {   11,   -6,  -44,  -24 }, // 1961 Dec 22, 02:19
833    {    2,   -9,  -34,  -23 }, // 1962 Dec 22, 08:15
834    {    4,  -10,  -39,  -28 }, // 1963 Dec 22, 14:02
835    {    6,  -18,  -50,  -29 }, // 1964 Dec 21, 19:49
836    {    4,  -16,  -37,  -15 }, // 1965 Dec 22, 01:40
837    {    4,  -11,  -38,  -22 }, // 1966 Dec 22, 07:28
838    {    5,   -7,  -40,  -21 }, // 1967 Dec 22, 13:16
839    {   11,   -4,  -32,  -12 }, // 1968 Dec 21, 19:00
840    {   17,   -3,  -31,  -16 }, // 1969 Dec 22, 00:44
841    {   13,    5,  -16,  -13 }, // 1970 Dec 22, 06:36
842    {   14,   11,  -14,  -12 }, // 1971 Dec 22, 12:24
843    {   14,    9,  -21,  -11 }, // 1972 Dec 21, 18:13
844    {    6,    2,   -7,    1 }, // 1973 Dec 22, 00:08
845    {    7,    0,   -7,   -7 }, // 1974 Dec 22, 05:56
846    {    7,   -3,  -18,  -12 }, // 1975 Dec 22, 11:45
847    {    5,   -8,  -19,   -2 }, // 1976 Dec 21, 17:35
848    {    6,  -11,  -28,  -12 }, // 1977 Dec 21, 23:23
849    {   -4,  -11,  -24,  -14 }, // 1978 Dec 22, 05:21
850    {   -5,  -10,  -27,  -18 }, // 1979 Dec 22, 11:10
851    {   -1,  -15,  -38,  -27 }, // 1980 Dec 21, 16:56
852    {   -9,  -19,  -25,  -18 }, // 1981 Dec 21, 22:51
853    {   -7,  -14,  -21,  -26 }, // 1982 Dec 22, 04:38
854    {  -11,   -9,  -27,  -29 }, // 1983 Dec 22, 10:30
855    {  -16,  -11,  -19,  -12 }, // 1984 Dec 21, 16:23
856    {  -11,  -11,  -16,  -16 }, // 1985 Dec 21, 22:08
857    {  -18,  -11,   -7,  -12 }, // 1986 Dec 22, 04:02
858    {  -12,   -9,   -3,   -7 }, // 1987 Dec 22, 09:46
859    {   -4,   -9,  -12,  -10 }, // 1988 Dec 21, 15:28
860    {  -10,  -12,   -2,    6 }, // 1989 Dec 21, 21:22
861    {   -6,   -5,    0,    1 }, // 1990 Dec 22, 03:07
862    {   -2,   -2,   -6,   -6 }, // 1991 Dec 22, 08:53
863    {   -4,   -7,   -3,    5 }, // 1992 Dec 21, 14:43
864    {    2,   -5,   -2,   -4 }, // 1993 Dec 21, 20:26
865    {   -7,   -3,    0,  -10 }, // 1994 Dec 22, 02:23
866    {  -13,   -2,    0,   -8 }, // 1995 Dec 22, 08:17
867    {  -13,   -6,   -9,  -17 }, // 1996 Dec 21, 14:06
868    {  -29,  -18,   -2,   -9 }, // 1997 Dec 21, 20:07
869    {  -29,  -22,    0,  -14 }, // 1998 Dec 22, 01:56
870    {  -28,  -22,  -11,  -23 }, // 1999 Dec 22, 07:44
871    {  -34,  -31,  -12,   -9 }, // 2000 Dec 21, 13:38
872    {  -27,  -26,  -10,  -11 }, // 2001 Dec 21, 19:21
873    {  -33,  -21,   -7,  -15 }, // 2002 Dec 22, 01:14
874    {  -34,  -20,   -4,   -8 }, // 2003 Dec 22, 07:04
875    {  -21,  -15,   -4,  -13 }, // 2004 Dec 21, 12:42
876    {  -26,  -19,    5,   -4 }, // 2005 Dec 21, 18:35
877    {  -24,  -11,   15,   -2 }, // 2006 Dec 22, 00:22
878    {  -19,   -2,   10,   -7 }, // 2007 Dec 22, 06:07
879    {  -29,  -10,   12,    9 }, // 2008 Dec 21, 12:04
880    {  -22,  -10,   19,    7 }, // 2009 Dec 21, 17:47
881    {  -25,  -10,   21,    0 }, // 2010 Dec 21, 23:38
882    {  -29,  -15,   17,    4 }, // 2011 Dec 22, 05:30
883    {  -21,  -14,    9,   -2 }, // 2012 Dec 21, 11:12
884    {  -33,  -22,   11,    1 }, // 2013 Dec 21, 17:11
885    {  -37,  -21,   13,    0 }, // 2014 Dec 21, 23:03
886    {  -33,  -16,    5,  -15 }, // 2015 Dec 22, 04:48
887    {  -42,  -29,    3,   -6 }, // 2016 Dec 21, 10:44
888    {  -36,  -25,   10,  -10 }, // 2017 Dec 21, 16:28
889    {  -42,  -18,   12,  -18 }, // 2018 Dec 21, 22:22
890    {  -53,  -22,   12,   -9 }, // 2019 Dec 22, 04:19
891    {  -45,  -20,   11,  -10 }, // 2020 Dec 21, 10:02
892    {  -56,  -29,   19,   -4 }, // 2021 Dec 21, 15:59
893    {  -56,  -31,   26,    0 }, // 2022 Dec 21, 21:48
894    {  -44,  -23,   20,   -7 }, // 2023 Dec 22, 03:27
895    {  -49,  -31,   17,    8 }, // 2024 Dec 21, 09:20
896    {  -42,  -25,   24,   12 }, // 2025 Dec 21, 15:03
897    {  -40,  -15,   27,    3 }, // 2026 Dec 21, 20:50
898    {  -44,  -19,   24,    9 }, // 2027 Dec 22, 02:42
899    {  -31,  -13,   28,    4 }, // 2028 Dec 21, 08:20
900    {  -37,  -15,   34,    4 }, // 2029 Dec 21, 14:14
901    {  -45,  -16,   37,    5 }, // 2030 Dec 21, 20:09
902    {  -41,   -6,   34,   -3 }, // 2031 Dec 22, 01:55
903    {  -56,  -21,   30,    5 }, // 2032 Dec 21, 07:56
904    {  -57,  -27,   37,    7 }, // 2033 Dec 21, 13:45
905    {  -57,  -24,   36,   -5 }, // 2034 Dec 21, 19:34
906    {  -67,  -37,   24,   -1 }, // 2035 Dec 22, 01:31
907    {  -59,  -36,   23,   -1 }, // 2036 Dec 21, 07:13
908    {  -65,  -37,   25,   -1 }, // 2037 Dec 21, 13:07
909    {  -73,  -41,   26,    0 }, // 2038 Dec 21, 19:02
910    {  -60,  -29,   26,   -8 }, // 2039 Dec 22, 00:40
911    {  -65,  -37,   24,    0 }, // 2040 Dec 21, 06:33
912    {  -60,  -35,   34,    5 }, // 2041 Dec 21, 12:18
913    {  -57,  -17,   42,   -1 }, // 2042 Dec 21, 18:04
914    {  -67,  -22,   37,    6 }, // 2043 Dec 22, 00:01
915    {  -60,  -20,   45,   10 }, // 2044 Dec 21, 05:44
916    {  -63,  -23,   53,   10 }, // 2045 Dec 21, 11:35
917    {  -68,  -29,   54,   13 }, // 2046 Dec 21, 17:28
918    {  -56,  -20,   51,    9 }, // 2047 Dec 21, 23:07
919    {  -64,  -27,   46,   17 }, // 2048 Dec 21, 05:02
920    {  -65,  -30,   49,   20 }, // 2049 Dec 21, 10:52
921    {  -62,  -19,   54,    8 }, // 2050 Dec 21, 16:38
922    {  -70,  -29,   43,    9 }, // 2051 Dec 21, 22:33
923    {  -64,  -31,   44,    6 }, // 2052 Dec 21, 04:17
924    {  -68,  -30,   51,    1 }, // 2053 Dec 21, 10:09
925    {  -82,  -36,   47,    0 }, // 2054 Dec 21, 16:09
926    {  -78,  -28,   47,   -1 }, // 2055 Dec 21, 21:55
927    {  -87,  -39,   44,    4 }, // 2056 Dec 21, 03:51
928    {  -90,  -48,   48,    9 }, // 2057 Dec 21, 09:42
929    {  -83,  -37,   56,    1 }, // 2058 Dec 21, 15:25
930    {  -88,  -44,   44,    6 }, // 2059 Dec 21, 21:18
931    {  -81,  -41,   46,   12 }, // 2060 Dec 21, 03:01
932    {  -79,  -33,   58,   12 }, // 2061 Dec 21, 08:48
933    {  -85,  -37,   55,   13 }, // 2062 Dec 21, 14:42
934    {  -73,  -26,   62,   14 }, // 2063 Dec 21, 20:21
935    {  -71,  -27,   64,   17 }, // 2064 Dec 21, 02:08
936    {  -75,  -30,   69,   22 }, // 2065 Dec 21, 08:00
937    {  -70,  -13,   80,   18 }, // 2066 Dec 21, 13:45
938    {  -82,  -21,   70,   19 }, // 2067 Dec 21, 19:43
939    {  -82,  -28,   71,   24 }, // 2068 Dec 21, 01:32
940    {  -84,  -30,   80,   19 }, // 2069 Dec 21, 07:22
941    {  -94,  -43,   69,   13 }, // 2070 Dec 21, 13:19
942    {  -88,  -40,   63,   12 }, // 2071 Dec 21, 19:03
943    {  -93,  -45,   58,   14 }, // 2072 Dec 21, 00:56
944    { -100,  -53,   55,   15 }, // 2073 Dec 21, 06:50
945    {  -95,  -40,   63,    7 }, // 2074 Dec 21, 12:35
946    {  -99,  -43,   55,    3 }, // 2075 Dec 21, 18:27
947    {  -96,  -47,   57,    8 }, // 2076 Dec 21, 00:13
948    {  -94,  -37,   73,    8 }, // 2077 Dec 21, 06:00
949    { -104,  -38,   70,    7 }, // 2078 Dec 21, 11:57
950    { -102,  -33,   74,   14 }, // 2079 Dec 21, 17:44
951    { -101,  -34,   82,   22 }, // 2080 Dec 20, 23:32
952    { -102,  -43,   84,   27 }, // 2081 Dec 21, 05:22
953    {  -94,  -32,   94,   27 }, // 2082 Dec 21, 11:04
954    {  -94,  -33,   85,   28 }, // 2083 Dec 21, 16:53
955    {  -93,  -39,   81,   34 }, // 2084 Dec 20, 22:41
956    {  -91,  -31,   95,   34 }, // 2085 Dec 21, 04:28
957    {  -97,  -36,   85,   25 }, // 2086 Dec 21, 10:22
958    {  -94,  -35,   83,   24 }, // 2087 Dec 21, 16:08
959    {  -93,  -36,   86,   23 }, // 2088 Dec 20, 21:56
960    { -102,  -44,   81,   19 }, // 2089 Dec 21, 03:52
961    { -105,  -33,   89,   17 }, // 2090 Dec 21, 09:43
962    { -113,  -37,   80,   14 }, // 2091 Dec 21, 15:38
963    { -118,  -52,   75,   15 }, // 2092 Dec 20, 21:31
964    { -118,  -50,   91,   17 }, // 2093 Dec 21, 03:20
965    { -123,  -56,   83,   10 }, // 2094 Dec 21, 09:13
966    { -121,  -54,   79,   17 }, // 2095 Dec 21, 15:00
967    { -118,  -51,   86,   26 }, // 2096 Dec 20, 20:46
968    { -119,  -55,   84,   25 }, // 2097 Dec 21, 02:36
969    { -113,  -41,   97,   28 }, // 2098 Dec 21, 08:20
970    { -108,  -39,   94,   27 }, // 2099 Dec 21, 14:04
971    { -105,    0,    0,    0 }, // 2100 Dec 21, 19:51
972};
973
974static const int32_t timeDeltaToSprEquin =  768903; // avg delta in millis/10000 from winter solstice to spring equinox, within 1 hr
975static const int32_t timeDeltaToSumSolst = 1570332; // avg delta in millis/10000 from winter solstice to summer solstice, within 2.7 hrs
976static const int32_t timeDeltaToAutEquin = 2379459; // avg delta in millis/10000 from winter solstice to autumn equinox, within 2 hrs
977
978// The following three methods, which compute the sun parameters
979// given above for an arbitrary epoch (whatever time the object is
980// set to), make only a small difference as compared to using the
981// above constants.  E.g., Sunset times might differ by ~12
982// seconds.  Furthermore, the eta-g computation is befuddled by
983// Duffet-Smith's incorrect coefficients (p.86).  I've corrected
984// the first-order coefficient but the others may be off too - no
985// way of knowing without consulting another source.
986
987//  /**
988//   * Return the sun's ecliptic longitude at perigee for the current time.
989//   * See Duffett-Smith, p. 86.
990//   * @return radians
991//   */
992//  private double getSunOmegaG() {
993//      double T = getJulianCentury();
994//      return (281.2208444 + (1.719175 + 0.000452778*T)*T) * DEG_RAD;
995//  }
996
997//  /**
998//   * Return the sun's ecliptic longitude for the current time.
999//   * See Duffett-Smith, p. 86.
1000//   * @return radians
1001//   */
1002//  private double getSunEtaG() {
1003//      double T = getJulianCentury();
1004//      //return (279.6966778 + (36000.76892 + 0.0003025*T)*T) * DEG_RAD;
1005//      //
1006//      // The above line is from Duffett-Smith, and yields manifestly wrong
1007//      // results.  The below constant is derived empirically to match the
1008//      // constant he gives for the 1990 EPOCH.
1009//      //
1010//      return (279.6966778 + (-0.3262541582718024 + 0.0003025*T)*T) * DEG_RAD;
1011//  }
1012
1013//  /**
1014//   * Return the sun's eccentricity of orbit for the current time.
1015//   * See Duffett-Smith, p. 86.
1016//   * @return double
1017//   */
1018//  private double getSunE() {
1019//      double T = getJulianCentury();
1020//      return 0.01675104 - (0.0000418 + 0.000000126*T)*T;
1021//  }
1022
1023/**
1024 * Find the "true anomaly" (longitude) of an object from
1025 * its mean anomaly and the eccentricity of its orbit.  This uses
1026 * an iterative solution to Kepler's equation.
1027 *
1028 * @param meanAnomaly   The object's longitude calculated as if it were in
1029 *                      a regular, circular orbit, measured in radians
1030 *                      from the point of perigee.
1031 *
1032 * @param eccentricity  The eccentricity of the orbit
1033 *
1034 * @return The true anomaly (longitude) measured in radians
1035 */
1036static double trueAnomaly(double meanAnomaly, double eccentricity)
1037{
1038    // First, solve Kepler's equation iteratively
1039    // Duffett-Smith, p.90
1040    double delta;
1041    double E = meanAnomaly;
1042    do {
1043        delta = E - eccentricity * ::sin(E) - meanAnomaly;
1044        E = E - delta / (1 - eccentricity * ::cos(E));
1045    }
1046    while (uprv_fabs(delta) > 1e-5); // epsilon = 1e-5 rad
1047
1048    return 2.0 * ::atan( ::tan(E/2) * ::sqrt( (1+eccentricity)
1049                                             /(1-eccentricity) ) );
1050}
1051
1052
1053/**
1054 * Returns sunLongitude which may be adjusted for correctness
1055 * based on the time, using a table which only has data covering
1056 * gregorian years 1900-2100.
1057 * <p>
1058 * @param theSunLongitude the sunLongitude to be adjusted if necessary
1059 * @param theTime         the time for which the sunLongitude is to be adjusted
1060 * @internal
1061 */
1062double CalendarAstronomer::adjustSunLongitude(double &theSunLongitude, UDate theTime)
1063{
1064    // apply piecewise linear corrections in the range 1900-2100
1065    if (theTime >= winterSolsticeDatesFirst && theTime < winterSolsticeDatesLast) {
1066        int32_t offset = (int32_t)(((double)kWinterSolsticeDatesCount)*(theTime - winterSolsticeDatesFirst)/winterSolsticeDatesRange);
1067        const int32_t * winterSolsticeDatesPtr = winterSolsticeDates + offset; // approximate starting position
1068        int32_t curTime = (int32_t)(theTime/10000.0);
1069        while (curTime < *winterSolsticeDatesPtr) {
1070            winterSolsticeDatesPtr--;
1071        }
1072        while (curTime >= *(winterSolsticeDatesPtr+1)) {
1073            winterSolsticeDatesPtr++;
1074        }
1075        // curTime is in the 12-month period beginning with *winterSolsticeDatesPtr
1076        offset = winterSolsticeDatesPtr - winterSolsticeDates;
1077        curTime -= *winterSolsticeDatesPtr;
1078        double factor = 0.0;
1079        int32_t adjustForStart = 0, adjustForEnd = 0;
1080        if (curTime < timeDeltaToSumSolst) {
1081            if (curTime < timeDeltaToSprEquin) {
1082                // curTime from winter solstice to before spring equinox
1083                factor = (double)curTime/(double)timeDeltaToSprEquin;
1084                adjustForStart = sunLongitudeAdjustmts[offset][0];
1085                adjustForEnd = sunLongitudeAdjustmts[offset][1];
1086            } else {
1087                // curTime from spring equinox to before summer solstice
1088                factor = (double)(curTime - timeDeltaToSprEquin)/(double)(timeDeltaToSumSolst - timeDeltaToSprEquin);
1089                adjustForStart = sunLongitudeAdjustmts[offset][1];
1090                adjustForEnd = sunLongitudeAdjustmts[offset][2];
1091            }
1092        } else {
1093            if (curTime < timeDeltaToAutEquin) {
1094                // curTime from summer solstice to before autumn equinox
1095                factor = (double)(curTime - timeDeltaToSumSolst)/(double)(timeDeltaToAutEquin - timeDeltaToSumSolst);
1096                adjustForStart = sunLongitudeAdjustmts[offset][2];
1097                adjustForEnd = sunLongitudeAdjustmts[offset][3];
1098            } else {
1099                // curTime from autumn equinox to before next winter solstice
1100                factor = (double)(curTime - timeDeltaToAutEquin)/(double)(*(winterSolsticeDatesPtr+1) - *winterSolsticeDatesPtr - timeDeltaToAutEquin);
1101                adjustForStart = sunLongitudeAdjustmts[offset][3];
1102                adjustForEnd = sunLongitudeAdjustmts[offset+1][0];
1103            }
1104        }
1105        double adjustmt = ((double)adjustForStart + factor*((double)(adjustForEnd - adjustForStart)))/100000.0;
1106        theSunLongitude += adjustmt;
1107        if (theSunLongitude >= 2*PI) {
1108            theSunLongitude -= 2*PI;
1109        } else if (theSunLongitude < 0) {
1110            theSunLongitude += 2*PI;
1111        }
1112    }
1113    return theSunLongitude;
1114}
1115
1116/**
1117 * The longitude of the sun at the time specified by theTime.
1118 * This does not result in caching of any of the intermediate computations.
1119 * @internal
1120 */
1121double CalendarAstronomer::getSunLongitudeForTime(UDate theTime)
1122{
1123    double jd = (theTime - (double)JULIAN_EPOCH_MS) / (double)DAY_MS;
1124    double theSunLongitude;
1125    double theMeanAnomalySun;
1126
1127    getSunLongitude(jd, theSunLongitude, theMeanAnomalySun);
1128    return CalendarAstronomer::adjustSunLongitude(theSunLongitude, theTime);
1129}
1130
1131/**
1132 * The longitude of the sun at the time specified by this object.
1133 * The longitude is measured in radians along the ecliptic
1134 * from the "first point of Aries," the point at which the ecliptic
1135 * crosses the earth's equatorial plane at the vernal equinox.
1136 * <p>
1137 * Currently, this method uses an approximation of the two-body Kepler's
1138 * equation for the earth and the sun.  It does not take into account the
1139 * perturbations caused by the other planets, the moon, etc.
1140 * @internal
1141 * @deprecated ICU 2.4. This class may be removed or modified.
1142 */
1143double CalendarAstronomer::getSunLongitude()
1144{
1145    // See page 86 of "Practical Astronomy with your Calculator",
1146    // by Peter Duffet-Smith, for details on the algorithm.
1147
1148    // Currently this is called externally by ChineseCalendar,
1149    // and internally by getMoonPosition and getSunTime.
1150
1151    if (isINVALID(sunLongitude)) {
1152        // this sets instance variables julianDay (from fTime), sunLongitude, meanAnomalySun
1153        getSunLongitude(getJulianDay(), sunLongitude, meanAnomalySun);
1154    }
1155
1156    // apply piecewise linear corrections in the range 1900-2100,
1157    // update sunLongitude as necessary
1158    return CalendarAstronomer::adjustSunLongitude(sunLongitude, fTime);
1159}
1160
1161/**
1162 * TODO Make this public when the entire class is package-private.
1163 */
1164/*public*/ void CalendarAstronomer::getSunLongitude(double jDay, double &longitude, double &meanAnomaly)
1165{
1166    // See page 86 of "Practical Astronomy with your Calculator",
1167    // by Peter Duffet-Smith, for details on the algorithm.
1168
1169    double day = jDay - JD_EPOCH;       // Days since epoch
1170
1171    // Find the angular distance the sun in a fictitious
1172    // circular orbit has travelled since the epoch.
1173    double epochAngle = norm2PI(CalendarAstronomer_PI2/TROPICAL_YEAR*day);
1174
1175    // The epoch wasn't at the sun's perigee; find the angular distance
1176    // since perigee, which is called the "mean anomaly"
1177    meanAnomaly = norm2PI(epochAngle + SUN_ETA_G - SUN_OMEGA_G);
1178
1179    // Now find the "true anomaly", e.g. the real solar longitude
1180    // by solving Kepler's equation for an elliptical orbit
1181    // NOTE: The 3rd ed. of the book lists omega_g and eta_g in different
1182    // equations; omega_g is to be correct.
1183    longitude =  norm2PI(trueAnomaly(meanAnomaly, SUN_E) + SUN_OMEGA_G);
1184}
1185
1186/**
1187 * The position of the sun at this object's current date and time,
1188 * in equatorial coordinates.
1189 * @internal
1190 * @deprecated ICU 2.4. This class may be removed or modified.
1191 */
1192CalendarAstronomer::Equatorial& CalendarAstronomer::getSunPosition(CalendarAstronomer::Equatorial& result) {
1193    return eclipticToEquatorial(result, getSunLongitude(), 0);
1194}
1195
1196
1197/**
1198 * Constant representing the vernal equinox.
1199 * For use with {@link #getSunTime getSunTime}.
1200 * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
1201 * @internal
1202 * @deprecated ICU 2.4. This class may be removed or modified.
1203 */
1204/*double CalendarAstronomer::VERNAL_EQUINOX() {
1205  return 0;
1206}*/
1207
1208/**
1209 * Constant representing the summer solstice.
1210 * For use with {@link #getSunTime getSunTime}.
1211 * Note: In this case, "summer" refers to the northern hemisphere's seasons.
1212 * @internal
1213 * @deprecated ICU 2.4. This class may be removed or modified.
1214 */
1215double CalendarAstronomer::SUMMER_SOLSTICE() {
1216    return  (CalendarAstronomer::PI/2);
1217}
1218
1219/**
1220 * Constant representing the autumnal equinox.
1221 * For use with {@link #getSunTime getSunTime}.
1222 * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
1223 * @internal
1224 * @deprecated ICU 2.4. This class may be removed or modified.
1225 */
1226/*double CalendarAstronomer::AUTUMN_EQUINOX() {
1227  return  (CalendarAstronomer::PI);
1228}*/
1229
1230/**
1231 * Constant representing the winter solstice.
1232 * For use with {@link #getSunTime getSunTime}.
1233 * Note: In this case, "winter" refers to the northern hemisphere's seasons.
1234 * @internal
1235 * @deprecated ICU 2.4. This class may be removed or modified.
1236 */
1237double CalendarAstronomer::WINTER_SOLSTICE() {
1238    return  ((CalendarAstronomer::PI*3)/2);
1239}
1240
1241CalendarAstronomer::AngleFunc::~AngleFunc() {}
1242
1243/**
1244 * Find the next time at which the sun's ecliptic longitude will have
1245 * the desired value.
1246 * @internal
1247 * @deprecated ICU 2.4. This class may be removed or modified.
1248 */
1249class SunTimeAngleFunc : public CalendarAstronomer::AngleFunc {
1250public:
1251    virtual ~SunTimeAngleFunc();
1252    virtual double eval(CalendarAstronomer& a) { return a.getSunLongitude(); }
1253};
1254
1255SunTimeAngleFunc::~SunTimeAngleFunc() {}
1256
1257UDate CalendarAstronomer::getSunTime(double desired, UBool next)
1258{
1259    // Currently, the only client is ChineseCalendar, which calls
1260    // this with desired == CalendarAstronomer::WINTER_SOLSTICE()
1261    if (desired == CalendarAstronomer::WINTER_SOLSTICE() && fTime >= winterSolsticeDatesFirst && fTime < winterSolsticeDatesLast) {
1262        int32_t offset = (int32_t)(((double)kWinterSolsticeDatesCount)*(fTime - winterSolsticeDatesFirst)/winterSolsticeDatesRange);
1263        const int32_t * winterSolsticeDatesPtr = winterSolsticeDates + offset; // approximate starting position
1264        int32_t curTime = (int32_t)(fTime/10000.0);
1265        while (curTime < *winterSolsticeDatesPtr) {
1266            winterSolsticeDatesPtr--;
1267        }
1268        while (curTime >= *(winterSolsticeDatesPtr+1)) {
1269            winterSolsticeDatesPtr++;
1270        }
1271        if (next) {
1272            winterSolsticeDatesPtr++;
1273        }
1274        return  10000.0 * (UDate)(*winterSolsticeDatesPtr);
1275    }
1276
1277    SunTimeAngleFunc func;
1278    return timeOfAngle( func,
1279                        desired,
1280                        TROPICAL_YEAR,
1281                        MINUTE_MS,
1282                        next);
1283}
1284
1285CalendarAstronomer::CoordFunc::~CoordFunc() {}
1286
1287class RiseSetCoordFunc : public CalendarAstronomer::CoordFunc {
1288public:
1289    virtual ~RiseSetCoordFunc();
1290    virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer&a) {  a.getSunPosition(result); }
1291};
1292
1293RiseSetCoordFunc::~RiseSetCoordFunc() {}
1294
1295UDate CalendarAstronomer::getSunRiseSet(UBool rise)
1296{
1297    UDate t0 = fTime;
1298
1299    // Make a rough guess: 6am or 6pm local time on the current day
1300    double noon = ClockMath::floorDivide(fTime + fGmtOffset, (double)DAY_MS)*DAY_MS - fGmtOffset + (12*HOUR_MS);
1301
1302    U_DEBUG_ASTRO_MSG(("Noon=%.2lf, %sL, gmtoff %.2lf\n", noon, debug_astro_date(noon+fGmtOffset), fGmtOffset));
1303    setTime(noon +  ((rise ? -6 : 6) * HOUR_MS));
1304    U_DEBUG_ASTRO_MSG(("added %.2lf ms as a guess,\n", ((rise ? -6. : 6.) * HOUR_MS)));
1305
1306    RiseSetCoordFunc func;
1307    double t = riseOrSet(func,
1308                         rise,
1309                         .533 * DEG_RAD,        // Angular Diameter
1310                         34. /60.0 * DEG_RAD,    // Refraction correction
1311                         MINUTE_MS / 12.);       // Desired accuracy
1312
1313    setTime(t0);
1314    return t;
1315}
1316
1317// Commented out - currently unused. ICU 2.6, Alan
1318//    //-------------------------------------------------------------------------
1319//    // Alternate Sun Rise/Set
1320//    // See Duffett-Smith p.93
1321//    //-------------------------------------------------------------------------
1322//
1323//    // This yields worse results (as compared to USNO data) than getSunRiseSet().
1324//    /**
1325//     * TODO Make this when the entire class is package-private.
1326//     */
1327//    /*public*/ long getSunRiseSet2(boolean rise) {
1328//        // 1. Calculate coordinates of the sun's center for midnight
1329//        double jd = uprv_floor(getJulianDay() - 0.5) + 0.5;
1330//        double[] sl = getSunLongitude(jd);//        double lambda1 = sl[0];
1331//        Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
1332//
1333//        // 2. Add ... to lambda to get position 24 hours later
1334//        double lambda2 = lambda1 + 0.985647*DEG_RAD;
1335//        Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
1336//
1337//        // 3. Calculate LSTs of rising and setting for these two positions
1338//        double tanL = ::tan(fLatitude);
1339//        double H = ::acos(-tanL * ::tan(pos1.declination));
1340//        double lst1r = (CalendarAstronomer_PI2 + pos1.ascension - H) * 24 / CalendarAstronomer_PI2;
1341//        double lst1s = (pos1.ascension + H) * 24 / CalendarAstronomer_PI2;
1342//               H = ::acos(-tanL * ::tan(pos2.declination));
1343//        double lst2r = (CalendarAstronomer_PI2-H + pos2.ascension ) * 24 / CalendarAstronomer_PI2;
1344//        double lst2s = (H + pos2.ascension ) * 24 / CalendarAstronomer_PI2;
1345//        if (lst1r > 24) lst1r -= 24;
1346//        if (lst1s > 24) lst1s -= 24;
1347//        if (lst2r > 24) lst2r -= 24;
1348//        if (lst2s > 24) lst2s -= 24;
1349//
1350//        // 4. Convert LSTs to GSTs.  If GST1 > GST2, add 24 to GST2.
1351//        double gst1r = lstToGst(lst1r);
1352//        double gst1s = lstToGst(lst1s);
1353//        double gst2r = lstToGst(lst2r);
1354//        double gst2s = lstToGst(lst2s);
1355//        if (gst1r > gst2r) gst2r += 24;
1356//        if (gst1s > gst2s) gst2s += 24;
1357//
1358//        // 5. Calculate GST at 0h UT of this date
1359//        double t00 = utToGst(0);
1360//
1361//        // 6. Calculate GST at 0h on the observer's longitude
1362//        double offset = ::round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
1363//        double t00p = t00 - offset*1.002737909;
1364//        if (t00p < 0) t00p += 24; // do NOT normalize
1365//
1366//        // 7. Adjust
1367//        if (gst1r < t00p) {
1368//            gst1r += 24;
1369//            gst2r += 24;
1370//        }
1371//        if (gst1s < t00p) {
1372//            gst1s += 24;
1373//            gst2s += 24;
1374//        }
1375//
1376//        // 8.
1377//        double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
1378//        double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
1379//
1380//        // 9. Correct for parallax, refraction, and sun's diameter
1381//        double dec = (pos1.declination + pos2.declination) / 2;
1382//        double psi = ::acos(sin(fLatitude) / cos(dec));
1383//        double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
1384//        double y = ::asin(sin(x) / ::sin(psi)) * RAD_DEG;
1385//        double delta_t = 240 * y / cos(dec) / 3600; // hours
1386//
1387//        // 10. Add correction to GSTs, subtract from GSTr
1388//        gstr -= delta_t;
1389//        gsts += delta_t;
1390//
1391//        // 11. Convert GST to UT and then to local civil time
1392//        double ut = gstToUt(rise ? gstr : gsts);
1393//        //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
1394//        long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
1395//        return midnight + (long) (ut * 3600000);
1396//    }
1397
1398// Commented out - currently unused. ICU 2.6, Alan
1399//    /**
1400//     * Convert local sidereal time to Greenwich sidereal time.
1401//     * Section 15.  Duffett-Smith p.21
1402//     * @param lst in hours (0..24)
1403//     * @return GST in hours (0..24)
1404//     */
1405//    double lstToGst(double lst) {
1406//        double delta = fLongitude * 24 / CalendarAstronomer_PI2;
1407//        return normalize(lst - delta, 24);
1408//    }
1409
1410// Commented out - currently unused. ICU 2.6, Alan
1411//    /**
1412//     * Convert UT to GST on this date.
1413//     * Section 12.  Duffett-Smith p.17
1414//     * @param ut in hours
1415//     * @return GST in hours
1416//     */
1417//    double utToGst(double ut) {
1418//        return normalize(getT0() + ut*1.002737909, 24);
1419//    }
1420
1421// Commented out - currently unused. ICU 2.6, Alan
1422//    /**
1423//     * Convert GST to UT on this date.
1424//     * Section 13.  Duffett-Smith p.18
1425//     * @param gst in hours
1426//     * @return UT in hours
1427//     */
1428//    double gstToUt(double gst) {
1429//        return normalize(gst - getT0(), 24) * 0.9972695663;
1430//    }
1431
1432// Commented out - currently unused. ICU 2.6, Alan
1433//    double getT0() {
1434//        // Common computation for UT <=> GST
1435//
1436//        // Find JD for 0h UT
1437//        double jd = uprv_floor(getJulianDay() - 0.5) + 0.5;
1438//
1439//        double s = jd - 2451545.0;
1440//        double t = s / 36525.0;
1441//        double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
1442//        return t0;
1443//    }
1444
1445// Commented out - currently unused. ICU 2.6, Alan
1446//    //-------------------------------------------------------------------------
1447//    // Alternate Sun Rise/Set
1448//    // See sci.astro FAQ
1449//    // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
1450//    //-------------------------------------------------------------------------
1451//
1452//    // Note: This method appears to produce inferior accuracy as
1453//    // compared to getSunRiseSet().
1454//
1455//    /**
1456//     * TODO Make this when the entire class is package-private.
1457//     */
1458//    /*public*/ long getSunRiseSet3(boolean rise) {
1459//
1460//        // Compute day number for 0.0 Jan 2000 epoch
1461//        double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
1462//
1463//        // Now compute the Local Sidereal Time, LST:
1464//        //
1465//        double LST  =  98.9818  +  0.985647352 * d  +  /*UT*15  +  long*/
1466//            fLongitude*RAD_DEG;
1467//        //
1468//        // (east long. positive).  Note that LST is here expressed in degrees,
1469//        // where 15 degrees corresponds to one hour.  Since LST really is an angle,
1470//        // it's convenient to use one unit---degrees---throughout.
1471//
1472//        //    COMPUTING THE SUN'S POSITION
1473//        //    ----------------------------
1474//        //
1475//        // To be able to compute the Sun's rise/set times, you need to be able to
1476//        // compute the Sun's position at any time.  First compute the "day
1477//        // number" d as outlined above, for the desired moment.  Next compute:
1478//        //
1479//        double oblecl = 23.4393 - 3.563E-7 * d;
1480//        //
1481//        double w  =  282.9404  +  4.70935E-5   * d;
1482//        double M  =  356.0470  +  0.9856002585 * d;
1483//        double e  =  0.016709  -  1.151E-9     * d;
1484//        //
1485//        // This is the obliquity of the ecliptic, plus some of the elements of
1486//        // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
1487//        // argument of perihelion, M = mean anomaly, e = eccentricity.
1488//        // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
1489//        // true, this is still an accurate approximation).  Next compute E, the
1490//        // eccentric anomaly:
1491//        //
1492//        double E = M + e*(180/PI) * ::sin(M*DEG_RAD) * ( 1.0 + e*cos(M*DEG_RAD) );
1493//        //
1494//        // where E and M are in degrees.  This is it---no further iterations are
1495//        // needed because we know e has a sufficiently small value.  Next compute
1496//        // the true anomaly, v, and the distance, r:
1497//        //
1498//        /*      r * cos(v)  =  */ double A  =  cos(E*DEG_RAD) - e;
1499//        /*      r * ::sin(v)  =  */ double B  =  ::sqrt(1 - e*e) * ::sin(E*DEG_RAD);
1500//        //
1501//        // and
1502//        //
1503//        //      r  =  sqrt( A*A + B*B )
1504//        double v  =  ::atan2( B, A )*RAD_DEG;
1505//        //
1506//        // The Sun's true longitude, slon, can now be computed:
1507//        //
1508//        double slon  =  v + w;
1509//        //
1510//        // Since the Sun is always at the ecliptic (or at least very very close to
1511//        // it), we can use simplified formulae to convert slon (the Sun's ecliptic
1512//        // longitude) to sRA and sDec (the Sun's RA and Dec):
1513//        //
1514//        //                   ::sin(slon) * cos(oblecl)
1515//        //     tan(sRA)  =  -------------------------
1516//        //            cos(slon)
1517//        //
1518//        //     ::sin(sDec) =  ::sin(oblecl) * ::sin(slon)
1519//        //
1520//        // As was the case when computing az, the Azimuth, if possible use an
1521//        // atan2() function to compute sRA.
1522//
1523//        double sRA = ::atan2(sin(slon*DEG_RAD) * cos(oblecl*DEG_RAD), cos(slon*DEG_RAD))*RAD_DEG;
1524//
1525//        double sin_sDec = ::sin(oblecl*DEG_RAD) * ::sin(slon*DEG_RAD);
1526//        double sDec = ::asin(sin_sDec)*RAD_DEG;
1527//
1528//        //    COMPUTING RISE AND SET TIMES
1529//        //    ----------------------------
1530//        //
1531//        // To compute when an object rises or sets, you must compute when it
1532//        // passes the meridian and the HA of rise/set.  Then the rise time is
1533//        // the meridian time minus HA for rise/set, and the set time is the
1534//        // meridian time plus the HA for rise/set.
1535//        //
1536//        // To find the meridian time, compute the Local Sidereal Time at 0h local
1537//        // time (or 0h UT if you prefer to work in UT) as outlined above---name
1538//        // that quantity LST0.  The Meridian Time, MT, will now be:
1539//        //
1540//        //     MT  =  RA - LST0
1541//        double MT = normalize(sRA - LST, 360);
1542//        //
1543//        // where "RA" is the object's Right Ascension (in degrees!).  If negative,
1544//        // add 360 deg to MT.  If the object is the Sun, leave the time as it is,
1545//        // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
1546//        // sidereal to solar time.  Now, compute HA for rise/set, name that
1547//        // quantity HA0:
1548//        //
1549//        //                 ::sin(h0)  -  ::sin(lat) * ::sin(Dec)
1550//        // cos(HA0)  =  ---------------------------------
1551//        //                      cos(lat) * cos(Dec)
1552//        //
1553//        // where h0 is the altitude selected to represent rise/set.  For a purely
1554//        // mathematical horizon, set h0 = 0 and simplify to:
1555//        //
1556//        //    cos(HA0)  =  - tan(lat) * tan(Dec)
1557//        //
1558//        // If you want to account for refraction on the atmosphere, set h0 = -35/60
1559//        // degrees (-35 arc minutes), and if you want to compute the rise/set times
1560//        // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
1561//        //
1562//        double h0 = -50/60 * DEG_RAD;
1563//
1564//        double HA0 = ::acos(
1565//          (sin(h0) - ::sin(fLatitude) * sin_sDec) /
1566//          (cos(fLatitude) * cos(sDec*DEG_RAD)))*RAD_DEG;
1567//
1568//        // When HA0 has been computed, leave it as it is for the Sun but multiply
1569//        // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
1570//        // solar time.  Finally compute:
1571//        //
1572//        //    Rise time  =  MT - HA0
1573//        //    Set  time  =  MT + HA0
1574//        //
1575//        // convert the times from degrees to hours by dividing by 15.
1576//        //
1577//        // If you'd like to check that your calculations are accurate or just
1578//        // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
1579//        // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
1580//
1581//        double result = MT + (rise ? -HA0 : HA0); // in degrees
1582//
1583//        // Find UT midnight on this day
1584//        long midnight = DAY_MS * (time / DAY_MS);
1585//
1586//        return midnight + (long) (result * 3600000 / 15);
1587//    }
1588
1589//-------------------------------------------------------------------------
1590// The Moon
1591//-------------------------------------------------------------------------
1592
1593#define moonL0  (318.351648 * CalendarAstronomer::PI/180 )   // Mean long. at epoch
1594#define moonP0 ( 36.340410 * CalendarAstronomer::PI/180 )   // Mean long. of perigee
1595#define moonN0 ( 318.510107 * CalendarAstronomer::PI/180 )   // Mean long. of node
1596#define moonI  (   5.145366 * CalendarAstronomer::PI/180 )   // Inclination of orbit
1597#define moonE  (   0.054900 )            // Eccentricity of orbit
1598
1599// These aren't used right now
1600#define moonA  (   3.84401e5 )           // semi-major axis (km)
1601#define moonT0 (   0.5181 * CalendarAstronomer::PI/180 )     // Angular size at distance A
1602#define moonPi (   0.9507 * CalendarAstronomer::PI/180 )     // Parallax at distance A
1603
1604// new moon date/times 1900-2100 (in UTC)
1605// These are in UDate/10000.0 (i.e. in units of 10 seconds) to fit into 32 bits.
1606// sources from e.g.
1607// http://eclipse.gsfc.nasa.gov/phase/phases2001.html
1608// http://www.timeanddate.com/calendar/moonphases.html?year=1900&n=0
1609// From the latter: "The lunation number represents the number of times the Moon has
1610// cycled the Earth since January 1923 (based on a series described by Ernest W. Brown
1611// in _Planetary Theory_, 1933). One cycle, or lunation, starts at new moon and lasts
1612// until the next new moon."
1613// The mean synodic month (interval from one new moon to the next) is 29.530588853 days,
1614// but the deviation from the mean is significant and difficult to model. I tried based
1615// on the description in http://individual.utoronto.ca/kalendis/lunar/index.htm
1616// using the product of two sine waves (with periods of 109.65 days and 13.944 days and
1617// different phase shifts and amplitudes) but could not get anywhere near enough accuracy.
1618// Hence these tables. -Peter E
1619// These table are 9965 and 4974 bytes but greatly improve both the
1620// accuracy and speed of the relevant methods for the relevant time range.
1621// For getMoonTime:
1622// before fix, errors of up to +23 min / -18 min for next = true and much more for
1623// next = false; after, errors always less than 1 min).
1624// 40 to 80 times faster with the fix, depending on starting point.
1625// For getMoonAge:
1626// more accurate with the fix (and never returns values >= 2*PI), also more than 11 times faster.
1627static const int32_t newMoonDates[] = {
1628//  millis/10K     date                 lunation number
1629    -221149158, // 1899 Dec  3, 00:47    -285
1630    -220893888, // 1900 Jan  1, 13:52    -284
1631    -220639188, // 1900 Jan 31, 01:22    -283
1632    -220385010, // 1900 Mar  1, 11:25    -282
1633    -220131180, // 1900 Mar 30, 20:30    -281
1634    -219877422, // 1900 Apr 29, 05:23    -280
1635    -219623460, // 1900 May 28, 14:50    -279
1636    -219369078, // 1900 Jun 27, 01:27    -278
1637    -219114102, // 1900 Jul 26, 13:43    -277
1638    -218858442, // 1900 Aug 25, 03:53    -276
1639    -218602098, // 1900 Sep 23, 19:57    -275
1640    -218345238, // 1900 Oct 23, 13:27    -274
1641    -218088258, // 1900 Nov 22, 07:17    -273
1642    -217831674, // 1900 Dec 22, 00:01    -272
1643    -217575864, // 1901 Jan 20, 14:36    -271
1644    -217320930, // 1901 Feb 19, 02:45    -270
1645    -217066722, // 1901 Mar 20, 12:53    -269
1646    -216813018, // 1901 Apr 18, 21:37    -268
1647    -216559572, // 1901 May 18, 05:38    -267
1648    -216306162, // 1901 Jun 16, 13:33    -266
1649    -216052500, // 1901 Jul 15, 22:10    -265
1650    -215798238, // 1901 Aug 14, 08:27    -264
1651    -215543046, // 1901 Sep 12, 21:19    -263
1652    -215286768, // 1901 Oct 12, 13:12    -262
1653    -215029590, // 1901 Nov 11, 07:35    -261
1654    -214772076, // 1901 Dec 11, 02:54    -260
1655    -214514910, // 1902 Jan  9, 21:15    -259
1656    -214258554, // 1902 Feb  8, 13:21    -258
1657    -214003140, // 1902 Mar 10, 02:50    -257
1658    -213748620, // 1902 Apr  8, 13:50    -256
1659    -213494850, // 1902 May  7, 22:45    -255
1660    -213241614, // 1902 Jun  6, 06:11    -254
1661    -212988606, // 1902 Jul  5, 12:59    -253
1662    -212735418, // 1902 Aug  3, 20:17    -252
1663    -212481606, // 1902 Sep  2, 05:19    -251
1664    -212226786, // 1902 Oct  1, 17:09    -250
1665    -211970796, // 1902 Oct 31, 08:14    -249
1666    -211713810, // 1902 Nov 30, 02:05    -248
1667    -211456290, // 1902 Dec 29, 21:25    -247
1668    -211198806, // 1903 Jan 28, 16:39    -246
1669    -210941880, // 1903 Feb 27, 10:20    -245
1670    -210685884, // 1903 Mar 29, 01:26    -244
1671    -210430974, // 1903 Apr 27, 13:31    -243
1672    -210177060, // 1903 May 26, 22:50    -242
1673    -209923854, // 1903 Jun 25, 06:11    -241
1674    -209670924, // 1903 Jul 24, 12:46    -240
1675    -209417814, // 1903 Aug 22, 19:51    -239
1676    -209164140, // 1903 Sep 21, 04:30    -238
1677    -208909620, // 1903 Oct 20, 15:30    -237
1678    -208654140, // 1903 Nov 19, 05:10    -236
1679    -208397724, // 1903 Dec 18, 21:26    -235
1680    -208140558, // 1904 Jan 17, 15:47    -234
1681    -207883050, // 1904 Feb 16, 11:05    -233
1682    -207625806, // 1904 Mar 17, 05:39    -232
1683    -207369402, // 1904 Apr 15, 21:53    -231
1684    -207114132, // 1904 May 15, 10:58    -230
1685    -206859900, // 1904 Jun 13, 21:10    -229
1686    -206606358, // 1904 Jul 13, 05:27    -228
1687    -206353092, // 1904 Aug 11, 12:58    -227
1688    -206099742, // 1904 Sep  9, 20:43    -226
1689    -205846050, // 1904 Oct  9, 05:25    -225
1690    -205591818, // 1904 Nov  7, 15:37    -224
1691    -205336884, // 1904 Dec  7, 03:46    -223
1692    -205081098, // 1905 Jan  5, 18:17    -222
1693    -204824484, // 1905 Feb  4, 11:06    -221
1694    -204567366, // 1905 Mar  6, 05:19    -220
1695    -204310296, // 1905 Apr  4, 23:24    -219
1696    -204053820, // 1905 May  4, 15:50    -218
1697    -203798178, // 1905 Jun  3, 05:57    -217
1698    -203543340, // 1905 Jul  2, 17:50    -216
1699    -203289102, // 1905 Aug  1, 04:03    -215
1700    -203035242, // 1905 Aug 30, 13:13    -214
1701    -202781520, // 1905 Sep 28, 22:00    -213
1702    -202527732, // 1905 Oct 28, 06:58    -212
1703    -202273638, // 1905 Nov 26, 16:47    -211
1704    -202019016, // 1905 Dec 26, 04:04    -210
1705    -201763746, // 1906 Jan 24, 17:09    -209
1706    -201507858, // 1906 Feb 23, 07:57    -208
1707    -201251568, // 1906 Mar 24, 23:52    -207
1708    -200995158, // 1906 Apr 23, 16:07    -206
1709    -200738874, // 1906 May 23, 08:01    -205
1710    -200482884, // 1906 Jun 21, 23:06    -204
1711    -200227326, // 1906 Jul 21, 12:59    -203
1712    -199972272, // 1906 Aug 20, 01:28    -202
1713    -199717722, // 1906 Sep 18, 12:33    -201
1714    -199463502, // 1906 Oct 17, 22:43    -200
1715    -199209378, // 1906 Nov 16, 08:37    -199
1716    -198955116, // 1906 Dec 15, 18:54    -198
1717    -198700578, // 1907 Jan 14, 05:57    -197
1718    -198445782, // 1907 Feb 12, 17:43    -196
1719    -198190770, // 1907 Mar 14, 06:05    -195
1720    -197935524, // 1907 Apr 12, 19:06    -194
1721    -197679966, // 1907 May 12, 08:59    -193
1722    -197424060, // 1907 Jun 10, 23:50    -192
1723    -197167938, // 1907 Jul 10, 15:17    -191
1724    -196911858, // 1907 Aug  9, 06:37    -190
1725    -196656096, // 1907 Sep  7, 21:04    -189
1726    -196400754, // 1907 Oct  7, 10:21    -188
1727    -196145766, // 1907 Nov  5, 22:39    -187
1728    -195890982, // 1907 Dec  5, 10:23    -186
1729    -195636336, // 1908 Jan  3, 21:44    -185
1730    -195381864, // 1908 Feb  2, 08:36    -184
1731    -195127578, // 1908 Mar  2, 18:57    -183
1732    -194873388, // 1908 Apr  1, 05:02    -182
1733    -194619042, // 1908 Apr 30, 15:33    -181
1734    -194364276, // 1908 May 30, 03:14    -180
1735    -194108934, // 1908 Jun 28, 16:31    -179
1736    -193853058, // 1908 Jul 28, 07:17    -178
1737    -193596846, // 1908 Aug 26, 22:59    -177
1738    -193340526, // 1908 Sep 25, 14:59    -176
1739    -193084278, // 1908 Oct 25, 06:47    -175
1740    -192828282, // 1908 Nov 23, 21:53    -174
1741    -192572700, // 1908 Dec 23, 11:50    -173
1742    -192317688, // 1909 Jan 22, 00:12    -172
1743    -192063288, // 1909 Feb 20, 10:52    -171
1744    -191809374, // 1909 Mar 21, 20:11    -170
1745    -191555694, // 1909 Apr 20, 04:51    -169
1746    -191301948, // 1909 May 19, 13:42    -168
1747    -191047872, // 1909 Jun 17, 23:28    -167
1748    -190793256, // 1909 Jul 17, 10:44    -166
1749    -190537950, // 1909 Aug 15, 23:55    -165
1750    -190281906, // 1909 Sep 14, 15:09    -164
1751    -190025202, // 1909 Oct 14, 08:13    -163
1752    -189768132, // 1909 Nov 13, 02:18    -162
1753    -189511206, // 1909 Dec 12, 19:59    -161
1754    -189254934, // 1910 Jan 11, 11:51    -160
1755    -188999562, // 1910 Feb 10, 01:13    -159
1756    -188745048, // 1910 Mar 11, 12:12    -158
1757    -188491170, // 1910 Apr  9, 21:25    -157
1758    -188237688, // 1910 May  9, 05:32    -156
1759    -187984344, // 1910 Jun  7, 13:16    -155
1760    -187730880, // 1910 Jul  6, 21:20    -154
1761    -187476984, // 1910 Aug  5, 06:36    -153
1762    -187222290, // 1910 Sep  3, 18:05    -152
1763    -186966528, // 1910 Oct  3, 08:32    -151
1764    -186709704, // 1910 Nov  2, 01:56    -150
1765    -186452214, // 1910 Dec  1, 21:11    -149
1766    -186194754, // 1910 Dec 31, 16:21    -148
1767    -185937930, // 1911 Jan 30, 09:45    -147
1768    -185682054, // 1911 Mar  1, 00:31    -146
1769    -185427132, // 1911 Mar 30, 12:38    -145
1770    -185173050, // 1911 Apr 28, 22:25    -144
1771    -184919616, // 1911 May 28, 06:24    -143
1772    -184666566, // 1911 Jun 26, 13:19    -142
1773    -184413534, // 1911 Jul 25, 20:11    -141
1774    -184160076, // 1911 Aug 24, 04:14    -140
1775    -183905778, // 1911 Sep 22, 14:37    -139
1776    -183650346, // 1911 Oct 22, 04:09    -138
1777    -183393786, // 1911 Nov 20, 20:49    -137
1778    -183136440, // 1911 Dec 20, 15:40    -136
1779    -182878866, // 1912 Jan 19, 11:09    -135
1780    -182621616, // 1912 Feb 18, 05:44    -134
1781    -182365152, // 1912 Mar 18, 22:08    -133
1782    -182109720, // 1912 Apr 17, 11:40    -132
1783    -181855362, // 1912 May 16, 22:13    -131
1784    -181601862, // 1912 Jun 15, 06:23    -130
1785    -181348842, // 1912 Jul 14, 13:13    -129
1786    -181095858, // 1912 Aug 12, 19:57    -128
1787    -180842472, // 1912 Sep 11, 03:48    -127
1788    -180588360, // 1912 Oct 10, 13:40    -126
1789    -180333336, // 1912 Nov  9, 02:04    -125
1790    -180077364, // 1912 Dec  8, 17:06    -124
1791    -179820552, // 1913 Jan  7, 10:28    -123
1792    -179563194, // 1913 Feb  6, 05:21    -122
1793    -179305788, // 1913 Mar  8, 00:22    -121
1794    -179048952, // 1913 Apr  6, 17:48    -120
1795    -178793136, // 1913 May  6, 08:24    -119
1796    -178538418, // 1913 Jun  4, 19:57    -118
1797    -178284564, // 1913 Jul  4, 05:06    -117
1798    -178031172, // 1913 Aug  2, 12:58    -116
1799    -177777858, // 1913 Aug 31, 20:37    -115
1800    -177524304, // 1913 Sep 30, 04:56    -114
1801    -177270306, // 1913 Oct 29, 14:29    -113
1802    -177015714, // 1913 Nov 28, 01:41    -112
1803    -176760372, // 1913 Dec 27, 14:58    -111
1804    -176504196, // 1914 Jan 26, 06:34    -110
1805    -176247348, // 1914 Feb 25, 00:02    -109
1806    -175990266, // 1914 Mar 26, 18:09    -108
1807    -175733514, // 1914 Apr 25, 11:21    -107
1808    -175477476, // 1914 May 25, 02:34    -106
1809    -175222242, // 1914 Jun 23, 15:33    -105
1810    -174967692, // 1914 Jul 23, 02:38    -104
1811    -174713604, // 1914 Aug 21, 12:26    -103
1812    -174459762, // 1914 Sep 19, 21:33    -102
1813    -174205962, // 1914 Oct 19, 06:33    -101
1814    -173951988, // 1914 Nov 17, 16:02    -100
1815    -173697630, // 1914 Dec 17, 02:35     -99
1816    -173442708, // 1915 Jan 15, 14:42     -98
1817    -173187174, // 1915 Feb 14, 04:31     -97
1818    -172931148, // 1915 Mar 15, 19:42     -96
1819    -172674870, // 1915 Apr 14, 11:35     -95
1820    -172418574, // 1915 May 14, 03:31     -94
1821    -172162458, // 1915 Jun 12, 18:57     -93
1822    -171906660, // 1915 Jul 12, 09:30     -92
1823    -171651288, // 1915 Aug 10, 22:52     -91
1824    -171396408, // 1915 Sep  9, 10:52     -90
1825    -171141954, // 1915 Oct  8, 21:41     -89
1826    -170887728, // 1915 Nov  7, 07:52     -88
1827    -170633502, // 1915 Dec  6, 18:03     -87
1828    -170379090, // 1916 Jan  5, 04:45     -86
1829    -170124450, // 1916 Feb  3, 16:05     -85
1830    -169869612, // 1916 Mar  4, 03:58     -84
1831    -169614594, // 1916 Apr  2, 16:21     -83
1832    -169359306, // 1916 May  2, 05:29     -82
1833    -169103658, // 1916 May 31, 19:37     -81
1834    -168847662, // 1916 Jun 30, 10:43     -80
1835    -168591510, // 1916 Jul 30, 02:15     -79
1836    -168335490, // 1916 Aug 28, 17:25     -78
1837    -168079836, // 1916 Sep 27, 07:34     -77
1838    -167824578, // 1916 Oct 26, 20:37     -76
1839    -167569620, // 1916 Nov 25, 08:50     -75
1840    -167314854, // 1916 Dec 24, 20:31     -74
1841    -167060280, // 1917 Jan 23, 07:40     -73
1842    -166805946, // 1917 Feb 21, 18:09     -72
1843    -166551810, // 1917 Mar 23, 04:05     -71
1844    -166297674, // 1917 Apr 21, 14:01     -70
1845    -166043238, // 1917 May 21, 00:47     -69
1846    -165788268, // 1917 Jun 19, 13:02     -68
1847    -165532680, // 1917 Jul 19, 03:00     -67
1848    -165276594, // 1917 Aug 17, 18:21     -66
1849    -165020232, // 1917 Sep 16, 10:28     -65
1850    -164763834, // 1917 Oct 16, 02:41     -64
1851    -164507592, // 1917 Nov 14, 18:28     -63
1852    -164251698, // 1917 Dec 14, 09:17     -62
1853    -163996350, // 1918 Jan 12, 22:35     -61
1854    -163741656, // 1918 Feb 11, 10:04     -60
1855    -163487568, // 1918 Mar 12, 19:52     -59
1856    -163233876, // 1918 Apr 11, 04:34     -58
1857    -162980274, // 1918 May 10, 13:01     -57
1858    -162726462, // 1918 Jun  8, 22:03     -56
1859    -162472188, // 1918 Jul  8, 08:22     -55
1860    -162217266, // 1918 Aug  6, 20:29     -54
1861    -161961576, // 1918 Sep  5, 10:44     -53
1862    -161705130, // 1918 Oct  5, 03:05     -52
1863    -161448114, // 1918 Nov  3, 21:01     -51
1864    -161190966, // 1918 Dec  3, 15:19     -50
1865    -160934256, // 1919 Jan  2, 08:24     -49
1866    -160678398, // 1919 Jan 31, 23:07     -48
1867    -160423494, // 1919 Mar  2, 11:11     -47
1868    -160169370, // 1919 Mar 31, 21:05     -46
1869    -159915780, // 1919 Apr 30, 05:30     -45
1870    -159662448, // 1919 May 29, 13:12     -44
1871    -159409128, // 1919 Jun 27, 20:52     -43
1872    -159155514, // 1919 Jul 27, 05:21     -42
1873    -158901258, // 1919 Aug 25, 15:37     -41
1874    -158646036, // 1919 Sep 24, 04:34     -40
1875    -158389686, // 1919 Oct 23, 20:39     -39
1876    -158132400, // 1919 Nov 22, 15:20     -38
1877    -157874790, // 1919 Dec 22, 10:55     -37
1878    -157617558, // 1920 Jan 21, 05:27     -36
1879    -157361196, // 1920 Feb 19, 21:34     -35
1880    -157105824, // 1920 Mar 20, 10:56     -34
1881    -156851382, // 1920 Apr 18, 21:43     -33
1882    -156597690, // 1920 May 18, 06:25     -32
1883    -156344514, // 1920 Jun 16, 13:41     -31
1884    -156091530, // 1920 Jul 15, 20:25     -30
1885    -155838336, // 1920 Aug 14, 03:44     -29
1886    -155584494, // 1920 Sep 12, 12:51     -28
1887    -155329620, // 1920 Oct 12, 00:50     -27
1888    -155073570, // 1920 Nov 10, 16:05     -26
1889    -154816536, // 1920 Dec 10, 10:04     -25
1890    -154558998, // 1921 Jan  9, 05:27     -24
1891    -154301538, // 1921 Feb  8, 00:37     -23
1892    -154044666, // 1921 Mar  9, 18:09     -22
1893    -153788730, // 1921 Apr  8, 09:05     -21
1894    -153533874, // 1921 May  7, 21:01     -20
1895    -153279990, // 1921 Jun  6, 06:15     -19
1896    -153026784, // 1921 Jul  5, 13:36     -18
1897    -152773818, // 1921 Aug  3, 20:17     -17
1898    -152520642, // 1921 Sep  2, 03:33     -16
1899    -152266884, // 1921 Oct  1, 12:26     -15
1900    -152012292, // 1921 Oct 30, 23:38     -14
1901    -151756770, // 1921 Nov 29, 13:25     -13
1902    -151500366, // 1921 Dec 29, 05:39     -12
1903    -151243272, // 1922 Jan 27, 23:48     -11
1904    -150985878, // 1922 Feb 26, 18:47     -10
1905    -150728742, // 1922 Mar 28, 13:03      -9
1906    -150472416, // 1922 Apr 27, 05:04      -8
1907    -150217176, // 1922 May 26, 18:04      -7
1908    -149962920, // 1922 Jun 25, 04:20      -6
1909    -149709318, // 1922 Jul 24, 12:47      -5
1910    -149455956, // 1922 Aug 22, 20:34      -4
1911    -149202492, // 1922 Sep 21, 04:38      -3
1912    -148948680, // 1922 Oct 20, 13:40      -2
1913    -148694364, // 1922 Nov 19, 00:06      -1
1914    -148439400, // 1922 Dec 18, 12:20       0
1915    -148183674, // 1923 Jan 17, 02:41       1
1916    -147927198, // 1923 Feb 15, 19:07       2
1917    -147670254, // 1923 Mar 17, 12:51       3
1918    -147413352, // 1923 Apr 16, 06:28       4
1919    -147156972, // 1923 May 15, 22:38       5
1920    -146901348, // 1923 Jun 14, 12:42       6
1921    -146646450, // 1923 Jul 14, 00:45       7
1922    -146392098, // 1923 Aug 12, 11:17       8
1923    -146138088, // 1923 Sep 10, 20:52       9
1924    -145884210, // 1923 Oct 10, 06:05      10
1925    -145630278, // 1923 Nov  8, 15:27      11
1926    -145376100, // 1923 Dec  8, 01:30      12
1927    -145121478, // 1924 Jan  6, 12:47      13
1928    -144866292, // 1924 Feb  5, 01:38      14
1929    -144610578, // 1924 Mar  5, 15:57      15
1930    -144354498, // 1924 Apr  4, 07:17      16
1931    -144098280, // 1924 May  3, 23:00      17
1932    -143842116, // 1924 Jun  2, 14:34      18
1933    -143586150, // 1924 Jul  2, 05:35      19
1934    -143330508, // 1924 Jul 31, 19:42      20
1935    -143075298, // 1924 Aug 30, 08:37      21
1936    -142820544, // 1924 Sep 28, 20:16      22
1937    -142566138, // 1924 Oct 28, 06:57      23
1938    -142311864, // 1924 Nov 26, 17:16      24
1939    -142057524, // 1924 Dec 26, 03:46      25
1940    -141803010, // 1925 Jan 24, 14:45      26
1941    -141548328, // 1925 Feb 23, 02:12      27
1942    -141293502, // 1925 Mar 24, 14:03      28
1943    -141038472, // 1925 Apr 23, 02:28      29
1944    -140783112, // 1925 May 22, 15:48      30
1945    -140527338, // 1925 Jun 21, 06:17      31
1946    -140271240, // 1925 Jul 20, 21:40      32
1947    -140015070, // 1925 Aug 19, 13:15      33
1948    -139759122, // 1925 Sep 18, 04:13      34
1949    -139503564, // 1925 Oct 17, 18:06      35
1950    -139248372, // 1925 Nov 16, 06:58      36
1951    -138993450, // 1925 Dec 15, 19:05      37
1952    -138738750, // 1926 Jan 14, 06:35      38
1953    -138484320, // 1926 Feb 12, 17:20      39
1954    -138230160, // 1926 Mar 14, 03:20      40
1955    -137976144, // 1926 Apr 12, 12:56      41
1956    -137721990, // 1926 May 11, 22:55      42
1957    -137467392, // 1926 Jun 10, 10:08      43
1958    -137212164, // 1926 Jul  9, 23:06      44
1959    -136956306, // 1926 Aug  8, 13:49      45
1960    -136700010, // 1926 Sep  7, 05:45      46
1961    -136443522, // 1926 Oct  6, 22:13      47
1962    -136187076, // 1926 Nov  5, 14:34      48
1963    -135930888, // 1926 Dec  5, 06:12      49
1964    -135675192, // 1927 Jan  3, 20:28      50
1965    -135420156, // 1927 Feb  2, 08:54      51
1966    -135165816, // 1927 Mar  3, 19:24      52
1967    -134912016, // 1927 Apr  2, 04:24      53
1968    -134658486, // 1927 May  1, 12:39      54
1969    -134404890, // 1927 May 30, 21:05      55
1970    -134150934, // 1927 Jun 29, 06:31      56
1971    -133896384, // 1927 Jul 28, 17:36      57
1972    -133641090, // 1927 Aug 27, 06:45      58
1973    -133384974, // 1927 Sep 25, 22:11      59
1974    -133128138, // 1927 Oct 25, 15:37      60
1975    -132870906, // 1927 Nov 24, 10:09      61
1976    -132613842, // 1927 Dec 24, 04:13      62
1977    -132357486, // 1928 Jan 22, 20:19      63
1978    -132102114, // 1928 Feb 21, 09:41      64
1979    -131847666, // 1928 Mar 21, 20:29      65
1980    -131593890, // 1928 Apr 20, 05:25      66
1981    -131340516, // 1928 May 19, 13:14      67
1982    -131087268, // 1928 Jun 17, 20:42      68
1983    -130833870, // 1928 Jul 17, 04:35      69
1984    -130579992, // 1928 Aug 15, 13:48      70
1985    -130325280, // 1928 Sep 14, 01:20      71
1986    -130069464, // 1928 Oct 13, 15:56      72
1987    -129812550, // 1928 Nov 12, 09:35      73
1988    -129554964, // 1928 Dec 12, 05:06      74
1989    -129297432, // 1929 Jan 11, 00:28      75
1990    -129040590, // 1929 Feb  9, 17:55      76
1991    -128784738, // 1929 Mar 11, 08:37      77
1992    -128529882, // 1929 Apr  9, 20:33      78
1993    -128275872, // 1929 May  9, 06:08      79
1994    -128022498, // 1929 Jun  7, 13:57      80
1995    -127769478, // 1929 Jul  6, 20:47      81
1996    -127516440, // 1929 Aug  5, 03:40      82
1997    -127262958, // 1929 Sep  3, 11:47      83
1998    -127008606, // 1929 Oct  2, 22:19      84
1999    -126753114, // 1929 Nov  1, 12:01      85
2000    -126496512, // 1929 Dec  1, 04:48      86
2001    -126239148, // 1929 Dec 30, 23:42      87
2002    -125981598, // 1930 Jan 29, 19:07      88
2003    -125724402, // 1930 Feb 28, 13:33      89
2004    -125467998, // 1930 Mar 30, 05:47      90
2005    -125212626, // 1930 Apr 28, 19:09      91
2006    -124958298, // 1930 May 28, 05:37      92
2007    -124704798, // 1930 Jun 26, 13:47      93
2008    -124451748, // 1930 Jul 25, 20:42      94
2009    -124198698, // 1930 Aug 24, 03:37      95
2010    -123945234, // 1930 Sep 22, 11:41      96
2011    -123691038, // 1930 Oct 21, 21:47      97
2012    -123435954, // 1930 Nov 20, 10:21      98
2013    -123179976, // 1930 Dec 20, 01:24      99
2014    -122923230, // 1931 Jan 18, 18:35     100
2015    -122665980, // 1931 Feb 17, 13:10     101
2016    -122408700, // 1931 Mar 19, 07:50     102
2017    -122151960, // 1931 Apr 18, 01:00     103
2018    -121896192, // 1931 May 17, 15:28     104
2019    -121641468, // 1931 Jun 16, 03:02     105
2020    -121387560, // 1931 Jul 15, 12:20     106
2021    -121134078, // 1931 Aug 13, 20:27     107
2022    -120880644, // 1931 Sep 12, 04:26     108
2023    -120626964, // 1931 Oct 11, 13:06     109
2024    -120372870, // 1931 Nov  9, 22:55     110
2025    -120118224, // 1931 Dec  9, 10:16     111
2026    -119862906, // 1932 Jan  7, 23:29     112
2027    -119606850, // 1932 Feb  6, 14:45     113
2028    -119350176, // 1932 Mar  7, 07:44     114
2029    -119093274, // 1932 Apr  6, 01:21     115
2030    -118836654, // 1932 May  5, 18:11     116
2031    -118580664, // 1932 Jun  4, 09:16     117
2032    -118325400, // 1932 Jul  3, 22:20     118
2033    -118070748, // 1932 Aug  2, 09:42     119
2034    -117816510, // 1932 Aug 31, 19:55     120
2035    -117562500, // 1932 Sep 30, 05:30     121
2036    -117308544, // 1932 Oct 29, 14:56     122
2037    -117054462, // 1932 Nov 28, 00:43     123
2038    -116800068, // 1932 Dec 27, 11:22     124
2039    -116545200, // 1933 Jan 25, 23:20     125
2040    -116289816, // 1933 Feb 24, 12:44     126
2041    -116034000, // 1933 Mar 26, 03:20     127
2042    -115777932, // 1933 Apr 24, 18:38     128
2043    -115521798, // 1933 May 24, 10:07     129
2044    -115265748, // 1933 Jun 23, 01:22     130
2045    -115009902, // 1933 Jul 22, 16:03     131
2046    -114754392, // 1933 Aug 21, 05:48     132
2047    -114499314, // 1933 Sep 19, 18:21     133
2048    -114244650, // 1933 Oct 19, 05:45     134
2049    -113990256, // 1933 Nov 17, 16:24     135
2050    -113735922, // 1933 Dec 17, 02:53     136
2051    -113481498, // 1934 Jan 15, 13:37     137
2052    -113226936, // 1934 Feb 14, 00:44     138
2053    -112972266, // 1934 Mar 15, 12:09     139
2054    -112717458, // 1934 Apr 13, 23:57     140
2055    -112462380, // 1934 May 13, 12:30     141
2056    -112206894, // 1934 Jun 12, 02:11     142
2057    -111950964, // 1934 Jul 11, 17:06     143
2058    -111694764, // 1934 Aug 10, 08:46     144
2059    -111438600, // 1934 Sep  9, 00:20     145
2060    -111182730, // 1934 Oct  8, 15:05     146
2061    -110927262, // 1934 Nov  7, 04:43     147
2062    -110672130, // 1934 Dec  6, 17:25     148
2063    -110417280, // 1935 Jan  5, 05:20     149
2064    -110162718, // 1935 Feb  3, 16:27     150
2065    -109908480, // 1935 Mar  5, 02:40     151
2066    -109654494, // 1935 Apr  3, 12:11     152
2067    -109400538, // 1935 May  2, 21:37     153
2068    -109146288, // 1935 Jun  1, 07:52     154
2069    -108891456, // 1935 Jun 30, 19:44     155
2070    -108635928, // 1935 Jul 30, 09:32     156
2071    -108379794, // 1935 Aug 29, 01:01     157
2072    -108123300, // 1935 Sep 27, 17:30     158
2073    -107866710, // 1935 Oct 27, 10:15     159
2074    -107610264, // 1935 Nov 26, 02:36     160
2075    -107354226, // 1935 Dec 25, 17:49     161
2076    -107098812, // 1936 Jan 24, 07:18     162
2077    -106844148, // 1936 Feb 22, 18:42     163
2078    -106590162, // 1936 Mar 23, 04:13     164
2079    -106336602, // 1936 Apr 21, 12:33     165
2080    -106083150, // 1936 May 20, 20:35     166
2081    -105829476, // 1936 Jun 19, 05:14     167
2082    -105575292, // 1936 Jul 18, 15:18     168
2083    -105320394, // 1936 Aug 17, 03:21     169
2084    -105064674, // 1936 Sep 15, 17:41     170
2085    -104808114, // 1936 Oct 15, 10:21     171
2086    -104550948, // 1936 Nov 14, 04:42     172
2087    -104293650, // 1936 Dec 13, 23:25     173
2088    -104036838, // 1937 Jan 12, 16:47     174
2089    -103780956, // 1937 Feb 11, 07:34     175
2090    -103526094, // 1937 Mar 12, 19:31     176
2091    -103272060, // 1937 Apr 11, 05:10     177
2092    -103018572, // 1937 May 10, 13:18     178
2093    -102765342, // 1937 Jun  8, 20:43     179
2094    -102512082, // 1937 Jul  8, 04:13     180
2095    -102258498, // 1937 Aug  6, 12:37     181
2096    -102004242, // 1937 Sep  4, 22:53     182
2097    -101748972, // 1937 Oct  4, 11:58     183
2098    -101492544, // 1937 Nov  3, 04:16     184
2099    -101235174, // 1937 Dec  2, 23:11     185
2100    -100977486, // 1938 Jan  1, 18:59     186
2101    -100720230, // 1938 Jan 31, 13:35     187
2102    -100463880, // 1938 Mar  2, 05:40     188
2103    -100208568, // 1938 Mar 31, 18:52     189
2104     -99954192, // 1938 Apr 30, 05:28     190
2105     -99700560, // 1938 May 29, 14:00     191
2106     -99447420, // 1938 Jun 27, 21:10     192
2107     -99194442, // 1938 Jul 27, 03:53     193
2108     -98941218, // 1938 Aug 25, 11:17     194
2109     -98687322, // 1938 Sep 23, 20:33     195
2110     -98432388, // 1938 Oct 23, 08:42     196
2111     -98176290, // 1938 Nov 22, 00:05     197
2112     -97919238, // 1938 Dec 21, 18:07     198
2113     -97661718, // 1939 Jan 20, 13:27     199
2114     -97404312, // 1939 Feb 19, 08:28     200
2115     -97147506, // 1939 Mar 21, 01:49     201
2116     -96891630, // 1939 Apr 19, 16:35     202
2117     -96636810, // 1939 May 19, 04:25     203
2118     -96382938, // 1939 Jun 17, 13:37     204
2119     -96129702, // 1939 Jul 16, 21:03     205
2120     -95876682, // 1939 Aug 15, 03:53     206
2121     -95623428, // 1939 Sep 13, 11:22     207
2122     -95369580, // 1939 Oct 12, 20:30     208
2123     -95114916, // 1939 Nov 11, 07:54     209
2124     -94859370, // 1939 Dec 10, 21:45     210
2125     -94603002, // 1940 Jan  9, 13:53     211
2126     -94346010, // 1940 Feb  8, 07:45     212
2127     -94088742, // 1940 Mar  9, 02:23     213
2128     -93831732, // 1940 Apr  7, 20:18     214
2129     -93575478, // 1940 May  7, 12:07     215
2130     -93320250, // 1940 Jun  6, 01:05     216
2131     -93065952, // 1940 Jul  5, 11:28     217
2132     -92812266, // 1940 Aug  3, 20:09     218
2133     -92558790, // 1940 Sep  2, 04:15     219
2134     -92305194, // 1940 Oct  1, 12:41     220
2135     -92051262, // 1940 Oct 30, 22:03     221
2136     -91796868, // 1940 Nov 29, 08:42     222
2137     -91541904, // 1940 Dec 28, 20:56     223
2138     -91286262, // 1941 Jan 27, 11:03     224
2139     -91029948, // 1941 Feb 26, 03:02     225
2140     -90773196, // 1941 Mar 27, 20:14     226
2141     -90516456, // 1941 Apr 26, 13:24     227
2142     -90260172, // 1941 May 26, 05:18     228
2143     -90004548, // 1941 Jun 24, 19:22     229
2144     -89749566, // 1941 Jul 24, 07:39     230
2145     -89495076, // 1941 Aug 22, 18:34     231
2146     -89240886, // 1941 Sep 21, 04:39     232
2147     -88986840, // 1941 Oct 20, 14:20     233
2148     -88732776, // 1941 Nov 19, 00:04     234
2149     -88478532, // 1941 Dec 18, 10:18     235
2150     -88223928, // 1942 Jan 16, 21:32     236
2151     -87968862, // 1942 Feb 15, 10:03     237
2152     -87713340, // 1942 Mar 16, 23:50     238
2153     -87457482, // 1942 Apr 15, 14:33     239
2154     -87201450, // 1942 May 15, 05:45     240
2155     -86945388, // 1942 Jun 13, 21:02     241
2156     -86689422, // 1942 Jul 13, 12:03     242
2157     -86433672, // 1942 Aug 12, 02:28     243
2158     -86178282, // 1942 Sep 10, 15:53     244
2159     -85923324, // 1942 Oct 10, 04:06     245
2160     -85668726, // 1942 Nov  8, 15:19     246
2161     -85414320, // 1942 Dec  8, 02:00     247
2162     -85159932, // 1943 Jan  6, 12:38     248
2163     -84905466, // 1943 Feb  4, 23:29     249
2164     -84650916, // 1943 Mar  6, 10:34     250
2165     -84396282, // 1943 Apr  4, 21:53     251
2166     -84141462, // 1943 May  4, 09:43     252
2167     -83886282, // 1943 Jun  2, 22:33     253
2168     -83630616, // 1943 Jul  2, 12:44     254
2169     -83374524, // 1943 Aug  1, 04:06     255
2170     -83118240, // 1943 Aug 30, 20:00     256
2171     -82862106, // 1943 Sep 29, 11:29     257
2172     -82606326, // 1943 Oct 29, 01:59     258
2173     -82350942, // 1943 Nov 27, 15:23     259
2174     -82095900, // 1943 Dec 27, 03:50     260
2175     -81841176, // 1944 Jan 25, 15:24     261
2176     -81586806, // 1944 Feb 24, 01:59     262
2177     -81332784, // 1944 Mar 24, 11:36     263
2178     -81078936, // 1944 Apr 22, 20:44     264
2179     -80824962, // 1944 May 22, 06:13     265
2180     -80570520, // 1944 Jun 20, 17:00     266
2181     -80315388, // 1944 Jul 20, 05:42     267
2182     -80059530, // 1944 Aug 18, 20:25     268
2183     -79803138, // 1944 Sep 17, 12:37     269
2184     -79546470, // 1944 Oct 17, 05:35     270
2185     -79289826, // 1944 Nov 15, 22:29     271
2186     -79033470, // 1944 Dec 15, 14:35     272
2187     -78777678, // 1945 Jan 14, 05:07     273
2188     -78522642, // 1945 Feb 12, 17:33     274
2189     -78268374, // 1945 Mar 14, 03:51     275
2190     -78014700, // 1945 Apr 12, 12:30     276
2191     -77761308, // 1945 May 11, 20:22     277
2192     -77507844, // 1945 Jun 10, 04:26     278
2193     -77253990, // 1945 Jul  9, 13:35     279
2194     -76999488, // 1945 Aug  8, 00:32     280
2195     -76744176, // 1945 Sep  6, 13:44     281
2196     -76487988, // 1945 Oct  6, 05:22     282
2197     -76231020, // 1945 Nov  4, 23:10     283
2198     -75973638, // 1945 Dec  4, 18:07     284
2199     -75716460, // 1946 Jan  3, 12:30     285
2200     -75460062, // 1946 Feb  2, 04:43     286
2201     -75204714, // 1946 Mar  3, 18:01     287
2202     -74950338, // 1946 Apr  2, 04:37     288
2203     -74696664, // 1946 May  1, 13:16     289
2204     -74443386, // 1946 May 30, 20:49     290
2205     -74190204, // 1946 Jun 29, 04:06     291
2206     -73936842, // 1946 Jul 28, 11:53     292
2207     -73682958, // 1946 Aug 26, 21:07     293
2208     -73428210, // 1946 Sep 25, 08:45     294
2209     -73172328, // 1946 Oct 24, 23:32     295
2210     -72915336, // 1946 Nov 23, 17:24     296
2211     -72657684, // 1946 Dec 23, 13:06     297
2212     -72400116, // 1947 Jan 22, 08:34     298
2213     -72143280, // 1947 Feb 21, 02:00     299
2214     -71887476, // 1947 Mar 22, 16:34     300
2215     -71632686, // 1947 Apr 21, 04:19     301
2216     -71378736, // 1947 May 20, 13:44     302
2217     -71125404, // 1947 Jun 18, 21:26     303
2218     -70872390, // 1947 Jul 18, 04:15     304
2219     -70619328, // 1947 Aug 16, 11:12     305
2220     -70365792, // 1947 Sep 14, 19:28     306
2221     -70111380, // 1947 Oct 14, 06:10     307
2222     -69855834, // 1947 Nov 12, 20:01     308
2223     -69599202, // 1947 Dec 12, 12:53     309
2224     -69341850, // 1948 Jan 11, 07:45     310
2225     -69084348, // 1948 Feb 10, 03:02     311
2226     -68827230, // 1948 Mar 10, 21:15     312
2227     -68570898, // 1948 Apr  9, 13:17     313
2228     -68315580, // 1948 May  9, 02:30     314
2229     -68061264, // 1948 Jun  7, 12:56     315
2230     -67807746, // 1948 Jul  6, 21:09     316
2231     -67554642, // 1948 Aug  5, 04:13     317
2232     -67301514, // 1948 Sep  3, 11:21     318
2233     -67047948, // 1948 Oct  2, 19:42     319
2234     -66793662, // 1948 Nov  1, 06:03     320
2235     -66538530, // 1948 Nov 30, 18:45     321
2236     -66282570, // 1948 Dec 30, 09:45     322
2237     -66025908, // 1949 Jan 29, 02:42     323
2238     -65768790, // 1949 Feb 27, 20:55     324
2239     -65511654, // 1949 Mar 29, 15:11     325
2240     -65255028, // 1949 Apr 28, 08:02     326
2241     -64999296, // 1949 May 27, 22:24     327
2242     -64744548, // 1949 Jun 26, 10:02     328
2243     -64490562, // 1949 Jul 25, 19:33     329
2244     -64236966, // 1949 Aug 24, 03:59     330
2245     -63983394, // 1949 Sep 22, 12:21     331
2246     -63729582, // 1949 Oct 21, 21:23     332
2247     -63475386, // 1949 Nov 20, 07:29     333
2248     -63220704, // 1949 Dec 19, 18:56     334
2249     -62965440, // 1950 Jan 18, 08:00     335
2250     -62709522, // 1950 Feb 16, 22:53     336
2251     -62453040, // 1950 Mar 18, 15:20     337
2252     -62196330, // 1950 Apr 17, 08:25     338
2253     -61939830, // 1950 May 17, 00:55     339
2254     -61683882, // 1950 Jun 15, 15:53     340
2255     -61428564, // 1950 Jul 15, 05:06     341
2256     -61173792, // 1950 Aug 13, 16:48     342
2257     -60919386, // 1950 Sep 12, 03:29     343
2258     -60665202, // 1950 Oct 11, 13:33     344
2259     -60411090, // 1950 Nov  9, 23:25     345
2260     -60156906, // 1950 Dec  9, 09:29     346
2261     -59902500, // 1951 Jan  7, 20:10     347
2262     -59647716, // 1951 Feb  6, 07:54     348
2263     -59392494, // 1951 Mar  7, 20:51     349
2264     -59136888, // 1951 Apr  6, 10:52     350
2265     -58881024, // 1951 May  6, 01:36     351
2266     -58625040, // 1951 Jun  4, 16:40     352
2267     -58369032, // 1951 Jul  4, 07:48     353
2268     -58113126, // 1951 Aug  2, 22:39     354
2269     -57857460, // 1951 Sep  1, 12:50     355
2270     -57602178, // 1951 Oct  1, 01:57     356
2271     -57347316, // 1951 Oct 30, 13:54     357
2272     -57092760, // 1951 Nov 29, 01:00     358
2273     -56838342, // 1951 Dec 28, 11:43     359
2274     -56583924, // 1952 Jan 26, 22:26     360
2275     -56329464, // 1952 Feb 25, 09:16     361
2276     -56074962, // 1952 Mar 25, 20:13     362
2277     -55820352, // 1952 Apr 24, 07:28     363
2278     -55565472, // 1952 May 23, 19:28     364
2279     -55310130, // 1952 Jun 22, 08:45     365
2280     -55054254, // 1952 Jul 21, 23:31     366
2281     -54797994, // 1952 Aug 20, 15:21     367
2282     -54541668, // 1952 Sep 19, 07:22     368
2283     -54285582, // 1952 Oct 18, 22:43     369
2284     -54029904, // 1952 Nov 17, 12:56     370
2285     -53774628, // 1952 Dec 17, 02:02     371
2286     -53519712, // 1953 Jan 15, 14:08     372
2287     -53265180, // 1953 Feb 14, 01:10     373
2288     -53011050, // 1953 Mar 15, 11:05     374
2289     -52757226, // 1953 Apr 13, 20:09     375
2290     -52503444, // 1953 May 13, 05:06     376
2291     -52249350, // 1953 Jun 11, 14:55     377
2292     -51994632, // 1953 Jul 11, 02:28     378
2293     -51739140, // 1953 Aug  9, 16:10     379
2294     -51482952, // 1953 Sep  8, 07:48     380
2295     -51226314, // 1953 Oct  8, 00:41     381
2296     -50969532, // 1953 Nov  6, 17:58     382
2297     -50712912, // 1953 Dec  6, 10:48     383
2298     -50456754, // 1954 Jan  5, 02:21     384
2299     -50201310, // 1954 Feb  3, 15:55     385
2300     -49946694, // 1954 Mar  5, 03:11     386
2301     -49692810, // 1954 Apr  3, 12:25     387
2302     -49439382, // 1954 May  2, 20:23     388
2303     -49186062, // 1954 Jun  1, 04:03     389
2304     -48932484, // 1954 Jun 30, 12:26     390
2305     -48678360, // 1954 Jul 29, 22:20     391
2306     -48423474, // 1954 Aug 28, 10:21     392
2307     -48167694, // 1954 Sep 27, 00:51     393
2308     -47911038, // 1954 Oct 26, 17:47     394
2309     -47653734, // 1954 Nov 25, 12:31     395
2310     -47396316, // 1954 Dec 25, 07:34     396
2311     -47139438, // 1955 Jan 24, 01:07     397
2312     -46883556, // 1955 Feb 22, 15:54     398
2313     -46628748, // 1955 Mar 24, 03:42     399
2314     -46374804, // 1955 Apr 22, 13:06     400
2315     -46121406, // 1955 May 21, 20:59     401
2316     -45868248, // 1955 Jun 20, 04:12     402
2317     -45615036, // 1955 Jul 19, 11:34     403
2318     -45361452, // 1955 Aug 17, 19:58     404
2319     -45107166, // 1955 Sep 16, 06:19     405
2320     -44851848, // 1955 Oct 15, 19:32     406
2321     -44595348, // 1955 Nov 14, 12:02     407
2322     -44337918, // 1955 Dec 14, 07:07     408
2323     -44080194, // 1956 Jan 13, 03:01     409
2324     -43822932, // 1956 Feb 11, 21:38     410
2325     -43566618, // 1956 Mar 12, 13:37     411
2326     -43311366, // 1956 Apr 11, 02:39     412
2327     -43057056, // 1956 May 10, 13:04     413
2328     -42803466, // 1956 Jun  8, 21:29     414
2329     -42550332, // 1956 Jul  8, 04:38     415
2330     -42297330, // 1956 Aug  6, 11:25     416
2331     -42044058, // 1956 Sep  4, 18:57     417
2332     -41790090, // 1956 Oct  4, 04:25     418
2333     -41535096, // 1956 Nov  2, 16:44     419
2334     -41278962, // 1956 Dec  2, 08:13     420
2335     -41021916, // 1957 Jan  1, 02:14     421
2336     -40764450, // 1957 Jan 30, 21:25     422
2337     -40507122, // 1957 Mar  1, 16:13     423
2338     -40250406, // 1957 Mar 31, 09:19     424
2339     -39994596, // 1957 Apr 29, 23:54     425
2340     -39739806, // 1957 May 29, 11:39     426
2341     -39485916, // 1957 Jun 27, 20:54     427
2342     -39232632, // 1957 Jul 27, 04:28     428
2343     -38979522, // 1957 Aug 25, 11:33     429
2344     -38726166, // 1957 Sep 23, 19:19     430
2345     -38472222, // 1957 Oct 23, 04:43     431
2346     -38217486, // 1957 Nov 21, 16:19     432
2347     -37961928, // 1957 Dec 21, 06:12     433
2348     -37705632, // 1958 Jan 19, 22:08     434
2349     -37448772, // 1958 Feb 18, 15:38     435
2350     -37191660, // 1958 Mar 20, 09:50     436
2351     -36934782, // 1958 Apr 19, 03:23     437
2352     -36678600, // 1958 May 18, 19:00     438
2353     -36423366, // 1958 Jun 17, 07:59     439
2354     -36169002, // 1958 Jul 16, 18:33     440
2355     -35915202, // 1958 Aug 15, 03:33     441
2356     -35661588, // 1958 Sep 13, 12:02     442
2357     -35407848, // 1958 Oct 12, 20:52     443
2358     -35153796, // 1958 Nov 11, 06:34     444
2359     -34899342, // 1958 Dec 10, 17:23     445
2360     -34644396, // 1959 Jan  9, 05:34     446
2361     -34388868, // 1959 Feb  7, 19:22     447
2362     -34132734, // 1959 Mar  9, 10:51     448
2363     -33876186, // 1959 Apr  8, 03:29     449
2364     -33619608, // 1959 May  7, 20:12     450
2365     -33363402, // 1959 Jun  6, 11:53     451
2366     -33107760, // 1959 Jul  6, 02:00     452
2367     -32852676, // 1959 Aug  4, 14:34     453
2368     -32598030, // 1959 Sep  3, 01:55     454
2369     -32343654, // 1959 Oct  2, 12:31     455
2370     -32089434, // 1959 Oct 31, 22:41     456
2371     -31835244, // 1959 Nov 30, 08:46     457
2372     -31580946, // 1959 Dec 29, 19:09     458
2373     -31326390, // 1960 Jan 28, 06:15     459
2374     -31071462, // 1960 Feb 26, 18:23     460
2375     -30816138, // 1960 Mar 27, 07:37     461
2376     -30560496, // 1960 Apr 25, 21:44     462
2377     -30304644, // 1960 May 25, 12:26     463
2378     -30048678, // 1960 Jun 24, 03:27     464
2379     -29792694, // 1960 Jul 23, 18:31     465
2380     -29536830, // 1960 Aug 22, 09:15     466
2381     -29281242, // 1960 Sep 20, 23:13     467
2382     -29026068, // 1960 Oct 20, 12:02     468
2383     -28771284, // 1960 Nov 18, 23:46     469
2384     -28516758, // 1960 Dec 18, 10:47     470
2385     -28262340, // 1961 Jan 16, 21:30     471
2386     -28007940, // 1961 Feb 15, 08:10     472
2387     -27753534, // 1961 Mar 16, 18:51     473
2388     -27499092, // 1961 Apr 15, 05:38     474
2389     -27244476, // 1961 May 14, 16:54     475
2390     -26989464, // 1961 Jun 13, 05:16     476
2391     -26733894, // 1961 Jul 12, 19:11     477
2392     -26477784, // 1961 Aug 11, 10:36     478
2393     -26221380, // 1961 Sep 10, 02:50     479
2394     -25965042, // 1961 Oct  9, 18:53     480
2395     -25709052, // 1961 Nov  8, 09:58     481
2396     -25453488, // 1961 Dec  7, 23:52     482
2397     -25198350, // 1962 Jan  6, 12:35     483
2398     -24943620, // 1962 Feb  5, 00:10     484
2399     -24689334, // 1962 Mar  6, 10:31     485
2400     -24435450, // 1962 Apr  4, 19:45     486
2401     -24181770, // 1962 May  4, 04:25     487
2402     -23927958, // 1962 Jun  2, 13:27     488
2403     -23673648, // 1962 Jul  1, 23:52     489
2404     -23418576, // 1962 Jul 31, 12:24     490
2405     -23162706, // 1962 Aug 30, 03:09     491
2406     -22906206, // 1962 Sep 28, 19:39     492
2407     -22649370, // 1962 Oct 28, 13:05     493
2408     -22392546, // 1962 Nov 27, 06:29     494
2409     -22136046, // 1962 Dec 26, 22:59     495
2410     -21880188, // 1963 Jan 25, 13:42     496
2411     -21625164, // 1963 Feb 24, 02:06     497
2412     -21370986, // 1963 Mar 25, 12:09     498
2413     -21117432, // 1963 Apr 23, 20:28     499
2414     -20864160, // 1963 May 23, 04:00     500
2415     -20610804, // 1963 Jun 21, 11:46     501
2416     -20357022, // 1963 Jul 20, 20:43     502
2417     -20102556, // 1963 Aug 19, 07:34     503
2418     -19847214, // 1963 Sep 17, 20:51     504
2419     -19590942, // 1963 Oct 17, 12:43     505
2420     -19333860, // 1963 Nov 16, 06:50     506
2421     -19076364, // 1963 Dec 16, 02:06     507
2422     -18819096, // 1964 Jan 14, 20:44     508
2423     -18562674, // 1964 Feb 13, 13:01     509
2424     -18307356, // 1964 Mar 14, 02:14     510
2425     -18053052, // 1964 Apr 12, 12:38     511
2426     -17799468, // 1964 May 11, 21:02     512
2427     -17546268, // 1964 Jun 10, 04:22     513
2428     -17293134, // 1964 Jul  9, 11:31     514
2429     -17039778, // 1964 Aug  7, 19:17     515
2430     -16785876, // 1964 Sep  6, 04:34     516
2431     -16531080, // 1964 Oct  5, 16:20     517
2432     -16275144, // 1964 Nov  4, 07:16     518
2433     -16018092, // 1964 Dec  4, 01:18     519
2434     -15760398, // 1965 Jan  2, 21:07     520
2435     -15502824, // 1965 Feb  1, 16:36     521
2436     -15246024, // 1965 Mar  3, 09:56     522
2437     -14990274, // 1965 Apr  2, 00:21     523
2438     -14735544, // 1965 May  1, 11:56     524
2439     -14481642, // 1965 May 30, 21:13     525
2440     -14228322, // 1965 Jun 29, 04:53     526
2441     -13975290, // 1965 Jul 28, 11:45     527
2442     -13722174, // 1965 Aug 26, 18:51     528
2443     -13468572, // 1965 Sep 25, 03:18     529
2444     -13214088, // 1965 Oct 24, 14:12     530
2445     -12958500, // 1965 Nov 23, 04:10     531
2446     -12701862, // 1965 Dec 22, 21:03     532
2447     -12444558, // 1966 Jan 21, 15:47     533
2448     -12187146, // 1966 Feb 20, 10:49     534
2449     -11930124, // 1966 Mar 22, 04:46     535
2450     -11673870, // 1966 Apr 20, 20:35     536
2451     -11418582, // 1966 May 20, 09:43     537
2452     -11164266, // 1966 Jun 18, 20:09     538
2453     -10910700, // 1966 Jul 18, 04:30     539
2454     -10657512, // 1966 Aug 16, 11:48     540
2455     -10404282, // 1966 Sep 14, 19:13     541
2456     -10150608, // 1966 Oct 14, 03:52     542
2457      -9896238, // 1966 Nov 12, 14:27     543
2458      -9641076, // 1966 Dec 12, 03:14     544
2459      -9385164, // 1967 Jan 10, 18:06     545
2460      -9128616, // 1967 Feb  9, 10:44     546
2461      -8871660, // 1967 Mar 11, 04:30     547
2462      -8614680, // 1967 Apr  9, 22:20     548
2463      -8358150, // 1967 May  9, 14:55     549
2464      -8102436, // 1967 Jun  8, 05:14     550
2465      -7847640, // 1967 Jul  7, 17:00     551
2466      -7593552, // 1967 Aug  6, 02:48     552
2467      -7339818, // 1967 Sep  4, 11:37     553
2468      -7086096, // 1967 Oct  3, 20:24     554
2469      -6832152, // 1967 Nov  2, 05:48     555
2470      -6577860, // 1967 Dec  1, 16:10     556
2471      -6323166, // 1967 Dec 31, 03:39     557
2472      -6067980, // 1968 Jan 29, 16:30     558
2473      -5812224, // 1968 Feb 28, 06:56     559
2474      -5555952, // 1968 Mar 28, 22:48     560
2475      -5299434, // 1968 Apr 27, 15:21     561
2476      -5043060, // 1968 May 27, 07:30     562
2477      -4787130, // 1968 Jun 25, 22:25     563
2478      -4531740, // 1968 Jul 25, 11:50     564
2479      -4276818, // 1968 Aug 23, 23:57     565
2480      -4022232, // 1968 Sep 22, 11:08     566
2481      -3767856, // 1968 Oct 21, 21:44     567
2482      -3513588, // 1968 Nov 20, 08:02     568
2483      -3259326, // 1968 Dec 19, 18:19     569
2484      -3004926, // 1969 Jan 18, 04:59     570
2485      -2750250, // 1969 Feb 16, 16:25     571
2486      -2495208, // 1969 Mar 18, 04:52     572
2487      -2239824, // 1969 Apr 16, 18:16     573
2488      -1984164, // 1969 May 16, 08:26     574
2489      -1728306, // 1969 Jun 14, 23:09     575
2490      -1472328, // 1969 Jul 14, 14:12     576
2491      -1216338, // 1969 Aug 13, 05:17     577
2492       -960504, // 1969 Sep 11, 19:56     578
2493       -705006, // 1969 Oct 11, 09:39     579
2494       -449934, // 1969 Nov  9, 22:11     580
2495       -195228, // 1969 Dec  9, 09:42     581
2496         59250, // 1970 Jan  7, 20:35     582
2497        313638, // 1970 Feb  6, 07:13     583
2498        567978, // 1970 Mar  7, 17:43     584
2499        822300, // 1970 Apr  6, 04:10     585
2500       1076706, // 1970 May  5, 14:51     586
2501       1331406, // 1970 Jun  4, 02:21     587
2502       1586628, // 1970 Jul  3, 15:18     588
2503       1842468, // 1970 Aug  2, 05:58     589
2504       2098812, // 1970 Aug 31, 22:02     590
2505       2355312, // 1970 Sep 30, 14:32     591
2506       2611608, // 1970 Oct 30, 06:28     592
2507       2867484, // 1970 Nov 28, 21:14     593
2508       3122892, // 1970 Dec 28, 10:42     594
2509       3377850, // 1971 Jan 26, 22:55     595
2510       3632328, // 1971 Feb 25, 09:48     596
2511       3886338, // 1971 Mar 26, 19:23     597
2512       4140012, // 1971 Apr 25, 04:02     598
2513       4393632, // 1971 May 24, 12:32     599
2514       4647582, // 1971 Jun 22, 21:57     600
2515       4902210, // 1971 Jul 22, 09:15     601
2516       5157678, // 1971 Aug 20, 22:53     602
2517       5413938, // 1971 Sep 19, 14:43     603
2518       5670714, // 1971 Oct 19, 07:59     604
2519       5927676, // 1971 Nov 18, 01:46     605
2520       6184458, // 1971 Dec 17, 19:03     606
2521       6440712, // 1972 Jan 16, 10:52     607
2522       6696174, // 1972 Feb 15, 00:29     608
2523       6950730, // 1972 Mar 15, 11:35     609
2524       7204506, // 1972 Apr 13, 20:31     610
2525       7457808, // 1972 May 13, 04:08     611
2526       7711020, // 1972 Jun 11, 11:30     612
2527       7964514, // 1972 Jul 10, 19:39     613
2528       8218596, // 1972 Aug  9, 05:26     614
2529       8473488, // 1972 Sep  7, 17:28     615
2530       8729328, // 1972 Oct  7, 08:08     616
2531       8986086, // 1972 Nov  6, 01:21     617
2532       9243504, // 1972 Dec  5, 20:24     618
2533       9501018, // 1973 Jan  4, 15:43     619
2534       9757938, // 1973 Feb  3, 09:23     620
2535      10013802, // 1973 Mar  5, 00:07     621
2536      10268550, // 1973 Apr  3, 11:45     622
2537      10522410, // 1973 May  2, 20:55     623
2538      10775724, // 1973 Jun  1, 04:34     624
2539      11028834, // 1973 Jun 30, 11:39     625
2540      11282034, // 1973 Jul 29, 18:59     626
2541      11535630, // 1973 Aug 28, 03:25     627
2542      11789964, // 1973 Sep 26, 13:54     628
2543      12045342, // 1973 Oct 26, 03:17     629
2544      12301890, // 1973 Nov 24, 19:55     630
2545      12559362, // 1973 Dec 24, 15:07     631
2546      12817092, // 1974 Jan 23, 11:02     632
2547      13074324, // 1974 Feb 22, 05:34     633
2548      13330584, // 1974 Mar 23, 21:24     634
2549      13585782, // 1974 Apr 22, 10:17     635
2550      13840044, // 1974 May 21, 20:34     636
2551      14093616, // 1974 Jun 20, 04:56     637
2552      14346756, // 1974 Jul 19, 12:06     638
2553      14599806, // 1974 Aug 17, 19:01     639
2554      14853150, // 1974 Sep 16, 02:45     640
2555      15107190, // 1974 Oct 15, 12:25     641
2556      15362238, // 1974 Nov 14, 00:53     642
2557      15618390, // 1974 Dec 13, 16:25     643
2558      15875400, // 1975 Jan 12, 10:20     644
2559      16132782, // 1975 Feb 11, 05:17     645
2560      16390008, // 1975 Mar 12, 23:48     646
2561      16646634, // 1975 Apr 11, 16:39     647
2562      16902390, // 1975 May 11, 07:05     648
2563      17157174, // 1975 Jun  9, 18:49     649
2564      17411100, // 1975 Jul  9, 04:10     650
2565      17664462, // 1975 Aug  7, 11:57     651
2566      17917668, // 1975 Sep  5, 19:18     652
2567      18171138, // 1975 Oct  5, 03:23     653
2568      18425184, // 1975 Nov  3, 13:04     654
2569      18679980, // 1975 Dec  3, 00:50     655
2570      18935520, // 1976 Jan  1, 14:40     656
2571      19191720, // 1976 Jan 31, 06:20     657
2572      19448430, // 1976 Feb 29, 23:25     658
2573      19705368, // 1976 Mar 30, 17:08     659
2574      19962120, // 1976 Apr 29, 10:20     660
2575      20218242, // 1976 May 29, 01:47     661
2576      20473500, // 1976 Jun 27, 14:50     662
2577      20727954, // 1976 Jul 27, 01:39     663
2578      20981880, // 1976 Aug 25, 11:00     664
2579      21235650, // 1976 Sep 23, 19:55     665
2580      21489540, // 1976 Oct 23, 05:10     666
2581      21743706, // 1976 Nov 21, 15:11     667
2582      21998208, // 1976 Dec 21, 02:08     668
2583      22253106, // 1977 Jan 19, 14:11     669
2584      22508502, // 1977 Feb 18, 03:37     670
2585      22764438, // 1977 Mar 19, 18:33     671
2586      23020776, // 1977 Apr 18, 10:36     672
2587      23277192, // 1977 May 18, 02:52     673
2588      23533338, // 1977 Jun 16, 18:23     674
2589      23789022, // 1977 Jul 16, 08:37     675
2590      24044226, // 1977 Aug 14, 21:31     676
2591      24299058, // 1977 Sep 13, 09:23     677
2592      24553626, // 1977 Oct 12, 20:31     678
2593      24808020, // 1977 Nov 11, 07:10     679
2594      25062318, // 1977 Dec 10, 17:33     680
2595      25316640, // 1978 Jan  9, 04:00     681
2596      25571124, // 1978 Feb  7, 14:54     682
2597      25825896, // 1978 Mar  9, 02:36     683
2598      26081010, // 1978 Apr  7, 15:15     684
2599      26336442, // 1978 May  7, 04:47     685
2600      26592132, // 1978 Jun  5, 19:02     686
2601      26848026, // 1978 Jul  5, 09:51     687
2602      27104046, // 1978 Aug  4, 01:01     688
2603      27360054, // 1978 Sep  2, 16:09     689
2604      27615846, // 1978 Oct  2, 06:41     690
2605      27871236, // 1978 Oct 31, 20:06     691
2606      28126194, // 1978 Nov 30, 08:19     692
2607      28380816, // 1978 Dec 29, 19:36     693
2608      28635234, // 1979 Jan 28, 06:19     694
2609      28889550, // 1979 Feb 26, 16:45     695
2610      29143794, // 1979 Mar 28, 02:59     696
2611      29398050, // 1979 Apr 26, 13:15     697
2612      29652480, // 1979 May 26, 00:00     698
2613      29907348, // 1979 Jun 24, 11:58     699
2614      30162846, // 1979 Jul 24, 01:41     700
2615      30418986, // 1979 Aug 22, 17:11     701
2616      30675522, // 1979 Sep 21, 09:47     702
2617      30932058, // 1979 Oct 21, 02:23     703
2618      31188264, // 1979 Nov 19, 18:04     704
2619      31443978, // 1979 Dec 19, 08:23     705
2620      31699200, // 1980 Jan 17, 21:20     706
2621      31953906, // 1980 Feb 16, 08:51     707
2622      32208096, // 1980 Mar 16, 18:56     708
2623      32461836, // 1980 Apr 15, 03:46     709
2624      32715360, // 1980 May 14, 12:00     710
2625      32969034, // 1980 Jun 12, 20:39     711
2626      33223236, // 1980 Jul 12, 06:46     712
2627      33478260, // 1980 Aug 10, 19:10     713
2628      33734166, // 1980 Sep  9, 10:01     714
2629      33990780, // 1980 Oct  9, 02:50     715
2630      34247778, // 1980 Nov  7, 20:43     716
2631      34504770, // 1980 Dec  7, 14:35     717
2632      34761384, // 1981 Jan  6, 07:24     718
2633      35017284, // 1981 Feb  4, 22:14     719
2634      35272266, // 1981 Mar  6, 10:31     720
2635      35526360, // 1981 Apr  4, 20:20     721
2636      35779794, // 1981 May  4, 04:19     722
2637      36032952, // 1981 Jun  2, 11:32     723
2638      36286218, // 1981 Jul  1, 19:03     724
2639      36539952, // 1981 Jul 31, 03:52     725
2640      36794424, // 1981 Aug 29, 14:44     726
2641      37049808, // 1981 Sep 28, 04:08     727
2642      37306164, // 1981 Oct 27, 20:14     728
2643      37563348, // 1981 Nov 26, 14:38     729
2644      37820940, // 1981 Dec 26, 10:10     730
2645      38078256, // 1982 Jan 25, 04:56     731
2646      38334684, // 1982 Feb 23, 21:14     732
2647      38589948, // 1982 Mar 25, 10:18     733
2648      38844174, // 1982 Apr 23, 20:29     734
2649      39097686, // 1982 May 23, 04:41     735
2650      39350832, // 1982 Jun 21, 11:52     736
2651      39603942, // 1982 Jul 20, 18:57     737
2652      39857310, // 1982 Aug 19, 02:45     738
2653      40111254, // 1982 Sep 17, 12:09     739
2654      40366104, // 1982 Oct 17, 00:04     740
2655      40622100, // 1982 Nov 15, 15:10     741
2656      40879188, // 1982 Dec 15, 09:18     742
2657      41136888, // 1983 Jan 14, 05:08     743
2658      41394432, // 1983 Feb 13, 00:32     744
2659      41651184, // 1983 Mar 14, 17:44     745
2660      41906874, // 1983 Apr 13, 07:59     746
2661      42161550, // 1983 May 12, 19:25     747
2662      42415428, // 1983 Jun 11, 04:38     748
2663      42668754, // 1983 Jul 10, 12:19     749
2664      42921828, // 1983 Aug  8, 19:18     750
2665      43175010, // 1983 Sep  7, 02:35     751
2666      43428696, // 1983 Oct  6, 11:16     752
2667      43683246, // 1983 Nov  4, 22:21     753
2668      43938876, // 1983 Dec  4, 12:26     754
2669      44195496, // 1984 Jan  3, 05:16     755
2670      44452722, // 1984 Feb  1, 23:47     756
2671      44710026, // 1984 Mar  2, 18:31     757
2672      44966940, // 1984 Apr  1, 12:10     758
2673      45223116, // 1984 May  1, 03:46     759
2674      45478368, // 1984 May 30, 16:48     760
2675      45732714, // 1984 Jun 29, 03:19     761
2676      45986346, // 1984 Jul 28, 11:51     762
2677      46239636, // 1984 Aug 26, 19:26     763
2678      46492986, // 1984 Sep 25, 03:11     764
2679      46746768, // 1984 Oct 24, 12:08     765
2680      47001222, // 1984 Nov 22, 22:57     766
2681      47256402, // 1984 Dec 22, 11:47     767
2682      47512248, // 1985 Jan 21, 02:28     768
2683      47768658, // 1985 Feb 19, 18:43     769
2684      48025434, // 1985 Mar 21, 11:59     770
2685      48282252, // 1985 Apr 20, 05:22     771
2686      48538686, // 1985 May 19, 21:41     772
2687      48794388, // 1985 Jun 18, 11:58     773
2688      49049262, // 1985 Jul 17, 23:57     774
2689      49303476, // 1985 Aug 16, 10:06     775
2690      49557360, // 1985 Sep 14, 19:20     776
2691      49811238, // 1985 Oct 14, 04:33     777
2692      50065326, // 1985 Nov 12, 14:21     778
2693      50319690, // 1985 Dec 12, 00:55     779
2694      50574372, // 1986 Jan 10, 12:22     780
2695      50829456, // 1986 Feb  9, 00:56     781
2696      51085032, // 1986 Mar 10, 14:52     782
2697      51341088, // 1986 Apr  9, 06:08     783
2698      51597420, // 1986 May  8, 22:10     784
2699      51853686, // 1986 Jun  7, 14:01     785
2700      52109610, // 1986 Jul  7, 04:55     786
2701      52365096, // 1986 Aug  5, 18:36     787
2702      52620186, // 1986 Sep  4, 07:11     788
2703      52874970, // 1986 Oct  3, 18:55     789
2704      53129532, // 1986 Nov  2, 06:02     790
2705      53383938, // 1986 Dec  1, 16:43     791
2706      53638260, // 1986 Dec 31, 03:10     792
2707      53892630, // 1987 Jan 29, 13:45     793
2708      54147186, // 1987 Feb 28, 00:51     794
2709      54402036, // 1987 Mar 29, 12:46     795
2710      54657204, // 1987 Apr 28, 01:34     796
2711      54912678, // 1987 May 27, 15:13     797
2712      55168422, // 1987 Jun 26, 05:37     798
2713      55424388, // 1987 Jul 25, 20:38     799
2714      55680474, // 1987 Aug 24, 11:59     800
2715      55936494, // 1987 Sep 23, 03:09     801
2716      56192208, // 1987 Oct 22, 17:28     802
2717      56447478, // 1987 Nov 21, 06:33     803
2718      56702310, // 1987 Dec 20, 18:25     804
2719      56956836, // 1988 Jan 19, 05:26     805
2720      57211164, // 1988 Feb 17, 15:54     806
2721      57465372, // 1988 Mar 18, 02:02     807
2722      57719520, // 1988 Apr 16, 12:00     808
2723      57973746, // 1988 May 15, 22:11     809
2724      58228284, // 1988 Jun 14, 09:14     810
2725      58483398, // 1988 Jul 13, 21:53     811
2726      58739226, // 1988 Aug 12, 12:31     812
2727      58995660, // 1988 Sep 11, 04:50     813
2728      59252334, // 1988 Oct 10, 21:49     814
2729      59508840, // 1988 Nov  9, 14:20     815
2730      59764896, // 1988 Dec  9, 05:36     816
2731      60020412, // 1989 Jan  7, 19:22     817
2732      60275382, // 1989 Feb  6, 07:37     818
2733      60529794, // 1989 Mar  7, 18:19     819
2734      60783678, // 1989 Apr  6, 03:33     820
2735      61037202, // 1989 May  5, 11:47     821
2736      61290678, // 1989 Jun  3, 19:53     822
2737      61544514, // 1989 Jul  3, 04:59     823
2738      61799076, // 1989 Aug  1, 16:06     824
2739      62054550, // 1989 Aug 31, 05:45     825
2740      62310888, // 1989 Sep 29, 21:48     826
2741      62567808, // 1989 Oct 29, 15:28     827
2742      62824926, // 1989 Nov 28, 09:41     828
2743      63081840, // 1989 Dec 28, 03:20     829
2744      63338160, // 1990 Jan 26, 19:20     830
2745      63593610, // 1990 Feb 25, 08:55     831
2746      63848088, // 1990 Mar 26, 19:48     832
2747      64101768, // 1990 Apr 25, 04:28     833
2748      64354962, // 1990 May 24, 11:47     834
2749      64608090, // 1990 Jun 22, 18:55     835
2750      64861524, // 1990 Jul 22, 02:54     836
2751      65115594, // 1990 Aug 20, 12:39     837
2752      65370516, // 1990 Sep 19, 00:46     838
2753      65626422, // 1990 Oct 18, 15:37     839
2754      65883270, // 1990 Nov 17, 09:05     840
2755      66140772, // 1990 Dec 17, 04:22     841
2756      66398340, // 1991 Jan 15, 23:50     842
2757      66655272, // 1991 Feb 14, 17:32     843
2758      66911106, // 1991 Mar 16, 08:11     844
2759      67165788, // 1991 Apr 14, 19:38     845
2760      67419576, // 1991 May 14, 04:36     846
2761      67672836, // 1991 Jun 12, 12:06     847
2762      67925916, // 1991 Jul 11, 19:06     848
2763      68179122, // 1991 Aug 10, 02:27     849
2764      68432766, // 1991 Sep  8, 11:01     850
2765      68687154, // 1991 Oct  7, 21:39     851
2766      68942586, // 1991 Nov  6, 11:11     852
2767      69199176, // 1991 Dec  6, 03:56     853
2768      69456660, // 1992 Jan  4, 23:10     854
2769      69714360, // 1992 Feb  3, 19:00     855
2770      69971538, // 1992 Mar  4, 13:23     856
2771      70227732, // 1992 Apr  3, 05:02     857
2772      70482870, // 1992 May  2, 17:45     858
2773      70737102, // 1992 Jun  1, 03:57     859
2774      70990668, // 1992 Jun 30, 12:18     860
2775      71243850, // 1992 Jul 29, 19:35     861
2776      71496972, // 1992 Aug 28, 02:42     862
2777      71750400, // 1992 Sep 26, 10:40     863
2778      72004524, // 1992 Oct 25, 20:34     864
2779      72259626, // 1992 Nov 24, 09:11     865
2780      72515778, // 1992 Dec 24, 00:43     866
2781      72772722, // 1993 Jan 22, 18:27     867
2782      73029996, // 1993 Feb 21, 13:06     868
2783      73287090, // 1993 Mar 23, 07:15     869
2784      73543614, // 1993 Apr 21, 23:49     870
2785      73799322, // 1993 May 21, 14:07     871
2786      74054118, // 1993 Jun 20, 01:53     872
2787      74308104, // 1993 Jul 19, 11:24     873
2788      74561568, // 1993 Aug 17, 19:28     874
2789      74814900, // 1993 Sep 16, 03:10     875
2790      75068496, // 1993 Oct 15, 11:36     876
2791      75322644, // 1993 Nov 13, 21:34     877
2792      75577482, // 1993 Dec 13, 09:27     878
2793      75832980, // 1994 Jan 11, 23:10     879
2794      76089060, // 1994 Feb 10, 14:30     880
2795      76345590, // 1994 Mar 12, 07:05     881
2796      76602342, // 1994 Apr 11, 00:17     882
2797      76858962, // 1994 May 10, 17:07     883
2798      77115042, // 1994 Jun  9, 08:27     884
2799      77370342, // 1994 Jul  8, 21:37     885
2800      77624910, // 1994 Aug  7, 08:45     886
2801      77878998, // 1994 Sep  5, 18:33     887
2802      78132930, // 1994 Oct  5, 03:55     888
2803      78386970, // 1994 Nov  3, 13:35     889
2804      78641244, // 1994 Dec  2, 23:54     890
2805      78895770, // 1995 Jan  1, 10:55     891
2806      79150608, // 1995 Jan 30, 22:48     892
2807      79405848, // 1995 Mar  1, 11:48     893
2808      79661568, // 1995 Mar 31, 02:08     894
2809      79917696, // 1995 Apr 29, 17:36     895
2810      80173962, // 1995 May 29, 09:27     896
2811      80430060, // 1995 Jun 28, 00:50     897
2812      80685798, // 1995 Jul 27, 15:13     898
2813      80941146, // 1995 Aug 26, 04:31     899
2814      81196170, // 1995 Sep 24, 16:55     900
2815      81450936, // 1995 Oct 24, 04:36     901
2816      81705498, // 1995 Nov 22, 15:43     902
2817      81959892, // 1995 Dec 22, 02:22     903
2818      82214220, // 1996 Jan 20, 12:50     904
2819      82468620, // 1996 Feb 18, 23:30     905
2820      82723230, // 1996 Mar 19, 10:45     906
2821      82978134, // 1996 Apr 17, 22:49     907
2822      83233356, // 1996 May 17, 11:46     908
2823      83488896, // 1996 Jun 16, 01:36     909
2824      83744730, // 1996 Jul 15, 16:15     910
2825      84000804, // 1996 Aug 14, 07:34     911
2826      84256968, // 1996 Sep 12, 23:08     912
2827      84512970, // 1996 Oct 12, 14:15     913
2828      84768576, // 1996 Nov 11, 04:16     914
2829      85023696, // 1996 Dec 10, 16:56     915
2830      85278396, // 1997 Jan  9, 04:26     916
2831      85532796, // 1997 Feb  7, 15:06     917
2832      85787004, // 1997 Mar  9, 01:14     918
2833      86041092, // 1997 Apr  7, 11:02     919
2834      86295162, // 1997 May  6, 20:47     920
2835      86549424, // 1997 Jun  5, 07:04     921
2836      86804160, // 1997 Jul  4, 18:40     922
2837      87059604, // 1997 Aug  3, 08:14     923
2838      87315792, // 1997 Sep  1, 23:52     924
2839      87572472, // 1997 Oct  1, 16:52     925
2840      87829212, // 1997 Oct 31, 10:02     926
2841      88085604, // 1997 Nov 30, 02:14     927
2842      88341462, // 1997 Dec 29, 16:57     928
2843      88596726, // 1998 Jan 28, 06:01     929
2844      88851396, // 1998 Feb 26, 17:26     930
2845      89105484, // 1998 Mar 28, 03:14     931
2846      89359086, // 1998 Apr 26, 11:41     932
2847      89612472, // 1998 May 25, 19:32     933
2848      89866020, // 1998 Jun 24, 03:50     934
2849      90120144, // 1998 Jul 23, 13:44     935
2850      90375138, // 1998 Aug 22, 02:03     936
2851      90631092, // 1998 Sep 20, 17:02     937
2852      90887820, // 1998 Oct 20, 10:10     938
2853      91144962, // 1998 Nov 19, 04:27     939
2854      91402098, // 1998 Dec 18, 22:43     940
2855      91658796, // 1999 Jan 17, 15:46     941
2856      91914714, // 1999 Feb 16, 06:39     942
2857      92169648, // 1999 Mar 17, 18:48     943
2858      92423652, // 1999 Apr 16, 04:22     944
2859      92676990, // 1999 May 15, 12:05     945
2860      92930058, // 1999 Jun 13, 19:03     946
2861      93183264, // 1999 Jul 13, 02:24     947
2862      93436974, // 1999 Aug 11, 11:09     948
2863      93691452, // 1999 Sep  9, 22:02     949
2864      93946890, // 1999 Oct  9, 11:35     950
2865      94203318, // 1999 Nov  8, 03:53     951
2866      94460592, // 1999 Dec  7, 22:32     952
2867      94718244, // 2000 Jan  6, 18:14     953
2868      94975584, // 2000 Feb  5, 13:04     954
2869      95231982, // 2000 Mar  6, 05:17     955
2870      95487192, // 2000 Apr  4, 18:12     956
2871      95741352, // 2000 May  4, 04:12     957
2872      95994804, // 2000 Jun  2, 12:14     958
2873      96247920, // 2000 Jul  1, 19:20     959
2874      96501030, // 2000 Jul 31, 02:25     960
2875      96754434, // 2000 Aug 29, 10:19     961
2876      97008438, // 2000 Sep 27, 19:53     962
2877      97263348, // 2000 Oct 27, 07:58     963
2878      97519392, // 2000 Nov 25, 23:12     964
2879      97776492, // 2000 Dec 25, 17:22     965
2880      98034162, // 2001 Jan 24, 13:07     966
2881      98291652, // 2001 Feb 23, 08:22     967
2882      98548332, // 2001 Mar 25, 01:22     968
2883      98803956, // 2001 Apr 23, 15:26     969
2884      99058602, // 2001 May 23, 02:47     970
2885      99312468, // 2001 Jun 21, 11:58     971
2886      99565830, // 2001 Jul 20, 19:45     972
2887      99818970, // 2001 Aug 19, 02:55     973
2888     100072248, // 2001 Sep 17, 10:28     974
2889     100326024, // 2001 Oct 16, 19:24     975
2890     100580640, // 2001 Nov 15, 06:40     976
2891     100836288, // 2001 Dec 14, 20:48     977
2892     101092854, // 2002 Jan 13, 13:29     978
2893     101349966, // 2002 Feb 12, 07:41     979
2894     101607138, // 2002 Mar 14, 02:03     980
2895     101863926, // 2002 Apr 12, 19:21     981
2896     102120030, // 2002 May 12, 10:45     982
2897     102375282, // 2002 Jun 10, 23:47     983
2898     102629676, // 2002 Jul 10, 10:26     984
2899     102883410, // 2002 Aug  8, 19:15     985
2900     103136820, // 2002 Sep  7, 03:10     986
2901     103390308, // 2002 Oct  6, 11:18     987
2902     103644210, // 2002 Nov  4, 20:35     988
2903     103898730, // 2002 Dec  4, 07:35     989
2904     104153898, // 2003 Jan  2, 20:23     990
2905     104409654, // 2003 Feb  1, 10:49     991
2906     104665890, // 2003 Mar  3, 02:35     992
2907     104922468, // 2003 Apr  1, 19:18     993
2908     105179130, // 2003 May  1, 12:15     994
2909     105435480, // 2003 May 31, 04:20     995
2910     105691194, // 2003 Jun 29, 18:39     996
2911     105946158, // 2003 Jul 29, 06:53     997
2912     106200516, // 2003 Aug 27, 17:26     998
2913     106454574, // 2003 Sep 26, 03:09     999
2914     106708620, // 2003 Oct 25, 12:50    1000
2915     106962834, // 2003 Nov 23, 22:59    1001
2916     107217258, // 2003 Dec 23, 09:43    1002
2917     107471910, // 2004 Jan 21, 21:05    1003
2918     107726868, // 2004 Feb 20, 09:18    1004
2919     107982246, // 2004 Mar 20, 22:41    1005
2920     108238086, // 2004 Apr 19, 13:21    1006
2921     108494232, // 2004 May 19, 04:52    1007
2922     108750402, // 2004 Jun 17, 20:27    1008
2923     109006344, // 2004 Jul 17, 11:24    1009
2924     109261944, // 2004 Aug 16, 01:24    1010
2925     109517214, // 2004 Sep 14, 14:29    1011
2926     109772208, // 2004 Oct 14, 02:48    1012
2927     110026962, // 2004 Nov 12, 14:27    1013
2928     110281494, // 2004 Dec 12, 01:29    1014
2929     110535858, // 2005 Jan 10, 12:03    1015
2930     110790168, // 2005 Feb  8, 22:28    1016
2931     111044586, // 2005 Mar 10, 09:11    1017
2932     111299232, // 2005 Apr  8, 20:32    1018
2933     111554190, // 2005 May  8, 08:45    1019
2934     111809490, // 2005 Jun  6, 21:55    1020
2935     112065138, // 2005 Jul  6, 12:03    1021
2936     112321110, // 2005 Aug  5, 03:05    1022
2937     112577316, // 2005 Sep  3, 18:46    1023
2938     112833528, // 2005 Oct  3, 10:28    1024
2939     113089470, // 2005 Nov  2, 01:25    1025
2940     113344926, // 2005 Dec  1, 15:01    1026
2941     113599872, // 2005 Dec 31, 03:12    1027
2942     113854410, // 2006 Jan 29, 14:15    1028
2943     114108666, // 2006 Feb 28, 00:31    1029
2944     114362730, // 2006 Mar 29, 10:15    1030
2945     114616704, // 2006 Apr 27, 19:44    1031
2946     114870756, // 2006 May 27, 05:26    1032
2947     115125150, // 2006 Jun 25, 16:05    1033
2948     115380186, // 2006 Jul 25, 04:31    1034
2949     115636020, // 2006 Aug 23, 19:10    1035
2950     115892550, // 2006 Sep 22, 11:45    1036
2951     116149404, // 2006 Oct 22, 05:14    1037
2952     116406108, // 2006 Nov 20, 22:18    1038
2953     116662326, // 2006 Dec 20, 14:01    1039
2954     116917926, // 2007 Jan 19, 04:01    1040
2955     117172884, // 2007 Feb 17, 16:14    1041
2956     117427218, // 2007 Mar 19, 02:43    1042
2957     117680976, // 2007 Apr 17, 11:36    1043
2958     117934362, // 2007 May 16, 19:27    1044
2959     118187718, // 2007 Jun 15, 03:13    1045
2960     118441464, // 2007 Jul 14, 12:04    1046
2961     118695972, // 2007 Aug 12, 23:02    1047
2962     118951464, // 2007 Sep 11, 12:44    1048
2963     119207886, // 2007 Oct 11, 05:01    1049
2964     119464938, // 2007 Nov  9, 23:03    1050
2965     119722200, // 2007 Dec  9, 17:40    1051
2966     119979222, // 2008 Jan  8, 11:37    1052
2967     120235584, // 2008 Feb  7, 03:44    1053
2968     120491004, // 2008 Mar  7, 17:14    1054
2969     120745410, // 2008 Apr  6, 03:55    1055
2970     120998988, // 2008 May  5, 12:18    1056
2971     121252098, // 2008 Jun  3, 19:23    1057
2972     121505154, // 2008 Jul  3, 02:19    1058
2973     121758552, // 2008 Aug  1, 10:12    1059
2974     122012628, // 2008 Aug 30, 19:58    1060
2975     122267592, // 2008 Sep 29, 08:12    1061
2976     122523564, // 2008 Oct 28, 23:14    1062
2977     122780490, // 2008 Nov 27, 16:55    1063
2978     123038058, // 2008 Dec 27, 12:23    1064
2979     123295656, // 2009 Jan 26, 07:56    1065
2980     123552570, // 2009 Feb 25, 01:35    1066
2981     123808356, // 2009 Mar 26, 16:06    1067
2982     124062978, // 2009 Apr 25, 03:23    1068
2983     124316706, // 2009 May 24, 12:11    1069
2984     124569930, // 2009 Jun 22, 19:35    1070
2985     124823010, // 2009 Jul 22, 02:35    1071
2986     125076246, // 2009 Aug 20, 10:01    1072
2987     125329944, // 2009 Sep 18, 18:44    1073
2988     125584398, // 2009 Oct 18, 05:33    1074
2989     125839884, // 2009 Nov 16, 19:14    1075
2990     126096492, // 2009 Dec 16, 12:02    1076
2991     126353952, // 2010 Jan 15, 07:12    1077
2992     126611592, // 2010 Feb 14, 02:52    1078
2993     126868686, // 2010 Mar 15, 21:01    1079
2994     127124814, // 2010 Apr 14, 12:29    1080
2995     127379910, // 2010 May 14, 01:05    1081
2996     127634130, // 2010 Jun 12, 11:15    1082
2997     127887726, // 2010 Jul 11, 19:41    1083
2998     128140968, // 2010 Aug 10, 03:08    1084
2999     128394180, // 2010 Sep  8, 10:30    1085
3000     128647704, // 2010 Oct  7, 18:44    1086
3001     128901912, // 2010 Nov  6, 04:52    1087
3002     129157056, // 2010 Dec  5, 17:36    1088
3003     129413178, // 2011 Jan  4, 09:03    1089
3004     129670026, // 2011 Feb  3, 02:31    1090
3005     129927156, // 2011 Mar  4, 20:46    1091
3006     130184112, // 2011 Apr  3, 14:32    1092
3007     130440546, // 2011 May  3, 06:51    1093
3008     130696218, // 2011 Jun  1, 21:03    1094
3009     130951044, // 2011 Jul  1, 08:54    1095
3010     131205120, // 2011 Jul 30, 18:40    1096
3011     131458704, // 2011 Aug 29, 03:04    1097
3012     131712174, // 2011 Sep 27, 11:09    1098
3013     131965896, // 2011 Oct 26, 19:56    1099
3014     132220140, // 2011 Nov 25, 06:10    1100
3015     132474996, // 2011 Dec 24, 18:06    1101
3016     132730434, // 2012 Jan 23, 07:39    1102
3017     132986370, // 2012 Feb 21, 22:35    1103
3018     133242702, // 2012 Mar 22, 14:37    1104
3019     133499274, // 2012 Apr 21, 07:19    1105
3020     133755762, // 2012 May 20, 23:47    1106
3021     134011818, // 2012 Jun 19, 15:03    1107
3022     134267190, // 2012 Jul 19, 04:25    1108
3023     134521890, // 2012 Aug 17, 15:55    1109
3024     134776146, // 2012 Sep 16, 02:11    1110
3025     135030258, // 2012 Oct 15, 12:03    1111
3026     135284448, // 2012 Nov 13, 22:08    1112
3027     135538812, // 2012 Dec 13, 08:42    1113
3028     135793344, // 2013 Jan 11, 19:44    1114
3029     136048080, // 2013 Feb 10, 07:20    1115
3030     136303146, // 2013 Mar 11, 19:51    1116
3031     136558656, // 2013 Apr 10, 09:36    1117
3032     136814574, // 2013 May 10, 00:29    1118
3033     137070702, // 2013 Jun  8, 15:57    1119
3034     137326770, // 2013 Jul  8, 07:15    1120
3035     137582586, // 2013 Aug  6, 21:51    1121
3036     137838102, // 2013 Sep  5, 11:37    1122
3037     138093330, // 2013 Oct  5, 00:35    1123
3038     138348300, // 2013 Nov  3, 12:50    1124
3039     138603018, // 2013 Dec  3, 00:23    1125
3040     138857484, // 2014 Jan  1, 11:14    1126
3041     139111794, // 2014 Jan 30, 21:39    1127
3042     139366080, // 2014 Mar  1, 08:00    1128
3043     139620510, // 2014 Mar 30, 18:45    1129
3044     139875210, // 2014 Apr 29, 06:15    1130
3045     140130240, // 2014 May 28, 18:40    1131
3046     140385654, // 2014 Jun 27, 08:09    1132
3047     140641452, // 2014 Jul 26, 22:42    1133
3048     140897598, // 2014 Aug 25, 14:13    1134
3049     141153924, // 2014 Sep 24, 06:14    1135
3050     141410142, // 2014 Oct 23, 21:57    1136
3051     141665958, // 2014 Nov 22, 12:33    1137
3052     141921216, // 2014 Dec 22, 01:36    1138
3053     142175964, // 2015 Jan 20, 13:14    1139
3054     142430322, // 2015 Feb 18, 23:47    1140
3055     142684416, // 2015 Mar 20, 09:36    1141
3056     142938342, // 2015 Apr 18, 18:57    1142
3057     143192238, // 2015 May 18, 04:13    1143
3058     143446350, // 2015 Jun 16, 14:05    1144
3059     143700990, // 2015 Jul 16, 01:25    1145
3060     143956404, // 2015 Aug 14, 14:54    1146
3061     144212652, // 2015 Sep 13, 06:42    1147
3062     144469476, // 2015 Oct 13, 00:06    1148
3063     144726408, // 2015 Nov 11, 17:48    1149
3064     144982980, // 2015 Dec 11, 10:30    1150
3065     145238946, // 2016 Jan 10, 01:31    1151
3066     145494234, // 2016 Feb  8, 14:39    1152
3067     145748850, // 2016 Mar  9, 01:55    1153
3068     146002824, // 2016 Apr  7, 11:24    1154
3069     146256300, // 2016 May  6, 19:30    1155
3070     146509560, // 2016 Jun  5, 03:00    1156
3071     146763006, // 2016 Jul  4, 11:01    1157
3072     147017070, // 2016 Aug  2, 20:45    1158
3073     147272064, // 2016 Sep  1, 09:04    1159
3074     147528072, // 2016 Oct  1, 00:12    1160
3075     147784914, // 2016 Oct 30, 17:39    1161
3076     148042194, // 2016 Nov 29, 12:19    1162
3077     148299444, // 2016 Dec 29, 06:54    1163
3078     148556202, // 2017 Jan 28, 00:07    1164
3079     148812114, // 2017 Feb 26, 14:59    1165
3080     149066988, // 2017 Mar 28, 02:58    1166
3081     149320896, // 2017 Apr 26, 12:16    1167
3082     149574150, // 2017 May 25, 19:45    1168
3083     149827146, // 2017 Jun 24, 02:31    1169
3084     150080316, // 2017 Jul 23, 09:46    1170
3085     150334020, // 2017 Aug 21, 18:30    1171
3086     150588540, // 2017 Sep 20, 05:30    1172
3087     150844032, // 2017 Oct 19, 19:12    1173
3088     151100532, // 2017 Nov 18, 11:42    1174
3089     151357860, // 2017 Dec 18, 06:30    1175
3090     151615542, // 2018 Jan 17, 02:17    1176
3091     151872870, // 2018 Feb 15, 21:05    1177
3092     152129232, // 2018 Mar 17, 13:12    1178
3093     152384382, // 2018 Apr 16, 01:57    1179
3094     152638488, // 2018 May 15, 11:48    1180
3095     152891898, // 2018 Jun 13, 19:43    1181
3096     153145008, // 2018 Jul 13, 02:48    1182
3097     153398148, // 2018 Aug 11, 09:58    1183
3098     153651606, // 2018 Sep  9, 18:01    1184
3099     153905682, // 2018 Oct  9, 03:47    1185
3100     154160652, // 2018 Nov  7, 16:02    1186
3101     154416720, // 2018 Dec  7, 07:20    1187
3102     154673808, // 2019 Jan  6, 01:28    1188
3103     154931424, // 2019 Feb  4, 21:04    1189
3104     155188824, // 2019 Mar  6, 16:04    1190
3105     155445420, // 2019 Apr  5, 08:50    1191
3106     155700996, // 2019 May  4, 22:46    1192
3107     155955612, // 2019 Jun  3, 10:02    1193
3108     156209496, // 2019 Jul  2, 19:16    1194
3109     156462912, // 2019 Aug  1, 03:12    1195
3110     156716142, // 2019 Aug 30, 10:37    1196
3111     156969516, // 2019 Sep 28, 18:26    1197
3112     157223394, // 2019 Oct 28, 03:39    1198
3113     157478076, // 2019 Nov 26, 15:06    1199
3114     157733718, // 2019 Dec 26, 05:13    1200
3115     157990212, // 2020 Jan 24, 21:42    1201
3116     158247192, // 2020 Feb 23, 15:32    1202
3117     158504208, // 2020 Mar 24, 09:28    1203
3118     158760876, // 2020 Apr 23, 02:26    1204
3119     159016914, // 2020 May 22, 17:39    1205
3120     159272172, // 2020 Jun 21, 06:42    1206
3121     159526638, // 2020 Jul 20, 17:33    1207
3122     159780486, // 2020 Aug 19, 02:41    1208
3123     160034040, // 2020 Sep 17, 11:00    1209
3124     160287666, // 2020 Oct 16, 19:31    1210
3125     160541682, // 2020 Nov 15, 05:07    1211
3126     160796262, // 2020 Dec 14, 16:17    1212
3127     161051400, // 2021 Jan 13, 05:00    1213
3128     161307036, // 2021 Feb 11, 19:06    1214
3129     161563086, // 2021 Mar 13, 10:21    1215
3130     161819466, // 2021 Apr 12, 02:31    1216
3131     162075960, // 2021 May 11, 19:00    1217
3132     162332238, // 2021 Jun 10, 10:53    1218
3133     162587982, // 2021 Jul 10, 01:17    1219
3134     162843060, // 2021 Aug  8, 13:50    1220
3135     163097592, // 2021 Sep  7, 00:52    1221
3136     163351830, // 2021 Oct  6, 11:05    1222
3137     163606050, // 2021 Nov  4, 21:15    1223
3138     163860378, // 2021 Dec  4, 07:43    1224
3139     164114844, // 2022 Jan  2, 18:34    1225
3140     164369436, // 2022 Feb  1, 05:46    1226
3141     164624250, // 2022 Mar  2, 17:35    1227
3142     164879424, // 2022 Apr  1, 06:24    1228
3143     165135048, // 2022 Apr 30, 20:28    1229
3144     165391020, // 2022 May 30, 11:30    1230
3145     165647112, // 2022 Jun 29, 02:52    1231
3146     165903090, // 2022 Jul 28, 17:55    1232
3147     166158822, // 2022 Aug 27, 08:17    1233
3148     166414284, // 2022 Sep 25, 21:54    1234
3149     166669488, // 2022 Oct 25, 10:48    1235
3150     166924422, // 2022 Nov 23, 22:57    1236
3151     167179062, // 2022 Dec 23, 10:17    1237
3152     167433438, // 2023 Jan 21, 20:53    1238
3153     167687676, // 2023 Feb 20, 07:06    1239
3154     167941938, // 2023 Mar 21, 17:23    1240
3155     168196398, // 2023 Apr 20, 04:13    1241
3156     168451158, // 2023 May 19, 15:53    1242
3157     168706302, // 2023 Jun 18, 04:37    1243
3158     168961872, // 2023 Jul 17, 18:32    1244
3159     169217868, // 2023 Aug 16, 09:38    1245
3160     169474200, // 2023 Sep 15, 01:40    1246
3161     169730610, // 2023 Oct 14, 17:55    1247
3162     169986762, // 2023 Nov 13, 09:27    1248
3163     170242392, // 2023 Dec 12, 23:32    1249
3164     170497422, // 2024 Jan 11, 11:57    1250
3165     170751954, // 2024 Feb  9, 22:59    1251
3166     171006126, // 2024 Mar 10, 09:01    1252
3167     171260046, // 2024 Apr  8, 18:21    1253
3168     171513852, // 2024 May  8, 03:22    1254
3169     171767748, // 2024 Jun  6, 12:38    1255
3170     172022022, // 2024 Jul  5, 22:57    1256
3171     172276998, // 2024 Aug  4, 11:13    1257
3172     172532856, // 2024 Sep  3, 01:56    1258
3173     172789500, // 2024 Oct  2, 18:50    1259
3174     173046528, // 2024 Nov  1, 12:48    1260
3175     173303412, // 2024 Dec  1, 06:22    1261
3176     173559762, // 2024 Dec 30, 22:27    1262
3177     173815416, // 2025 Jan 29, 12:36    1263
3178     174070350, // 2025 Feb 28, 00:45    1264
3179     174324588, // 2025 Mar 29, 10:58    1265
3180     174578232, // 2025 Apr 27, 19:32    1266
3181     174831498, // 2025 May 27, 03:03    1267
3182     175084752, // 2025 Jun 25, 10:32    1268
3183     175338426, // 2025 Jul 24, 19:11    1269
3184     175592916, // 2025 Aug 23, 06:06    1270
3185     175848444, // 2025 Sep 21, 19:54    1271
3186     176104956, // 2025 Oct 21, 12:26    1272
3187     176362128, // 2025 Nov 20, 06:48    1273
3188     176619504, // 2025 Dec 20, 01:44    1274
3189     176876592, // 2026 Jan 18, 19:52    1275
3190     177132966, // 2026 Feb 17, 12:01    1276
3191     177388344, // 2026 Mar 19, 01:24    1277
3192     177642672, // 2026 Apr 17, 11:52    1278
3193     177896166, // 2026 May 16, 20:01    1279
3194     178149204, // 2026 Jun 15, 02:54    1280
3195     178402224, // 2026 Jul 14, 09:44    1281
3196     178655616, // 2026 Aug 12, 17:36    1282
3197     178909722, // 2026 Sep 11, 03:27    1283
3198     179164740, // 2026 Oct 10, 15:50    1284
3199     179420772, // 2026 Nov  9, 07:02    1285
3200     179677752, // 2026 Dec  9, 00:52    1286
3201     179935344, // 2027 Jan  7, 20:24    1287
3202     180192936, // 2027 Feb  6, 15:56    1288
3203     180449820, // 2027 Mar  8, 09:30    1289
3204     180705546, // 2027 Apr  6, 23:51    1290
3205     180960114, // 2027 May  6, 10:59    1291
3206     181213806, // 2027 Jun  4, 19:41    1292
3207     181467012, // 2027 Jul  4, 03:02    1293
3208     181720110, // 2027 Aug  2, 10:05    1294
3209     181973406, // 2027 Aug 31, 17:41    1295
3210     182227176, // 2027 Sep 30, 02:36    1296
3211     182481696, // 2027 Oct 29, 13:36    1297
3212     182737224, // 2027 Nov 28, 03:24    1298
3213     182993832, // 2027 Dec 27, 20:12    1299
3214     183251238, // 2028 Jan 26, 15:13    1300
3215     183508788, // 2028 Feb 25, 10:38    1301
3216     183765792, // 2028 Mar 26, 04:32    1302
3217     184021842, // 2028 Apr 24, 19:47    1303
3218     184276902, // 2028 May 24, 08:17    1304
3219     184531128, // 2028 Jun 22, 18:28    1305
3220     184784772, // 2028 Jul 22, 03:02    1306
3221     185038104, // 2028 Aug 20, 10:44    1307
3222     185291424, // 2028 Sep 18, 18:24    1308
3223     185545062, // 2028 Oct 18, 02:57    1309
3224     185799348, // 2028 Nov 16, 13:18    1310
3225     186054516, // 2028 Dec 16, 02:06    1311
3226     186310590, // 2029 Jan 14, 17:25    1312
3227     186567312, // 2029 Feb 13, 10:32    1313
3228     186824280, // 2029 Mar 15, 04:20    1314
3229     187081080, // 2029 Apr 13, 21:40    1315
3230     187337412, // 2029 May 13, 13:42    1316
3231     187593066, // 2029 Jun 12, 03:51    1317
3232     187847946, // 2029 Jul 11, 15:51    1318
3233     188102136, // 2029 Aug 10, 01:56    1319
3234     188355870, // 2029 Sep  8, 10:45    1320
3235     188609490, // 2029 Oct  7, 19:15    1321
3236     188863344, // 2029 Nov  6, 04:24    1322
3237     189117672, // 2029 Dec  5, 14:52    1323
3238     189372534, // 2030 Jan  4, 02:49    1324
3239     189627888, // 2030 Feb  2, 16:08    1325
3240     189883650, // 2030 Mar  4, 06:35    1326
3241     190139778, // 2030 Apr  2, 22:03    1327
3242     190396152, // 2030 May  2, 14:12    1328
3243     190652526, // 2030 Jun  1, 06:21    1329
3244     190908570, // 2030 Jun 30, 21:35    1330
3245     191164026, // 2030 Jul 30, 11:11    1331
3246     191418882, // 2030 Aug 28, 23:07    1332
3247     191673330, // 2030 Sep 27, 09:55    1333
3248     191927622, // 2030 Oct 26, 20:17    1334
3249     192181962, // 2030 Nov 25, 06:47    1335
3250     192436392, // 2030 Dec 24, 17:32    1336
3251     192690906, // 2031 Jan 23, 04:31    1337
3252     192945534, // 2031 Feb 21, 15:49    1338
3253     193200414, // 2031 Mar 23, 03:49    1339
3254     193455702, // 2031 Apr 21, 16:57    1340
3255     193711422, // 2031 May 21, 07:17    1341
3256     193967430, // 2031 Jun 19, 22:25    1342
3257     194223480, // 2031 Jul 19, 13:40    1343
3258     194479392, // 2031 Aug 18, 04:32    1344
3259     194735082, // 2031 Sep 16, 18:47    1345
3260     194990526, // 2031 Oct 16, 08:21    1346
3261     195245700, // 2031 Nov 14, 21:10    1347
3262     195500556, // 2031 Dec 14, 09:06    1348
3263     195755082, // 2032 Jan 12, 20:07    1349
3264     196009344, // 2032 Feb 11, 06:24    1350
3265     196263504, // 2032 Mar 11, 16:24    1351
3266     196517760, // 2032 Apr 10, 02:40    1352
3267     196772256, // 2032 May  9, 13:36    1353
3268     197027112, // 2032 Jun  8, 01:32    1354
3269     197282412, // 2032 Jul  7, 14:42    1355
3270     197538192, // 2032 Aug  6, 05:12    1356
3271     197794422, // 2032 Sep  4, 20:57    1357
3272     198050922, // 2032 Oct  4, 13:27    1358
3273     198307350, // 2032 Nov  3, 05:45    1359
3274     198563358, // 2032 Dec  2, 20:53    1360
3275     198818742, // 2033 Jan  1, 10:17    1361
3276     199073520, // 2033 Jan 30, 22:00    1362
3277     199327818, // 2033 Mar  1, 08:23    1363
3278     199581786, // 2033 Mar 30, 17:51    1364
3279     199835556, // 2033 Apr 29, 02:46    1365
3280     200089302, // 2033 May 28, 11:37    1366
3281     200343282, // 2033 Jun 26, 21:07    1367
3282     200597838, // 2033 Jul 26, 08:13    1368
3283     200853240, // 2033 Aug 24, 21:40    1369
3284     201109560, // 2033 Sep 23, 13:40    1370
3285     201366534, // 2033 Oct 23, 07:29    1371
3286     201623640, // 2033 Nov 22, 01:40    1372
3287     201880362, // 2033 Dec 21, 18:47    1373
3288     202136412, // 2034 Jan 20, 10:02    1374
3289     202391700, // 2034 Feb 18, 23:10    1375
3290     202646250, // 2034 Mar 20, 10:15    1376
3291     202900116, // 2034 Apr 18, 19:26    1377
3292     203153472, // 2034 May 18, 03:12    1378
3293     203406636, // 2034 Jun 16, 10:26    1379
3294     203660010, // 2034 Jul 15, 18:15    1380
3295     203914038, // 2034 Aug 14, 03:53    1381
3296     204169044, // 2034 Sep 12, 16:14    1382
3297     204425118, // 2034 Oct 12, 07:33    1383
3298     204682056, // 2034 Nov 11, 01:16    1384
3299     204939444, // 2034 Dec 10, 20:14    1385
3300     205196778, // 2035 Jan  9, 15:03    1386
3301     205453572, // 2035 Feb  8, 08:22    1387
3302     205709460, // 2035 Mar  9, 23:10    1388
3303     205964268, // 2035 Apr  8, 10:58    1389
3304     206218104, // 2035 May  7, 20:04    1390
3305     206471280, // 2035 Jun  6, 03:20    1391
3306     206724234, // 2035 Jul  5, 09:59    1392
3307     206977386, // 2035 Aug  3, 17:11    1393
3308     207231114, // 2035 Sep  2, 01:59    1394
3309     207485682, // 2035 Oct  1, 13:07    1395
3310     207741234, // 2035 Oct 31, 02:59    1396
3311     207997788, // 2035 Nov 29, 19:38    1397
3312     208255146, // 2035 Dec 29, 14:31    1398
3313     208512822, // 2036 Jan 28, 10:17    1399
3314     208770120, // 2036 Feb 27, 05:00    1400
3315     209026422, // 2036 Mar 27, 20:57    1401
3316     209281518, // 2036 Apr 26, 09:33    1402
3317     209535582, // 2036 May 25, 19:17    1403
3318     209788980, // 2036 Jun 24, 03:10    1404
3319     210042102, // 2036 Jul 23, 10:17    1405
3320     210295290, // 2036 Aug 21, 17:35    1406
3321     210548826, // 2036 Sep 20, 01:51    1407
3322     210802980, // 2036 Oct 19, 11:50    1408
3323     211058010, // 2036 Nov 18, 00:15    1409
3324     211314090, // 2036 Dec 17, 15:35    1410
3325     211571124, // 2037 Jan 16, 09:34    1411
3326     211828644, // 2037 Feb 15, 04:54    1412
3327     212085942, // 2037 Mar 16, 23:37    1413
3328     212342448, // 2037 Apr 15, 16:08    1414
3329     212597970, // 2037 May 15, 05:55    1415
3330     212852586, // 2037 Jun 13, 17:11    1416
3331     213106512, // 2037 Jul 13, 02:32    1417
3332     213360012, // 2037 Aug 11, 10:42    1418
3333     213613350, // 2037 Sep  9, 18:25    1419
3334     213866850, // 2037 Oct  9, 02:35    1420
3335     214120818, // 2037 Nov  7, 12:03    1421
3336     214375554, // 2037 Dec  6, 23:39    1422
3337     214631172, // 2038 Jan  5, 13:42    1423
3338     214887552, // 2038 Feb  4, 05:52    1424
3339     215144370, // 2038 Mar  5, 23:15    1425
3340     215401218, // 2038 Apr  4, 16:43    1426
3341     215657760, // 2038 May  4, 09:20    1427
3342     215913744, // 2038 Jun  3, 00:24    1428
3343     216169032, // 2038 Jul  2, 13:32    1429
3344     216423600, // 2038 Aug  1, 00:40    1430
3345     216677592, // 2038 Aug 30, 10:12    1431
3346     216931302, // 2038 Sep 28, 18:57    1432
3347     217185078, // 2038 Oct 28, 03:53    1433
3348     217439202, // 2038 Nov 26, 13:47    1434
3349     217693812, // 2038 Dec 26, 01:02    1435
3350     217948896, // 2039 Jan 24, 13:36    1436
3351     218204388, // 2039 Feb 23, 03:18    1437
3352     218460240, // 2039 Mar 24, 18:00    1438
3353     218716410, // 2039 Apr 23, 09:35    1439
3354     218972748, // 2039 May 23, 01:38    1440
3355     219228966, // 2039 Jun 21, 17:21    1441
3356     219484764, // 2039 Jul 21, 07:54    1442
3357     219739980, // 2039 Aug 19, 20:50    1443
3358     219994698, // 2039 Sep 18, 08:23    1444
3359     220249134, // 2039 Oct 17, 19:09    1445
3360     220503516, // 2039 Nov 16, 05:46    1446
3361     220757952, // 2039 Dec 15, 16:32    1447
3362     221012430, // 2040 Jan 14, 03:25    1448
3363     221266950, // 2040 Feb 12, 14:25    1449
3364     221521602, // 2040 Mar 13, 01:47    1450
3365     221776560, // 2040 Apr 11, 14:00    1451
3366     222031968, // 2040 May 11, 03:28    1452
3367     222287778, // 2040 Jun  9, 18:03    1453
3368     222543810, // 2040 Jul  9, 09:15    1454
3369     222799836, // 2040 Aug  8, 00:26    1455
3370     223055724, // 2040 Sep  6, 15:14    1456
3371     223311396, // 2040 Oct  6, 05:26    1457
3372     223566816, // 2040 Nov  4, 18:56    1458
3373     223821918, // 2040 Dec  4, 07:33    1459
3374     224076648, // 2041 Jan  2, 19:08    1460
3375     224331018, // 2041 Feb  1, 05:43    1461
3376     224585154, // 2041 Mar  2, 15:39    1462
3377     224839260, // 2041 Apr  1, 01:30    1463
3378     225093522, // 2041 Apr 30, 11:47    1464
3379     225348096, // 2041 May 29, 22:56    1465
3380     225603102, // 2041 Jun 28, 11:17    1466
3381     225858612, // 2041 Jul 28, 01:02    1467
3382     226114656, // 2041 Aug 26, 16:16    1468
3383     226371126, // 2041 Sep 25, 08:41    1469
3384     226627740, // 2041 Oct 25, 01:30    1470
3385     226884096, // 2041 Nov 23, 17:36    1471
3386     227139876, // 2041 Dec 23, 08:06    1472
3387     227394972, // 2042 Jan 21, 20:42    1473
3388     227649474, // 2042 Feb 20, 07:39    1474
3389     227903538, // 2042 Mar 21, 17:23    1475
3390     228157314, // 2042 Apr 20, 02:19    1476
3391     228410970, // 2042 May 19, 10:55    1477
3392     228664728, // 2042 Jun 17, 19:48    1478
3393     228918912, // 2042 Jul 17, 05:52    1479
3394     229173846, // 2042 Aug 15, 18:01    1480
3395     229429740, // 2042 Sep 14, 08:50    1481
3396     229686498, // 2042 Oct 14, 02:03    1482
3397     229943688, // 2042 Nov 12, 20:28    1483
3398     230200734, // 2042 Dec 12, 14:29    1484
3399     230457198, // 2043 Jan 11, 06:53    1485
3400     230712882, // 2043 Feb  9, 21:07    1486
3401     230967774, // 2043 Mar 11, 09:09    1487
3402     231221922, // 2043 Apr  9, 19:07    1488
3403     231475446, // 2043 May  9, 03:21    1489
3404     231728610, // 2043 Jun  7, 10:35    1490
3405     231981786, // 2043 Jul  6, 17:51    1491
3406     232235418, // 2043 Aug  5, 02:23    1492
3407     232489902, // 2043 Sep  3, 13:17    1493
3408     232745472, // 2043 Oct  3, 03:12    1494
3409     233002068, // 2043 Nov  1, 19:58    1495
3410     233259342, // 2043 Dec  1, 14:37    1496
3411     233516808, // 2043 Dec 31, 09:48    1497
3412     233773944, // 2044 Jan 30, 04:04    1498
3413     234030312, // 2044 Feb 28, 20:12    1499
3414     234285636, // 2044 Mar 29, 09:26    1500
3415     234539892, // 2044 Apr 27, 19:42    1501
3416     234793320, // 2044 May 27, 03:40    1502
3417     235046304, // 2044 Jun 25, 10:24    1503
3418     235299300, // 2044 Jul 24, 17:10    1504
3419     235552716, // 2044 Aug 23, 01:06    1505
3420     235806858, // 2044 Sep 21, 11:03    1506
3421     236061936, // 2044 Oct 20, 23:36    1507
3422     236318028, // 2044 Nov 19, 14:58    1508
3423     236575038, // 2044 Dec 19, 08:53    1509
3424     236832630, // 2045 Jan 18, 04:25    1510
3425     237090186, // 2045 Feb 16, 23:51    1511
3426     237347010, // 2045 Mar 18, 17:15    1512
3427     237602682, // 2045 Apr 17, 07:27    1513
3428     237857202, // 2045 May 16, 18:27    1514
3429     238110870, // 2045 Jun 15, 03:05    1515
3430     238364094, // 2045 Jul 14, 10:29    1516
3431     238617234, // 2045 Aug 12, 17:39    1517
3432     238870608, // 2045 Sep 11, 01:28    1518
3433     239124462, // 2045 Oct 10, 10:37    1519
3434     239379054, // 2045 Nov  8, 21:49    1520
3435     239634606, // 2045 Dec  8, 11:41    1521
3436     239891184, // 2046 Jan  7, 04:24    1522
3437     240148500, // 2046 Feb  5, 23:10    1523
3438     240405936, // 2046 Mar  7, 18:16    1524
3439     240662832, // 2046 Apr  6, 11:52    1525
3440     240918816, // 2046 May  6, 02:56    1526
3441     241173852, // 2046 Jun  4, 15:22    1527
3442     241428114, // 2046 Jul  4, 01:39    1528
3443     241681830, // 2046 Aug  2, 10:25    1529
3444     241935270, // 2046 Aug 31, 18:25    1530
3445     242188710, // 2046 Sep 30, 02:25    1531
3446     242442462, // 2046 Oct 29, 11:17    1532
3447     242696820, // 2046 Nov 27, 21:50    1533
3448     242951994, // 2046 Dec 27, 10:39    1534
3449     243207984, // 2047 Jan 26, 01:44    1535
3450     243464556, // 2047 Feb 24, 18:26    1536
3451     243721344, // 2047 Mar 26, 11:44    1537
3452     243978000, // 2047 Apr 25, 04:40    1538
3453     244234242, // 2047 May 24, 20:27    1539
3454     244489896, // 2047 Jun 23, 10:36    1540
3455     244744854, // 2047 Jul 22, 22:49    1541
3456     244999176, // 2047 Aug 21, 09:16    1542
3457     245253066, // 2047 Sep 19, 18:31    1543
3458     245506848, // 2047 Oct 19, 03:28    1544
3459     245760834, // 2047 Nov 17, 12:59    1545
3460     246015228, // 2047 Dec 16, 23:38    1546
3461     246270072, // 2048 Jan 15, 11:32    1547
3462     246525312, // 2048 Feb 14, 00:32    1548
3463     246780888, // 2048 Mar 14, 14:28    1549
3464     247036800, // 2048 Apr 13, 05:20    1550
3465     247292988, // 2048 May 12, 20:58    1551
3466     247549260, // 2048 Jun 11, 12:50    1552
3467     247805304, // 2048 Jul 11, 04:04    1553
3468     248060874, // 2048 Aug  9, 17:59    1554
3469     248315910, // 2048 Sep  8, 06:25    1555
3470     248570550, // 2048 Oct  7, 17:45    1556
3471     248825034, // 2048 Nov  6, 04:39    1557
3472     249079500, // 2048 Dec  5, 15:30    1558
3473     249333990, // 2049 Jan  4, 02:25    1559
3474     249588456, // 2049 Feb  2, 13:16    1560
3475     249842952, // 2049 Mar  4, 00:12    1561
3476     250097634, // 2049 Apr  2, 11:39    1562
3477     250352706, // 2049 May  2, 00:11    1563
3478     250608240, // 2049 May 31, 14:00    1564
3479     250864146, // 2049 Jun 30, 04:51    1565
3480     251120202, // 2049 Jul 29, 20:07    1566
3481     251376234, // 2049 Aug 28, 11:19    1567
3482     251632110, // 2049 Sep 27, 02:05    1568
3483     251887770, // 2049 Oct 26, 16:15    1569
3484     252143136, // 2049 Nov 25, 05:36    1570
3485     252398112, // 2049 Dec 24, 17:52    1571
3486     252652662, // 2050 Jan 23, 04:57    1572
3487     252906858, // 2050 Feb 21, 15:03    1573
3488     253160886, // 2050 Mar 23, 00:41    1574
3489     253414956, // 2050 Apr 21, 10:26    1575
3490     253669266, // 2050 May 20, 20:51    1576
3491     253923972, // 2050 Jun 19, 08:22    1577
3492     254179182, // 2050 Jul 18, 21:17    1578
3493     254434962, // 2050 Aug 17, 11:47    1579
3494     254691294, // 2050 Sep 16, 03:49    1580
3495     254947974, // 2050 Oct 15, 20:49    1581
3496     255204612, // 2050 Nov 14, 13:42    1582
3497     255460788, // 2050 Dec 14, 05:18    1583
3498     255716268, // 2051 Jan 12, 18:58    1584
3499     255971046, // 2051 Feb 11, 06:41    1585
3500     256225272, // 2051 Mar 12, 16:52    1586
3501     256479114, // 2051 Apr 11, 01:59    1587
3502     256732734, // 2051 May 10, 10:29    1588
3503     256986336, // 2051 Jun  8, 18:56    1589
3504     257240214, // 2051 Jul  8, 04:09    1590
3505     257494710, // 2051 Aug  6, 15:05    1591
3506     257750118, // 2051 Sep  5, 04:33    1592
3507     258006522, // 2051 Oct  4, 20:47    1593
3508     258263634, // 2051 Nov  3, 14:59    1594
3509     258520902, // 2051 Dec  3, 09:37    1595
3510     258777756, // 2052 Jan  2, 03:06    1596
3511     259033860, // 2052 Jan 31, 18:30    1597
3512     259289136, // 2052 Mar  1, 07:36    1598
3513     259543602, // 2052 Mar 30, 18:27    1599
3514     259797366, // 2052 Apr 29, 03:21    1600
3515     260050620, // 2052 May 28, 10:50    1601
3516     260303700, // 2052 Jun 26, 17:50    1602
3517     260557026, // 2052 Jul 26, 01:31    1603
3518     260811042, // 2052 Aug 24, 11:07    1604
3519     261066078, // 2052 Sep 22, 23:33    1605
3520     261322218, // 2052 Oct 22, 15:03    1606
3521     261579252, // 2052 Nov 21, 09:02    1607
3522     261836730, // 2052 Dec 21, 04:15    1608
3523     262094112, // 2053 Jan 19, 23:12    1609
3524     262350912, // 2053 Feb 18, 16:32    1610
3525     262606752, // 2053 Mar 20, 07:12    1611
3526     262861488, // 2053 Apr 18, 18:48    1612
3527     263115258, // 2053 May 18, 03:43    1613
3528     263368386, // 2053 Jun 16, 10:51    1614
3529     263621316, // 2053 Jul 15, 17:26    1615
3530     263874486, // 2053 Aug 14, 00:41    1616
3531     264128256, // 2053 Sep 12, 09:36    1617
3532     264382878, // 2053 Oct 11, 20:53    1618
3533     264638490, // 2053 Nov 10, 10:55    1619
3534     264895080, // 2053 Dec 10, 03:40    1620
3535     265152444, // 2054 Jan  8, 22:34    1621
3536     265410084, // 2054 Feb  7, 18:14    1622
3537     265667316, // 2054 Mar  9, 12:46    1623
3538     265923552, // 2054 Apr  8, 04:32    1624
3539     266178600, // 2054 May  7, 17:00    1625
3540     266432640, // 2054 Jun  6, 02:40    1626
3541     266686044, // 2054 Jul  5, 10:34    1627
3542     266939208, // 2054 Aug  3, 17:48    1628
3543     267192468, // 2054 Sep  2, 01:18    1629
3544     267446094, // 2054 Oct  1, 09:49    1630
3545     267700326, // 2054 Oct 30, 20:01    1631
3546     267955404, // 2054 Nov 29, 08:34    1632
3547     268211466, // 2054 Dec 28, 23:51    1633
3548     268468434, // 2055 Jan 27, 17:39    1634
3549     268725834, // 2055 Feb 26, 12:39    1635
3550     268983006, // 2055 Mar 28, 07:01    1636
3551     269239422, // 2055 Apr 26, 23:17    1637
3552     269494902, // 2055 May 26, 12:57    1638
3553     269749530, // 2055 Jun 25, 00:15    1639
3554     270003528, // 2055 Jul 24, 09:48    1640
3555     270257124, // 2055 Aug 22, 18:14    1641
3556     270510594, // 2055 Sep 21, 02:19    1642
3557     270764214, // 2055 Oct 20, 10:49    1643
3558     271018284, // 2055 Nov 18, 20:34    1644
3559     271273050, // 2055 Dec 18, 08:15    1645
3560     271528620, // 2056 Jan 16, 22:10    1646
3561     271784880, // 2056 Feb 15, 14:00    1647
3562     272041512, // 2056 Mar 16, 06:52    1648
3563     272298186, // 2056 Apr 14, 23:51    1649
3564     272554596, // 2056 May 14, 16:06    1650
3565     272810544, // 2056 Jun 13, 07:04    1651
3566     273065880, // 2056 Jul 12, 20:20    1652
3567     273320568, // 2056 Aug 11, 07:48    1653
3568     273574722, // 2056 Sep  9, 17:47    1654
3569     273828600, // 2056 Oct  9, 03:00    1655
3570     274082526, // 2056 Nov  7, 12:21    1656
3571     274336746, // 2056 Dec  6, 22:31    1657
3572     274591374, // 2057 Jan  5, 09:49    1658
3573     274846386, // 2057 Feb  3, 22:11    1659
3574     275101710, // 2057 Mar  5, 11:25    1660
3575     275357346, // 2057 Apr  4, 01:31    1661
3576     275613312, // 2057 May  3, 16:32    1662
3577     275869506, // 2057 Jun  2, 08:11    1663
3578     276125682, // 2057 Jul  1, 23:47    1664
3579     276381552, // 2057 Jul 31, 14:32    1665
3580     276636924, // 2057 Aug 30, 03:54    1666
3581     276891840, // 2057 Sep 28, 16:00    1667
3582     277146474, // 2057 Oct 28, 03:19    1668
3583     277401012, // 2057 Nov 26, 14:22    1669
3584     277655532, // 2057 Dec 26, 01:22    1670
3585     277910004, // 2058 Jan 24, 12:14    1671
3586     278164422, // 2058 Feb 22, 22:57    1672
3587     278418900, // 2058 Mar 24, 09:50    1673
3588     278673654, // 2058 Apr 22, 21:29    1674
3589     278928858, // 2058 May 22, 10:23    1675
3590     279184530, // 2058 Jun 21, 00:35    1676
3591     279440520, // 2058 Jul 20, 15:40    1677
3592     279696618, // 2058 Aug 19, 07:03    1678
3593     279952662, // 2058 Sep 17, 22:17    1679
3594     280208550, // 2058 Oct 17, 13:05    1680
3595     280464174, // 2058 Nov 16, 03:09    1681
3596     280719426, // 2058 Dec 15, 16:11    1682
3597     280974222, // 2059 Jan 14, 03:57    1683
3598     281228562, // 2059 Feb 12, 14:27    1684
3599     281482590, // 2059 Mar 14, 00:05    1685
3600     281736534, // 2059 Apr 12, 09:29    1686
3601     281990610, // 2059 May 11, 19:15    1687
3602     282245022, // 2059 Jun 10, 05:57    1688
3603     282499908, // 2059 Jul  9, 17:58    1689
3604     282755388, // 2059 Aug  8, 07:38    1690
3605     283011486, // 2059 Sep  6, 23:01    1691
3606     283268100, // 2059 Oct  6, 15:50    1692
3607     283524906, // 2059 Nov  5, 09:11    1693
3608     283781454, // 2059 Dec  5, 01:49    1694
3609     284037360, // 2060 Jan  3, 16:40    1695
3610     284292492, // 2060 Feb  2, 05:22    1696
3611     284546952, // 2060 Mar  2, 16:12    1697
3612     284800908, // 2060 Apr  1, 01:38    1698
3613     285054546, // 2060 Apr 30, 10:11    1699
3614     285308064, // 2060 May 29, 18:24    1700
3615     285561708, // 2060 Jun 28, 02:58    1701
3616     285815820, // 2060 Jul 27, 12:50    1702
3617     286070736, // 2060 Aug 26, 00:56    1703
3618     286326684, // 2060 Sep 24, 15:54    1704
3619     286583556, // 2060 Oct 24, 09:26    1705
3620     286840896, // 2060 Nov 23, 04:16    1706
3621     287098080, // 2060 Dec 22, 22:40    1707
3622     287354616, // 2061 Jan 21, 15:16    1708
3623     287610306, // 2061 Feb 20, 05:31    1709
3624     287865138, // 2061 Mar 21, 17:23    1710
3625     288119190, // 2061 Apr 20, 03:05    1711
3626     288372618, // 2061 May 19, 11:03    1712
3627     288625698, // 2061 Jun 17, 18:03    1713
3628     288878826, // 2061 Jul 17, 01:11    1714
3629     289132440, // 2061 Aug 15, 09:40    1715
3630     289386942, // 2061 Sep 13, 20:37    1716
3631     289642572, // 2061 Oct 13, 10:42    1717
3632     289899240, // 2061 Nov 12, 03:40    1718
3633     290156598, // 2061 Dec 11, 22:33    1719
3634     290414118, // 2062 Jan 10, 17:53    1720
3635     290671266, // 2062 Feb  9, 12:11    1721
3636     290927598, // 2062 Mar 11, 04:13    1722
3637     291182862, // 2062 Apr  9, 17:17    1723
3638     291437058, // 2062 May  9, 03:23    1724
3639     291690432, // 2062 Jun  7, 11:12    1725
3640     291943398, // 2062 Jul  6, 17:53    1726
3641     292196400, // 2062 Aug  5, 00:40    1727
3642     292449852, // 2062 Sep  3, 08:42    1728
3643     292704054, // 2062 Oct  2, 18:49    1729
3644     292959198, // 2062 Nov  1, 07:33    1730
3645     293215326, // 2062 Nov 30, 23:01    1731
3646     293472342, // 2062 Dec 30, 16:57    1732
3647     293729898, // 2063 Jan 29, 12:23    1733
3648     293987388, // 2063 Feb 28, 07:38    1734
3649     294244140, // 2063 Mar 30, 00:50    1735
3650     294499752, // 2063 Apr 28, 14:52    1736
3651     294754242, // 2063 May 28, 01:47    1737
3652     295007916, // 2063 Jun 26, 10:26    1738
3653     295261170, // 2063 Jul 25, 17:55    1739
3654     295514382, // 2063 Aug 24, 01:17    1740
3655     295767846, // 2063 Sep 22, 09:21    1741
3656     296021796, // 2063 Oct 21, 18:46    1742
3657     296276454, // 2063 Nov 20, 06:09    1743
3658     296532024, // 2063 Dec 19, 20:04    1744
3659     296788542, // 2064 Jan 18, 12:37    1745
3660     297045738, // 2064 Feb 17, 07:03    1746
3661     297303030, // 2064 Mar 18, 01:45    1747
3662     297559812, // 2064 Apr 16, 19:02    1748
3663     297815730, // 2064 May 16, 09:55    1749
3664     298070766, // 2064 Jun 14, 22:21    1750
3665     298325076, // 2064 Jul 14, 08:46    1751
3666     298578894, // 2064 Aug 12, 17:49    1752
3667     298832466, // 2064 Sep 11, 02:11    1753
3668     299086044, // 2064 Oct 10, 10:34    1754
3669     299339910, // 2064 Nov  8, 19:45    1755
3670     299594334, // 2064 Dec  8, 06:29    1756
3671     299849490, // 2065 Jan  6, 19:15    1757
3672     300105372, // 2065 Feb  5, 10:02    1758
3673     300361770, // 2065 Mar  7, 02:15    1759
3674     300618366, // 2065 Apr  5, 19:01    1760
3675     300874860, // 2065 May  5, 11:30    1761
3676     301131030, // 2065 Jun  4, 03:05    1762
3677     301386696, // 2065 Jul  3, 17:16    1763
3678     301641756, // 2065 Aug  2, 05:46    1764
3679     301896234, // 2065 Aug 31, 16:39    1765
3680     302150304, // 2065 Sep 30, 02:24    1766
3681     302404248, // 2065 Oct 29, 11:48    1767
3682     302658360, // 2065 Nov 27, 21:40    1768
3683     302912802, // 2065 Dec 27, 08:27    1769
3684     303167604, // 2066 Jan 25, 20:14    1770
3685     303422706, // 2066 Feb 24, 08:51    1771
3686     303678084, // 2066 Mar 25, 22:14    1772
3687     303933774, // 2066 Apr 24, 12:29    1773
3688     304189788, // 2066 May 24, 03:38    1774
3689     304445970, // 2066 Jun 22, 19:15    1775
3690     304702044, // 2066 Jul 22, 10:34    1776
3691     304957740, // 2066 Aug 21, 00:50    1777
3692     305212962, // 2066 Sep 19, 13:47    1778
3693     305467812, // 2066 Oct 19, 01:42    1779
3694     305722476, // 2066 Nov 17, 13:06    1780
3695     305977062, // 2066 Dec 17, 00:17    1781
3696     306231576, // 2067 Jan 15, 11:16    1782
3697     306485982, // 2067 Feb 13, 21:57    1783
3698     306740334, // 2067 Mar 15, 08:29    1784
3699     306994824, // 2067 Apr 13, 19:24    1785
3700     307249680, // 2067 May 13, 07:20    1786
3701     307505046, // 2067 Jun 11, 20:41    1787
3702     307760856, // 2067 Jul 11, 11:16    1788
3703     308016936, // 2067 Aug 10, 02:36    1789
3704     308273094, // 2067 Sep  8, 18:09    1790
3705     308529168, // 2067 Oct  8, 09:28    1791
3706     308785044, // 2067 Nov  7, 00:14    1792
3707     309040590, // 2067 Dec  6, 14:05    1793
3708     309295668, // 2068 Jan  5, 02:38    1794
3709     309550224, // 2068 Feb  3, 13:44    1795
3710     309804342, // 2068 Mar  3, 23:37    1796
3711     310058226, // 2068 Apr  2, 08:51    1797
3712     310312122, // 2068 May  1, 18:07    1798
3713     310566258, // 2068 May 31, 04:03    1799
3714     310820826, // 2068 Jun 29, 15:11    1800
3715     311075970, // 2068 Jul 29, 03:55    1801
3716     311331768, // 2068 Aug 27, 18:28    1802
3717     311588208, // 2068 Sep 26, 10:48    1803
3718     311845062, // 2068 Oct 26, 04:17    1804
3719     312101892, // 2068 Nov 24, 21:42    1805
3720     312358224, // 2068 Dec 24, 13:44    1806
3721     312613776, // 2069 Jan 23, 03:36    1807
3722     312868542, // 2069 Feb 21, 15:17    1808
3723     313122678, // 2069 Mar 23, 01:13    1809
3724     313376388, // 2069 Apr 21, 09:58    1810
3725     313629876, // 2069 May 20, 18:06    1811
3726     313883364, // 2069 Jun 19, 02:14    1812
3727     314137158, // 2069 Jul 18, 11:13    1813
3728     314391618, // 2069 Aug 16, 22:03    1814
3729     314647050, // 2069 Sep 15, 11:35    1815
3730     314903538, // 2069 Oct 15, 04:03    1816
3731     315160788, // 2069 Nov 13, 22:38    1817
3732     315418188, // 2069 Dec 13, 17:38    1818
3733     315675138, // 2070 Jan 12, 11:23    1819
3734     315931278, // 2070 Feb 11, 02:53    1820
3735     316186512, // 2070 Mar 12, 15:52    1821
3736     316440900, // 2070 Apr 11, 02:30    1822
3737     316694568, // 2070 May 10, 11:08    1823
3738     316947744, // 2070 Jun  8, 18:24    1824
3739     317200764, // 2070 Jul  8, 01:14    1825
3740     317454066, // 2070 Aug  6, 08:51    1826
3741     317708094, // 2070 Sep  4, 18:29    1827
3742     317963166, // 2070 Oct  4, 07:01    1828
3743     318219378, // 2070 Nov  2, 22:43    1829
3744     318476484, // 2070 Dec  2, 16:54    1830
3745     318734010, // 2071 Jan  1, 12:15    1831
3746     318991416, // 2071 Jan 31, 07:16    1832
3747     319248192, // 2071 Mar  2, 00:32    1833
3748     319503978, // 2071 Mar 31, 15:03    1834
3749     319758660, // 2071 Apr 30, 02:30    1835
3750     320012382, // 2071 May 29, 11:17    1836
3751     320265480, // 2071 Jun 27, 18:20    1837
3752     320518416, // 2071 Jul 27, 00:56    1838
3753     320771616, // 2071 Aug 25, 08:16    1839
3754     321025446, // 2071 Sep 23, 17:21    1840
3755     321280134, // 2071 Oct 23, 04:49    1841
3756     321535794, // 2071 Nov 21, 18:59    1842
3757     321792402, // 2071 Dec 21, 11:47    1843
3758     322049730, // 2072 Jan 20, 06:35    1844
3759     322307298, // 2072 Feb 19, 02:03    1845
3760     322564452, // 2072 Mar 19, 20:22    1846
3761     322820622, // 2072 Apr 18, 11:57    1847
3762     323075634, // 2072 May 18, 00:19    1848
3763     323329662, // 2072 Jun 16, 09:57    1849
3764     323583096, // 2072 Jul 15, 17:56    1850
3765     323836326, // 2072 Aug 14, 01:21    1851
3766     324089682, // 2072 Sep 12, 09:07    1852
3767     324343410, // 2072 Oct 11, 17:55    1853
3768     324597726, // 2072 Nov 10, 04:21    1854
3769     324852834, // 2072 Dec  9, 16:59    1855
3770     325108866, // 2073 Jan  8, 08:11    1856
3771     325365720, // 2073 Feb  7, 01:40    1857
3772     325622976, // 2073 Mar  8, 20:16    1858
3773     325880004, // 2073 Apr  7, 14:14    1859
3774     326136330, // 2073 May  7, 06:15    1860
3775     326391792, // 2073 Jun  5, 19:52    1861
3776     326646462, // 2073 Jul  5, 07:17    1862
3777     326900544, // 2073 Aug  3, 17:04    1863
3778     327154272, // 2073 Sep  2, 01:52    1864
3779     327407886, // 2073 Oct  1, 10:21    1865
3780     327661638, // 2073 Oct 30, 19:13    1866
3781     327915792, // 2073 Nov 29, 05:12    1867
3782     328170570, // 2073 Dec 28, 16:55    1868
3783     328426062, // 2074 Jan 27, 06:37    1869
3784     328682160, // 2074 Feb 25, 22:00    1870
3785     328938600, // 2074 Mar 27, 14:20    1871
3786     329195088, // 2074 Apr 26, 06:48    1872
3787     329451384, // 2074 May 25, 22:44    1873
3788     329707314, // 2074 Jun 24, 13:39    1874
3789     329962722, // 2074 Jul 24, 03:07    1875
3790     330217554, // 2074 Aug 22, 14:59    1876
3791     330471888, // 2074 Sep 21, 01:28    1877
3792     330725946, // 2074 Oct 20, 11:11    1878
3793     330980016, // 2074 Nov 18, 20:56    1879
3794     331234320, // 2074 Dec 18, 07:20    1880
3795     331488942, // 2075 Jan 16, 18:37    1881
3796     331743846, // 2075 Feb 15, 06:41    1882
3797     331998990, // 2075 Mar 16, 19:25    1883
3798     332254410, // 2075 Apr 15, 08:55    1884
3799     332510172, // 2075 May 14, 23:22    1885
3800     332766234, // 2075 Jun 13, 14:39    1886
3801     333022386, // 2075 Jul 13, 06:11    1887
3802     333278346, // 2075 Aug 11, 21:11    1888
3803     333533892, // 2075 Sep 10, 11:02    1889
3804     333789018, // 2075 Oct  9, 23:43    1890
3805     334043850, // 2075 Nov  8, 11:35    1891
3806     334298538, // 2075 Dec  7, 23:03    1892
3807     334553130, // 2076 Jan  6, 10:15    1893
3808     334807566, // 2076 Feb  4, 21:01    1894
3809     335061864, // 2076 Mar  5, 07:24    1895
3810     335316162, // 2076 Apr  3, 17:47    1896
3811     335570712, // 2076 May  3, 04:52    1897
3812     335825724, // 2076 Jun  1, 17:14    1898
3813     336081270, // 2076 Jul  1, 07:05    1899
3814     336337236, // 2076 Jul 30, 22:06    1900
3815     336593424, // 2076 Aug 29, 13:44    1901
3816     336849642, // 2076 Sep 28, 05:27    1902
3817     337105740, // 2076 Oct 27, 20:50    1903
3818     337361568, // 2076 Nov 26, 11:28    1904
3819     337616958, // 2076 Dec 26, 00:53    1905
3820     337871790, // 2077 Jan 24, 12:45    1906
3821     338126082, // 2077 Feb 22, 23:07    1907
3822     338379984, // 2077 Mar 24, 08:24    1908
3823     338633760, // 2077 Apr 22, 17:20    1909
3824     338887668, // 2077 May 22, 02:38    1910
3825     339141930, // 2077 Jun 20, 12:55    1911
3826     339396726, // 2077 Jul 20, 00:41    1912
3827     339652188, // 2077 Aug 18, 14:18    1913
3828     339908358, // 2077 Sep 17, 05:53    1914
3829     340165122, // 2077 Oct 16, 23:07    1915
3830     340422120, // 2077 Nov 15, 17:00    1916
3831     340678836, // 2077 Dec 15, 10:06    1917
3832     340934844, // 2078 Jan 14, 01:14    1918
3833     341189988, // 2078 Feb 12, 13:58    1919
3834     341444382, // 2078 Mar 14, 00:37    1920
3835     341698230, // 2078 Apr 12, 09:45    1921
3836     341951736, // 2078 May 11, 17:56    1922
3837     342205134, // 2078 Jun 10, 01:49    1923
3838     342458688, // 2078 Jul  9, 10:08    1924
3839     342712752, // 2078 Aug  7, 19:52    1925
3840     342967674, // 2078 Sep  6, 07:59    1926
3841     343223676, // 2078 Oct  5, 23:06    1927
3842     343480656, // 2078 Nov  4, 16:56    1928
3843     343738128, // 2078 Dec  4, 12:08    1929
3844     343995420, // 2079 Jan  3, 06:50    1930
3845     344252010, // 2079 Feb  1, 23:35    1931
3846     344507688, // 2079 Mar  3, 13:48    1932
3847     344762460, // 2079 Apr  2, 01:30    1933
3848     345016422, // 2079 May  1, 10:57    1934
3849     345269766, // 2079 May 30, 18:41    1935
3850     345522786, // 2079 Jun 29, 01:31    1936
3851     345775878, // 2079 Jul 28, 08:33    1937
3852     346029492, // 2079 Aug 26, 17:02    1938
3853     346284036, // 2079 Sep 25, 04:06    1939
3854     346539720, // 2079 Oct 24, 18:20    1940
3855     346796460, // 2079 Nov 23, 11:30    1941
3856     347053872, // 2079 Dec 23, 06:32    1942
3857     347311410, // 2080 Jan 22, 01:55    1943
3858     347568546, // 2080 Feb 20, 20:11    1944
3859     347824836, // 2080 Mar 21, 12:06    1945
3860     348080040, // 2080 Apr 20, 01:00    1946
3861     348334176, // 2080 May 19, 10:56    1947
3862     348587520, // 2080 Jun 17, 18:40    1948
3863     348840486, // 2080 Jul 17, 01:21    1949
3864     349093518, // 2080 Aug 15, 08:13    1950
3865     349347030, // 2080 Sep 13, 16:25    1951
3866     349601304, // 2080 Oct 13, 02:44    1952
3867     349856502, // 2080 Nov 11, 15:37    1953
3868     350112660, // 2080 Dec 11, 07:10    1954
3869     350369652, // 2081 Jan 10, 01:02    1955
3870     350627142, // 2081 Feb  8, 20:17    1956
3871     350884542, // 2081 Mar 10, 15:17    1957
3872     351141210, // 2081 Apr  9, 08:15    1958
3873     351396774, // 2081 May  8, 22:09    1959
3874     351651246, // 2081 Jun  7, 09:01    1960
3875     351904944, // 2081 Jul  6, 17:44    1961
3876     352158264, // 2081 Aug  5, 01:24    1962
3877     352411566, // 2081 Sep  3, 09:01    1963
3878     352665138, // 2081 Oct  2, 17:23    1964
3879     352919184, // 2081 Nov  1, 03:04    1965
3880     353173896, // 2081 Nov 30, 14:36    1966
3881     353429448, // 2081 Dec 30, 04:28    1967
3882     353685876, // 2082 Jan 28, 20:46    1968
3883     353942928, // 2082 Feb 27, 14:48    1969
3884     354200070, // 2082 Mar 29, 09:05    1970
3885     354456732, // 2082 Apr 28, 02:02    1971
3886     354712602, // 2082 May 27, 16:47    1972
3887     354967656, // 2082 Jun 26, 05:16    1973
3888     355222044, // 2082 Jul 25, 15:54    1974
3889     355475988, // 2082 Aug 24, 01:18    1975
3890     355729704, // 2082 Sep 22, 10:04    1976
3891     355983420, // 2082 Oct 21, 18:50    1977
3892     356237394, // 2082 Nov 20, 04:19    1978
3893     356491860, // 2082 Dec 19, 15:10    1979
3894     356746980, // 2083 Jan 18, 03:50    1980
3895     357002730, // 2083 Feb 16, 18:15    1981
3896     357258942, // 2083 Mar 18, 09:57    1982
3897     357515340, // 2083 Apr 17, 02:10    1983
3898     357771684, // 2083 May 16, 18:14    1984
3899     358027782, // 2083 Jun 15, 09:37    1985
3900     358283484, // 2083 Jul 14, 23:54    1986
3901     358538670, // 2083 Aug 13, 12:45    1987
3902     358793322, // 2083 Sep 12, 00:07    1988
3903     359047578, // 2083 Oct 11, 10:23    1989
3904     359301690, // 2083 Nov  9, 20:15    1990
3905     359555910, // 2083 Dec  9, 06:25    1991
3906     359810382, // 2084 Jan  7, 17:17    1992
3907     360065118, // 2084 Feb  6, 04:53    1993
3908     360320064, // 2084 Mar  6, 17:04    1994
3909     360575232, // 2084 Apr  5, 05:52    1995
3910     360830718, // 2084 May  4, 19:33    1996
3911     361086558, // 2084 Jun  3, 10:13    1997
3912     361342668, // 2084 Jul  3, 01:38    1998
3913     361598784, // 2084 Aug  1, 17:04    1999
3914     361854630, // 2084 Aug 31, 07:45    2000
3915     362110056, // 2084 Sep 29, 21:16    2001
3916     362365122, // 2084 Oct 29, 09:47    2002
3917     362619954, // 2084 Nov 27, 21:39    2003
3918     362874642, // 2084 Dec 27, 09:07    2004
3919     363129162, // 2085 Jan 25, 20:07    2005
3920     363383472, // 2085 Feb 24, 06:32    2006
3921     363637662, // 2085 Mar 25, 16:37    2007
3922     363891954, // 2085 Apr 24, 02:59    2008
3923     364146618, // 2085 May 23, 14:23    2009
3924     364401828, // 2085 Jun 22, 03:18    2010
3925     364657578, // 2085 Jul 21, 17:43    2011
3926     364913706, // 2085 Aug 20, 09:11    2012
3927     365170002, // 2085 Sep 19, 01:07    2013
3928     365426280, // 2085 Oct 18, 17:00    2014
3929     365682366, // 2085 Nov 17, 08:21    2015
3930     365938068, // 2085 Dec 16, 22:38    2016
3931     366193224, // 2086 Jan 15, 11:24    2017
3932     366447762, // 2086 Feb 13, 22:27    2018
3933     366701784, // 2086 Mar 15, 08:04    2019
3934     366955518, // 2086 Apr 13, 16:53    2020
3935     367209246, // 2086 May 13, 01:41    2021
3936     367463232, // 2086 Jun 11, 11:12    2022
3937     367717692, // 2086 Jul 10, 22:02    2023
3938     367972788, // 2086 Aug  9, 10:38    2024
3939     368228622, // 2086 Sep  8, 01:17    2025
3940     368485176, // 2086 Oct  7, 17:56    2026
3941     368742198, // 2086 Nov  6, 11:53    2027
3942     368999208, // 2086 Dec  6, 05:48    2028
3943     369255666, // 2087 Jan  4, 22:11    2029
3944     369511260, // 2087 Feb  3, 12:10    2030
3945     369765990, // 2087 Mar  4, 23:45    2031
3946     370020036, // 2087 Apr  3, 09:26    2032
3947     370273626, // 2087 May  2, 17:51    2033
3948     370526988, // 2087 Jun  1, 01:38    2034
3949     370780386, // 2087 Jun 30, 09:31    2035
3950     371034120, // 2087 Jul 29, 18:20    2036
3951     371288568, // 2087 Aug 28, 05:08    2037
3952     371544042, // 2087 Sep 26, 18:47    2038
3953     371800614, // 2087 Oct 26, 11:29    2039
3954     372057984, // 2087 Nov 25, 06:24    2040
3955     372315498, // 2087 Dec 25, 01:43    2041
3956     372572514, // 2088 Jan 23, 19:39    2042
3957     372828654, // 2088 Feb 22, 11:09    2043
3958     373083846, // 2088 Mar 23, 00:01    2044
3959     373338150, // 2088 Apr 21, 10:25    2045
3960     373591734, // 2088 May 20, 18:49    2046
3961     373844844, // 2088 Jun 19, 01:54    2047
3962     374097828, // 2088 Jul 18, 08:38    2048
3963     374351130, // 2088 Aug 16, 16:15    2049
3964     374605188, // 2088 Sep 15, 01:58    2050
3965     374860314, // 2088 Oct 14, 14:39    2051
3966     375116592, // 2088 Nov 13, 06:32    2052
3967     375373752, // 2088 Dec 13, 00:52    2053
3968     375631308, // 2089 Jan 11, 20:18    2054
3969     375888696, // 2089 Feb 10, 15:16    2055
3970     376145424, // 2089 Mar 12, 08:24    2056
3971     376401156, // 2089 Apr 10, 22:46    2057
3972     376655784, // 2089 May 10, 10:04    2058
3973     376909464, // 2089 Jun  8, 18:44    2059
3974     377162562, // 2089 Jul  8, 01:47    2060
3975     377415528, // 2089 Aug  6, 08:28    2061
3976     377668782, // 2089 Sep  4, 15:57    2062
3977     377922690, // 2089 Oct  4, 01:15    2063
3978     378177450, // 2089 Nov  2, 12:55    2064
3979     378433146, // 2089 Dec  2, 03:11    2065
3980     378689736, // 2089 Dec 31, 19:56    2066
3981     378947004, // 2090 Jan 30, 14:34    2067
3982     379204476, // 2090 Mar  1, 09:46    2068
3983     379461528, // 2090 Mar 31, 03:48    2069
3984     379717632, // 2090 Apr 29, 19:12    2070
3985     379972614, // 2090 May 29, 07:29    2071
3986     380226666, // 2090 Jun 27, 17:11    2072
3987     380480154, // 2090 Jul 27, 01:19    2073
3988     380733468, // 2090 Aug 25, 08:58    2074
3989     380986938, // 2090 Sep 23, 17:03    2075
3990     381240774, // 2090 Oct 23, 02:09    2076
3991     381495168, // 2090 Nov 21, 12:48    2077
3992     381750294, // 2090 Dec 21, 01:29    2078
3993     382006260, // 2091 Jan 19, 16:30    2079
3994     382262988, // 2091 Feb 18, 09:38    2080
3995     382520076, // 2091 Mar 20, 03:46    2081
3996     382776960, // 2091 Apr 18, 21:20    2082
3997     383033202, // 2091 May 18, 13:07    2083
3998     383288646, // 2091 Jun 17, 02:41    2084
3999     383543376, // 2091 Jul 16, 14:16    2085
4000     383797572, // 2091 Aug 15, 00:22    2086
4001     384051444, // 2091 Sep 13, 09:34    2087
4002     384305214, // 2091 Oct 12, 18:29    2088
4003     384559092, // 2091 Nov 11, 03:42    2089
4004     384813324, // 2091 Dec 10, 13:54    2090
4005     385068102, // 2092 Jan  9, 01:37    2091
4006     385323492, // 2092 Feb  7, 15:02    2092
4007     385579416, // 2092 Mar  8, 05:56    2093
4008     385835646, // 2092 Apr  6, 21:41    2094
4009     386091954, // 2092 May  6, 13:39    2095
4010     386348142, // 2092 Jun  5, 05:17    2096
4011     386604066, // 2092 Jul  4, 20:11    2097
4012     386859570, // 2092 Aug  3, 09:55    2098
4013     387114564, // 2092 Sep  1, 22:14    2099
4014     387369090, // 2092 Oct  1, 09:15    2100
4015     387623328, // 2092 Oct 30, 19:28    2101
4016     387877536, // 2092 Nov 29, 05:36    2102
4017     388131900, // 2092 Dec 28, 16:10    2103
4018     388386492, // 2093 Jan 27, 03:22    2104
4019     388641276, // 2093 Feb 25, 15:06    2105
4020     388896228, // 2093 Mar 27, 03:18    2106
4021     389151432, // 2093 Apr 25, 16:12    2107
4022     389407002, // 2093 May 25, 06:07    2108
4023     389662950, // 2093 Jun 23, 21:05    2109
4024     389919096, // 2093 Jul 23, 12:36    2110
4025     390175164, // 2093 Aug 22, 03:54    2111
4026     390430902, // 2093 Sep 20, 18:17    2112
4027     390686238, // 2093 Oct 20, 07:33    2113
4028     390941262, // 2093 Nov 18, 19:57    2114
4029     391196082, // 2093 Dec 18, 07:47    2115
4030     391450710, // 2094 Jan 16, 19:05    2116
4031     391705098, // 2094 Feb 15, 05:43    2117
4032     391959264, // 2094 Mar 16, 15:44    2118
4033     392213388, // 2094 Apr 15, 01:38    2119
4034     392467734, // 2094 May 14, 12:09    2120
4035     392722578, // 2094 Jun 13, 00:03    2121
4036     392978022, // 2094 Jul 12, 13:37    2122
4037     393233982, // 2094 Aug 11, 04:37    2123
4038     393490266, // 2094 Sep  9, 20:31    2124
4039     393746664, // 2094 Oct  9, 12:44    2125
4040     394002972, // 2094 Nov  8, 04:42    2126
4041     394258980, // 2094 Dec  7, 19:50    2127
4042     394514478, // 2095 Jan  6, 09:33    2128
4043     394769334, // 2095 Feb  4, 21:29    2129
4044     395023554, // 2095 Mar  6, 07:39    2130
4045     395277336, // 2095 Apr  4, 16:36    2131
4046     395530956, // 2095 May  4, 01:06    2132
4047     395784708, // 2095 Jun  2, 09:58    2133
4048     396038844, // 2095 Jul  1, 19:54    2134
4049     396293574, // 2095 Jul 31, 07:29    2135
4050     396549036, // 2095 Aug 29, 21:06    2136
4051     396805284, // 2095 Sep 28, 12:54    2137
4052     397062198, // 2095 Oct 28, 06:33    2138
4053     397319364, // 2095 Nov 27, 00:54    2139
4054     397576230, // 2095 Dec 26, 18:25    2140
4055     397832310, // 2096 Jan 25, 09:45    2141
4056     398087448, // 2096 Feb 23, 22:28    2142
4057     398341770, // 2096 Mar 24, 08:55    2143
4058     398595504, // 2096 Apr 22, 17:44    2144
4059     398848896, // 2096 May 22, 01:36    2145
4060     399102192, // 2096 Jun 20, 09:12    2146
4061     399355686, // 2096 Jul 19, 17:21    2147
4062     399609720, // 2096 Aug 18, 03:00    2148
4063     399864660, // 2096 Sep 16, 15:10    2149
4064     400120734, // 2096 Oct 16, 06:29    2150
4065     400377816, // 2096 Nov 15, 00:36    2151
4066     400635396, // 2096 Dec 14, 20:06    2152
4067     400892760, // 2097 Jan 13, 15:00    2153
4068     401149374, // 2097 Feb 12, 07:49    2154
4069     401405022, // 2097 Mar 13, 21:57    2155
4070     401659716, // 2097 Apr 12, 09:26    2156
4071     401913600, // 2097 May 11, 18:40    2157
4072     402166884, // 2097 Jun 10, 02:14    2158
4073     402419868, // 2097 Jul  9, 08:58    2159
4074     402672960, // 2097 Aug  7, 16:00    2160
4075     402926598, // 2097 Sep  6, 00:33    2161
4076     403181190, // 2097 Oct  5, 11:45    2162
4077     403436934, // 2097 Nov  4, 02:09    2163
4078     403693722, // 2097 Dec  3, 19:27    2164
4079     403951158, // 2098 Jan  2, 14:33    2165
4080     404208684, // 2098 Feb  1, 09:54    2166
4081     404465772, // 2098 Mar  3, 04:02    2167
4082     404722002, // 2098 Apr  1, 19:47    2168
4083     404977152, // 2098 May  1, 08:32    2169
4084     405231258, // 2098 May 30, 18:23    2170
4085     405484596, // 2098 Jun 29, 02:06    2171
4086     405737586, // 2098 Jul 28, 08:51    2172
4087     405990672, // 2098 Aug 26, 15:52    2173
4088     406244256, // 2098 Sep 25, 00:16    2174
4089     406498614, // 2098 Oct 24, 10:49    2175
4090     406753866, // 2098 Nov 22, 23:51    2176
4091     407010024, // 2098 Dec 22, 15:24    2177
4092     407266962, // 2099 Jan 21, 09:07    2178
4093     407524350, // 2099 Feb 20, 04:05    2179
4094     407781636, // 2099 Mar 21, 22:46    2180
4095     408038220, // 2099 Apr 20, 15:30    2181
4096     408293736, // 2099 May 20, 05:16    2182
4097     408548220, // 2099 Jun 18, 16:10    2183
4098     408801966, // 2099 Jul 18, 01:01    2184
4099     409055364, // 2099 Aug 16, 08:54    2185
4100     409308780, // 2099 Sep 14, 16:50    2186
4101     409562472, // 2099 Oct 14, 01:32    2187
4102     409816614, // 2099 Nov 12, 11:29    2188
4103     410071374, // 2099 Dec 11, 23:09    2189
4104     410326896, // 2100 Jan 10, 12:56    2190
4105     410583210, // 2100 Feb  9, 04:55    2191
4106     410840094, // 2100 Mar 10, 22:29    2192
4107     411097062, // 2100 Apr  9, 16:17    2193
4108     411353604, // 2100 May  9, 08:54    2194
4109     411609426, // 2100 Jun  7, 23:31    2195
4110     411864516, // 2100 Jul  7, 12:06    2196
4111     412119012, // 2100 Aug  5, 23:02    2197
4112     412373094, // 2100 Sep  4, 08:49    2198
4113     412626972, // 2100 Oct  3, 18:02    2199
4114     412880844, // 2100 Nov  2, 03:14    2200
4115     413134920, // 2100 Dec  1, 13:00    2201
4116     413389416, // 2100 Dec 30, 23:56    2202
4117     413644464, // 2101 Jan 29, 12:24    2203
4118};
4119enum { kNewMoonDatesCount = sizeof(newMoonDates)/sizeof(newMoonDates[0]) };
4120
4121static const UDate newMoonDatesFirst = 10000.0 * -221149158; // newMoonDates[0];
4122static const UDate newMoonDatesLast  = 10000.0 *  413644464; // newMoonDates[kNewMoonDatesCount-1];
4123static const UDate newMoonDatesRange = 10000.0 * (413644464 + 221149158); // newMoonDatesLast - newMoonDatesFirst;
4124
4125// To get the full moon date/time in millis,
4126// first we use the newMoonDates data to estimate the full moon time for a given lunation
4127// as halfway between the new moon for the current lunation and the new moon for the next,
4128// then we add the correction from the table below.
4129// These adjustment values are in millis/10000.0 (i.e. in units of 10 seconds) to fit
4130// into 16 bits.
4131// This fullMoonAdjustmts array has one fewer entry than the newMoonDates array.
4132static const int16_t fullMoonAdjustmts[] = {
4133//  adj/10K   lunation number
4134    -6411, // -285
4135    -4500, // -284
4136    -1641, // -283
4137     1527, // -282
4138     4353, // -281
4139     6303, // -280
4140     7017, // -279
4141     6402, // -278
4142     4572, // -277
4143     1866, // -276
4144    -1224, // -275
4145    -4092, // -274
4146    -6126, // -273
4147    -6873, // -272
4148    -6183, // -271
4149    -4230, // -270
4150    -1410, // -269
4151     1689, // -268
4152     4425, // -267
4153     6279, // -266
4154     6933, // -265
4155     6288, // -264
4156     4443, // -263
4157     1701, // -262
4158    -1419, // -261
4159    -4251, // -260
4160    -6192, // -259
4161    -6849, // -258
4162    -6114, // -257
4163    -4125, // -256
4164    -1332, // -255
4165     1692, // -254
4166     4362, // -253
4167     6210, // -252
4168     6894, // -251
4169     6237, // -250
4170     4305, // -249
4171     1458, // -248
4172    -1710, // -247
4173    -4509, // -246
4174    -6360, // -245
4175    -6903, // -244
4176    -6075, // -243
4177    -4095, // -242
4178    -1353, // -241
4179     1653, // -240
4180     4377, // -239
4181     6258, // -238
4182     6882, // -237
4183     6084, // -236
4184     4023, // -235
4185     1122, // -234
4186    -2004, // -233
4187    -4692, // -232
4188    -6417, // -231
4189    -6894, // -230
4190    -6093, // -229
4191    -4143, // -228
4192    -1371, // -227
4193     1716, // -226
4194     4470, // -225
4195     6303, // -224
4196     6837, // -223
4197     5955, // -222
4198     3837, // -221
4199      921, // -220
4200    -2154, // -219
4201    -4785, // -218
4202    -6489, // -217
4203    -6987, // -216
4204    -6156, // -215
4205    -4119, // -214
4206    -1236, // -213
4207     1911, // -212
4208     4677, // -211
4209     6477, // -210
4210     6918, // -209
4211     5895, // -208
4212     3675, // -207
4213      756, // -206
4214    -2289, // -205
4215    -4893, // -204
4216    -6561, // -203
4217    -6987, // -202
4218    -6054, // -201
4219    -3924, // -200
4220     -951, // -199
4221     2271, // -198
4222     5010, // -197
4223     6654, // -196
4224     6891, // -195
4225     5769, // -194
4226     3561, // -193
4227      681, // -192
4228    -2328, // -191
4229    -4893, // -190
4230    -6531, // -189
4231    -6918, // -188
4232    -5916, // -187
4233    -3651, // -186
4234     -558, // -185
4235     2637, // -184
4236     5211, // -183
4237     6705, // -182
4238     6891, // -181
4239     5775, // -180
4240     3564, // -179
4241      666, // -178
4242    -2376, // -177
4243    -4980, // -176
4244    -6612, // -175
4245    -6885, // -174
4246    -5688, // -173
4247    -3282, // -172
4248     -213, // -171
4249     2862, // -170
4250     5343, // -169
4251     6774, // -168
4252     6906, // -167
4253     5727, // -166
4254     3456, // -165
4255      510, // -164
4256    -2571, // -163
4257    -5139, // -162
4258    -6630, // -161
4259    -6726, // -160
4260    -5439, // -159
4261    -3045, // -158
4262      -39, // -157
4263     2970, // -156
4264     5358, // -155
4265     6708, // -154
4266     6801, // -153
4267     5601, // -152
4268     3300, // -151
4269      309, // -150
4270    -2766, // -149
4271    -5262, // -148
4272    -6666, // -147
4273    -6699, // -146
4274    -5373, // -145
4275    -2973, // -144
4276       -9, // -143
4277     2928, // -142
4278     5289, // -141
4279     6663, // -140
4280     6768, // -139
4281     5514, // -138
4282     3105, // -137
4283       27, // -136
4284    -3057, // -135
4285    -5490, // -134
4286    -6780, // -133
4287    -6705, // -132
4288    -5334, // -131
4289    -2970, // -130
4290      -42, // -129
4291     2913, // -128
4292     5340, // -127
4293     6708, // -126
4294     6702, // -125
4295     5298, // -124
4296     2787, // -123
4297     -291, // -122
4298    -3300, // -121
4299    -5604, // -120
4300    -6795, // -119
4301    -6711, // -118
4302    -5376, // -117
4303    -3003, // -116
4304       -9, // -115
4305     3021, // -114
4306     5436, // -113
4307     6723, // -112
4308     6618, // -111
4309     5136, // -110
4310     2595, // -109
4311     -468, // -108
4312    -3405, // -107
4313    -5673, // -106
4314    -6873, // -105
4315    -6792, // -104
4316    -5391, // -103
4317    -2910, // -102
4318      183, // -101
4319     3249, // -100
4320     5649, //  -99
4321     6867, //  -98
4322     6633, //  -97
4323     5031, //  -96
4324     2436, //  -95
4325     -612, //  -94
4326    -3519, //  -93
4327    -5760, //  -92
4328    -6912, //  -91
4329    -6729, //  -90
4330    -5229, //  -89
4331    -2649, //  -88
4332      528, //  -87
4333     3624, //  -86
4334     5925, //  -85
4335     6939, //  -84
4336     6552, //  -83
4337     4908, //  -82
4338     2346, //  -81
4339     -654, //  -80
4340    -3540, //  -79
4341    -5757, //  -78
4342    -6867, //  -77
4343    -6633, //  -76
4344    -5025, //  -75
4345    -2301, //  -74
4346      927, //  -73
4347     3906, //  -72
4348     6036, //  -71
4349     6954, //  -70
4350     6555, //  -69
4351     4914, //  -68
4352     2343, //  -67
4353     -699, //  -66
4354    -3621, //  -65
4355    -5853, //  -64
4356    -6909, //  -63
4357    -6510, //  -62
4358    -4713, //  -61
4359    -1938, //  -60
4360     1200, //  -59
4361     4071, //  -58
4362     6126, //  -57
4363     6993, //  -56
4364     6531, //  -55
4365     4833, //  -54
4366     2199, //  -53
4367     -888, //  -52
4368    -3822, //  -51
4369    -5967, //  -50
4370    -6849, //  -49
4371    -6306, //  -48
4372    -4482, //  -47
4373    -1755, //  -46
4374     1320, //  -45
4375     4116, //  -44
4376     6093, //  -43
4377     6900, //  -42
4378     6411, //  -41
4379     4689, //  -40
4380     2013, //  -39
4381    -1107, //  -38
4382    -3996, //  -37
4383    -6051, //  -36
4384    -6858, //  -35
4385    -6267, //  -34
4386    -4422, //  -33
4387    -1710, //  -32
4388     1308, //  -31
4389     4047, //  -30
4390     6033, //  -29
4391     6873, //  -28
4392     6369, //  -27
4393     4545, //  -26
4394     1755, //  -25
4395    -1410, //  -24
4396    -4266, //  -23
4397    -6228, //  -22
4398    -6924, //  -21
4399    -6258, //  -20
4400    -4407, //  -19
4401    -1731, //  -18
4402     1278, //  -17
4403     4083, //  -16
4404     6102, //  -15
4405     6885, //  -14
4406     6228, //  -13
4407     4275, //  -12
4408     1437, //  -11
4409    -1686, //  -10
4410    -4443, //   -9
4411    -6288, //   -8
4412    -6924, //   -7
4413    -6279, //   -6
4414    -4449, //   -5
4415    -1734, //   -4
4416     1374, //   -3
4417     4218, //   -2
4418     6180, //   -1
4419     6855, //    0
4420     6114, //    1
4421     4104, //    2
4422     1257, //    3
4423    -1818, //    4
4424    -4518, //    5
4425    -6357, //    6
4426    -7008, //    7
4427    -6333, //    8
4428    -4395, //    9
4429    -1560, //   10
4430     1617, //   11
4431     4467, //   12
4432     6381, //   13
4433     6957, //   14
4434     6078, //   15
4435     3969, //   16
4436     1110, //   17
4437    -1941, //   18
4438    -4617, //   19
4439    -6423, //   20
4440    -6999, //   21
4441    -6213, //   22
4442    -4173, //   23
4443    -1248, //   24
4444     1989, //   25
4445     4803, //   26
4446     6561, //   27
4447     6939, //   28
4448     5964, //   29
4449     3873, //   30
4450     1053, //   31
4451    -1971, //   32
4452    -4626, //   33
4453    -6399, //   34
4454    -6930, //   35
4455    -6063, //   36
4456    -3894, //   37
4457     -855, //   38
4458     2346, //   39
4459     4992, //   40
4460     6603, //   41
4461     6939, //   42
4462     5976, //   43
4463     3873, //   44
4464     1020, //   45
4465    -2040, //   46
4466    -4731, //   47
4467    -6492, //   48
4468    -6906, //   49
4469    -5844, //   50
4470    -3546, //   51
4471     -540, //   52
4472     2541, //   53
4473     5100, //   54
4474     6666, //   55
4475     6951, //   56
4476     5919, //   57
4477     3756, //   58
4478      840, //   59
4479    -2262, //   60
4480    -4914, //   61
4481    -6528, //   62
4482    -6774, //   63
4483    -5628, //   64
4484    -3348, //   65
4485     -405, //   66
4486     2610, //   67
4487     5097, //   68
4488     6591, //   69
4489     6840, //   70
4490     5784, //   71
4491     3585, //   72
4492      633, //   73
4493    -2472, //   74
4494    -5055, //   75
4495    -6582, //   76
4496    -6768, //   77
4497    -5595, //   78
4498    -3315, //   79
4499     -402, //   80
4500     2565, //   81
4501     5031, //   82
4502     6558, //   83
4503     6816, //   84
4504     5697, //   85
4505     3378, //   86
4506      339, //   87
4507    -2772, //   88
4508    -5292, //   89
4509    -6714, //   90
4510    -6804, //   91
4511    -5580, //   92
4512    -3321, //   93
4513     -429, //   94
4514     2574, //   95
4515     5112, //   96
4516     6624, //   97
4517     6765, //   98
4518     5493, //   99
4519     3075, //  100
4520       30, //  101
4521    -3000, //  102
4522    -5400, //  103
4523    -6732, //  104
4524    -6804, //  105
4525    -5613, //  106
4526    -3339, //  107
4527     -366, //  108
4528     2721, //  109
4529     5247, //  110
4530     6669, //  111
4531     6702, //  112
4532     5355, //  113
4533     2907, //  114
4534     -114, //  115
4535    -3093, //  116
4536    -5460, //  117
4537    -6804, //  118
4538    -6879, //  119
4539    -5619, //  120
4540    -3210, //  121
4541     -129, //  122
4542     2991, //  123
4543     5490, //  124
4544     6834, //  125
4545     6744, //  126
4546     5268, //  127
4547     2769, //  128
4548     -237, //  129
4549    -3189, //  130
4550    -5541, //  131
4551    -6837, //  132
4552    -6810, //  133
4553    -5433, //  134
4554    -2925, //  135
4555      234, //  136
4556     3369, //  137
4557     5757, //  138
4558     6912, //  139
4559     6669, //  140
4560     5163, //  141
4561     2697, //  142
4562     -282, //  143
4563    -3216, //  144
4564    -5541, //  145
4565    -6798, //  146
4566    -6708, //  147
4567    -5217, //  148
4568    -2577, //  149
4569      621, //  150
4570     3639, //  151
4571     5856, //  152
4572     6915, //  153
4573     6672, //  154
4574     5172, //  155
4575     2685, //  156
4576     -345, //  157
4577    -3321, //  158
4578    -5661, //  159
4579    -6855, //  160
4580    -6597, //  161
4581    -4926, //  162
4582    -2241, //  163
4583      858, //  164
4584     3762, //  165
4585     5925, //  166
4586     6948, //  167
4587     6645, //  168
4588     5076, //  169
4589     2520, //  170
4590     -561, //  171
4591    -3549, //  172
4592    -5796, //  173
4593    -6813, //  174
4594    -6417, //  175
4595    -4731, //  176
4596    -2100, //  177
4597      945, //  178
4598     3792, //  179
4599     5886, //  180
4600     6852, //  181
4601     6519, //  182
4602     4926, //  183
4603     2319, //  184
4604     -792, //  185
4605    -3744, //  186
4606    -5901, //  187
4607    -6846, //  188
4608    -6414, //  189
4609    -4710, //  190
4610    -2088, //  191
4611      921, //  192
4612     3732, //  193
4613     5838, //  194
4614     6837, //  195
4615     6477, //  196
4616     4776, //  197
4617     2058, //  198
4618    -1101, //  199
4619    -4011, //  200
4620    -6084, //  201
4621    -6930, //  202
4622    -6420, //  203
4623    -4704, //  204
4624    -2106, //  205
4625      909, //  206
4626     3786, //  207
4627     5940, //  208
4628     6867, //  209
4629     6354, //  210
4630     4518, //  211
4631     1746, //  212
4632    -1365, //  213
4633    -4173, //  214
4634    -6138, //  215
4635    -6933, //  216
4636    -6441, //  217
4637    -4734, //  218
4638    -2082, //  219
4639     1038, //  220
4640     3963, //  221
4641     6054, //  222
4642     6867, //  223
4643     6261, //  224
4644     4374, //  225
4645     1596, //  226
4646    -1476, //  227
4647    -4236, //  228
4648    -6201, //  229
4649    -7005, //  230
4650    -6483, //  231
4651    -4659, //  232
4652    -1872, //  233
4653     1320, //  234
4654     4242, //  235
4655     6273, //  236
4656     6981, //  237
4657     6243, //  238
4658     4266, //  239
4659     1473, //  240
4660    -1581, //  241
4661    -4335, //  242
4662    -6267, //  243
4663    -6993, //  244
4664    -6345, //  245
4665    -4413, //  246
4666    -1536, //  247
4667     1707, //  248
4668     4581, //  249
4669     6447, //  250
4670     6972, //  251
4671     6150, //  252
4672     4173, //  253
4673     1416, //  254
4674    -1614, //  255
4675    -4353, //  256
4676    -6252, //  257
4677    -6924, //  258
4678    -6189, //  259
4679    -4128, //  260
4680    -1149, //  261
4681     2043, //  262
4682     4752, //  263
4683     6477, //  264
4684     6969, //  265
4685     6156, //  266
4686     4173, //  267
4687     1380, //  268
4688    -1704, //  269
4689    -4482, //  270
4690    -6360, //  271
4691    -6918, //  272
4692    -5994, //  273
4693    -3810, //  274
4694     -873, //  275
4695     2202, //  276
4696     4830, //  277
4697     6525, //  278
4698     6975, //  279
4699     6090, //  280
4700     4038, //  281
4701     1176, //  282
4702    -1953, //  283
4703    -4689, //  284
4704    -6417, //  285
4705    -6804, //  286
4706    -5808, //  287
4707    -3657, //  288
4708     -777, //  289
4709     2247, //  290
4710     4821, //  291
4711     6456, //  292
4712     6858, //  293
4713     5949, //  294
4714     3852, //  295
4715      942, //  296
4716    -2184, //  297
4717    -4842, //  298
4718    -6492, //  299
4719    -6825, //  300
4720    -5811, //  301
4721    -3648, //  302
4722     -789, //  303
4723     2199, //  304
4724     4764, //  305
4725     6432, //  306
4726     6849, //  307
4727     5868, //  308
4728     3648, //  309
4729      645, //  310
4730    -2481, //  311
4731    -5076, //  312
4732    -6633, //  313
4733    -6876, //  314
4734    -5811, //  315
4735    -3660, //  316
4736     -810, //  317
4737     2229, //  318
4738     4869, //  319
4739     6522, //  320
4740     6816, //  321
4741     5673, //  322
4742     3357, //  323
4743      354, //  324
4744    -2691, //  325
4745    -5172, //  326
4746    -6648, //  327
4747    -6879, //  328
4748    -5832, //  329
4749    -3660, //  330
4750     -714, //  331
4751     2418, //  332
4752     5049, //  333
4753     6600, //  334
4754     6777, //  335
4755     5565, //  336
4756     3219, //  337
4757      234, //  338
4758    -2766, //  339
4759    -5229, //  340
4760    -6714, //  341
4761    -6945, //  342
4762    -5820, //  343
4763    -3498, //  344
4764     -438, //  345
4765     2721, //  346
4766     5310, //  347
4767     6777, //  348
4768     6831, //  349
4769     5496, //  350
4770     3096, //  351
4771      132, //  352
4772    -2859, //  353
4773    -5313, //  354
4774    -6753, //  355
4775    -6867, //  356
4776    -5610, //  357
4777    -3189, //  358
4778      -57, //  359
4779     3102, //  360
4780     5577, //  361
4781     6855, //  362
4782     6768, //  363
4783     5403, //  364
4784     3036, //  365
4785       84, //  366
4786    -2895, //  367
4787    -5325, //  368
4788    -6717, //  369
4789    -6762, //  370
4790    -5394, //  371
4791    -2850, //  372
4792      309, //  373
4793     3348, //  374
4794     5661, //  375
4795     6855, //  376
4796     6771, //  377
4797     5412, //  378
4798     3012, //  379
4799        9, //  380
4800    -3021, //  381
4801    -5466, //  382
4802    -6783, //  383
4803    -6666, //  384
4804    -5136, //  385
4805    -2550, //  386
4806      510, //  387
4807     3444, //  388
4808     5709, //  389
4809     6876, //  390
4810     6735, //  391
4811     5304, //  392
4812     2826, //  393
4813     -234, //  394
4814    -3273, //  395
4815    -5619, //  396
4816    -6765, //  397
4817    -6522, //  398
4818    -4974, //  399
4819    -2451, //  400
4820      555, //  401
4821     3456, //  402
4822     5664, //  403
4823     6783, //  404
4824     6609, //  405
4825     5142, //  406
4826     2613, //  407
4827     -480, //  408
4828    -3477, //  409
4829    -5733, //  410
4830    -6822, //  411
4831    -6549, //  412
4832    -4983, //  413
4833    -2457, //  414
4834      525, //  415
4835     3402, //  416
4836     5634, //  417
4837     6783, //  418
4838     6579, //  419
4839     5001, //  420
4840     2355, //  421
4841     -786, //  422
4842    -3744, //  423
4843    -5925, //  424
4844    -6915, //  425
4845    -6567, //  426
4846    -4986, //  427
4847    -2469, //  428
4848      534, //  429
4849     3486, //  430
4850     5766, //  431
4851     6843, //  432
4852     6474, //  433
4853     4758, //  434
4854     2064, //  435
4855    -1029, //  436
4856    -3891, //  437
4857    -5967, //  438
4858    -6912, //  439
4859    -6576, //  440
4860    -5007, //  441
4861    -2418, //  442
4862      708, //  443
4863     3711, //  444
4864     5913, //  445
4865     6864, //  446
4866     6405, //  447
4867     4632, //  448
4868     1935, //  449
4869    -1125, //  450
4870    -3945, //  451
4871    -6024, //  452
4872    -6987, //  453
4873    -6606, //  454
4874    -4908, //  455
4875    -2169, //  456
4876     1029, //  457
4877     4008, //  458
4878     6150, //  459
4879     6996, //  460
4880     6399, //  461
4881     4542, //  462
4882     1833, //  463
4883    -1212, //  464
4884    -4032, //  465
4885    -6090, //  466
4886    -6969, //  467
4887    -6456, //  468
4888    -4635, //  469
4889    -1815, //  470
4890     1422, //  471
4891     4347, //  472
4892     6315, //  473
4893     6984, //  474
4894     6312, //  475
4895     4467, //  476
4896     1779, //  477
4897    -1260, //  478
4898    -4071, //  479
4899    -6093, //  480
4900    -6906, //  481
4901    -6309, //  482
4902    -4359, //  483
4903    -1455, //  484
4904     1728, //  485
4905     4488, //  486
4906     6336, //  487
4907     6975, //  488
4908     6318, //  489
4909     4455, //  490
4910     1722, //  491
4911    -1374, //  492
4912    -4224, //  493
4913    -6216, //  494
4914    -6915, //  495
4915    -6132, //  496
4916    -4071, //  497
4917    -1209, //  498
4918     1854, //  499
4919     4548, //  500
4920     6369, //  501
4921     6975, //  502
4922     6243, //  503
4923     4302, //  504
4924     1491, //  505
4925    -1644, //  506
4926    -4446, //  507
4927    -6297, //  508
4928    -6825, //  509
4929    -5982, //  510
4930    -3960, //  511
4931    -1158, //  512
4932     1869, //  513
4933     4524, //  514
4934     6297, //  515
4935     6864, //  516
4936     6102, //  517
4937     4116, //  518
4938     1251, //  519
4939    -1887, //  520
4940    -4614, //  521
4941    -6387, //  522
4942    -6873, //  523
4943    -6015, //  524
4944    -3978, //  525
4945    -1182, //  526
4946     1830, //  527
4947     4485, //  528
4948     6294, //  529
4949     6864, //  530
4950     6027, //  531
4951     3906, //  532
4952      960, //  533
4953    -2175, //  534
4954    -4845, //  535
4955    -6528, //  536
4956    -6936, //  537
4957    -6015, //  538
4958    -3978, //  539
4959    -1179, //  540
4960     1887, //  541
4961     4623, //  542
4962     6423, //  543
4963     6858, //  544
4964     5850, //  545
4965     3636, //  546
4966      696, //  547
4967    -2367, //  548
4968    -4935, //  549
4969    -6540, //  550
4970    -6930, //  551
4971    -6033, //  552
4972    -3963, //  553
4973    -1050, //  554
4974     2124, //  555
4975     4845, //  556
4976     6519, //  557
4977     6840, //  558
4978     5760, //  559
4979     3525, //  560
4980      597, //  561
4981    -2427, //  562
4982    -4977, //  563
4983    -6603, //  564
4984    -6987, //  565
4985    -6000, //  566
4986    -3768, //  567
4987     -735, //  568
4988     2454, //  569
4989     5124, //  570
4990     6711, //  571
4991     6906, //  572
4992     5712, //  573
4993     3423, //  574
4994      501, //  575
4995    -2517, //  576
4996    -5061, //  577
4997    -6639, //  578
4998    -6906, //  579
4999    -5775, //  580
5000    -3441, //  581
5001     -354, //  582
5002     2826, //  583
5003     5379, //  584
5004     6783, //  585
5005     6846, //  586
5006     5631, //  587
5007     3366, //  588
5008      450, //  589
5009    -2568, //  590
5010    -5094, //  591
5011    -6618, //  592
5012    -6810, //  593
5013    -5571, //  594
5014    -3123, //  595
5015       -9, //  596
5016     3045, //  597
5017     5436, //  598
5018     6777, //  599
5019     6846, //  600
5020     5628, //  601
5021     3330, //  602
5022      354, //  603
5023    -2715, //  604
5024    -5259, //  605
5025    -6705, //  606
5026    -6735, //  607
5027    -5340, //  608
5028    -2862, //  609
5029      153, //  610
5030     3108, //  611
5031     5469, //  612
5032     6789, //  613
5033     6804, //  614
5034     5514, //  615
5035     3123, //  616
5036       87, //  617
5037    -2991, //  618
5038    -5430, //  619
5039    -6708, //  620
5040    -6618, //  621
5041    -5214, //  622
5042    -2799, //  623
5043      171, //  624
5044     3102, //  625
5045     5424, //  626
5046     6699, //  627
5047     6681, //  628
5048     5346, //  629
5049     2904, //  630
5050     -165, //  631
5051    -3204, //  632
5052    -5556, //  633
5053    -6783, //  634
5054    -6669, //  635
5055    -5256, //  636
5056    -2826, //  637
5057      141, //  638
5058     3072, //  639
5059     5418, //  640
5060     6720, //  641
5061     6666, //  642
5062     5211, //  643
5063     2649, //  644
5064     -471, //  645
5065    -3465, //  646
5066    -5742, //  647
5067    -6882, //  648
5068    -6693, //  649
5069    -5253, //  650
5070    -2817, //  651
5071      177, //  652
5072     3195, //  653
5073     5586, //  654
5074     6804, //  655
5075     6582, //  656
5076     4983, //  657
5077     2379, //  658
5078     -690, //  659
5079    -3597, //  660
5080    -5781, //  661
5081    -6873, //  662
5082    -6693, //  663
5083    -5253, //  664
5084    -2739, //  665
5085      387, //  666
5086     3453, //  667
5087     5769, //  668
5088     6852, //  669
5089     6534, //  670
5090     4887, //  671
5091     2280, //  672
5092     -759, //  673
5093    -3636, //  674
5094    -5832, //  675
5095    -6942, //  676
5096    -6714, //  677
5097    -5127, //  678
5098    -2457, //  679
5099      735, //  680
5100     3774, //  681
5101     6012, //  682
5102     6987, //  683
5103     6540, //  684
5104     4815, //  685
5105     2187, //  686
5106     -846, //  687
5107    -3726, //  688
5108    -5904, //  689
5109    -6927, //  690
5110    -6555, //  691
5111    -4839, //  692
5112    -2091, //  693
5113     1122, //  694
5114     4092, //  695
5115     6168, //  696
5116     6981, //  697
5117     6456, //  698
5118     4743, //  699
5119     2130, //  700
5120     -900, //  701
5121    -3780, //  702
5122    -5919, //  703
5123    -6873, //  704
5124    -6417, //  705
5125    -4587, //  706
5126    -1761, //  707
5127     1398, //  708
5128     4212, //  709
5129     6171, //  710
5130     6963, //  711
5131     6456, //  712
5132     4725, //  713
5133     2055, //  714
5134    -1047, //  715
5135    -3960, //  716
5136    -6069, //  717
5137    -6900, //  718
5138    -6261, //  719
5139    -4335, //  720
5140    -1563, //  721
5141     1491, //  722
5142     4245, //  723
5143     6189, //  724
5144     6954, //  725
5145     6378, //  726
5146     4554, //  727
5147     1806, //  728
5148    -1338, //  729
5149    -4200, //  730
5150    -6168, //  731
5151    -6840, //  732
5152    -6147, //  733
5153    -4260, //  734
5154    -1539, //  735
5155     1485, //  736
5156     4218, //  737
5157     6126, //  738
5158     6855, //  739
5159     6240, //  740
5160     4362, //  741
5161     1560, //  742
5162    -1584, //  743
5163    -4380, //  744
5164    -6267, //  745
5165    -6906, //  746
5166    -6201, //  747
5167    -4299, //  748
5168    -1569, //  749
5169     1455, //  750
5170     4203, //  751
5171     6147, //  752
5172     6873, //  753
5173     6174, //  754
5174     4161, //  755
5175     1272, //  756
5176    -1869, //  757
5177    -4602, //  758
5178    -6408, //  759
5179    -6969, //  760
5180    -6210, //  761
5181    -4293, //  762
5182    -1545, //  763
5183     1551, //  764
5184     4383, //  765
5185     6312, //  766
5186     6891, //  767
5187     6021, //  768
5188     3912, //  769
5189     1029, //  770
5190    -2031, //  771
5191    -4677, //  772
5192    -6417, //  773
5193    -6963, //  774
5194    -6216, //  775
5195    -4245, //  776
5196    -1374, //  777
5197     1824, //  778
5198     4635, //  779
5199     6432, //  780
5200     6888, //  781
5201     5952, //  782
5202     3822, //  783
5203      957, //  784
5204    -2076, //  785
5205    -4713, //  786
5206    -6477, //  787
5207    -7014, //  788
5208    -6159, //  789
5209    -4023, //  790
5210    -1029, //  791
5211     2181, //  792
5212     4920, //  793
5213     6627, //  794
5214     6966, //  795
5215     5919, //  796
5216     3744, //  797
5217      873, //  798
5218    -2169, //  799
5219    -4806, //  800
5220    -6519, //  801
5221    -6927, //  802
5222    -5928, //  803
5223    -3693, //  804
5224     -648, //  805
5225     2538, //  806
5226     5160, //  807
5227     6693, //  808
5228     6903, //  809
5229     5835, //  810
5230     3678, //  811
5231      813, //  812
5232    -2235, //  813
5233    -4851, //  814
5234    -6510, //  815
5235    -6840, //  816
5236    -5733, //  817
5237    -3396, //  818
5238     -348, //  819
5239     2724, //  820
5240     5196, //  821
5241     6672, //  822
5242     6897, //  823
5243     5829, //  824
5244     3627, //  825
5245      684, //  826
5246    -2415, //  827
5247    -5043, //  828
5248    -6618, //  829
5249    -6789, //  830
5250    -5535, //  831
5251    -3174, //  832
5252     -219, //  833
5253     2760, //  834
5254     5217, //  835
5255     6675, //  836
5256     6855, //  837
5257     5703, //  838
5258     3408, //  839
5259      399, //  840
5260    -2706, //  841
5261    -5226, //  842
5262    -6639, //  843
5263    -6699, //  844
5264    -5448, //  845
5265    -3144, //  846
5266     -228, //  847
5267     2745, //  848
5268     5178, //  849
5269     6600, //  850
5270     6738, //  851
5271     5535, //  852
5272     3186, //  853
5273      144, //  854
5274    -2925, //  855
5275    -5367, //  856
5276    -6723, //  857
5277    -6768, //  858
5278    -5505, //  859
5279    -3183, //  860
5280     -249, //  861
5281     2736, //  862
5282     5196, //  863
5283     6645, //  864
5284     6744, //  865
5285     5412, //  866
5286     2931, //  867
5287     -147, //  868
5288    -3174, //  869
5289    -5544, //  870
5290    -6828, //  871
5291    -6801, //  872
5292    -5496, //  873
5293    -3156, //  874
5294     -174, //  875
5295     2892, //  876
5296     5403, //  877
5297     6759, //  878
5298     6678, //  879
5299     5205, //  880
5300     2694, //  881
5301     -342, //  882
5302    -3288, //  883
5303    -5574, //  884
5304    -6810, //  885
5305    -6792, //  886
5306    -5478, //  887
5307    -3042, //  888
5308       75, //  889
5309     3195, //  890
5310     5607, //  891
5311     6822, //  892
5312     6648, //  893
5313     5136, //  894
5314     2619, //  895
5315     -393, //  896
5316    -3315, //  897
5317    -5616, //  898
5318    -6876, //  899
5319    -6801, //  900
5320    -5331, //  901
5321    -2733, //  902
5322      450, //  903
5323     3528, //  904
5324     5853, //  905
5325     6960, //  906
5326     6663, //  907
5327     5076, //  908
5328     2535, //  909
5329     -477, //  910
5330    -3414, //  911
5331    -5703, //  912
5332    -6867, //  913
5333    -6636, //  914
5334    -5040, //  915
5335    -2370, //  916
5336      822, //  917
5337     3822, //  918
5338     5997, //  919
5339     6945, //  920
5340     6582, //  921
5341     5004, //  922
5342     2478, //  923
5343     -546, //  924
5344    -3486, //  925
5345    -5736, //  926
5346    -6825, //  927
5347    -6510, //  928
5348    -4803, //  929
5349    -2070, //  930
5350     1059, //  931
5351     3915, //  932
5352     5982, //  933
5353     6924, //  934
5354     6579, //  935
5355     4971, //  936
5356     2376, //  937
5357     -723, //  938
5358    -3696, //  939
5359    -5907, //  940
5360    -6873, //  941
5361    -6387, //  942
5362    -4596, //  943
5363    -1911, //  944
5364     1116, //  945
5365     3927, //  946
5366     5991, //  947
5367     6915, //  948
5368     6495, //  949
5369     4794, //  950
5370     2109, //  951
5371    -1032, //  952
5372    -3954, //  953
5373    -6021, //  954
5374    -6837, //  955
5375    -6300, //  956
5376    -4548, //  957
5377    -1920, //  958
5378     1101, //  959
5379     3906, //  960
5380     5946, //  961
5381     6825, //  962
5382     6360, //  963
5383     4596, //  964
5384     1863, //  965
5385    -1275, //  966
5386    -4134, //  967
5387    -6132, //  968
5388    -6921, //  969
5389    -6375, //  970
5390    -4605, //  971
5391    -1944, //  972
5392     1089, //  973
5393     3918, //  974
5394     5994, //  975
5395     6870, //  976
5396     6315, //  977
5397     4410, //  978
5398     1584, //  979
5399    -1542, //  980
5400    -4338, //  981
5401    -6264, //  982
5402    -6981, //  983
5403    -6381, //  984
5404    -4581, //  985
5405    -1890, //  986
5406     1221, //  987
5407     4134, //  988
5408     6186, //  989
5409     6912, //  990
5410     6174, //  991
5411     4185, //  992
5412     1371, //  993
5413    -1689, //  994
5414    -4401, //  995
5415    -6270, //  996
5416    -6969, //  997
5417    -6369, //  998
5418    -4509, //  999
5419    -1683, // 1000
5420     1536, // 1001
5421     4422, // 1002
5422     6333, // 1003
5423     6927, // 1004
5424     6132, // 1005
5425     4119, // 1006
5426     1323, // 1007
5427    -1719, // 1008
5428    -4434, // 1009
5429    -6321, // 1010
5430    -7011, // 1011
5431    -6297, // 1012
5432    -4266, // 1013
5433    -1314, // 1014
5434     1905, // 1015
5435     4707, // 1016
5436     6525, // 1017
5437     7011, // 1018
5438     6108, // 1019
5439     4050, // 1020
5440     1236, // 1021
5441    -1815, // 1022
5442    -4536, // 1023
5443    -6375, // 1024
5444    -6930, // 1025
5445    -6063, // 1026
5446    -3933, // 1027
5447     -948, // 1028
5448     2238, // 1029
5449     4923, // 1030
5450     6576, // 1031
5451     6945, // 1032
5452     6024, // 1033
5453     3981, // 1034
5454     1167, // 1035
5455    -1899, // 1036
5456    -4608, // 1037
5457    -6387, // 1038
5458    -6864, // 1039
5459    -5895, // 1040
5460    -3669, // 1041
5461     -687, // 1042
5462     2391, // 1043
5463     4944, // 1044
5464     6543, // 1045
5465     6930, // 1046
5466     6012, // 1047
5467     3915, // 1048
5468     1020, // 1049
5469    -2109, // 1050
5470    -4815, // 1051
5471    -6513, // 1052
5472    -6828, // 1053
5473    -5727, // 1054
5474    -3483, // 1055
5475     -591, // 1056
5476     2400, // 1057
5477     4941, // 1058
5478     6546, // 1059
5479     6888, // 1060
5480     5874, // 1061
5481     3681, // 1062
5482      714, // 1063
5483    -2415, // 1064
5484    -5019, // 1065
5485    -6555, // 1066
5486    -6771, // 1067
5487    -5670, // 1068
5488    -3486, // 1069
5489     -618, // 1070
5490     2382, // 1071
5491     4917, // 1072
5492     6489, // 1073
5493     6783, // 1074
5494     5718, // 1075
5495     3456, // 1076
5496      456, // 1077
5497    -2631, // 1078
5498    -5160, // 1079
5499    -6648, // 1080
5500    -6852, // 1081
5501    -5742, // 1082
5502    -3525, // 1083
5503     -624, // 1084
5504     2400, // 1085
5505     4968, // 1086
5506     6558, // 1087
5507     6801, // 1088
5508     5604, // 1089
5509     3225, // 1090
5510      186, // 1091
5511    -2865, // 1092
5512    -5328, // 1093
5513    -6747, // 1094
5514    -6882, // 1095
5515    -5724, // 1096
5516    -3477, // 1097
5517     -519, // 1098
5518     2598, // 1099
5519     5208, // 1100
5520     6705, // 1101
5521     6762, // 1102
5522     5424, // 1103
5523     3006, // 1104
5524       12, // 1105
5525    -2958, // 1106
5526    -5352, // 1107
5527    -6732, // 1108
5528    -6864, // 1109
5529    -5688, // 1110
5530    -3333, // 1111
5531     -234, // 1112
5532     2934, // 1113
5533     5442, // 1114
5534     6783, // 1115
5535     6747, // 1116
5536     5373, // 1117
5537     2952, // 1118
5538      -18, // 1119
5539    -2982, // 1120
5540    -5394, // 1121
5541    -6798, // 1122
5542    -6867, // 1123
5543    -5523, // 1124
5544    -2997, // 1125
5545      159, // 1126
5546     3261, // 1127
5547     5679, // 1128
5548     6918, // 1129
5549     6771, // 1130
5550     5325, // 1131
5551     2877, // 1132
5552     -105, // 1133
5553    -3093, // 1134
5554    -5487, // 1135
5555    -6792, // 1136
5556    -6705, // 1137
5557    -5226, // 1138
5558    -2649, // 1139
5559      507, // 1140
5560     3537, // 1141
5561     5802, // 1142
5562     6900, // 1143
5563     6690, // 1144
5564     5241, // 1145
5565     2808, // 1146
5566     -198, // 1147
5567    -3192, // 1148
5568    -5550, // 1149
5569    -6771, // 1150
5570    -6594, // 1151
5571    -5022, // 1152
5572    -2391, // 1153
5573      702, // 1154
5574     3600, // 1155
5575     5775, // 1156
5576     6864, // 1157
5577     6675, // 1158
5578     5202, // 1159
5579     2691, // 1160
5580     -402, // 1161
5581    -3423, // 1162
5582    -5739, // 1163
5583    -6840, // 1164
5584    -6507, // 1165
5585    -4848, // 1166
5586    -2265, // 1167
5587      732, // 1168
5588     3591, // 1169
5589     5778, // 1170
5590     6858, // 1171
5591     6594, // 1172
5592     5016, // 1173
5593     2406, // 1174
5594     -717, // 1175
5595    -3690, // 1176
5596    -5865, // 1177
5597    -6825, // 1178
5598    -6447, // 1179
5599    -4833, // 1180
5600    -2295, // 1181
5601      708, // 1182
5602     3579, // 1183
5603     5748, // 1184
5604     6783, // 1185
5605     6468, // 1186
5606     4830, // 1187
5607     2160, // 1188
5608     -966, // 1189
5609    -3870, // 1190
5610    -5976, // 1191
5611    -6918, // 1192
5612    -6528, // 1193
5613    -4896, // 1194
5614    -2313, // 1195
5615      729, // 1196
5616     3633, // 1197
5617     5835, // 1198
5618     6855, // 1199
5619     6441, // 1200
5620     4656, // 1201
5621     1902, // 1202
5622    -1212, // 1203
5623    -4065, // 1204
5624    -6111, // 1205
5625    -6981, // 1206
5626    -6528, // 1207
5627    -4851, // 1208
5628    -2223, // 1209
5629      900, // 1210
5630     3888, // 1211
5631     6063, // 1212
5632     6918, // 1213
5633     6321, // 1214
5634     4452, // 1215
5635     1713, // 1216
5636    -1335, // 1217
5637    -4110, // 1218
5638    -6099, // 1219
5639    -6954, // 1220
5640    -6501, // 1221
5641    -4758, // 1222
5642    -1986, // 1223
5643     1245, // 1224
5644     4194, // 1225
5645     6219, // 1226
5646     6951, // 1227
5647     6294, // 1228
5648     4410, // 1229
5649     1680, // 1230
5650    -1359, // 1231
5651    -4140, // 1232
5652    -6159, // 1233
5653    -6996, // 1234
5654    -6423, // 1235
5655    -4494, // 1236
5656    -1602, // 1237
5657     1617, // 1238
5658     4479, // 1239
5659     6402, // 1240
5660     7026, // 1241
5661     6282, // 1242
5662     4341, // 1243
5663     1602, // 1244
5664    -1458, // 1245
5665    -4257, // 1246
5666    -6222, // 1247
5667    -6921, // 1248
5668    -6189, // 1249
5669    -4164, // 1250
5670    -1254, // 1251
5671     1920, // 1252
5672     4665, // 1253
5673     6438, // 1254
5674     6963, // 1255
5675     6192, // 1256
5676     4269, // 1257
5677     1512, // 1258
5678    -1572, // 1259
5679    -4356, // 1260
5680    -6255, // 1261
5681    -6867, // 1262
5682    -6039, // 1263
5683    -3939, // 1264
5684    -1032, // 1265
5685     2031, // 1266
5686     4659, // 1267
5687     6393, // 1268
5688     6939, // 1269
5689     6174, // 1270
5690     4188, // 1271
5691     1338, // 1272
5692    -1812, // 1273
5693    -4590, // 1274
5694    -6405, // 1275
5695    -6867, // 1276
5696    -5916, // 1277
5697    -3795, // 1278
5698     -969, // 1279
5699     2028, // 1280
5700     4656, // 1281
5701     6405, // 1282
5702     6903, // 1283
5703     6036, // 1284
5704     3942, // 1285
5705     1020, // 1286
5706    -2118, // 1287
5707    -4800, // 1288
5708    -6459, // 1289
5709    -6828, // 1290
5710    -5886, // 1291
5711    -3819, // 1292
5712    -1011, // 1293
5713     2016, // 1294
5714     4647, // 1295
5715     6366, // 1296
5716     6816, // 1297
5717     5886, // 1298
5718     3723, // 1299
5719      771, // 1300
5720    -2334, // 1301
5721    -4935, // 1302
5722    -6558, // 1303
5723    -6921, // 1304
5724    -5964, // 1305
5725    -3858, // 1306
5726     -996, // 1307
5727     2067, // 1308
5728     4737, // 1309
5729     6468, // 1310
5730     6861, // 1311
5731     5793, // 1312
5732     3504, // 1313
5733      516, // 1314
5734    -2544, // 1315
5735    -5091, // 1316
5736    -6654, // 1317
5737    -6945, // 1318
5738    -5931, // 1319
5739    -3780, // 1320
5740     -849, // 1321
5741     2310, // 1322
5742     5019, // 1323
5743     6633, // 1324
5744     6831, // 1325
5745     5622, // 1326
5746     3315, // 1327
5747      375, // 1328
5748    -2622, // 1329
5749    -5106, // 1330
5750    -6630, // 1331
5751    -6918, // 1332
5752    -5874, // 1333
5753    -3612, // 1334
5754     -537, // 1335
5755     2667, // 1336
5756     5256, // 1337
5757     6726, // 1338
5758     6828, // 1339
5759     5598, // 1340
5760     3288, // 1341
5761      351, // 1342
5762    -2646, // 1343
5763    -5151, // 1344
5764    -6696, // 1345
5765    -6915, // 1346
5766    -5694, // 1347
5767    -3261, // 1348
5768     -135, // 1349
5769     2994, // 1350
5770     5484, // 1351
5771     6852, // 1352
5772     6858, // 1353
5773     5556, // 1354
5774     3210, // 1355
5775      255, // 1356
5776    -2772, // 1357
5777    -5268, // 1358
5778    -6702, // 1359
5779    -6756, // 1360
5780    -5409, // 1361
5781    -2925, // 1362
5782      180, // 1363
5783     3231, // 1364
5784     5589, // 1365
5785     6822, // 1366
5786     6774, // 1367
5787     5469, // 1368
5788     3126, // 1369
5789      141, // 1370
5790    -2895, // 1371
5791    -5349, // 1372
5792    -6699, // 1373
5793    -6666, // 1374
5794    -5235, // 1375
5795    -2709, // 1376
5796      342, // 1377
5797     3270, // 1378
5798     5547, // 1379
5799     6786, // 1380
5800     6753, // 1381
5801     5421, // 1382
5802     2985, // 1383
5803      -78, // 1384
5804    -3147, // 1385
5805    -5553, // 1386
5806    -6792, // 1387
5807    -6612, // 1388
5808    -5100, // 1389
5809    -2616, // 1390
5810      345, // 1391
5811     3252, // 1392
5812     5550, // 1393
5813     6780, // 1394
5814     6672, // 1395
5815     5223, // 1396
5816     2691, // 1397
5817     -408, // 1398
5818    -3423, // 1399
5819    -5691, // 1400
5820    -6792, // 1401
5821    -6570, // 1402
5822    -5109, // 1403
5823    -2661, // 1404
5824      318, // 1405
5825     3258, // 1406
5826     5547, // 1407
5827     6729, // 1408
5828     6564, // 1409
5829     5043, // 1410
5830     2460, // 1411
5831     -645, // 1412
5832    -3597, // 1413
5833    -5805, // 1414
5834    -6888, // 1415
5835    -6669, // 1416
5836    -5172, // 1417
5837    -2661, // 1418
5838      372, // 1419
5839     3348, // 1420
5840     5664, // 1421
5841     6831, // 1422
5842     6558, // 1423
5843     4893, // 1424
5844     2220, // 1425
5845     -873, // 1426
5846    -3774, // 1427
5847    -5928, // 1428
5848    -6948, // 1429
5849    -6654, // 1430
5850    -5103, // 1431
5851    -2538, // 1432
5852      582, // 1433
5853     3639, // 1434
5854     5922, // 1435
5855     6912, // 1436
5856     6456, // 1437
5857     4713, // 1438
5858     2061, // 1439
5859     -975, // 1440
5860    -3807, // 1441
5861    -5916, // 1442
5862    -6921, // 1443
5863    -6618, // 1444
5864    -4989, // 1445
5865    -2274, // 1446
5866      957, // 1447
5867     3960, // 1448
5868     6084, // 1449
5869     6951, // 1450
5870     6444, // 1451
5871     4689, // 1452
5872     2040, // 1453
5873     -987, // 1454
5874    -3840, // 1455
5875    -5982, // 1456
5876    -6966, // 1457
5877    -6531, // 1458
5878    -4707, // 1459
5879    -1881, // 1460
5880     1326, // 1461
5881     4227, // 1462
5882     6255, // 1463
5883     7023, // 1464
5884     6435, // 1465
5885     4629, // 1466
5886     1956, // 1467
5887    -1107, // 1468
5888    -3975, // 1469
5889    -6060, // 1470
5890    -6894, // 1471
5891    -6300, // 1472
5892    -4395, // 1473
5893    -1566, // 1474
5894     1590, // 1475
5895     4392, // 1476
5896     6279, // 1477
5897     6954, // 1478
5898     6339, // 1479
5899     4539, // 1480
5900     1845, // 1481
5901    -1245, // 1482
5902    -4095, // 1483
5903    -6114, // 1484
5904    -6864, // 1485
5905    -6180, // 1486
5906    -4212, // 1487
5907    -1386, // 1488
5908     1674, // 1489
5909     4368, // 1490
5910     6222, // 1491
5911     6924, // 1492
5912     6315, // 1493
5913     4446, // 1494
5914     1653, // 1495
5915    -1503, // 1496
5916    -4350, // 1497
5917    -6282, // 1498
5918    -6888, // 1499
5919    -6090, // 1500
5920    -4104, // 1501
5921    -1356, // 1502
5922     1650, // 1503
5923     4356, // 1504
5924     6237, // 1505
5925     6903, // 1506
5926     6180, // 1507
5927     4191, // 1508
5928     1326, // 1509
5929    -1818, // 1510
5930    -4566, // 1511
5931    -6348, // 1512
5932    -6870, // 1513
5933    -6078, // 1514
5934    -4146, // 1515
5935    -1398, // 1516
5936     1647, // 1517
5937     4377, // 1518
5938     6228, // 1519
5939     6828, // 1520
5940     6039, // 1521
5941     3984, // 1522
5942     1086, // 1523
5943    -2028, // 1524
5944    -4698, // 1525
5945    -6444, // 1526
5946    -6963, // 1527
5947    -6162, // 1528
5948    -4170, // 1529
5949    -1350, // 1530
5950     1740, // 1531
5951     4503, // 1532
5952     6363, // 1533
5953     6897, // 1534
5954     5970, // 1535
5955     3792, // 1536
5956      858, // 1537
5957    -2217, // 1538
5958    -4839, // 1539
5959    -6531, // 1540
5960    -6987, // 1541
5961    -6117, // 1542
5962    -4065, // 1543
5963    -1173, // 1544
5964     2019, // 1545
5965     4812, // 1546
5966     6552, // 1547
5967     6888, // 1548
5968     5820, // 1549
5969     3624, // 1550
5970      738, // 1551
5971    -2274, // 1552
5972    -4845, // 1553
5973    -6510, // 1554
5974    -6948, // 1555
5975    -6042, // 1556
5976    -3867, // 1557
5977     -825, // 1558
5978     2391, // 1559
5979     5064, // 1560
5980     6645, // 1561
5981     6900, // 1562
5982     5811, // 1563
5983     3609, // 1564
5984      720, // 1565
5985    -2304, // 1566
5986    -4908, // 1567
5987    -6582, // 1568
5988    -6945, // 1569
5989    -5856, // 1570
5990    -3513, // 1571
5991     -432, // 1572
5992     2706, // 1573
5993     5271, // 1574
5994     6765, // 1575
5995     6927, // 1576
5996     5769, // 1577
5997     3528, // 1578
5998      618, // 1579
5999    -2442, // 1580
6000    -5037, // 1581
6001    -6600, // 1582
6002    -6792, // 1583
6003    -5577, // 1584
6004    -3201, // 1585
6005     -153, // 1586
6006     2910, // 1587
6007     5355, // 1588
6008     6729, // 1589
6009     6834, // 1590
6010     5676, // 1591
6011     3432, // 1592
6012      480, // 1593
6013    -2592, // 1594
6014    -5139, // 1595
6015    -6618, // 1596
6016    -6732, // 1597
6017    -5439, // 1598
6018    -3030, // 1599
6019      -33, // 1600
6020     2922, // 1601
6021     5295, // 1602
6022     6678, // 1603
6023     6810, // 1604
6024     5616, // 1605
6025     3279, // 1606
6026      237, // 1607
6027    -2865, // 1608
6028    -5364, // 1609
6029    -6732, // 1610
6030    -6702, // 1611
6031    -5343, // 1612
6032    -2970, // 1613
6033      -45, // 1614
6034     2895, // 1615
6035     5307, // 1616
6036     6693, // 1617
6037     6744, // 1618
6038     5421, // 1619
6039     2976, // 1620
6040     -102, // 1621
6041    -3144, // 1622
6042    -5508, // 1623
6043    -6744, // 1624
6044    -6684, // 1625
6045    -5364, // 1626
6046    -3024, // 1627
6047      -66, // 1628
6048     2925, // 1629
6049     5334, // 1630
6050     6669, // 1631
6051     6651, // 1632
6052     5256, // 1633
6053     2754, // 1634
6054     -324, // 1635
6055    -3306, // 1636
6056    -5610, // 1637
6057    -6840, // 1638
6058    -6783, // 1639
6059    -5424, // 1640
6060    -3003, // 1641
6061       24, // 1642
6062     3057, // 1643
6063     5493, // 1644
6064     6801, // 1645
6065     6666, // 1646
6066     5124, // 1647
6067     2535, // 1648
6068     -525, // 1649
6069    -3462, // 1650
6070    -5724, // 1651
6071    -6900, // 1652
6072    -6765, // 1653
6073    -5337, // 1654
6074    -2847, // 1655
6075      270, // 1656
6076     3384, // 1657
6077     5766, // 1658
6078     6894, // 1659
6079     6582, // 1660
6080     4965, // 1661
6081     2403, // 1662
6082     -606, // 1663
6083    -3489, // 1664
6084    -5712, // 1665
6085    -6864, // 1666
6086    -6711, // 1667
6087    -5199, // 1668
6088    -2556, // 1669
6089      666, // 1670
6090     3717, // 1671
6091     5937, // 1672
6092     6933, // 1673
6093     6576, // 1674
6094     4956, // 1675
6095     2397, // 1676
6096     -621, // 1677
6097    -3534, // 1678
6098    -5790, // 1679
6099    -6918, // 1680
6100    -6618, // 1681
6101    -4914, // 1682
6102    -2166, // 1683
6103     1020, // 1684
6104     3966, // 1685
6105     6090, // 1686
6106     7008, // 1687
6107     6567, // 1688
6108     4896, // 1689
6109     2295, // 1690
6110     -759, // 1691
6111    -3693, // 1692
6112    -5886, // 1693
6113    -6861, // 1694
6114    -6402, // 1695
6115    -4626, // 1696
6116    -1884, // 1697
6117     1245, // 1698
6118     4089, // 1699
6119     6096, // 1700
6120     6930, // 1701
6121     6468, // 1702
6122     4794, // 1703
6123     2166, // 1704
6124     -918, // 1705
6125    -3840, // 1706
6126    -5958, // 1707
6127    -6849, // 1708
6128    -6318, // 1709
6129    -4482, // 1710
6130    -1746, // 1711
6131     1302, // 1712
6132     4056, // 1713
6133     6033, // 1714
6134     6897, // 1715
6135     6441, // 1716
6136     4686, // 1717
6137     1959, // 1718
6138    -1200, // 1719
6139    -4110, // 1720
6140    -6144, // 1721
6141    -6900, // 1722
6142    -6258, // 1723
6143    -4407, // 1724
6144    -1731, // 1725
6145     1263, // 1726
6146     4050, // 1727
6147     6069, // 1728
6148     6882, // 1729
6149     6306, // 1730
6150     4434, // 1731
6151     1632, // 1732
6152    -1515, // 1733
6153    -4320, // 1734
6154    -6222, // 1735
6155    -6891, // 1736
6156    -6261, // 1737
6157    -4455, // 1738
6158    -1776, // 1739
6159     1284, // 1740
6160     4101, // 1741
6161     6087, // 1742
6162     6837, // 1743
6163     6183, // 1744
6164     4242, // 1745
6165     1410, // 1746
6166    -1701, // 1747
6167    -4443, // 1748
6168    -6312, // 1749
6169    -6987, // 1750
6170    -6345, // 1751
6171    -4470, // 1752
6172    -1701, // 1753
6173     1419, // 1754
6174     4266, // 1755
6175     6252, // 1756
6176     6927, // 1757
6177     6135, // 1758
6178     4068, // 1759
6179     1203, // 1760
6180    -1875, // 1761
6181    -4575, // 1762
6182    -6396, // 1763
6183    -7005, // 1764
6184    -6279, // 1765
6185    -4332, // 1766
6186    -1482, // 1767
6187     1731, // 1768
6188     4599, // 1769
6189     6459, // 1770
6190     6933, // 1771
6191     6009, // 1772
6192     3927, // 1773
6193     1107, // 1774
6194    -1923, // 1775
6195    -4578, // 1776
6196    -6369, // 1777
6197    -6957, // 1778
6198    -6186, // 1779
6199    -4113, // 1780
6200    -1113, // 1781
6201     2121, // 1782
6202     4854, // 1783
6203     6549, // 1784
6204     6948, // 1785
6205     6009, // 1786
6206     3921, // 1787
6207     1092, // 1788
6208    -1953, // 1789
6209    -4647, // 1790
6210    -6450, // 1791
6211    -6957, // 1792
6212    -6003, // 1793
6213    -3756, // 1794
6214     -735, // 1795
6215     2412, // 1796
6216     5040, // 1797
6217     6660, // 1798
6218     6978, // 1799
6219     5964, // 1800
6220     3837, // 1801
6221      966, // 1802
6222    -2115, // 1803
6223    -4797, // 1804
6224    -6486, // 1805
6225    -6822, // 1806
6226    -5745, // 1807
6227    -3480, // 1808
6228     -495, // 1809
6229     2574, // 1810
6230     5094, // 1811
6231     6609, // 1812
6232     6876, // 1813
6233     5862, // 1814
6234     3720, // 1815
6235      807, // 1816
6236    -2292, // 1817
6237    -4923, // 1818
6238    -6534, // 1819
6239    -6789, // 1820
6240    -5640, // 1821
6241    -3348, // 1822
6242     -414, // 1823
6243     2568, // 1824
6244     5037, // 1825
6245     6564, // 1826
6246     6852, // 1827
6247     5802, // 1828
6248     3549, // 1829
6249      549, // 1830
6250    -2583, // 1831
6251    -5166, // 1832
6252    -6657, // 1833
6253    -6783, // 1834
6254    -5577, // 1835
6255    -3315, // 1836
6256     -438, // 1837
6257     2538, // 1838
6258     5055, // 1839
6259     6588, // 1840
6260     6798, // 1841
6261     5604, // 1842
6262     3252, // 1843
6263      216, // 1844
6264    -2853, // 1845
6265    -5307, // 1846
6266    -6684, // 1847
6267    -6780, // 1848
6268    -5607, // 1849
6269    -3369, // 1850
6270     -450, // 1851
6271     2598, // 1852
6272     5118, // 1853
6273     6594, // 1854
6274     6720, // 1855
6275     5457, // 1856
6276     3048, // 1857
6277       12, // 1858
6278    -2997, // 1859
6279    -5403, // 1860
6280    -6777, // 1861
6281    -6873, // 1862
6282    -5658, // 1863
6283    -3321, // 1864
6284     -318, // 1865
6285     2775, // 1866
6286     5313, // 1867
6287     6750, // 1868
6288     6759, // 1869
6289     5346, // 1870
6290     2856, // 1871
6291     -168, // 1872
6292    -3141, // 1873
6293    -5508, // 1874
6294    -6822, // 1875
6295    -6843, // 1876
6296    -5547, // 1877
6297    -3135, // 1878
6298      -30, // 1879
6299     3123, // 1880
6300     5604, // 1881
6301     6858, // 1882
6302     6690, // 1883
6303     5211, // 1884
6304     2745, // 1885
6305     -234, // 1886
6306    -3162, // 1887
6307    -5493, // 1888
6308    -6789, // 1889
6309    -6780, // 1890
6310    -5394, // 1891
6311    -2826, // 1892
6312      372, // 1893
6313     3459, // 1894
6314     5769, // 1895
6315     6903, // 1896
6316     6690, // 1897
6317     5211, // 1898
6318     2739, // 1899
6319     -258, // 1900
6320    -3225, // 1901
6321    -5583, // 1902
6322    -6852, // 1903
6323    -6693, // 1904
6324    -5106, // 1905
6325    -2442, // 1906
6326      705, // 1907
6327     3684, // 1908
6328     5904, // 1909
6329     6963, // 1910
6330     6684, // 1911
6331     5145, // 1912
6332     2625, // 1913
6333     -414, // 1914
6334    -3405, // 1915
6335    -5700, // 1916
6336    -6810, // 1917
6337    -6498, // 1918
6338    -4845, // 1919
6339    -2202, // 1920
6340      891, // 1921
6341     3783, // 1922
6342     5901, // 1923
6343     6882, // 1924
6344     6579, // 1925
6345     5031, // 1926
6346     2484, // 1927
6347     -594, // 1928
6348    -3570, // 1929
6349    -5799, // 1930
6350    -6819, // 1931
6351    -6444, // 1932
6352    -4743, // 1933
6353    -2106, // 1934
6354      918, // 1935
6355     3732, // 1936
6356     5835, // 1937
6357     6852, // 1938
6358     6546, // 1939
6359     4914, // 1940
6360     2250, // 1941
6361     -891, // 1942
6362    -3852, // 1943
6363    -5997, // 1944
6364    -6894, // 1945
6365    -6408, // 1946
6366    -4692, // 1947
6367    -2109, // 1948
6368      882, // 1949
6369     3732, // 1950
6370     5877, // 1951
6371     6855, // 1952
6372     6423, // 1953
6373     4668, // 1954
6374     1935, // 1955
6375    -1200, // 1956
6376    -4062, // 1957
6377    -6078, // 1958
6378    -6894, // 1959
6379    -6423, // 1960
6380    -4746, // 1961
6381    -2145, // 1962
6382      924, // 1963
6383     3819, // 1964
6384     5934, // 1965
6385     6834, // 1966
6386     6324, // 1967
6387     4494, // 1968
6388     1731, // 1969
6389    -1371, // 1970
6390    -4173, // 1971
6391    -6159, // 1972
6392    -6990, // 1973
6393    -6498, // 1974
6394    -4746, // 1975
6395    -2034, // 1976
6396     1101, // 1977
6397     4029, // 1978
6398     6132, // 1979
6399     6945, // 1980
6400     6288, // 1981
6401     4341, // 1982
6402     1542, // 1983
6403    -1521, // 1984
6404    -4287, // 1985
6405    -6237, // 1986
6406    -6996, // 1987
6407    -6420, // 1988
6408    -4578, // 1989
6409    -1782, // 1990
6410     1440, // 1991
6411     4380, // 1992
6412     6345, // 1993
6413     6960, // 1994
6414     6183, // 1995
6415     4218, // 1996
6416     1473, // 1997
6417    -1560, // 1998
6418    -4293, // 1999
6419    -6213, // 2000
6420    -6951, // 2001
6421    -6318, // 2002
6422    -4344, // 2003
6423    -1410, // 2004
6424     1827, // 2005
6425     4629, // 2006
6426     6438, // 2007
6427     6978, // 2008
6428     6189, // 2009
6429     4227, // 2010
6430     1452, // 2011
6431    -1608, // 2012
6432    -4383, // 2013
6433    -6309, // 2014
6434    -6957, // 2015
6435    -6132, // 2016
6436    -3999, // 2017
6437    -1047, // 2018
6438     2091, // 2019
6439     4788, // 2020
6440     6531, // 2021
6441     7002, // 2022
6442     6144, // 2023
6443     4125, // 2024
6444     1311, // 2025
6445    -1791, // 2026
6446    -4551, // 2027
6447    -6363, // 2028
6448    -6837, // 2029
6449    -5901, // 2030
6450    -3759, // 2031
6451     -849, // 2032
6452     2223, // 2033
6453     4821, // 2034
6454     6471, // 2035
6455     6900, // 2036
6456     6033, // 2037
6457     3996, // 2038
6458     1131, // 2039
6459    -1995, // 2040
6460    -4704, // 2041
6461    -6426, // 2042
6462    -6828, // 2043
6463    -5838, // 2044
6464    -3672, // 2045
6465     -801, // 2046
6466     2196, // 2047
6467     4755, // 2048
6468     6429, // 2049
6469     6879, // 2050
6470     5967, // 2051
6471     3816, // 2052
6472      852, // 2053
6473    -2292, // 2054
6474    -4950, // 2055
6475    -6570, // 2056
6476    -6852, // 2057
6477    -5796, // 2058
6478    -3651, // 2059
6479     -825, // 2060
6480     2175, // 2061
6481     4794, // 2062
6482     6474, // 2063
6483     6834, // 2064
6484     5781, // 2065
6485     3522, // 2066
6486      534, // 2067
6487    -2550, // 2068
6488    -5088, // 2069
6489    -6597, // 2070
6490    -6852, // 2071
6491    -5832, // 2072
6492    -3705, // 2073
6493     -819, // 2074
6494     2268, // 2075
6495     4899, // 2076
6496     6513, // 2077
6497     6783, // 2078
6498     5652, // 2079
6499     3336, // 2080
6500      348, // 2081
6501    -2691, // 2082
6502    -5178, // 2083
6503    -6687, // 2084
6504    -6948, // 2085
6505    -5874, // 2086
6506    -3633, // 2087
6507     -645, // 2088
6508     2490, // 2089
6509     5121, // 2090
6510     6693, // 2091
6511     6840, // 2092
6512     5559, // 2093
6513     3174, // 2094
6514      192, // 2095
6515    -2808, // 2096
6516    -5274, // 2097
6517    -6735, // 2098
6518    -6909, // 2099
6519    -5739, // 2100
6520    -3408, // 2101
6521     -324, // 2102
6522     2862, // 2103
6523     5430, // 2104
6524     6804, // 2105
6525     6780, // 2106
6526     5445, // 2107
6527     3078, // 2108
6528      141, // 2109
6529    -2832, // 2110
6530    -5265, // 2111
6531    -6702, // 2112
6532    -6834, // 2113
6533    -5568, // 2114
6534    -3090, // 2115
6535       78, // 2116
6536     3189, // 2117
6537     5580, // 2118
6538     6843, // 2119
6539     6792, // 2120
6540     5454, // 2121
6541     3078, // 2122
6542      108, // 2123
6543    -2901, // 2124
6544    -5370, // 2125
6545    -6774, // 2126
6546    -6753, // 2127
6547    -5298, // 2128
6548    -2730, // 2129
6549      381, // 2130
6550     3378, // 2131
6551     5694, // 2132
6552     6900, // 2133
6553     6777, // 2134
6554     5373, // 2135
6555     2946, // 2136
6556      -75, // 2137
6557    -3111, // 2138
6558    -5511, // 2139
6559    -6750, // 2140
6560    -6579, // 2141
6561    -5067, // 2142
6562    -2529, // 2143
6563      522, // 2144
6564     3450, // 2145
6565     5673, // 2146
6566     6807, // 2147
6567     6666, // 2148
6568     5253, // 2149
6569     2787, // 2150
6570     -282, // 2151
6571    -3300, // 2152
6572    -5625, // 2153
6573    -6786, // 2154
6574    -6555, // 2155
6575    -5004, // 2156
6576    -2466, // 2157
6577      528, // 2158
6578     3390, // 2159
6579     5619, // 2160
6580     6786, // 2161
6581     6636, // 2162
6582     5130, // 2163
6583     2544, // 2164
6584     -585, // 2165
6585    -3588, // 2166
6586    -5829, // 2167
6587    -6873, // 2168
6588    -6549, // 2169
6589    -4977, // 2170
6590    -2481, // 2171
6591      495, // 2172
6592     3414, // 2173
6593     5685, // 2174
6594     6810, // 2175
6595     6525, // 2176
6596     4887, // 2177
6597     2232, // 2178
6598     -879, // 2179
6599    -3786, // 2180
6600    -5910, // 2181
6601    -6876, // 2182
6602    -6567, // 2183
6603    -5025, // 2184
6604    -2496, // 2185
6605      564, // 2186
6606     3537, // 2187
6607     5778, // 2188
6608     6813, // 2189
6609     6447, // 2190
6610     4734, // 2191
6611     2052, // 2192
6612    -1035, // 2193
6613    -3885, // 2194
6614    -5985, // 2195
6615    -6966, // 2196
6616    -6633, // 2197
6617    -5001, // 2198
6618    -2352, // 2199
6619      792, // 2200
6620     3792, // 2201
6621     6006, // 2202
6622};
6623
6624/**
6625 * The position of the moon at the time set on this
6626 * object, in equatorial coordinates.
6627 * @internal
6628 * @deprecated ICU 2.4. This class may be removed or modified.
6629 */
6630const CalendarAstronomer::Equatorial& CalendarAstronomer::getMoonPosition()
6631{
6632    //
6633    // See page 142 of "Practical Astronomy with your Calculator",
6634    // by Peter Duffet-Smith, for details on the algorithm.
6635    //
6636    if (moonPositionSet == FALSE) {
6637        // Calculate the solar longitude.  Has the side effect of
6638        // filling in "meanAnomalySun" as well.
6639        getSunLongitude();
6640
6641        //
6642        // Find the # of days since the epoch of our orbital parameters.
6643        // TODO: Convert the time of day portion into ephemeris time
6644        //
6645        double day = getJulianDay() - JD_EPOCH;       // Days since epoch
6646
6647        // Calculate the mean longitude and anomaly of the moon, based on
6648        // a circular orbit.  Similar to the corresponding solar calculation.
6649        double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
6650        meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
6651
6652        //
6653        // Calculate the following corrections:
6654        //  Evection:   the sun's gravity affects the moon's eccentricity
6655        //  Annual Eqn: variation in the effect due to earth-sun distance
6656        //  A3:         correction factor (for ???)
6657        //
6658        double evection = 1.2739*PI/180 * ::sin(2 * (meanLongitude - sunLongitude)
6659            - meanAnomalyMoon);
6660        double annual   = 0.1858*PI/180 * ::sin(meanAnomalySun);
6661        double a3       = 0.3700*PI/180 * ::sin(meanAnomalySun);
6662
6663        meanAnomalyMoon += evection - annual - a3;
6664
6665        //
6666        // More correction factors:
6667        //  center  equation of the center correction
6668        //  a4      yet another error correction (???)
6669        //
6670        // TODO: Skip the equation of the center correction and solve Kepler's eqn?
6671        //
6672        double center = 6.2886*PI/180 * ::sin(meanAnomalyMoon);
6673        double a4 =     0.2140*PI/180 * ::sin(2 * meanAnomalyMoon);
6674
6675        // Now find the moon's corrected longitude
6676        moonLongitude = meanLongitude + evection + center - annual + a4;
6677
6678        //
6679        // And finally, find the variation, caused by the fact that the sun's
6680        // gravitational pull on the moon varies depending on which side of
6681        // the earth the moon is on
6682        //
6683        double variation = 0.6583*CalendarAstronomer::PI/180 * ::sin(2*(moonLongitude - sunLongitude));
6684
6685        moonLongitude += variation;
6686
6687        //
6688        // What we've calculated so far is the moon's longitude in the plane
6689        // of its own orbit.  Now map to the ecliptic to get the latitude
6690        // and longitude.  First we need to find the longitude of the ascending
6691        // node, the position on the ecliptic where it is crossed by the moon's
6692        // orbit as it crosses from the southern to the northern hemisphere.
6693        //
6694        double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
6695
6696        nodeLongitude -= 0.16*PI/180 * ::sin(meanAnomalySun);
6697
6698        double y = ::sin(moonLongitude - nodeLongitude);
6699        double x = cos(moonLongitude - nodeLongitude);
6700
6701        moonEclipLong = ::atan2(y*cos(moonI), x) + nodeLongitude;
6702        double moonEclipLat = ::asin(y * ::sin(moonI));
6703
6704        eclipticToEquatorial(moonPosition, moonEclipLong, moonEclipLat);
6705        moonPositionSet = TRUE;
6706    }
6707    return moonPosition;
6708}
6709
6710/**
6711 * The "age" of the moon at the time specified in this object.
6712 * This is really the angle between the
6713 * current ecliptic longitudes of the sun and the moon,
6714 * measured in radians.
6715 *
6716 * @see #getMoonPhase
6717 * @internal
6718 * @deprecated ICU 2.4. This class may be removed or modified.
6719 */
6720double CalendarAstronomer::getMoonAge() {
6721    // See page 147 of "Practical Astronomy with your Calculator",
6722    // by Peter Duffet-Smith, for details on the algorithm.
6723    //
6724    // Force the moon's position to be calculated.  We're going to use
6725    // some the intermediate results cached during that calculation.
6726    //
6727    // Currently, the only client is IslamicCalendar. All it cares
6728    // about is that the method returns new moon (0) and full moon (PI)
6729    // at the correct date & time, and otherwise that the returned value
6730    // is monotonically increasing from 0 to PI for the range new moon date
6731    // to full moon date, and monotonically increasing from PI to just under
6732    // 2*PI for the range full moon date to just before next new moon date.
6733
6734    if (fTime >= newMoonDatesFirst && fTime < newMoonDatesLast) {
6735        int32_t offset = (int32_t)(((double)kNewMoonDatesCount)*(fTime - newMoonDatesFirst)/newMoonDatesRange);
6736        const int32_t * newMoonDatesPtr = newMoonDates + offset; // approximate starting position
6737        int32_t curTime = (int32_t)(fTime/10000.0);
6738        while (curTime < *newMoonDatesPtr) {
6739            newMoonDatesPtr--;
6740        }
6741        while (curTime >= *(newMoonDatesPtr+1)) {
6742            newMoonDatesPtr++;
6743        }
6744        offset = newMoonDatesPtr - newMoonDates;
6745        int32_t fullMoonDate = (*newMoonDatesPtr + *(newMoonDatesPtr+1))/2 + fullMoonAdjustmts[offset];
6746        if (curTime < fullMoonDate) {
6747            return PI*((double)(curTime - *newMoonDatesPtr))/((double)(fullMoonDate - *newMoonDatesPtr));
6748        }
6749        return PI + PI*((double)(curTime - fullMoonDate))/((double)(*(newMoonDatesPtr+1) - fullMoonDate));
6750    }
6751
6752    getMoonPosition();
6753
6754    return norm2PI(moonEclipLong - sunLongitude);
6755}
6756
6757/**
6758 * Calculate the phase of the moon at the time set in this object.
6759 * The returned phase is a <code>double</code> in the range
6760 * <code>0 <= phase < 1</code>, interpreted as follows:
6761 * <ul>
6762 * <li>0.00: New moon
6763 * <li>0.25: First quarter
6764 * <li>0.50: Full moon
6765 * <li>0.75: Last quarter
6766 * </ul>
6767 *
6768 * @see #getMoonAge
6769 * @internal
6770 * @deprecated ICU 2.4. This class may be removed or modified.
6771 */
6772double CalendarAstronomer::getMoonPhase() {
6773    // See page 147 of "Practical Astronomy with your Calculator",
6774    // by Peter Duffet-Smith, for details on the algorithm.
6775    return 0.5 * (1 - cos(getMoonAge()));
6776}
6777
6778/**
6779 * Constant representing a new moon.
6780 * For use with {@link #getMoonTime getMoonTime}
6781 * @internal
6782 * @deprecated ICU 2.4. This class may be removed or modified.
6783 */
6784const CalendarAstronomer::MoonAge CalendarAstronomer::NEW_MOON() {
6785    return  CalendarAstronomer::MoonAge(0);
6786}
6787
6788/**
6789 * Constant representing the moon's first quarter.
6790 * For use with {@link #getMoonTime getMoonTime}
6791 * @internal
6792 * @deprecated ICU 2.4. This class may be removed or modified.
6793 */
6794/*const CalendarAstronomer::MoonAge CalendarAstronomer::FIRST_QUARTER() {
6795  return   CalendarAstronomer::MoonAge(CalendarAstronomer::PI/2);
6796}*/
6797
6798/**
6799 * Constant representing a full moon.
6800 * For use with {@link #getMoonTime getMoonTime}
6801 * @internal
6802 * @deprecated ICU 2.4. This class may be removed or modified.
6803 */
6804const CalendarAstronomer::MoonAge CalendarAstronomer::FULL_MOON() {
6805    return   CalendarAstronomer::MoonAge(CalendarAstronomer::PI);
6806}
6807/**
6808 * Constant representing the moon's last quarter.
6809 * For use with {@link #getMoonTime getMoonTime}
6810 * @internal
6811 * @deprecated ICU 2.4. This class may be removed or modified.
6812 */
6813
6814class MoonTimeAngleFunc : public CalendarAstronomer::AngleFunc {
6815public:
6816    virtual ~MoonTimeAngleFunc();
6817    virtual double eval(CalendarAstronomer&a) { return a.getMoonAge(); }
6818};
6819
6820MoonTimeAngleFunc::~MoonTimeAngleFunc() {}
6821
6822/*const CalendarAstronomer::MoonAge CalendarAstronomer::LAST_QUARTER() {
6823  return  CalendarAstronomer::MoonAge((CalendarAstronomer::PI*3)/2);
6824}*/
6825
6826/**
6827 * Find the next or previous time of a new moon if date is in the
6828 * range handled by this function (approx gregorian 1900-2100),
6829 * else return 0.
6830 * <p>
6831 * @param theTime   the time relative to which the function should find
6832 *                  the next or previous new moon
6833 * @param next      <tt>true</tt> if the next occurrance of the new moon
6834 *                  is desired, <tt>false</tt> for the previous occurrance.
6835 * @internal
6836 */
6837UDate CalendarAstronomer::getNewMoonTimeInRange(UDate theTime, UBool next)
6838{
6839    if (theTime < newMoonDatesFirst || theTime >= newMoonDatesLast) {
6840        return 0.0;
6841    }
6842    int32_t offset = (int32_t)(((double)kNewMoonDatesCount)*(theTime - newMoonDatesFirst)/newMoonDatesRange);
6843    const int32_t * newMoonDatesPtr = newMoonDates + offset; // approximate starting position
6844    int32_t curTime = (int32_t)(theTime/10000.0);
6845    while (curTime < *newMoonDatesPtr) {
6846        newMoonDatesPtr--;
6847    }
6848    while (curTime >= *(newMoonDatesPtr+1)) {
6849        newMoonDatesPtr++;
6850    }
6851    if (next) {
6852        newMoonDatesPtr++;
6853    }
6854    return 10000.0 * (UDate)(*newMoonDatesPtr);
6855}
6856
6857
6858/**
6859 * Find the next or previous time at which the Moon's ecliptic
6860 * longitude will have the desired value.
6861 * <p>
6862 * @param desired   The desired longitude.
6863 * @param next      <tt>true</tt> if the next occurrance of the phase
6864 *                  is desired, <tt>false</tt> for the previous occurrance.
6865 * @internal
6866 * @deprecated ICU 2.4. This class may be removed or modified.
6867 */
6868UDate CalendarAstronomer::getMoonTime(double desired, UBool next)
6869{
6870    // Currently, we only get here via a call from ChineseCalendar,
6871    // with desired == CalendarAstronomer::NEW_MOON().value
6872    if (desired == CalendarAstronomer::NEW_MOON().value) {
6873        UDate newMoonTime = CalendarAstronomer::getNewMoonTimeInRange(fTime, next);
6874        if (newMoonTime != 0.0) {
6875            return newMoonTime;
6876        }
6877        // else fall through to the full calculation
6878    }
6879
6880    MoonTimeAngleFunc func;
6881    return timeOfAngle( func,
6882                        desired,
6883                        SYNODIC_MONTH,
6884                        MINUTE_MS,
6885                        next);
6886}
6887
6888/**
6889 * Find the next or previous time at which the moon will be in the
6890 * desired phase.
6891 * <p>
6892 * @param desired   The desired phase of the moon.
6893 * @param next      <tt>true</tt> if the next occurrance of the phase
6894 *                  is desired, <tt>false</tt> for the previous occurrance.
6895 * @internal
6896 * @deprecated ICU 2.4. This class may be removed or modified.
6897 */
6898UDate CalendarAstronomer::getMoonTime(const CalendarAstronomer::MoonAge& desired, UBool next) {
6899    // Currently, the only client is ChineseCalendar, which calls
6900    // this with desired == CalendarAstronomer::NEW_MOON()
6901    return getMoonTime(desired.value, next);
6902}
6903
6904class MoonRiseSetCoordFunc : public CalendarAstronomer::CoordFunc {
6905public:
6906    virtual ~MoonRiseSetCoordFunc();
6907    virtual void eval(CalendarAstronomer::Equatorial& result, CalendarAstronomer&a) { result = a.getMoonPosition(); }
6908};
6909
6910MoonRiseSetCoordFunc::~MoonRiseSetCoordFunc() {}
6911
6912/**
6913 * Returns the time (GMT) of sunrise or sunset on the local date to which
6914 * this calendar is currently set.
6915 * @internal
6916 * @deprecated ICU 2.4. This class may be removed or modified.
6917 */
6918UDate CalendarAstronomer::getMoonRiseSet(UBool rise)
6919{
6920    MoonRiseSetCoordFunc func;
6921    return riseOrSet(func,
6922                     rise,
6923                     .533 * DEG_RAD,        // Angular Diameter
6924                     34 /60.0 * DEG_RAD,    // Refraction correction
6925                     MINUTE_MS);            // Desired accuracy
6926}
6927
6928//-------------------------------------------------------------------------
6929// Interpolation methods for finding the time at which a given event occurs
6930//-------------------------------------------------------------------------
6931
6932UDate CalendarAstronomer::timeOfAngle(AngleFunc& func, double desired,
6933                                      double periodDays, double epsilon, UBool next)
6934{
6935    // Find the value of the function at the current time
6936    double lastAngle = func.eval(*this);
6937
6938    // Find out how far we are from the desired angle
6939    double deltaAngle = norm2PI(desired - lastAngle) ;
6940
6941    // Using the average period, estimate the next (or previous) time at
6942    // which the desired angle occurs.
6943    double deltaT =  (deltaAngle + (next ? 0.0 : - CalendarAstronomer_PI2 )) * (periodDays*DAY_MS) / CalendarAstronomer_PI2;
6944
6945    double lastDeltaT = deltaT; // Liu
6946    UDate startTime = fTime; // Liu
6947
6948    setTime(fTime + uprv_ceil(deltaT));
6949
6950    // Now iterate until we get the error below epsilon.  Throughout
6951    // this loop we use normPI to get values in the range -Pi to Pi,
6952    // since we're using them as correction factors rather than absolute angles.
6953    do {
6954        // Evaluate the function at the time we've estimated
6955        double angle = func.eval(*this);
6956
6957        // Find the # of milliseconds per radian at this point on the curve
6958        double factor = uprv_fabs(deltaT / normPI(angle-lastAngle));
6959
6960        // Correct the time estimate based on how far off the angle is
6961        deltaT = normPI(desired - angle) * factor;
6962
6963        // HACK:
6964        //
6965        // If abs(deltaT) begins to diverge we need to quit this loop.
6966        // This only appears to happen when attempting to locate, for
6967        // example, a new moon on the day of the new moon.  E.g.:
6968        //
6969        // This result is correct:
6970        // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
6971        //   Sun Jul 22 10:57:41 CST 1990
6972        //
6973        // But attempting to make the same call a day earlier causes deltaT
6974        // to diverge:
6975        // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
6976        //   1.3649828540224032E9
6977        // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
6978        //   Sun Jul 08 13:56:15 CST 1990
6979        //
6980        // As a temporary solution, we catch this specific condition and
6981        // adjust our start time by one eighth period days (either forward
6982        // or backward) and try again.
6983        // Liu 11/9/00
6984        if (uprv_fabs(deltaT) > uprv_fabs(lastDeltaT)) {
6985            double delta = uprv_ceil (periodDays * DAY_MS / 8.0);
6986            setTime(startTime + (next ? delta : -delta));
6987            return timeOfAngle(func, desired, periodDays, epsilon, next);
6988        }
6989
6990        lastDeltaT = deltaT;
6991        lastAngle = angle;
6992
6993        setTime(fTime + uprv_ceil(deltaT));
6994    }
6995    while (uprv_fabs(deltaT) > epsilon);
6996
6997    return fTime;
6998}
6999
7000UDate CalendarAstronomer::riseOrSet(CoordFunc& func, UBool rise,
7001                                    double diameter, double refraction,
7002                                    double epsilon)
7003{
7004    Equatorial pos;
7005    double      tanL   = ::tan(fLatitude);
7006    double     deltaT = 0;
7007    int32_t         count = 0;
7008
7009    //
7010    // Calculate the object's position at the current time, then use that
7011    // position to calculate the time of rising or setting.  The position
7012    // will be different at that time, so iterate until the error is allowable.
7013    //
7014    U_DEBUG_ASTRO_MSG(("setup rise=%s, dia=%.3lf, ref=%.3lf, eps=%.3lf\n",
7015        rise?"T":"F", diameter, refraction, epsilon));
7016    do {
7017        // See "Practical Astronomy With Your Calculator, section 33.
7018        func.eval(pos, *this);
7019        double angle = ::acos(-tanL * ::tan(pos.declination));
7020        double lst = ((rise ? CalendarAstronomer_PI2-angle : angle) + pos.ascension ) * 24 / CalendarAstronomer_PI2;
7021
7022        // Convert from LST to Universal Time.
7023        UDate newTime = lstToUT( lst );
7024
7025        deltaT = newTime - fTime;
7026        setTime(newTime);
7027        U_DEBUG_ASTRO_MSG(("%d] dT=%.3lf, angle=%.3lf, lst=%.3lf,   A=%.3lf/D=%.3lf\n",
7028            count, deltaT, angle, lst, pos.ascension, pos.declination));
7029    }
7030    while (++ count < 5 && uprv_fabs(deltaT) > epsilon);
7031
7032    // Calculate the correction due to refraction and the object's angular diameter
7033    double cosD  = ::cos(pos.declination);
7034    double psi   = ::acos(sin(fLatitude) / cosD);
7035    double x     = diameter / 2 + refraction;
7036    double y     = ::asin(sin(x) / ::sin(psi));
7037    long  delta  = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
7038
7039    return fTime + (rise ? -delta : delta);
7040}
7041/**
7042 * Return the obliquity of the ecliptic (the angle between the ecliptic
7043 * and the earth's equator) at the current time.  This varies due to
7044 * the precession of the earth's axis.
7045 *
7046 * @return  the obliquity of the ecliptic relative to the equator,
7047 *          measured in radians.
7048 */
7049double CalendarAstronomer::eclipticObliquity() {
7050    if (isINVALID(eclipObliquity)) {
7051        const double epoch = 2451545.0;     // 2000 AD, January 1.5
7052
7053        double T = (getJulianDay() - epoch) / 36525;
7054
7055        eclipObliquity = 23.439292
7056            - 46.815/3600 * T
7057            - 0.0006/3600 * T*T
7058            + 0.00181/3600 * T*T*T;
7059
7060        eclipObliquity *= DEG_RAD;
7061    }
7062    return eclipObliquity;
7063}
7064
7065
7066//-------------------------------------------------------------------------
7067// Private data
7068//-------------------------------------------------------------------------
7069void CalendarAstronomer::clearCache() {
7070    const double INVALID = uprv_getNaN();
7071
7072    julianDay       = INVALID;
7073    julianCentury   = INVALID;
7074    sunLongitude    = INVALID;
7075    meanAnomalySun  = INVALID;
7076    moonLongitude   = INVALID;
7077    moonEclipLong   = INVALID;
7078    meanAnomalyMoon = INVALID;
7079    eclipObliquity  = INVALID;
7080    siderealTime    = INVALID;
7081    siderealT0      = INVALID;
7082    moonPositionSet = FALSE;
7083}
7084
7085//private static void out(String s) {
7086//    System.out.println(s);
7087//}
7088
7089//private static String deg(double rad) {
7090//    return Double.toString(rad * RAD_DEG);
7091//}
7092
7093//private static String hours(long ms) {
7094//    return Double.toString((double)ms / HOUR_MS) + " hours";
7095//}
7096
7097/**
7098 * @internal
7099 * @deprecated ICU 2.4. This class may be removed or modified.
7100 */
7101/*UDate CalendarAstronomer::local(UDate localMillis) {
7102  // TODO - srl ?
7103  TimeZone *tz = TimeZone::createDefault();
7104  int32_t rawOffset;
7105  int32_t dstOffset;
7106  UErrorCode status = U_ZERO_ERROR;
7107  tz->getOffset(localMillis, TRUE, rawOffset, dstOffset, status);
7108  delete tz;
7109  return localMillis - rawOffset;
7110}*/
7111
7112// Debugging functions
7113UnicodeString CalendarAstronomer::Ecliptic::toString() const
7114{
7115#ifdef U_DEBUG_ASTRO
7116    char tmp[800];
7117    sprintf(tmp, "[%.5f,%.5f]", longitude*RAD_DEG, latitude*RAD_DEG);
7118    return UnicodeString(tmp, "");
7119#else
7120    return UnicodeString();
7121#endif
7122}
7123
7124UnicodeString CalendarAstronomer::Equatorial::toString() const
7125{
7126#ifdef U_DEBUG_ASTRO
7127    char tmp[400];
7128    sprintf(tmp, "%f,%f",
7129        (ascension*RAD_DEG), (declination*RAD_DEG));
7130    return UnicodeString(tmp, "");
7131#else
7132    return UnicodeString();
7133#endif
7134}
7135
7136UnicodeString CalendarAstronomer::Horizon::toString() const
7137{
7138#ifdef U_DEBUG_ASTRO
7139    char tmp[800];
7140    sprintf(tmp, "[%.5f,%.5f]", altitude*RAD_DEG, azimuth*RAD_DEG);
7141    return UnicodeString(tmp, "");
7142#else
7143    return UnicodeString();
7144#endif
7145}
7146
7147
7148//  static private String radToHms(double angle) {
7149//    int hrs = (int) (angle*RAD_HOUR);
7150//    int min = (int)((angle*RAD_HOUR - hrs) * 60);
7151//    int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
7152
7153//    return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
7154//  }
7155
7156//  static private String radToDms(double angle) {
7157//    int deg = (int) (angle*RAD_DEG);
7158//    int min = (int)((angle*RAD_DEG - deg) * 60);
7159//    int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
7160
7161//    return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
7162//  }
7163
7164// =============== Calendar Cache ================
7165
7166void CalendarCache::createCache(CalendarCache** cache, UErrorCode& status) {
7167    ucln_i18n_registerCleanup(UCLN_I18N_ASTRO_CALENDAR, calendar_astro_cleanup);
7168    if(cache == NULL) {
7169        status = U_MEMORY_ALLOCATION_ERROR;
7170    } else {
7171        *cache = new CalendarCache(32, status);
7172        if(U_FAILURE(status)) {
7173            delete *cache;
7174            *cache = NULL;
7175        }
7176    }
7177}
7178
7179int32_t CalendarCache::get(CalendarCache** cache, int32_t key, UErrorCode &status) {
7180    int32_t res;
7181
7182    if(U_FAILURE(status)) {
7183        return 0;
7184    }
7185    umtx_lock(&ccLock);
7186
7187    if(*cache == NULL) {
7188        createCache(cache, status);
7189        if(U_FAILURE(status)) {
7190            umtx_unlock(&ccLock);
7191            return 0;
7192        }
7193    }
7194
7195    res = uhash_igeti((*cache)->fTable, key);
7196    U_DEBUG_ASTRO_MSG(("%p: GET: [%d] == %d\n", (*cache)->fTable, key, res));
7197
7198    umtx_unlock(&ccLock);
7199    return res;
7200}
7201
7202void CalendarCache::put(CalendarCache** cache, int32_t key, int32_t value, UErrorCode &status) {
7203    if(U_FAILURE(status)) {
7204        return;
7205    }
7206    umtx_lock(&ccLock);
7207
7208    if(*cache == NULL) {
7209        createCache(cache, status);
7210        if(U_FAILURE(status)) {
7211            umtx_unlock(&ccLock);
7212            return;
7213        }
7214    }
7215
7216    uhash_iputi((*cache)->fTable, key, value, &status);
7217    U_DEBUG_ASTRO_MSG(("%p: PUT: [%d] := %d\n", (*cache)->fTable, key, value));
7218
7219    umtx_unlock(&ccLock);
7220}
7221
7222CalendarCache::CalendarCache(int32_t size, UErrorCode &status) {
7223    fTable = uhash_openSize(uhash_hashLong, uhash_compareLong, NULL, size, &status);
7224    U_DEBUG_ASTRO_MSG(("%p: Opening.\n", fTable));
7225}
7226
7227CalendarCache::~CalendarCache() {
7228    if(fTable != NULL) {
7229        U_DEBUG_ASTRO_MSG(("%p: Closing.\n", fTable));
7230        uhash_close(fTable);
7231    }
7232}
7233
7234U_NAMESPACE_END
7235
7236#endif //  !UCONFIG_NO_FORMATTING
7237