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