diff --git a/README.md b/README.md
index ee455e3..ffdcf80 100644
--- a/README.md
+++ b/README.md
@@ -960,7 +960,7 @@ new Hebcal.HDate(15, 'elul', 5772).dafyomi('a') // Berachos 30
### `Hebcal.HDate.prototype.tachanun()`
-Return a bitmask containing information on what Tachanun (or Tzidchatcha on Shabbat) is said on that day.
+Return a bitmask containing information on what Tachanun (or Tzidchatcha on Shabbat) is said on that day. For an explanation of how this works, see [issue #38](https://github.com/hebcal/hebcal-js/issues/38#issuecomment-300735615).
Tachanun is not said on Rosh Chodesh, the month of Nisan, Lag Baomer, Rosh Chodesh Sivan until Isru Chag, Tisha B'av, 15 Av, Erev Rosh Hashanah, Rosh Hashanah, Erev Yom Kippur until after Simchat Torah, Chanukah, Tu B'shvat, Purim and Shushan Purim, and Purim and Shushan Purim Katan.
@@ -984,6 +984,20 @@ These bitmasks are also available as properties of the function:
However, due to the lengthliness of typing `Hebcal.HDate.prototype.tachanun.*BITMASK*`, it may be easier to just use the values directly.
+### `Hebcal.HDate.prototype.tachanun_uf()`
+
+*New as of v2.2.4*
+
+Return a user-friendly representation of tachanun(). An object with Boolean properties {shacharit, mincha, all_congs}.
+
+```js
+new Hebcal.HDate('1 Tishrei').tachanun_uf() // { shacharit: false, mincha: false, all_congs: false }
+new Hebcal.HDate('25 Tishrei').tachanun_uf() // { shacharit: true, mincha: true, all_congs: false }
+new Hebcal.HDate('6 Cheshvan').tachanun_uf() // { shacharit: true, mincha: true, all_congs: true }
+new Hebcal.HDate().onOrAfter(5).tachanun_uf() // Friday: { shacharit: true, mincha: false, all_congs: true }
+new Hebcal.HDate().onOrAfter(6).tachanun_uf() // Shabbat: { shacharit: false, mincha: true, all_congs: true }
+```
+
### `Hebcal.HDate.prototype.hallel()`
Return a number containing information on what Hallel is said on that day.
diff --git a/client/hebcal.js b/client/hebcal.js
index 8d7d9ce..3b5dee5 100644
--- a/client/hebcal.js
+++ b/client/hebcal.js
@@ -2021,6 +2021,15 @@ HDateProto.tachanun = (function() {
return tachanun;
})();
+HDateProto.tachanun_uf = function(){
+ var ret = this.tachanun();
+ return {
+ shacharit: !!(ret & this.tachanun.SHACHARIT),
+ mincha: !!(ret & this.tachanun.MINCHA),
+ all_congs: !!(ret & this.tachanun.ALL_CONGS)
+ };
+};
+
HDateProto.hallel = (function() {
var NONE = hallel.NONE = 0,
HALF = hallel.HALF = 1,
diff --git a/client/hebcal.js.map b/client/hebcal.js.map
index dcc233a..b1496e7 100644
--- a/client/hebcal.js.map
+++ b/client/hebcal.js.map
@@ -16,7 +16,7 @@
"sedra.js"
],
"names": [],
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjhCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
"file": "generated.js",
"sourceRoot": "",
"sourcesContent": [
@@ -27,7 +27,7 @@
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tgematriya = require('gematriya');\n\nvar shas = [\n\t// sname, aname, hname, blatt\n\t[ \"Berachot\", \"Berachos\", \"ברכות\", 64 ],\n\t[ \"Shabbat\", \"Shabbos\", \"שבת\", 157 ],\n\t[ \"Eruvin\", \"Eruvin\", \"עירובין\", 105 ],\n\t[ \"Pesachim\", 0, \"פסחים\", 121 ],\n\t[ \"Shekalim\", 0, \"שקלים\", 22 ],\n\t[ \"Yoma\", 0, \"יומא\", 88 ],\n\t[ \"Sukkah\", 0, \"סוכה\", 56 ],\n\t[ \"Beitzah\", 0, \"ביצה\", 40 ],\n\t[ \"Rosh Hashana\", 0, \"ראש השנה\", 35 ],\n\t[ \"Taanit\", \"Taanis\", \"תענית\", 31 ],\n\t[ \"Megillah\", 0, \"מגילה\", 32 ],\n\t[ \"Moed Katan\", 0, \"מועד קטן\", 29 ],\n\t[ \"Chagigah\", 0, \"חגיגה\", 27 ],\n\t[ \"Yevamot\", \"Yevamos\", \"יבמות\", 122 ],\n\t[ \"Ketubot\", \"Kesubos\", \"כתובות\", 112 ],\n\t[ \"Nedarim\", 0, \"נדרים\", 91 ],\n\t[ \"Nazir\", 0, \"נזיר\", 66 ],\n\t[ \"Sotah\", 0, \"סוטה\", 49 ],\n\t[ \"Gitin\", 0, \"גיטין\", 90 ],\n\t[ \"Kiddushin\", 0, \"קידושין\", 82 ],\n\t[ \"Baba Kamma\", 0, \"בבא קמא\", 119 ],\n\t[ \"Baba Metzia\", 0, \"בבא מציעא\", 119 ],\n\t[ \"Baba Batra\", \"Baba Basra\", \"בבא בתרא\", 176 ],\n\t[ \"Sanhedrin\", 0, \"סנהדרין\", 113 ],\n\t[ \"Makkot\", \"Makkos\", \"מכות\", 24 ],\n\t[ \"Shevuot\", \"Shevuos\", \"שבועות\", 49 ],\n\t[ \"Avodah Zarah\", 0, \"עבודה זרה\", 76 ],\n\t[ \"Horayot\", \"Horayos\", \"הוריות\", 14 ],\n\t[ \"Zevachim\", 0, \"זבחים\", 120 ],\n\t[ \"Menachot\", \"Menachos\", \"מנחות\", 110 ],\n\t[ \"Chullin\", 0, \"חולין\", 142 ],\n\t[ \"Bechorot\", \"Bechoros\", \"בכורות\", 61 ],\n\t[ \"Arachin\", 0, \"ערכין\", 34 ],\n\t[ \"Temurah\", 0, \"תמורה\", 34 ],\n\t[ \"Keritot\", \"Kerisos\", \"כריתות\", 28 ],\n\t[ \"Meilah\", 0, \"מעילה\", 22 ],\n\t[ \"Kinnim\", 0, \"קנים\", 4 ],\n\t[ \"Tamid\", 0, \"תמיד\", 10 ],\n\t[ \"Midot\", \"Midos\", \"מדות\", 4 ],\n\t[ \"Niddah\", 0, \"נדה\", 73 ]\n].map(function(m){\n\treturn {name: m.slice(0,3), blatt: m[3]};\n});\n\nexports.dafyomi = function(gregdate) {\n\tvar dafcnt = 40, cno, dno, osday, nsday, total, count, j, cday, blatt;\n\n\tif (!(gregdate instanceof Date)) {\n\t\tthrow new TypeError('non-date given to dafyomi');\n\t}\n\n\tosday = greg.greg2abs(new Date(1923, 8, 11));\n\tnsday = greg.greg2abs(new Date(1975, 5, 24));\n\tcday = greg.greg2abs(gregdate);\n\n\tif (cday < osday) { // no cycle; dy didn't start yet\n\t\treturn {name: [], blatt: 0};\n\t}\n\tif (cday >= nsday) { // \"new\" cycle\n\t\tcno = 8 + ( (cday - nsday) / 2711 );\n\t\tdno = (cday - nsday) % 2711;\n\t} else { // old cycle\n\t\tcno = 1 + ( (cday - osday) / 2702 );\n\t\tdno = (cday - osday) % 2702;\n\t}\n\n\t// Find the daf taking note that the cycle changed slightly after cycle 7.\n\n\ttotal = blatt = 0;\n\tcount = -1;\n\n\t// Fix Shekalim for old cycles\n\tif (cno <= 7) {\n\t\tshas[4].blatt = 13;\n\t} else {\n\t\tshas[4].blatt = 22;\n\t}\n\n\t// Find the daf\n\tj = 0;\n\twhile (j < dafcnt) {\n\t\tcount++;\n\t\ttotal = total + shas[j].blatt - 1;\n\t\tif (dno < total) {\n\t\t\tblatt = (shas[j].blatt + 1) - (total - dno);\n\t\t\t// fiddle with the weird ones near the end\n\t\t\tswitch (count) {\n\t\t\t\tcase 36:\n\t\t\t\t\tblatt = blatt + 21;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tblatt = blatt + 24;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38:\n\t\t\t\t\tblatt = blatt + 33;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Bailout\n\t\t\tj = 1 + dafcnt;\n\t\t}\n\t\tj++;\n\t}\n\n\treturn {name: shas[count].name, blatt: blatt};\n};\n\nexports.dafname = function(daf, o) {\n\treturn c.LANG(daf.name, o) + ' ' + (o === 'h' ? gematriya(daf.blatt) : daf.blatt);\n};\n",
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar floor = Math.floor,\n\tt0t1 = [30, 31],\n\ttMonthLengths = [0, 31, 28, 31].concat(t0t1, t0t1, 31, t0t1, t0t1),\n\tmonthLengths = [\n\t\ttMonthLengths.slice()\n\t];\ntMonthLengths[2]++;\nmonthLengths.push(tMonthLengths);\n\nexports.daysInMonth = function(month, year) { // 1 based months\n\treturn monthLengths[+LEAP(year)][month];\n};\n\nexports.monthNames = [\n\t'',\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December'\n];\n\nexports.lookupMonthNum = function(month) {\n\treturn new Date(month + ' 1').getMonth() + 1;\n};\n\nfunction dayOfYear (date) {\n\tif (!date instanceof Date) {\n\t\tthrow new TypeError('Argument to greg.dayOfYear not a Date');\n\t}\n\tvar doy = date.getDate() + 31 * date.getMonth();\n\tif (date.getMonth() > 1) { // FEB\n\t\tdoy -= floor((4 * (date.getMonth() + 1) + 23) / 10);\n\t\tif (LEAP(date.getFullYear())) {\n\t\t\tdoy++;\n\t\t}\n\t}\n\treturn doy;\n}\nexports.dayOfYear = dayOfYear;\n\nfunction LEAP (year) {\n\treturn !(year % 4) && ( !!(year % 100) || !(year % 400) );\n}\nexports.LEAP = LEAP;\n\nexports.greg2abs = function(date) { // \"absolute date\"\n\tvar year = date.getFullYear() - 1;\n\treturn (dayOfYear(date) + // days this year\n\t\t\t365 * year + // + days in prior years\n\t\t\t( floor(year / 4) - // + Julian Leap years\n\t\t\tfloor(year / 100) + // - century years\n\t\t\tfloor(year / 400))); // + Gregorian leap years\n};\n\n\n/*\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n */\nexports.abs2greg = function(theDate) {\n// calculations copied from original JS code\n\n\tvar d0 = theDate - 1;\n\tvar n400 = floor(d0 / 146097);\n\tvar d1 = floor(d0 % 146097);\n\tvar n100 = floor(d1 / 36524);\n\tvar d2 = d1 % 36524;\n\tvar n4 = floor(d2 / 1461);\n\tvar d3 = d2 % 1461;\n\tvar n1 = floor(d3 / 365);\n\n\tvar day = ((d3 % 365) + 1);\n\tvar year = (400 * n400 + 100 * n100 + 4 * n4 + n1);\n\n\tif (4 == n100 || 4 == n1) {\n\t\treturn new Date(year, 11, 31);\n\t}\n\n\treturn new Date(new Date(++year, 0, day).setFullYear(year)); // new Date() is very smart\n};",
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tsuncalc = require('suncalc'),\n\tcities = require('./cities'),\n\tgematriya = require('gematriya');\n\nsuncalc.addTime(-16.1, 'alot_hashachar', 0);\nsuncalc.addTime(-11.5, 'misheyakir', 0);\nsuncalc.addTime(-10.2, 'misheyakir_machmir', 0);\nsuncalc.addTime(-8.5, 0, 'tzeit');\n\n// for minifying optimizations\nvar getFullYear = 'getFullYear',\n\tgetMonth = 'getMonth',\n\tgetDate = 'getDate',\n\tgetTime = 'getTime',\n\tabs = 'abs',\n\thour = 'hour',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tMONTH_CNT = c.MONTH_CNT,\n\tdaysInMonth = c.daysInMonth,\n\tdayOnOrBefore = c.dayOnOrBefore,\n\tprototype = HDate.prototype;\n\nfunction HDate(day, month, year) {\n\tvar me = this;\n\tswitch (arguments.length) {\n\t\tcase 0:\n\t\t\treturn new HDate(new Date());\n\t\tcase 1:\n\t\t\tif (typeof day == 'undefined') {\n\t\t\t\treturn new HDate();\n\t\t\t} else if (day instanceof Date) {\n\t\t\t\t// we were passed a Gregorian date, so convert it\n\t\t\t\tvar d = abs2hebrew(greg.greg2abs(day));\n\t\t\t\t/*if (d.sunset() < day) {\n\t\t\t\t\td = d.next();\n\t\t\t\t}*/\n\t\t\t\treturn d;\n\t\t\t} else if (day instanceof HDate) {\n\t\t\t\tvar d = new HDate(day[getDate](), day[getMonth](), day[getFullYear]());\n\t\t\t\td.il = day.il;\n\t\t\t\td.setLocation(d.lat, d.long);\n\t\t\t\treturn d;\n\t\t\t} else if (typeof day == 'string') {\n\t\t\t\tswitch (day.toLowerCase().trim()) {\n\t\t\t\t\tcase 'today':\n\t\t\t\t\t\treturn new HDate();\n\t\t\t\t\tcase 'yesterday':\n\t\t\t\t\t\treturn new HDate().prev();\n\t\t\t\t\tcase 'tomorrow':\n\t\t\t\t\t\treturn new HDate().next();\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(day)) {\n\t\t\t\t\tvar s = day.split(/\\s+/);\n\t\t\t\t\tif (s.length == 2) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1]);\n\t\t\t\t\t} else if (s.length == 3) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1], s[2]);\n\t\t\t\t\t} else if (s.length == 4) { // should only be if s[1] is Adar\n\t\t\t\t\t\tif (/i/i.test(s[2])) { // Using I[I] syntax\n\t\t\t\t\t\t\ts[2] = s[2].length;\n\t\t\t\t\t\t} // otherwise using 1|2 syntax\n\t\t\t\t\t\treturn new HDate(s[0], s[1] + s[2], s[3]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof day == 'number') { // absolute date\n\t\t\t\treturn abs2hebrew(day);\n\t\t\t}\n\t\t\tthrow new TypeError('HDate called with bad argument');\n\t\tcase 2:\n\t\t\treturn new HDate(day, month, (new HDate)[getFullYear]());\n\t\tcase 3:\n\t\t\tme.day = me.month = 1;\n\t\t\tme.year = c.dayYearNum(year);\n\n\t\t\tme.setMonth(c.monthNum(month));\n\t\t\tme.setDate(c.dayYearNum(day));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError('HDate called with bad arguments');\n\t}\n\n\treturn me.setLocation.apply(me, HDate.defaultLocation);\n}\n\nHDate.defaultLocation = [0, 0];\nObject.defineProperty(HDate, 'defaultCity', {\n\tenumerable: true,\n\tconfigurable: true,\n\n\tget: function() {\n\t\treturn cities.nearest(HDate.defaultLocation[0], HDate.defaultLocation[1]);\n\t},\n\tset: function(city) {\n\t\tHDate.defaultLocation = cities.getCity(city).slice(0, 2);\n\t}\n});\n\nfunction fix(date) {\n\tfixMonth(date);\n\tfixDate(date);\n}\n\nfunction fixDate(date) {\n\tif (date.day < 1) {\n\t\tif (date.month == TISHREI) {\n\t\t\tdate.year -= 1;\n\t\t}\n\t\tdate.day += daysInMonth(date.month, date.year);\n\t\tdate.month -= 1;\n\t\tfix(date);\n\t}\n\tif (date.day > daysInMonth(date.month, date.year)) {\n\t\tif (date.month == months.ELUL) {\n\t\t\tdate.year += 1;\n\t\t}\n\t\tdate.day -= daysInMonth(date.month, date.year);\n\t\tdate.month += 1;\n\t\tfix(date);\n\t}\n\tfixMonth(date);\n}\n\nfunction fixMonth(date) {\n\tif (date.month == months.ADAR_II && !date.isLeapYear()) {\n\t\tdate.month -= 1; // to Adar I\n\t\tfix(date);\n\t}\n\tif (date.month < 1) {\n\t\tdate.month += MONTH_CNT(date.year);\n\t\tdate.year -= 1;\n\t\tfix(date);\n\t}\n\tif (date.month > MONTH_CNT(date.year)) {\n\t\tdate.month -= MONTH_CNT(date.year);\n\t\tdate.year += 1;\n\t\tfix(date);\n\t}\n}\n\nprototype[getFullYear] = function() {\n\treturn this.year;\n};\n\nprototype.isLeapYear = function() {\n\treturn c.LEAP(this.year);\n};\n\nprototype[getMonth] = function() {\n\treturn this.month;\n};\n\nprototype.getTishreiMonth = function() {\n\tvar nummonths = MONTH_CNT(this[getFullYear]());\n\treturn (this[getMonth]() + nummonths - 6) % nummonths || nummonths;\n};\n\nprototype.daysInMonth = function() {\n\treturn daysInMonth(this[getMonth](), this[getFullYear]());\n};\n\nprototype[getDate] = function() {\n\treturn this.day;\n};\n\nprototype.getDay = function() {\n\treturn this.greg().getDay();\n};\n\nprototype.setFullYear = function(year) {\n\tthis.year = year;\n\tfix(this);\n\treturn this;\n};\n\nprototype.setMonth = function(month) {\n\tthis.month = c.monthNum(month);\n\tfix(this);\n\treturn this;\n};\n\nprototype.setTishreiMonth = function(month) {\n\treturn this.setMonth((month + 6) % MONTH_CNT(this[getFullYear]()) || 13);\n};\n\nprototype.setDate = function(date) {\n\tthis.day = date;\n\tfix(this);\n\treturn this;\n};\n\n/* convert hebrew date to absolute date */\n/* Absolute date of Hebrew DATE.\n The absolute date is the number of days elapsed since the (imaginary)\n Gregorian date Sunday, December 31, 1 BC. */\nfunction hebrew2abs(d) {\n\tvar m, tempabs = d[getDate](), year = d[getFullYear]();\n\n\tif (d[getMonth]() < TISHREI) {\n\t\tfor (m = TISHREI; m <= MONTH_CNT(year); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\n\t\tfor (m = months.NISAN; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t} else {\n\t\tfor (m = TISHREI; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t}\n\n\treturn c.hebElapsedDays(year) - 1373429 + tempabs;\n}\n\nfunction abs2hebrew(d) {\n\tvar mmap = [\n\t\tmonths.KISLEV, months.TEVET, months.SHVAT, months.ADAR_I, months.NISAN,\n\t\tmonths.IYYAR, months.SIVAN, months.TAMUZ, TISHREI, TISHREI, TISHREI, months.CHESHVAN\n\t], hebdate, gregdate, month, year;\n\n\tif (d >= 10555144) {\n\t\tthrow new RangeError(\"parameter to abs2hebrew \" + d + \" out of range\");\n\t}\n\n\tgregdate = greg.abs2greg(d);\n\thebdate = new HDate(1, TISHREI, (year = 3760 + gregdate[getFullYear]()));\n\n\twhile (d >= hebrew2abs(hebdate.setFullYear(year + 1))) {\n\t\tyear++;\n\t}\n\n\tif (year > 4634 && year < 10666) {\n\t\t// optimize search\n\t\tmonth = mmap[gregdate[getMonth]()];\n\t} else {\n\t\t// we're outside the usual range, so assume nothing about Hebrew/Gregorian calendar drift...\n\t\tmonth = TISHREI;\n\t}\n\n\twhile (d > hebrew2abs(hebdate = new HDate(daysInMonth(month, year), month, year))) {\n\t\tmonth = (month % MONTH_CNT(year)) + 1;\n\t}\n\n\treturn hebdate.setLocation.apply(hebdate.setDate(d - hebrew2abs(hebdate.setDate(1)) + 1), HDate.defaultLocation);\n}\n\nprototype.greg = function() {\n\treturn greg.abs2greg(hebrew2abs(this));\n};\n\nprototype.gregEve = function() {\n\treturn this.prev().sunset();\n};\n\nprototype[abs] = function() {\n\treturn hebrew2abs(this);\n};\n\nprototype.toString = function(o) {\n\treturn c.LANG([this[getDate](), null, gematriya(this[getDate]())], o) + ' ' +\n\t\tthis.getMonthName(o) + ' ' +\n\t\tc.LANG([this[getFullYear](), null, gematriya(this[getFullYear]())], o);\n};\n\nprototype.getMonthName = function(o) {\n\treturn c.LANG(c.monthNames[+this.isLeapYear()][this[getMonth]()], o);\n};\n\nprototype.setCity = function(city) {\n\treturn this.setLocation(cities.getCity(city));\n};\n\nprototype.setLocation = function(lat, lon) {\n\tif (typeof lat == 'object' && !Array.isArray(lat)) {\n\t\tlon = lat.long;\n\t\tlat = lat.lat;\n\t}\n\tif (Array.isArray(lat) && typeof lon == 'undefined') {\n\t\tlon = lat[0];\n\t\tlat = lat[1];\n\t}\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to HDate.setLocation()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to HDate.setLocation()');\n\t}\n\n\tthis.lat = lat;\n\tthis.long = lon;\n\n\tthis.il = cities.getCity(cities.nearest(lat, lon))[2];\n\n\treturn this;\n};\n\nfunction suntime(hdate) {\n\t// reset the date to midday before calling suncalc api\n\t// https://github.com/mourner/suncalc/issues/11\n\tvar date = hdate.greg();\n\treturn suncalc.getTimes(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0, 0), hdate.lat, hdate.long);\n}\n\nprototype.sunrise = function() {\n\treturn suntime(this).sunrise;\n};\n\nprototype.sunset = function() {\n\treturn suntime(this).sunset;\n};\n\nprototype[hour] = function() {\n\treturn (this.sunset() - this.sunrise()) / 12; // ms in hour\n};\n\nprototype.hourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this[hour]() / (1000 * 60);\n};\n\nprototype.nightHour = function() {\n\treturn (this.sunrise() - this.gregEve()) / 12; // ms in hour\n};\n\nprototype.nightHourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this.nightHour() / (1000 * 60);\n};\n\nfunction hourOffset(hdate, hours) {\n\treturn new Date(hdate.sunrise()[getTime]() + (hdate[hour]() * hours));\n}\n\nvar zemanim = {\n\tchatzot: function(hdate) {\n\t\treturn hourOffset(hdate, 6);\n\t},\n\tchatzot_night: function(hdate) {\n\t\treturn new Date(hdate.sunrise()[getTime]() - (hdate.nightHour() * 6));\n\t},\n\talot_hashachar: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\talot_hashacher: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\tmisheyakir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir;\n\t},\n\tmisheyakir_machmir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir_machmir;\n\t},\n\tsof_zman_shma: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 3);\n\t},\n\tsof_zman_tfilla: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 4);\n\t},\n\tmincha_gedola: function(hdate) {\n\t\treturn hourOffset(hdate, 6.5);\n\t},\n\tmincha_ketana: function(hdate) {\n\t\treturn hourOffset(hdate, 9.5);\n\t},\n\tplag_hamincha: function(hdate) {\n\t\treturn hourOffset(hdate, 10.75);\n\t},\n\ttzeit: function(hdate) {\n\t\treturn suntime(hdate).tzeit;\n\t},\n\tneitz_hachama: function(hdate) {\n\t\treturn hdate.sunrise();\n\t},\n\tshkiah: function(hdate) {\n\t\treturn hdate.sunset();\n\t}\n};\n\nprototype.getZemanim = function() {\n\treturn c.map(zemanim, function(z){\n\t\treturn z(this);\n\t}, this);\n};\n\nHDate.addZeman = function(zeman, func) {\n\tzemanim[zeman] = func;\n};\n\nprototype.next = function() {\n\treturn abs2hebrew(this.abs() + 1).setLocation(this.lat, this.long);\n};\n\nprototype.prev = function() {\n\treturn abs2hebrew(this.abs() - 1).setLocation(this.lat, this.long);\n};\n\nprototype.isSameDate = function(other) {\n\tif (other instanceof HDate) {\n\t\tif (other[getFullYear]() == -1) {\n\t\t\tother = new HDate(other).setFullYear(this[getFullYear]());\n\t\t}\n\t\treturn this[abs]() == other[abs]();\n\t}\n\treturn false;\n};\n\nfunction onOrBefore(day, t, offset) {\n\treturn new HDate(dayOnOrBefore(day, t[abs]() + offset));\n}\n\nprototype.before = function(day) {\n\treturn onOrBefore(day, this, -1);\n};\n\nprototype.onOrBefore = function(day) {\n\treturn onOrBefore(day, this, 0);\n};\n\nprototype.nearest = function(day) {\n\treturn onOrBefore(day, this, 3);\n};\n\nprototype.onOrAfter = function(day) {\n\treturn onOrBefore(day, this, 6);\n};\n\nprototype.after = function(day) {\n\treturn onOrBefore(day, this, 7);\n};\n\nmodule.exports = HDate;\n",
- "/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n",
+ "/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.tachanun_uf = function(){\n\tvar ret = this.tachanun();\n\treturn {\n\t\tshacharit: !!(ret & this.tachanun.SHACHARIT),\n\t\tmincha: !!(ret & this.tachanun.MINCHA),\n\t\tall_congs: !!(ret & this.tachanun.ALL_CONGS)\n\t};\n};\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n",
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tgematriya = require('gematriya');\n\nvar __cache = {};\n\n// for byte optimizations\n\nvar dayOnOrBefore = c.dayOnOrBefore,\n\tmonths = c.months,\n\tdays = c.days,\n\tTISHREI = months.TISHREI,\n\tKISLEV = months.KISLEV,\n\tNISAN = months.NISAN,\n\tSAT = days.SAT,\n\tgetDay = 'getDay',\n\tabs = 'abs',\n\tShabbat = 'Shabbat',\n\tShabbos = 'Shabbos';\n\nfunction Chanukah(day) {\n\treturn ['Chanukah: Candle ' + day, 0, 'חנוכה: נר ' + gematriya(day)];\n}\n\nfunction CHM(desc) {\n\treturn [desc[0] + ' (CH\"M)', desc[1] ? desc[1] + ' (CH\"M)' : desc[1], desc[2] ? desc[2] + ' )חה\"ם(' : desc[2]];\n}\n\nfunction Sukkot(day) {\n\treturn ['Sukkot: ' + day, 'Succos: ' + day, 'סוכות יום ' + gematriya(day)];\n}\n\nfunction Pesach(day) {\n\treturn ['Pesach: ' + day, 0, 'פסח יום ' + gematriya(day)];\n}\n\nvar USER_EVENT = 1,\n\tLIGHT_CANDLES = 2,\n\tYOM_TOV_ENDS = 4,\n\tCHUL_ONLY = 8, // chutz l'aretz (Diaspora)\n\tIL_ONLY = 16, // b'aretz (Israel)\n\tLIGHT_CANDLES_TZEIS = 32;\n\nexports.masks = {\n\tUSER_EVENT : USER_EVENT,\n\tLIGHT_CANDLES : LIGHT_CANDLES,\n\tYOM_TOV_ENDS : YOM_TOV_ENDS,\n\tCHUL_ONLY : CHUL_ONLY,\n\tIL_ONLY : IL_ONLY,\n\tLIGHT_CANDLES_TZEIS: LIGHT_CANDLES_TZEIS\n};\n\nfunction Event(date, desc, mask) {\n\tvar me = this;\n\tme.date = new HDate(date);\n\tme.desc = typeof desc != 'object' ? [desc] : desc;\n\n\tme.USER_EVENT = !!( mask & USER_EVENT );\n\tme.LIGHT_CANDLES = !!( mask & LIGHT_CANDLES );\n\tme.YOM_TOV_ENDS = !!( mask & YOM_TOV_ENDS );\n\tme.CHUL_ONLY = !!( mask & CHUL_ONLY );\n\tme.IL_ONLY = !!( mask & IL_ONLY );\n\tme.LIGHT_CANDLES_TZEIS = !!( mask & LIGHT_CANDLES_TZEIS );\n}\n\nEvent.prototype.is = function(date, il) {\n\tdate = new HDate(date), myDate = this.date;\n\tif (arguments.length < 2) {\n\t\t//il = Event.isIL;\n\t\til = date.il;\n\t}\n\tif (date.getDate() != myDate.getDate() || date.getMonth() != myDate.getMonth()) {\n\t\treturn false;\n\t}\n\tif (date.getFullYear() != myDate.getFullYear()) {\n\t\treturn false;\n\t}\n\tif (il && this.CHUL_ONLY || !il && this.IL_ONLY) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEvent.prototype.masks = function() {\n\tvar me = this;\n\treturn (me.USER_EVENT && USER_EVENT) |\n\t\t (me.LIGHT_CANDLES && LIGHT_CANDLES) |\n\t\t (me.YOM_TOV_ENDS && YOM_TOV_ENDS) |\n\t\t (me.CHUL_ONLY && CHUL_ONLY) |\n\t\t (me.IL_ONLY && IL_ONLY) |\n\t\t (me.LIGHT_CANDLES_TZEIS && LIGHT_CANDLES_TZEIS);\n};\n\nEvent.prototype.getDesc = function(o) {\n\treturn c.LANG(this.desc, o);\n};\n\nEvent.prototype.candleLighting = function() {\n\tvar date = this.date;\n\tif (this.LIGHT_CANDLES) {\n\t\treturn new Date(date.sunset() - (Event.candleLighting * 60 * 1000));\n\t} else if (this.LIGHT_CANDLES_TZEIS) {\n\t\treturn date.getZemanim().tzeit;\n\t}\n\treturn null;\n};\n\nEvent.prototype.havdalah = function() {\n\tif (this.YOM_TOV_ENDS) {\n\t\treturn new Date(this.date.sunset().getTime() + (Event.havdalah * 60 * 1000));\n\t}\n\treturn null;\n};\n\nEvent.prototype.routine = (function(){\n\tfunction routine(){\n\t\treturn !!~routine.names.indexOf(this.getDesc('s'));\n\t}\n\troutine.names = [Shabbat, 'Erev ' + Shabbat];\n\treturn routine;\n})();\n\nEvent.isIL = false;\n\nEvent.candleLighting = 18;\n\nEvent.havdalah = 42;\n\nexports.Event = Event;\n\nexports.year = function(year) {\n\tif (__cache[year]) {\n\t\treturn __cache[year];\n\t}\n\n\tvar\tRH = new HDate(1, TISHREI, year),\n\t\tpesach = new HDate(15, NISAN, year),\n\t\ttmpDate;\n\n\tvar h = {};\n\n\tfunction add(ev) {\n\t\tif (Array.isArray(ev)) {\n\t\t\tev.forEach(function(e){\n\t\t\t\tadd(e);\n\t\t\t});\n\t\t} else {\n\t\t\tif (h[ev.date]) {\n\t\t\t\th[ev.date].push(ev);\n\t\t\t} else {\n\t\t\t\th[ev.date] = [ev];\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.defineProperty(h, 'add', {value: add});\n\n\tadd([ // standard holidays that don't shift based on year\n\t\tnew Event(\n\t\t\tRH,\n\t\t\t['Rosh Hashana 1', 0, 'ראש השנה א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS\n\t\t), new Event(\n\t\t\tnew HDate(2, TISHREI, year),\n\t\t\t['Rosh Hashana 2', 0, 'ראש השנה ב\\''],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(3 + (RH[getDay]() == days.THU), TISHREI, year), // push off to SUN if RH is THU\n\t\t\t['Tzom Gedaliah', 0, 'צום גדליה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(9, TISHREI, year),\n\t\t\t['Erev Yom Kippur', 0, 'ערב יום כיפור'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event( // first SAT after RH\n\t\t\tnew HDate(dayOnOrBefore(SAT, 7 + RH[abs]())),\n\t\t\t[Shabbat + ' Shuva', Shabbos + ' Shuvah', 'שבת שובה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(10, TISHREI, year),\n\t\t\t['Yom Kippur', 0, 'יום כיפור'],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(14, TISHREI, year),\n\t\t\t['Erev Sukkot', 'Erev Succos', 'ערב סוכות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tSukkot(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tCHM(Sukkot(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(17, TISHREI, year),\n\t\t\tCHM(Sukkot(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, TISHREI, year),\n\t\t\tCHM(Sukkot(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, TISHREI, year),\n\t\t\tCHM(Sukkot(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, TISHREI, year),\n\t\t\tCHM(Sukkot(6)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(21, TISHREI, year),\n\t\t\t['Sukkot: 7 (Hoshana Raba)', 'Succos: 7 (Hoshana Raba)', 'סוכות יום ז\\' )הושנע רבה('],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת'],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret / Simchat Torah', 'Shmini Atzeres / Simchas Torah', 'שמיני עצרת / שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(23, TISHREI, year),\n\t\t\t['Simchat Torah', 'Simchas Torah', 'שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(24, KISLEV, year),\n\t\t\t['Erev Chanukah', 0, 'ערב חנוכה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(25, KISLEV, year),\n\t\t\tChanukah(1),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(26, KISLEV, year),\n\t\t\tChanukah(2),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(27, KISLEV, year),\n\t\t\tChanukah(3),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(28, KISLEV, year),\n\t\t\tChanukah(4),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, KISLEV, year),\n\t\t\tChanukah(5),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(30, KISLEV, year), // yes, i know these are wrong\n\t\t\tChanukah(6),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(31, KISLEV, year), // HDate() corrects the month automatically\n\t\t\tChanukah(7),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(32, KISLEV, year),\n\t\t\tChanukah(8),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.SHVAT, year),\n\t\t\t[\"Tu B'Shvat\", 0, 'ט\"ו בשבט'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 43)),\n\t\t\t[Shabbat + ' Shekalim', Shabbos + ' Shekalim', 'שבת שקלים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 30)),\n\t\t\t[Shabbat + ' Zachor', Shabbos + ' Zachor', 'שבת זכור'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(pesach[abs]() - (pesach[getDay]() == days.TUE ? 33 : 31)),\n\t\t\t[\"Ta'anit Esther\", \"Ta'anis Esther\", 'תענית אסתר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(13, months.ADAR_II, year),\n\t\t\t['Erev Purim', 0, 'ערב פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, months.ADAR_II, year),\n\t\t\t['Purim', 0, 'פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.ADAR_II, year),\n\t\t\t['Shushan Purim', 0, 'שושן פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14) - 7),\n\t\t\t[Shabbat + ' Parah', Shabbos + ' Parah', 'שבת פרה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14)),\n\t\t\t[Shabbat + ' Hachodesh', Shabbos + ' Hachodesh', 'שבת החודש'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 1)),\n\t\t\t[Shabbat + ' HaGadol', Shabbos + ' HaGadol', 'שבת הגדול'],\n\t\t\t0\n\t\t), new Event(\n\t\t\t// if the fast falls on Shabbat, move to Thursday\n\t\t\tpesach.prev()[getDay]() == SAT ? pesach.onOrBefore(days.THU) : new HDate(14, NISAN, year),\n\t\t\t[\"Ta'anit Bechorot\", \"Ta'anis Bechoros\", 'תענית בכורות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, NISAN, year),\n\t\t\t['Erev Pesach', 0, 'ערב פסח'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tPesach(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tCHM(Pesach(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\t['Start counting Omer', 0, 'התחלת ספירת העומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(17, NISAN, year),\n\t\t\tCHM(Pesach(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, NISAN, year),\n\t\t\tCHM(Pesach(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, NISAN, year),\n\t\t\tCHM(Pesach(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, NISAN, year),\n\t\t\tCHM(Pesach(6)),\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, NISAN, year),\n\t\t\tPesach(8),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(14, months.IYYAR, year),\n\t\t\t['Pesach Sheni', 0, 'פסח שני'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, months.IYYAR, year),\n\t\t\t[\"Lag B'Omer\", 0, 'ל\"ג בעומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(5, months.SIVAN, year),\n\t\t\t['Erev Shavuot', 'Erev Shavuos', 'ערב שבועות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot 1', 'Shavuos 1', 'שבועות א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot', 'Shavuos', 'שבועות'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(7, months.SIVAN, year),\n\t\t\t['Shavuot 2', 'Shavuos 2', 'שבועות ב\\''],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1)[abs]() - 4)),\n\t\t\t['Leil Selichot', 'Leil Selichos', 'ליל סליחות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, months.ELUL, year),\n\t\t\t['Erev Rosh Hashana', 0, 'ערב ראש השנה'],\n\t\t\tLIGHT_CANDLES\n\t\t)\n\t]);\n\n\ttmpDate = new HDate(10, months.TEVET, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Asara B'Tevet\", 0, 'עשרה בטבת'],\n\t\t0\n\t));\n\n\tif (c.LEAP(year)) {\n\t\tadd(new Event(\n\t\t\tnew HDate(14, months.ADAR_I, year),\n\t\t\t['Purim Katan', 0, 'פורים קטן'],\n\t\t\t0\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(15, months.ADAR_I, year),\n\t\t\t['Shushan Purim Katan', 0, 'שושן פורים קטן'],\n\t\t\t0\n\t\t));\n\t}\n\n\tif (year >= 5711) { // Yom HaShoah first observed in 1951\n\t\ttmpDate = new HDate(27, NISAN, year);\n\t\t/* When the actual date of Yom Hashoah falls on a Friday, the\n\t\t * state of Israel observes Yom Hashoah on the preceding\n\t\t * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n\t\t * on the following Monday.\n\t\t * http://www.ushmm.org/remembrance/dor/calendar/\n\t\t */\n\n\t\tif (tmpDate[getDay]() == days.FRI) {\n\t\t\ttmpDate = tmpDate.prev();\n\t\t} else if (tmpDate[getDay]() == days.SUN) {\n\t\t\ttmpDate = tmpDate.next();\n\t\t}\n\n\t\tadd(new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaShoah', 0, 'יום השואה'],\n\t\t\t0\n\t\t));\n\t}\n\n\tadd(atzmaut(year));\n\n\tif (year >= 5727) { // Yom Yerushalayim only celebrated after 1967\n\t\tadd(new Event(\n\t\t\tnew HDate(29, months.IYYAR, year),\n\t\t\t['Yom Yerushalayim', 0, 'יום ירושלים'],\n\t\t\t0\n\t\t));\n\t}\n\n\ttmpDate = new HDate(17, months.TAMUZ, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Shiva-Asar B'Tamuz\", 0, \"צום יז' בתמוז\"],\n\t\t0\n\t));\n\n\ttmpDate = new HDate(9, months.AV, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]())),\n\t\t[Shabbat + ' Chazon', Shabbos + ' Chazon', 'שבת חזון'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate.prev(),\n\t\t[\"Erev Tish'a B'Av\", 0, 'ערב תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Tish'a B'Av\", 0, 'תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]() + 7)),\n\t\t[Shabbat + ' Nachamu', Shabbos + ' Nachamu', 'שבת נחמו'],\n\t\t0\n\t));\n\n\tfor (var day = 6; day < c.daysInYear(year); day += 7) {\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t[Shabbat, Shabbos, 'שבת'],\n\t\t\tYOM_TOV_ENDS\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(days.FRI, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t['Erev ' + Shabbat, 'Erev ' + Shabbos, 'ערב שבת'],\n\t\t\tLIGHT_CANDLES\n\t\t));\n\t}\n\n\tfor (var month = 1; month <= c.MONTH_CNT(year); month++) {\n\t\tif ((month == NISAN ? c.daysInMonth(c.MONTH_CNT(year - 1), year - 1) :\n\t\t\t\tc.daysInMonth(month - 1, year)) == 30) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh 2', 0, \"ראש חודש ב'\"],\n\t\t\t\t0\n\t\t\t));\n\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(30, month - 1, year),\n\t\t\t\t['Rosh Chodesh 1', 0, \"ראש חודש א'\"],\n\t\t\t\t0\n\t\t\t));\n\t\t} else if (month !== TISHREI) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh', 0, 'ראש חודש'],\n\t\t\t\t0\n\t\t\t));\n\t\t}\n\n\t\tif (month == months.ELUL) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd(new Event(\n\t\t\tnew HDate(29, month, year).onOrBefore(SAT),\n\t\t\t[Shabbat + ' Mevarchim', Shabbos + ' Mevorchim', 'שבת מברכים'],\n\t\t\t0\n\t\t));\n\t}\n\n\treturn __cache[year] = h;\n};\n\nfunction atzmaut(year) {\n\tif (year >= 5708) { // Yom HaAtzma'ut only celebrated after 1948\n\t\tvar tmpDate = new HDate(1, months.IYYAR, year), pesach = new HDate(15, NISAN, year);\n\n\t\tif (pesach[getDay]() == days.SUN) {\n\t\t\ttmpDate.setDate(2);\n\t\t} else if (pesach[getDay]() == SAT) {\n\t\t\ttmpDate.setDate(3);\n\t\t} else if (year < 5764) {\n\t\t\ttmpDate.setDate(4);\n\t\t} else if (pesach[getDay]() == days.TUE) {\n\t\t\ttmpDate.setDate(5);\n\t\t} else {\n\t\t\ttmpDate.setDate(4);\n\t\t}\n\n\t\treturn [new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaZikaron', 0, 'יום הזיכרון'],\n\t\t\t0\n\t\t), new Event(\n\t\t\ttmpDate.next(),\n\t\t\t[\"Yom HaAtzma'ut\", 0, 'יום העצמאות'],\n\t\t\t0\n\t\t)];\n\t}\n\treturn [];\n}\nexports.atzmaut = atzmaut;\n",
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n",
"/*\n * Convert numbers to gematriya representation, and vice-versa.\n *\n * Licensed MIT.\n *\n * Copyright (c) 2014 Eyal Schachter\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(){\n\tvar letters = {}, numbers = {\n\t\t'': 0,\n\t\tא: 1,\n\t\tב: 2,\n\t\tג: 3,\n\t\tד: 4,\n\t\tה: 5,\n\t\tו: 6,\n\t\tז: 7,\n\t\tח: 8,\n\t\tט: 9,\n\t\tי: 10,\n\t\tכ: 20,\n\t\tל: 30,\n\t\tמ: 40,\n\t\tנ: 50,\n\t\tס: 60,\n\t\tע: 70,\n\t\tפ: 80,\n\t\tצ: 90,\n\t\tק: 100,\n\t\tר: 200,\n\t\tש: 300,\n\t\tת: 400,\n\t\tתק: 500,\n\t\tתר: 600,\n\t\tתש: 700,\n\t\tתת: 800,\n\t\tתתק: 900,\n\t\tתתר: 1000\n\t}, i;\n\tfor (i in numbers) {\n\t\tletters[numbers[i]] = i;\n\t}\n\n\tfunction gematriya(num, limit) {\n\t\tif (typeof num !== 'number' && typeof num !== 'string') {\n\t\t\tthrow new TypeError('non-number or string given to gematriya()');\n\t\t}\n\t\tvar str = typeof num === 'string';\n\t\tif (str) {\n\t\t\tnum = num.replace(/('|\")/g,'');\n\t\t}\n\t\tnum = num.toString().split('').reverse();\n\t\tif (!str && limit) {\n\t\t\tnum = num.slice(0, limit);\n\t\t}\n\n\t\tnum = num.map(function g(n,i){\n\t\t\tif (str) {\n\t\t\t\treturn limit && numbers[n] < numbers[num[i - 1]] && numbers[n] < 100 ? numbers[n] * 1000 : numbers[n];\n\t\t\t} else {\n\t\t\t\tif (parseInt(n, 10) * Math.pow(10, i) > 1000) {\n\t\t\t\t\treturn g(n, i-3);\n\t\t\t\t}\n\t\t\t\treturn letters[parseInt(n, 10) * Math.pow(10, i)];\n\t\t\t}\n\t\t});\n\n\t\tif (str) {\n\t\t\treturn num.reduce(function(o,t){\n\t\t\t\treturn o + t;\n\t\t\t}, 0);\n\t\t} else {\n\t\t\tnum = num.reverse().join('').replace(/יה/g,'טו').replace(/יו/g,'טז').split('');\n\n\t\t\tif (num.length === 1) {\n\t\t\t\tnum.push(\"'\");\n\t\t\t} else if (num.length > 1) {\n\t\t\t\tnum.splice(-1, 0, '\"');\n\t\t\t}\n\n\t\t\treturn num.join('');\n\t\t}\n\t}\n\n\tif (typeof module !== 'undefined') {\n\t\tmodule.exports = gematriya;\n\t} else {\n\t\twindow.gematriya = gematriya;\n\t}\n})();\n",
diff --git a/client/hebcal.min.js b/client/hebcal.min.js
index 0f345bf..3c0af21 100644
--- a/client/hebcal.min.js
+++ b/client/hebcal.min.js
@@ -5,6 +5,6 @@
Licensed GPLv3
*/
-!function e(t,n,r){function a(o,s){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(i)return i(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var c=n[o]={exports:{}};t[o][0].call(c.exports,function(e){var n=t[o][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=19440||2==o%7&&i>=9924&&!r(e)||1==o%7&&i>=16789&&r(e-1));return s+(s%7===0||s%7==3||s%7==5)}function i(e){return a(e+1)-a(e)}function o(e){return i(e)%10==5}function s(e){return i(e)%10==3}function u(e){switch(e.toLowerCase()[0]){case"n":case"נ":return"o"==e.toLowerCase()[1]?0:l.NISAN;case"i":return l.IYYAR;case"e":return l.ELUL;case"c":case"ח":return l.CHESHVAN;case"k":case"כ":return l.KISLEV;case"s":switch(e.toLowerCase()[1]){case"i":return l.SIVAN;case"h":return l.SHVAT;default:return 0}case"t":switch(e.toLowerCase()[1]){case"a":return l.TAMUZ;case"i":return l.TISHREI;case"e":return l.TEVET}break;case"a":switch(e.toLowerCase()[1]){case"v":return l.AV;case"d":return/(1|[^i]i|a|א)$/i.test(e)?l.ADAR_I:l.ADAR_II}break;case"ס":return l.SIVAN;case"ש":return l.SHVAT;case"א":switch(e.toLowerCase()[1]){case"ב":return l.AV;case"ד":return/(2|ii|b|ב)$/i.test(e)?l.ADAR_I:l.ADAR_II;case"י":return l.IYYAR;case"ל":return l.ELUL}break;case"ת":switch(e.toLowerCase()[1]){case"מ":return l.TAMUZ;case"ש":return l.TISHREI}}return 0}function h(e,t,n){if(null===e)throw new TypeError("self is null");switch(typeof t){case"function":break;case"string":case"number":return e[t];case"boolean":t=t?function(e){return e}:function(e){return!e};break;case"object":var r=t;if(t instanceof RegExp){t=function(e){return r.test(e)};break}if(Array.isArray(t)){t=function(e,t){return r.indexOf(t)>-1};break}default:throw new TypeError("fun is not a supported type")}var a={},i=Object(e);for(var o in i)if(i.hasOwnProperty(o)){var s=i[o];if(t.call(n,s,o,i)){var u=Object.getOwnPropertyDescriptor(i,o);u.value=s,Object.defineProperty(a,o,u)}}if(Array.isArray(e)||"string"==typeof e){var h=[];for(o in a)h[Number(o)]=a[o];a=h.filter(function(e){return e}),"string"==typeof e&&(a=a.join(""))}return a}var c=e("gematriya"),f="charCodeAt",l=n.months={NISAN:1,IYYAR:2,SIVAN:3,TAMUZ:4,AV:5,ELUL:6,TISHREI:7,CHESHVAN:8,KISLEV:9,TEVET:10,SHVAT:11,ADAR_I:12,ADAR_II:13},y=[["",0,""],["Nisan",0,"ניסן"],["Iyyar",0,"אייר"],["Sivan",0,"סיון"],["Tamuz",0,"תמוז"],["Av",0,"אב"],["Elul",0,"אלול"],["Tishrei",0,"תשרי"],["Cheshvan",0,"חשון"],["Kislev",0,"כסלו"],["Tevet",0,"טבת"],["Sh'vat",0,"שבט"]];n.monthNames=[y.concat([["Adar",0,"אדר"],["Nisan",0,"ניסן"]]),y.concat([["Adar 1",0,"אדר א'"],["Adar 2",0,"אדר ב'"],["Nisan",0,"ניסן"]])],n.days={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6},n.LANG=function(e,t){return"h"==t&&e[2]||"a"==t&&e[1]||e[0]},n.LEAP=r,n.MONTH_CNT=function(e){return 12+r(e)},n.daysInMonth=function(e,t){return 30-(e==l.IYYAR||e==l.TAMUZ||e==l.ELUL||e==l.TEVET||e==l.ADAR_II||e==l.ADAR_I&&!r(t)||e==l.CHESHVAN&&!o(t)||e==l.KISLEV&&s(t))},n.monthNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514&&/('|")/.test(e)?c(e):e[f](0)>=48&&e[f](0)<=57?parseInt(e,10):u(e)},n.dayYearNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514?c(e,!0):parseInt(e,10)},n.hebElapsedDays=a,n.daysInYear=i,n.lngChesh=o,n.shrtKis=s,n.monthFromName=u,n.dayOnOrBefore=function(e,t){return t-(t-e)%7},n.map=function(e,t,n){if(null===e||"function"!=typeof t)throw new TypeError;var r=Object(e),a={};for(var i in r)r.hasOwnProperty(i)&&(a[i]=t.call(n,r[i],i,r));if(Array.isArray(e)||"string"==typeof e){var o=[];for(i in a)o[Number(i)]=a[i];a=h(o,!0),"string"==typeof e&&(a=a.join(""))}return a},n.filter=h,n.range=function(e,t,n){n=n||1,n<0&&(n=0-n);var r=[],a=e;if(e=t;a-=n)r.push(a);return r}},{gematriya:10}],4:[function(e,t,n){var r=e("./common"),a=e("./greg"),i=e("gematriya"),o=[["Berachot","Berachos","ברכות",64],["Shabbat","Shabbos","שבת",157],["Eruvin","Eruvin","עירובין",105],["Pesachim",0,"פסחים",121],["Shekalim",0,"שקלים",22],["Yoma",0,"יומא",88],["Sukkah",0,"סוכה",56],["Beitzah",0,"ביצה",40],["Rosh Hashana",0,"ראש השנה",35],["Taanit","Taanis","תענית",31],["Megillah",0,"מגילה",32],["Moed Katan",0,"מועד קטן",29],["Chagigah",0,"חגיגה",27],["Yevamot","Yevamos","יבמות",122],["Ketubot","Kesubos","כתובות",112],["Nedarim",0,"נדרים",91],["Nazir",0,"נזיר",66],["Sotah",0,"סוטה",49],["Gitin",0,"גיטין",90],["Kiddushin",0,"קידושין",82],["Baba Kamma",0,"בבא קמא",119],["Baba Metzia",0,"בבא מציעא",119],["Baba Batra","Baba Basra","בבא בתרא",176],["Sanhedrin",0,"סנהדרין",113],["Makkot","Makkos","מכות",24],["Shevuot","Shevuos","שבועות",49],["Avodah Zarah",0,"עבודה זרה",76],["Horayot","Horayos","הוריות",14],["Zevachim",0,"זבחים",120],["Menachot","Menachos","מנחות",110],["Chullin",0,"חולין",142],["Bechorot","Bechoros","בכורות",61],["Arachin",0,"ערכין",34],["Temurah",0,"תמורה",34],["Keritot","Kerisos","כריתות",28],["Meilah",0,"מעילה",22],["Kinnim",0,"קנים",4],["Tamid",0,"תמיד",10],["Midot","Midos","מדות",4],["Niddah",0,"נדה",73]].map(function(e){return{name:e.slice(0,3),blatt:e[3]}});n.dafyomi=function(e){var t,n,r,i,s,u,h,c,f,l=40;if(!(e instanceof Date))throw new TypeError("non-date given to dafyomi");if(r=a.greg2abs(new Date(1923,8,11)),i=a.greg2abs(new Date(1975,5,24)),c=a.greg2abs(e),c=i?(t=8+(c-i)/2711,n=(c-i)%2711):(t=1+(c-r)/2702,n=(c-r)%2702),s=f=0,u=-1,t<=7?o[4].blatt=13:o[4].blatt=22,h=0;h1&&(t-=i((4*(e.getMonth()+1)+23)/10),a(e.getFullYear())&&t++),t}function a(e){return!(e%4||!(e%100)&&e%400)}var i=Math.floor,o=[30,31],s=[0,31,28,31].concat(o,o,31,o,o),u=[s.slice()];s[2]++,u.push(s),n.daysInMonth=function(e,t){return u[+a(t)][e]},n.monthNames=["","January","February","March","April","May","June","July","August","September","October","November","December"],n.lookupMonthNum=function(e){return new Date(e+" 1").getMonth()+1},n.dayOfYear=r,n.LEAP=a,n.greg2abs=function(e){var t=e.getFullYear()-1;return r(e)+365*t+(i(t/4)-i(t/100)+i(t/400))},n.abs2greg=function(e){var t=e-1,n=i(t/146097),r=i(t%146097),a=i(r/36524),o=r%36524,s=i(o/1461),u=o%1461,h=i(u/365),c=u%365+1,f=400*n+100*a+4*s+h;return 4==a||4==h?new Date(f,11,31):new Date(new Date(++f,0,c).setFullYear(f))}},{}],6:[function(e,t,n){function r(e,t,n){var a=this;switch(arguments.length){case 0:return new r(new Date);case 1:if("undefined"==typeof e)return new r;if(e instanceof Date){var i=u(y.greg2abs(e));return i}if(e instanceof r){var i=new r(e[p](),e[v](),e[g]());return i.il=e.il,i.setLocation(i.lat,i.long),i}if("string"==typeof e){switch(e.toLowerCase().trim()){case"today":return new r;case"yesterday":return(new r).prev();case"tomorrow":return(new r).next()}if(/\s/.test(e)){var o=e.split(/\s+/);if(2==o.length)return new r(o[0],o[1]);if(3==o.length)return new r(o[0],o[1],o[2]);if(4==o.length)return/i/i.test(o[2])&&(o[2]=o[2].length),new r(o[0],o[1]+o[2],o[3])}}else if("number"==typeof e)return u(e);throw new TypeError("HDate called with bad argument");case 2:return new r(e,t,(new r)[g]());case 3:a.day=a.month=1,a.year=l.dayYearNum(n),a.setMonth(l.monthNum(t)),a.setDate(l.dayYearNum(e));break;default:throw new TypeError("HDate called with bad arguments")}return a.setLocation.apply(a,r.defaultLocation)}function a(e){o(e),i(e)}function i(e){e.day<1&&(e.month==_&&(e.year-=1),e.day+=T(e.month,e.year),e.month-=1,a(e)),e.day>T(e.month,e.year)&&(e.month==E.ELUL&&(e.year+=1),e.day-=T(e.month,e.year),e.month+=1,a(e)),o(e)}function o(e){e.month!=E.ADAR_II||e.isLeapYear()||(e.month-=1,a(e)),e.month<1&&(e.month+=S(e.year),e.year-=1,a(e)),e.month>S(e.year)&&(e.month-=S(e.year),e.year+=1,a(e))}function s(e){var t,n=e[p](),r=e[g]();if(e[v]()<_){for(t=_;t<=S(r);t++)n+=T(t,r);for(t=E.NISAN;t=10555144)throw new RangeError("parameter to abs2hebrew "+e+" out of range");for(n=y.abs2greg(e),t=new r(1,_,i=3760+n[g]());e>=s(t.setFullYear(i+1));)i++;for(a=i>4634&&i<10666?o[n[v]()]:_;e>s(t=new r(T(a,i),a,i));)a=a%S(i)+1;return t.setLocation.apply(t.setDate(e-s(t.setDate(1))+1),r.defaultLocation)}function h(e){var t=e.greg();return m.getTimes(new Date(t.getFullYear(),t.getMonth(),t.getDate(),12,0,0,0,0),e.lat,e.long)}function c(e,t){return new Date(e.sunrise()[b]()+e[L]()*t)}function f(e,t,n){return new r(M(e,t[A]()+n))}var l=e("./common"),y=e("./greg"),m=e("suncalc"),d=e("./cities"),w=e("gematriya");m.addTime(-16.1,"alot_hashachar",0),m.addTime(-11.5,"misheyakir",0),m.addTime(-10.2,"misheyakir_machmir",0),m.addTime(-8.5,0,"tzeit");var g="getFullYear",v="getMonth",p="getDate",b="getTime",A="abs",L="hour",E=l.months,_=E.TISHREI,S=l.MONTH_CNT,T=l.daysInMonth,M=l.dayOnOrBefore,N=r.prototype;r.defaultLocation=[0,0],Object.defineProperty(r,"defaultCity",{enumerable:!0,configurable:!0,get:function(){return d.nearest(r.defaultLocation[0],r.defaultLocation[1])},set:function(e){r.defaultLocation=d.getCity(e).slice(0,2)}}),N[g]=function(){return this.year},N.isLeapYear=function(){return l.LEAP(this.year)},N[v]=function(){return this.month},N.getTishreiMonth=function(){var e=S(this[g]());return(this[v]()+e-6)%e||e},N.daysInMonth=function(){return T(this[v](),this[g]())},N[p]=function(){return this.day},N.getDay=function(){return this.greg().getDay()},N.setFullYear=function(e){return this.year=e,a(this),this},N.setMonth=function(e){return this.month=l.monthNum(e),a(this),this},N.setTishreiMonth=function(e){return this.setMonth((e+6)%S(this[g]())||13)},N.setDate=function(e){return this.day=e,a(this),this},N.greg=function(){return y.abs2greg(s(this))},N.gregEve=function(){return this.prev().sunset()},N[A]=function(){return s(this)},N.toString=function(e){return l.LANG([this[p](),null,w(this[p]())],e)+" "+this.getMonthName(e)+" "+l.LANG([this[g](),null,w(this[g]())],e)},N.getMonthName=function(e){return l.LANG(l.monthNames[+this.isLeapYear()][this[v]()],e)},N.setCity=function(e){return this.setLocation(d.getCity(e))},N.setLocation=function(e,t){if("object"!=typeof e||Array.isArray(e)||(t=e.long,e=e.lat),Array.isArray(e)&&"undefined"==typeof t&&(t=e[0],e=e[1]),Array.isArray(e)&&(e=(60*e[0]+e[1])/60),Array.isArray(t)&&(t=(60*t[0]+t[1])/60),"number"!=typeof e)throw new TypeError("incorrect lat type passed to HDate.setLocation()");if("number"!=typeof t)throw new TypeError("incorrect long type passed to HDate.setLocation()");return this.lat=e,this.long=t,this.il=d.getCity(d.nearest(e,t))[2],this},N.sunrise=function(){return h(this).sunrise},N.sunset=function(){return h(this).sunset},N[L]=function(){return(this.sunset()-this.sunrise())/12},N.hourMins=function(){return this[L]()/6e4},N.nightHour=function(){return(this.sunrise()-this.gregEve())/12},N.nightHourMins=function(){return this.nightHour()/6e4};var I={chatzot:function(e){return c(e,6)},chatzot_night:function(e){return new Date(e.sunrise()[b]()-6*e.nightHour())},alot_hashachar:function(e){return h(e).alot_hashachar},alot_hashacher:function(e){return h(e).alot_hashachar},misheyakir:function(e){return h(e).misheyakir},misheyakir_machmir:function(e){return h(e).misheyakir_machmir},sof_zman_shma:function(e){return c(e,3)},sof_zman_tfilla:function(e){return c(e,4)},mincha_gedola:function(e){return c(e,6.5)},mincha_ketana:function(e){return c(e,9.5)},plag_hamincha:function(e){return c(e,10.75)},tzeit:function(e){return h(e).tzeit},neitz_hachama:function(e){return e.sunrise()},shkiah:function(e){return e.sunset()}};N.getZemanim=function(){return l.map(I,function(e){return e(this)},this)},r.addZeman=function(e,t){I[e]=t},N.next=function(){return u(this.abs()+1).setLocation(this.lat,this.long)},N.prev=function(){return u(this.abs()-1).setLocation(this.lat,this.long)},N.isSameDate=function(e){return e instanceof r&&(e[g]()==-1&&(e=new r(e).setFullYear(this[g]())),this[A]()==e[A]())},N.before=function(e){return f(e,this,-1)},N.onOrBefore=function(e){return f(e,this,0)},N.nearest=function(e){return f(e,this,3)},N.onOrAfter=function(e){return f(e,this,6)},N.after=function(e){return f(e,this,7)},t.exports=r},{"./cities":1,"./common":3,"./greg":5,gematriya:10,suncalc:11}],7:[function(e,t,n){function r(e,t){return{enumerable:!0,configurable:!0,get:e,set:t}}function a(e,t){for(var n in t)e[n]=t[n];return e}function i(e,t){var n=this;if(e||(e=(new c)[T]()),"number"!=typeof e)throw new p("year to Hebcal() is not a number");if(n.year=e,!t)return new i(e,h.range(1,h.MONTH_CNT(e)));if("string"==typeof t&&(t=h.monthFromName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal is not a valid type");n.months=t[E](function(t){var r=new o(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.holidays=f.year(e),n[N]=h.daysInYear(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})}))}function o(e,t){var n=this;if(e=h.monthNum(e),"number"!=typeof e)throw new p("month to Hebcal.Month is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.Month is not a number");return n.month=e,n.year=t,n.days=h.range(1,h.daysInMonth(e,t))[E](function(r){var a=new c(r,e,t);return v(a,"__month",{configurable:!0,writable:!0,value:n}),a}),n[N]=n.days[N],n.holidays=h.filter(f.year(t),function(t){return t[0].date[S]()==e}),v(n,"il",r(function(){return n[_](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[_](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[_](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}function s(e,t){var n=this;if(e||(e=(new Date)[T]()),"string"==typeof e){var i=new Date(e);return t=e.indexOf(" ")+1||e.indexOf("-")+1||e.indexOf("/")+1?i[S]()+1:h.range(1,12),new s(i[T](),t)}if("number"!=typeof e)throw new p("year to Hebcal.GregYear() is not a number");if(n.year=e,!t)return new s(e,h.range(1,12));if("string"==typeof t&&(t=d.lookupMonthName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal.GregYear() is not a valid type");return n.months=t[E](function(t){var r=new u(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.hebyears=[].concat.apply([],n.months[E](function(e){return e.hebmonths[E](function(e){return e.year})})).filter(function(e,t,n){return n.indexOf(e)===t}),n.holidays=h.filter(f.year(n.hebyears[0]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[N]}),n.hebyears[1]&&a(n.holidays,h.filter(f.year(n.hebyears[1]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[N]})),n[N]=365+d.LEAP(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})})),n}function u(e,t){var n=this;if("string"==typeof e&&(e=d.lookupMonthNum(e)),"number"!=typeof e)throw new p("month to Hebcal.GregMonth is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.GregMonth is not a number");return n.year=t,n.month=e,n.days=h.range(1,d.daysInMonth(e,t))[E](function(r){var a=new c(new Date(t,e-1,r));return v(a,"__gregmonth",{configurable:!0,writable:!0,value:n}),a}),n[N]=n.days[N],n.hebmonths=[{month:n[_](1)[S](),year:n[_](1)[T]()},{month:n[_](-1)[S](),year:n[_](-1)[T]()}].filter(function(e,t,n){return 0===t||e.month!=n[0].month}),v(n,"il",r(function(){return n[_](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[_](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[_](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}var h=e("./common"),c=e("./hdate"),f=e("./holidays"),l=e("./sedra"),y=e("./dafyomi"),m=e("./cities"),d=e("./greg"),w=e("events").EventEmitter,g=e("gematriya"),v=Object.defineProperty,p=TypeError,b="find",A="strings",L="getYearObject",E="map",_="getDay",S="getMonth",T="getFullYear",M="isLeapYear",N="length",I="next",H="prev",D=h.months,C=D.TISHREI,O=D.NISAN,Y=i.prototype,k=o.prototype,R=s.prototype,V=u.prototype,P=c.prototype;Y[M]=P[M],Y.setCity=function(e){return this.months.forEach(function(t){t.setCity(e)}),this},Y.setLocation=function(e,t){return this.months.forEach(function(n){n.setLocation(e,t)}),this},Y[I]=function(){return new i(this.year+1)},Y[H]=function(){return new i(this.year-1)},Y[S]=function(e){var t=this.months;return e=h.monthNum(e),e>this.months[N]?this[I]()[S](e-t[N]):t[e>0?e-1:t[N]+e]},Y[_]=function(e){var t=this;if(e>t[N])return null;if(e<0)return t[_](t[N]-e);var n=t[b](29,D.ELUL)[0].abs()+1-t[b](1,O)[0].abs();return e<=n?t[S](O)[_](e):t[S](C)[_](e-n)},Y.days=function(){return[].concat.apply([],this.months[E](function(e){return e.days}))},Y[E]=function(){return[][E].apply(this.days(),arguments)},Y.filter=function(){return[].filter.apply(this.days(),arguments)},Y.addHoliday=function(e){if(!(e instanceof f.Event))throw new p("non-Event passed to addHoliday()");return this.holidays.add(e),this},Y.findParsha=function(e,t){var n=t?[t]:["s","a","h"],r=this.filter(function(t){return Math.max.apply(null,n.map(function(n){return t.getSedra(n).indexOf(e)+1}))});return r[r[N]-1]},Y.findSedra=Y.findParsha,Y[b]=function e(t,n){var r=this;if(1===arguments[N]){if("string"==typeof t)return e[A].call(r,t);if(Array.isArray(t))return[].concat.apply([],t[E](function(e){return r[b][Array.isArray(e)?"apply":"call"](r,e)}));if(t instanceof c)return r[b](t.getDate(),t[S]());if(t instanceof Date)return r[b](new c(t))}else if(2==arguments[N]){if(n instanceof o)return n[b](t);if(Array.isArray(n))return[].concat.apply([],n[E](function(e){return r[b](t,e)}));if("string"==typeof n)return r[b](t,h.monthNum(n));if("number"==typeof n)return r[b](t,r[S](n))}return[]},Y[b][A]=function e(t){var n=t.split(/\s+/),r=e[t.replace(/\s/g,"_").toLowerCase()];if(!n[N])return[];if(r)return r.call(this);try{return this[b](new c(t))}catch(e){return n[N]-1?this[b].apply(this,n):[]}},Y[b][A].rosh_chodesh=function(){return this[b]("Rosh Chodesh",h.range(1,this.months[N]))},Y[b][A].holidays=function(){return[].concat.apply([],this.holidays[E](function(e){return this[b](e.date)},this))},Y[b][A].omer=function(){return this[b](h.range(16,64),O)},Y[b][A].today=function(){return this[b](new c)},Y[b][A].yesterday=function(){return[this[b]("today")[0][H]()]},Y[b][A].tomorrow=function(){return[this[b]("today")[0][I]()]},Y[b][A].pesach=function(){return this[b](h.range(15,23-this.il),O)},Y[b][A].sukkot=function(){return this[b](h.range(15,24-this.il),C)},Y[b][A].succot=Y[b][A].succos=Y[b][A].sukkos=Y[b][A].sukkot,Y[b][A].shavuot=function(){return this[b](h.range(6,7-this.il),D.SIVAN)},Y[b][A].shavuos=Y[b][A].shavuot,Y[b][A].rosh_hashana=function(){return this[b](h.range(1,2),C)},Y[b][A].rosh_hashanah=Y[b][A].rosh_hashana,i.addZeman=c.addZeman,i.cities=m,i.range=h.range,i.gematriya=g,i.holidays=h.filter(f,["masks","Event"]),i.parshiot=l.parshiot,i.LANGUAGE=h.LANG,i[E]=h[E],i.filter=h.filter,v(i,"defaultLocation",r(function(){return c.defaultLocation},function(e){i.events.emit("locationChange",c.defaultLocation),c.defaultLocation=e})),v(i,"defaultCity",r(function(){return c.defaultCity},function(e){i.defaultLocation=m.getCity(e).slice(0,2)})),v(i,"candleLighting",r(function(){return f.Event.candleLighting},function(e){f.Event.candleLighting=e})),v(i,"havdalah",r(function(){return f.Event.havdalah},function(e){f.Event.havdalah=e})),i.Month=o,k[M]=P[M],k[H]=function(){var e=this,t=e[L]();return 1===e.month?t[S](-1):e.month===C?t[H]()[S](D.ELUL):t[S](e.month-1)},k[I]=function(){var e=this,t=e[L]();return e.month===h.MONTH_CNT(e.year)?t[S](1):e.month===D.ELUL?t[I]()[S](C):t[S](e.month+1)},k[_]=function(e){var t=this.days;return e=h.dayYearNum(e),e>t[N]?this[I]()[_](e-t[N]):t[e>0?e-1:t[N]+e]},k[L]=function(){return this.__year||new i(this.year)},k.getName=function(e){return h.LANG(h.monthNames[+this[M]()][this.month],e)},k.rosh_chodesh=function(){var e=this[H]();return 30==e[N]?[e[_](-1),this[_](1)]:[this[_](1)]},k.setCity=function(e){return this.days.forEach(function(t){t.setCity(e)}),this},k.setLocation=function(e,t){return this.days.forEach(function(n){n.setLocation(e,t)}),this},k[E]=function(){return[][E].apply(this.days,arguments)},k.molad=function(){var e,t,n,r,a,i,o={},s=parseInt;i=this.month-7,e=this.year-1,i<0&&(i+=h.MONTH_CNT(e+1)),t=s(i+235*(e/19)),n=s(204+793*(t%1080)),r=s(5+12*t+793*(t/1080)-6),a=s(n%1080+1080*(r%24)),o.doy=new c(s(1+29*t+r/24)).getDay(),o.hour=Math.round(r%24);var u=s(a%1080);o.minutes=s(u/18),o.chalakim=u%18;var f=this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(o.doy).greg();return f.setHours(o.hour),f.setMinutes(o.minutes),f.setSeconds(3.33*o.chalakim),o.day=f,o},k[b]=function e(t){var n=this;return"number"==typeof t?[n[_](t)]:"string"==typeof t?e[A].call(n,t):Array.isArray(t)?[].concat.apply([],t[E](function(e){return n[b](e)})):t instanceof c&&t[T]()==n.year&&t[S]()==n.month?n[b](t.getDate()):t instanceof Date?n[b](new c(t)):[]},k[b][A]=function e(t){var n=e[t.replace(/\s/g,"_").toLowerCase()];if(n)return n.call(this);try{return this[b](new c(t))}catch(e){var r=h.dayYearNum(t);return r?this[b](r):[]}},k[b][A].rosh_chodesh=function(){return this.rosh_chodesh()},k[b][A].shabbat_mevarchim=function e(){return this.month===D.ELUL?[]:e._calc.call(this)},k[b][A].shabbat_mevarchim._calc=function(){return this[b](this[_](29).onOrBefore(h.days.SAT))},k[b][A].shabbos_mevarchim=k[b][A].shabbos_mevorchim=k[b][A].shabbat_mevarchim,i.HDate=c,P.getMonthObject=function(){return this.__month||new o(this[S](),this[T]())},P[L]=function(){return this.getMonthObject()[L]()},function(){var e={};[H,I].forEach(function(t){e[t]=P[t],P[t]=function(){var n=e[t].call(this);return this.__month?this[L]()[b](n)[0]:n}})}(),P.getSedra=function(){var e={};return function(t){var n=e[this[T]()];return n&&n.il==this.il||(n=e[this[T]()]=new l(this[T](),this.il)),n.get(this)[E](function(e){return h.LANG(e,t)})}}(),P.getParsha=P.getSedra,P.holidays=function(e){var t=this,n=t[L]().holidays[t];return n?n.filter(function(n){return!!e||!n.routine()&&n.is(t)})[E](function(e){return e.date.setLocation(t),e}):[]},["candleLighting","havdalah"].forEach(function(e){P[e]=function(){var t=this,n=t.holidays(!0).filter(function(e){return e.is(t)});return n.length&&(n=h.filter(n.map(function(t){return t[e]()}),!0)),n.length?new Date(Math.max.apply(null,n)):null}}),P.omer=function(){var e=this,t=e.greg().getTime(),n=e[T]();return t>new c(15,O,n).greg().getTime()&&t=5727?y[b](29,D.IYYAR):[])),u=i.yes_prev[m]=e([].concat(y[b](-1,D.ELUL),y[b](9,D.TISHREI),y[b](14,D.IYYAR))),i.il[m]=l.il),o=o.indexOf(l.abs())>-1,s=s.indexOf(l.abs())>-1,u=u.indexOf(l.abs()+1)>-1,o)return t;var d=(!s&&a)|(6!=l[_]()&&r);return d|=c&&!u?l[I]().tachanun(!0)&r&&n:5!=l[_]()&&n,d==a?t:d}var t=e.NONE=0,n=e.MINCHA=1,r=e.SHACHARIT=2,a=e.ALL_CONGS=4,i={all:{},some:{},yes_prev:{},il:{}};return e}(),P.hallel=function(){function e(){var e=this,i=e[L](),o=i.year,s=a.il[o]==e.il&&a.whole[o]||(a.whole[o]=[].concat(i[b](h.range(25,33),D.KISLEV),i[b]([15,e.il?null:16],O),i[b]("Shavuot"),i[b]("Sukkot"),f.atzmaut(o)[1].date||[],o>=5727?i[b](29,D.IYYAR):[])[E](function(e){return e.abs()})),u=a.il[o]==e.il&&a.half[o]||(a.half[o]=[].concat(i[b]("Rosh Chodesh").filter(function(e){return e[S]()!=C}),i[b](h.range(17-e.il,23-e.il),O))[E](function(e){return e.abs()}));return a.il[o]=e.il,s.indexOf(e.abs())>-1&&r||u.indexOf(e.abs())>-1&&n||t}var t=e.NONE=0,n=e.HALF=1,r=e.WHOLE=2,a={whole:{},half:{},il:{}};return e}(),function(e){function t(){function t(e,t){return h.filter(h[E](e,function(e){return e-r}),function(e){return e>0&&e-t<0})}var n=new c;i.isSameDate(n)||(e.emit("dayChange"),i=n);var r=new Date,a=t(n.getZemanim(),e.beforeZeman),o=t(e.customs,e.refreshInterval);for(var s in a)e.emit("almostZeman",s,a[s]),a[s]t[N]?this[I]()[S](e-t[N]):t[e>0?e-1:t[N]+e]},a(R,{days:Y.days,map:Y[E],filter:Y.filter,addHoliday:Y.addHoliday}),i.GregMonth=u,V[M]=function(){return d.LEAP(this.year)},V[H]=function(){return 1===this.month?this[L]()[H]()[S](-1):this[L]()[S](this.month-1)},V[I]=function(){return this[L]()[S](this.month+1)},V[_]=function(e){return e>this.days[N]?this[I]()[_](e-this.days[N]):this.days[e>0?e-1:this.days[N]+e]},V[L]=function(){return this.__year||new s(this.year)},V.getName=function(){return d.monthNames[this.month]},V.setCity=k.setCity,V.setLocation=k.setLocation,V[E]=k[E],P.getGregMonthObject=function(){return this.__gregmonth||new u(this.greg()[S]()+1,this.greg()[T]())},P.getGregYearObject=function(){return this.getGregMonthObject()[L]()},t.exports=i},{"./cities":1,"./common":3,"./dafyomi":4,"./greg":5,"./hdate":6,"./holidays":8,"./sedra":12,events:9,gematriya:10}],8:[function(e,t,n){function r(e){return["Chanukah: Candle "+e,0,"חנוכה: נר "+f(e)]}function a(e){return[e[0]+' (CH"M)',e[1]?e[1]+' (CH"M)':e[1],e[2]?e[2]+' )חה"ם(':e[2]]}function i(e){return["Sukkot: "+e,"Succos: "+e,"סוכות יום "+f(e)]}function o(e){return["Pesach: "+e,0,"פסח יום "+f(e)]}function s(e,t,n){var r=this;r.date=new c(e),r.desc="object"!=typeof t?[t]:t,r.USER_EVENT=!!(n&_),r.LIGHT_CANDLES=!!(n&S),r.YOM_TOV_ENDS=!!(n&T),r.CHUL_ONLY=!!(n&M),r.IL_ONLY=!!(n&N),r.LIGHT_CANDLES_TZEIS=!!(n&I)}function u(e){if(e>=5708){var t=new c(1,m.IYYAR,e),n=new c(15,v,e);return n[b]()==d.SUN?t.setDate(2):n[b]()==p?t.setDate(3):e<5764?t.setDate(4):n[b]()==d.TUE?t.setDate(5):t.setDate(4),[new s(t,["Yom HaZikaron",0,"יום הזיכרון"],0),new s(t.next(),["Yom HaAtzma'ut",0,"יום העצמאות"],0)]}return[]}var h=e("./common"),c=e("./hdate"),f=e("gematriya"),l={},y=h.dayOnOrBefore,m=h.months,d=h.days,w=m.TISHREI,g=m.KISLEV,v=m.NISAN,p=d.SAT,b="getDay",A="abs",L="Shabbat",E="Shabbos",_=1,S=2,T=4,M=8,N=16,I=32;n.masks={USER_EVENT:_,LIGHT_CANDLES:S,YOM_TOV_ENDS:T,CHUL_ONLY:M,IL_ONLY:N,LIGHT_CANDLES_TZEIS:I},s.prototype.is=function(e,t){return e=new c(e),myDate=this.date,arguments.length<2&&(t=e.il),e.getDate()==myDate.getDate()&&e.getMonth()==myDate.getMonth()&&(e.getFullYear()==myDate.getFullYear()&&!(t&&this.CHUL_ONLY||!t&&this.IL_ONLY))},s.prototype.masks=function(){
-var e=this;return(e.USER_EVENT&&_)|(e.LIGHT_CANDLES&&S)|(e.YOM_TOV_ENDS&&T)|(e.CHUL_ONLY&&M)|(e.IL_ONLY&&N)|(e.LIGHT_CANDLES_TZEIS&&I)},s.prototype.getDesc=function(e){return h.LANG(this.desc,e)},s.prototype.candleLighting=function(){var e=this.date;return this.LIGHT_CANDLES?new Date(e.sunset()-60*s.candleLighting*1e3):this.LIGHT_CANDLES_TZEIS?e.getZemanim().tzeit:null},s.prototype.havdalah=function(){return this.YOM_TOV_ENDS?new Date(this.date.sunset().getTime()+60*s.havdalah*1e3):null},s.prototype.routine=function(){function e(){return!!~e.names.indexOf(this.getDesc("s"))}return e.names=[L,"Erev "+L],e}(),s.isIL=!1,s.candleLighting=18,s.havdalah=42,n.Event=s,n.year=function(e){function t(e){Array.isArray(e)?e.forEach(function(e){t(e)}):H[e.date]?H[e.date].push(e):H[e.date]=[e]}if(l[e])return l[e];var n,f=new c(1,w,e),_=new c(15,v,e),H={};Object.defineProperty(H,"add",{value:t}),t([new s(f,["Rosh Hashana 1",0,"ראש השנה א'"],I),new s(new c(2,w,e),["Rosh Hashana 2",0,"ראש השנה ב'"],T),new s(new c(3+(f[b]()==d.THU),w,e),["Tzom Gedaliah",0,"צום גדליה"],0),new s(new c(9,w,e),["Erev Yom Kippur",0,"ערב יום כיפור"],S),new s(new c(y(p,7+f[A]())),[L+" Shuva",E+" Shuvah","שבת שובה"],0),new s(new c(10,w,e),["Yom Kippur",0,"יום כיפור"],T),new s(new c(14,w,e),["Erev Sukkot","Erev Succos","ערב סוכות"],S),new s(new c(15,w,e),i(1),I|M),new s(new c(15,w,e),i(1),T|N),new s(new c(16,w,e),i(2),T|M),new s(new c(16,w,e),a(i(2)),N),new s(new c(17,w,e),a(i(3)),0),new s(new c(18,w,e),a(i(4)),0),new s(new c(19,w,e),a(i(5)),0),new s(new c(20,w,e),a(i(6)),0),new s(new c(21,w,e),["Sukkot: 7 (Hoshana Raba)","Succos: 7 (Hoshana Raba)","סוכות יום ז' )הושנע רבה("],S),new s(new c(22,w,e),["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"],I|M),new s(new c(22,w,e),["Shmini Atzeret / Simchat Torah","Shmini Atzeres / Simchas Torah","שמיני עצרת / שמחת תורה"],T|N),new s(new c(23,w,e),["Simchat Torah","Simchas Torah","שמחת תורה"],T|M),new s(new c(24,g,e),["Erev Chanukah",0,"ערב חנוכה"],0),new s(new c(25,g,e),r(1),0),new s(new c(26,g,e),r(2),0),new s(new c(27,g,e),r(3),0),new s(new c(28,g,e),r(4),0),new s(new c(29,g,e),r(5),0),new s(new c(30,g,e),r(6),0),new s(new c(31,g,e),r(7),0),new s(new c(32,g,e),r(8),0),new s(new c(15,m.SHVAT,e),["Tu B'Shvat",0,'ט"ו בשבט'],0),new s(new c(y(p,_[A]()-43)),[L+" Shekalim",E+" Shekalim","שבת שקלים"],0),new s(new c(y(p,_[A]()-30)),[L+" Zachor",E+" Zachor","שבת זכור"],0),new s(new c(_[A]()-(_[b]()==d.TUE?33:31)),["Ta'anit Esther","Ta'anis Esther","תענית אסתר"],0),new s(new c(13,m.ADAR_II,e),["Erev Purim",0,"ערב פורים"],0),new s(new c(14,m.ADAR_II,e),["Purim",0,"פורים"],0),new s(new c(15,m.ADAR_II,e),["Shushan Purim",0,"שושן פורים"],0),new s(new c(y(p,_[A]()-14)-7),[L+" Parah",E+" Parah","שבת פרה"],0),new s(new c(y(p,_[A]()-14)),[L+" Hachodesh",E+" Hachodesh","שבת החודש"],0),new s(new c(y(p,_[A]()-1)),[L+" HaGadol",E+" HaGadol","שבת הגדול"],0),new s(_.prev()[b]()==p?_.onOrBefore(d.THU):new c(14,v,e),["Ta'anit Bechorot","Ta'anis Bechoros","תענית בכורות"],0),new s(new c(14,v,e),["Erev Pesach",0,"ערב פסח"],S),new s(new c(15,v,e),o(1),I|M),new s(new c(15,v,e),o(1),T|N),new s(new c(16,v,e),o(2),T|M),new s(new c(16,v,e),a(o(2)),N),new s(new c(16,v,e),["Start counting Omer",0,"התחלת ספירת העומר"],0),new s(new c(17,v,e),a(o(3)),0),new s(new c(18,v,e),a(o(4)),0),new s(new c(19,v,e),a(o(5)),0),new s(new c(20,v,e),a(o(6)),S),new s(new c(21,v,e),o(7),I|M),new s(new c(21,v,e),o(7),T|N),new s(new c(22,v,e),o(8),T|M),new s(new c(14,m.IYYAR,e),["Pesach Sheni",0,"פסח שני"],0),new s(new c(18,m.IYYAR,e),["Lag B'Omer",0,'ל"ג בעומר'],0),new s(new c(5,m.SIVAN,e),["Erev Shavuot","Erev Shavuos","ערב שבועות"],S),new s(new c(6,m.SIVAN,e),["Shavuot 1","Shavuos 1","שבועות א'"],I|M),new s(new c(6,m.SIVAN,e),["Shavuot","Shavuos","שבועות"],T|N),new s(new c(7,m.SIVAN,e),["Shavuot 2","Shavuos 2","שבועות ב'"],T|M),new s(new c(y(p,new c(1,w,e+1)[A]()-4)),["Leil Selichot","Leil Selichos","ליל סליחות"],0),new s(new c(29,m.ELUL,e),["Erev Rosh Hashana",0,"ערב ראש השנה"],S)]),n=new c(10,m.TEVET,e),n[b]()==p&&(n=n.next()),t(new s(n,["Asara B'Tevet",0,"עשרה בטבת"],0)),h.LEAP(e)&&(t(new s(new c(14,m.ADAR_I,e),["Purim Katan",0,"פורים קטן"],0)),t(new s(new c(15,m.ADAR_I,e),["Shushan Purim Katan",0,"שושן פורים קטן"],0))),e>=5711&&(n=new c(27,v,e),n[b]()==d.FRI?n=n.prev():n[b]()==d.SUN&&(n=n.next()),t(new s(n,["Yom HaShoah",0,"יום השואה"],0))),t(u(e)),e>=5727&&t(new s(new c(29,m.IYYAR,e),["Yom Yerushalayim",0,"יום ירושלים"],0)),n=new c(17,m.TAMUZ,e),n[b]()==p&&(n=n.next()),t(new s(n,["Shiva-Asar B'Tamuz",0,"צום יז' בתמוז"],0)),n=new c(9,m.AV,e),n[b]()==p&&(n=n.next()),t(new s(new c(y(p,n[A]())),[L+" Chazon",E+" Chazon","שבת חזון"],0)),t(new s(n.prev(),["Erev Tish'a B'Av",0,"ערב תשעה באב"],0)),t(new s(n,["Tish'a B'Av",0,"תשעה באב"],0)),t(new s(new c(y(p,n[A]()+7)),[L+" Nachamu",E+" Nachamu","שבת נחמו"],0));for(var D=6;D0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!a(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,i,s;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,r=-1,n===t||a(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=i;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){r=s;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],a(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?a(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(a(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],10:[function(e,t,n){!function(){function e(e,t){if("number"!=typeof e&&"string"!=typeof e)throw new TypeError("non-number or string given to gematriya()");var n="string"==typeof e;return n&&(e=e.replace(/('|")/g,"")),e=e.toString().split("").reverse(),!n&&t&&(e=e.slice(0,t)),e=e.map(function i(o,s){return n?t&&a[o]1e3?i(o,s-3):r[parseInt(o,10)*Math.pow(10,s)]}),n?e.reduce(function(e,t){return e+t},0):(e=e.reverse().join("").replace(/יה/g,"טו").replace(/יו/g,"טז").split(""),1===e.length?e.push("'"):e.length>1&&e.splice(-1,0,'"'),e.join(""))}var n,r={},a={"":0,"א":1,"ב":2,"ג":3,"ד":4,"ה":5,"ו":6,"ז":7,"ח":8,"ט":9,"י":10,"כ":20,"ל":30,"מ":40,"נ":50,"ס":60,"ע":70,"פ":80,"צ":90,"ק":100,"ר":200,"ש":300,"ת":400,"תק":500,"תר":600,"תש":700,"תת":800,"תתק":900,"תתר":1e3};for(n in a)r[a[n]]=n;"undefined"!=typeof t?t.exports=e:window.gematriya=e}()},{}],11:[function(e,t,n){!function(){"use strict";function e(e){return e.valueOf()/I-.5+H}function r(e){return new Date((e+.5-H)*I)}function a(t){return e(t)-D}function i(e,t){return T(L(e)*E(C)-_(t)*L(C),E(e))}function o(e,t){return S(L(t)*E(C)+E(t)*L(C)*L(e))}function s(e,t,n){return T(L(e),E(e)*L(t)-_(n)*E(t))}function u(e,t,n){return S(L(t)*L(n)+E(t)*E(n)*E(e))}function h(e,t){return N*(280.16+360.9856235*e)-t}function c(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function f(e){return N*(357.5291+.98560028*e)}function l(e){var t=N*(1.9148*L(e)+.02*L(2*e)+3e-4*L(3*e)),n=102.9372*N;return e+t+n+A}function y(e){var t=f(e),n=l(t);return{dec:o(n,0),ra:i(n,0)}}function m(e,t){return Math.round(e-k-t/(2*A))}function d(e,t,n){return k+(e+t)/(2*A)+n}function w(e,t,n){return D+e+.0053*L(t)-.0069*L(2*n)}function g(e,t,n){return M((L(e)-L(t)*L(n))/(E(t)*E(n)))}function v(e,t,n,r,a,i,o){var s=g(e,n,r),u=d(s,t,a);return w(u,i,o)}function p(e){var t=N*(218.316+13.176396*e),n=N*(134.963+13.064993*e),r=N*(93.272+13.22935*e),a=t+6.289*N*L(n),s=5.128*N*L(r),u=385001-20905*E(n);return{ra:i(a,s),dec:o(a,s),dist:u}}function b(e,t){return new Date(e.valueOf()+t*I/24)}var A=Math.PI,L=Math.sin,E=Math.cos,_=Math.tan,S=Math.asin,T=Math.atan2,M=Math.acos,N=A/180,I=864e5,H=2440588,D=2451545,C=23.4397*N,O={};O.getPosition=function(e,t,n){var r=N*-n,i=N*t,o=a(e),c=y(o),f=h(o,r)-c.ra;return{azimuth:s(f,i,c.dec),altitude:u(f,i,c.dec)}};var Y=O.times=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];O.addTime=function(e,t,n){Y.push([e,t,n])};var k=9e-4;O.getTimes=function(e,t,n){var i,s,u,h,c,y=N*-n,g=N*t,p=a(e),b=m(p,y),A=d(0,y,b),L=f(A),E=l(L),_=o(E,0),S=w(A,L,E),T={solarNoon:r(S),nadir:r(S-.5)};for(i=0,s=Y.length;i=0&&(g=Math.sqrt(y)/(2*Math.abs(h)),d=f-g,w=f+g,Math.abs(d)<=1&&m++,Math.abs(w)<=1&&m++,d<-1&&(d=w)),1===m?p<0?s=A+d:u=A+d:2===m&&(s=A+(l<0?w:d),u=A+(l<0?d:w)),!s||!u);A+=2)p=o;var L={};return s&&(L.rise=b(a,s)),u&&(L.set=b(a,u)),s||u||(L[l>0?"alwaysUp":"alwaysDown"]=!0),L},"object"==typeof n&&"undefined"!=typeof t?t.exports=O:"function"==typeof define&&define.amd?define(O):window.SunCalc=O}()},{}],12:[function(e,t,n){function r(e,t){t=!!t;var n,r=o.lngChesh(e),a=o.shrtKis(e);this.year=e,n=r&&!a?l:!r&&a?c:f;var i=new s(1,o.months.TISHREI,e).abs(),u=i%7+1;this.first_saturday=o.dayOnOrBefore(6,i+6);var h=+o.LEAP(e);this.type=n,this.rosh_hashana_day=u,this.leap=h,this.il=t;var y=""+h+u+n;if(_[y]?this.theSedraArray=_[y]:this.theSedraArray=_[y+ +t],!this.theSedraArray)throw console.log(this),new TypeError("improper sedra year type calculated.")}function a(e){return-e}function i(e,t){t=o.dayOnOrBefore(6,t+6);var n=(t-e.first_saturday)/7,s=e.theSedraArray[n];return void 0===s?i(new r(e.year+1,e.il),t):"object"==typeof s?[s]:s>=0?[y[s]]:(s=a(s),[y[s],y[s+1]])}var o=e("./common"),s=e("./hdate"),u="concat",h=o.range,c=0,f=1,l=2,y=r.parshiot=[["Bereshit","Bereshis","בראשית"],["Noach",0,"נח"],["Lech-Lecha",0,"לך-לך"],["Vayera",0,"וירא"],["Chayei Sara",0,"חי שרה"],["Toldot","Toldos","תולדות"],["Vayetzei",0,"ויצא"],["Vayishlach",0,"וישלח"],["Vayeshev",0,"וישב"],["Miketz",0,"מקץ"],["Vayigash",0,"ויגש"],["Vayechi",0,"ויחי"],["Shemot","Shemos","שמות"],["Vaera",0,"וארא"],["Bo",0,"בא"],["Beshalach",0,"בשלח"],["Yitro","Yisro","יתרו"],["Mishpatim",0,"משפטים"],["Terumah",0,"תרומה"],["Tetzaveh",0,"תצוה"],["Ki Tisa","Ki Sisa","כי תשא"],["Vayakhel",0,"ויקהל"],["Pekudei",0,"פקודי"],["Vayikra",0,"ויקרא"],["Tzav",0,"צו"],["Shmini",0,"שמיני"],["Tazria",0,"תזריע"],["Metzora",0,"מצרע"],["Achrei Mot","Achrei Mos","אחרי מות"],["Kedoshim",0,"קדשים"],["Emor",0,"אמור"],["Behar",0,"בהר"],["Bechukotai","Bechukosai","בחקתי"],["Bamidbar",0,"במדבר"],["Nasso",0,"נשא"],["Beha'alotcha","Beha'aloscha","בהעלתך"],["Sh'lach",0,"שלח לך"],["Korach",0,"קורח"],["Chukat","Chukas","חקת"],["Balak",0,"בלק"],["Pinchas",0,"פינחס"],["Matot","Matos","מטות"],["Masei",0,"מסעי"],["Devarim",0,"דברים"],["Vaetchanan","V'eschanan","ואתחנן"],["Eikev",0,"עקב"],["Re'eh",0,"ראה"],["Shoftim",0,"שופטים"],["Ki Teitzei","Ki Seitzei","כי תצא"],["Ki Tavo","Ki Savo","כי תבוא"],["Nitzavim",0,"נצבים"],["Vayeilech",0,"וילך"],["Ha'Azinu",0,"האזינו"]],m=[["Rosh Hashana",0,"ראש השנה"]],d=[["Yom Kippur",0,"יום כיפור"]],w=[["Sukkot","Succos","סוכות"]],g=[["Chol hamoed Sukkot","Chol hamoed Succos","חול המועד סוכות"]],v=[["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"]],p=[["End-of-Year: Simchat-Torah, Sukkot","End-of-Year: Simchas-Torah, Succos","סופשנה: סוכות וסמחת תורה"]],b=[["Pesach",0,"פסח"]],A=[["Chol hamoed Pesach",0,"חול המועד פסח"]],L=[["Second days of Pesach",0,"שביעי של פסח"]],E=[["Shavuot","Shavuos","שבועות"]],_={"020":[51,52][u](p,h(0,20),a(21),23,24,b,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),"0220":[51,52][u](p,h(0,20),a(21),23,24,b,25,a(26),a(28),30,a(31),33,E,h(34,37),a(38),40,a(41),h(43,49),a(50)),"0510":[52][u](d,p,h(0,20),a(21),23,24,b,b,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"0511":[52][u](d,p,h(0,20),a(21),23,24,b,25,a(26),a(28),h(30,40),a(41),h(43,50)),"052":[52][u](d,g,h(0,24),L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"070":[][u](m,52,w,v,h(0,20),a(21),23,24,L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"072":[][u](m,52,w,v,h(0,20),a(21),23,24,A,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),1200:[51,52][u](g,h(0,27),A,h(28,33),E,h(34,37),a(38),40,a(41),h(43,49),a(50)),1201:[51,52][u](g,h(0,27),A,h(28,40),a(41),h(43,49),a(50)),1220:[51,52][u](g,h(0,27),b,b,h(28,40),a(41),h(43,50)),1221:[51,52][u](g,h(0,27),b,h(28,50)),150:[52][u](d,g,h(0,28),L,h(29,50)),152:[52][u](d,g,h(0,28),A,h(29,49),a(50)),170:[][u](m,52,w,v,h(0,27),A,h(28,40),a(41),h(43,49),a(50)),1720:[][u](m,52,w,v,h(0,27),A,h(28,33),E,h(34,37),a(38),40,a(41),h(43,49),a(50))};_["0221"]=_["020"],_["0310"]=_["0220"],_["0311"]=_["020"],_[1310]=_[1220],_[1311]=_[1221],_[1721]=_[170],r.prototype.get=function(e){return i(this,e.abs())},t.exports=r},{"./common":3,"./hdate":6}]},{},[2]);
+!function e(t,n,r){function a(o,s){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(i)return i(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var c=n[o]={exports:{}};t[o][0].call(c.exports,function(e){var n=t[o][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=19440||2==o%7&&i>=9924&&!r(e)||1==o%7&&i>=16789&&r(e-1));return s+(s%7===0||s%7==3||s%7==5)}function i(e){return a(e+1)-a(e)}function o(e){return i(e)%10==5}function s(e){return i(e)%10==3}function u(e){switch(e.toLowerCase()[0]){case"n":case"נ":return"o"==e.toLowerCase()[1]?0:l.NISAN;case"i":return l.IYYAR;case"e":return l.ELUL;case"c":case"ח":return l.CHESHVAN;case"k":case"כ":return l.KISLEV;case"s":switch(e.toLowerCase()[1]){case"i":return l.SIVAN;case"h":return l.SHVAT;default:return 0}case"t":switch(e.toLowerCase()[1]){case"a":return l.TAMUZ;case"i":return l.TISHREI;case"e":return l.TEVET}break;case"a":switch(e.toLowerCase()[1]){case"v":return l.AV;case"d":return/(1|[^i]i|a|א)$/i.test(e)?l.ADAR_I:l.ADAR_II}break;case"ס":return l.SIVAN;case"ש":return l.SHVAT;case"א":switch(e.toLowerCase()[1]){case"ב":return l.AV;case"ד":return/(2|ii|b|ב)$/i.test(e)?l.ADAR_I:l.ADAR_II;case"י":return l.IYYAR;case"ל":return l.ELUL}break;case"ת":switch(e.toLowerCase()[1]){case"מ":return l.TAMUZ;case"ש":return l.TISHREI}}return 0}function h(e,t,n){if(null===e)throw new TypeError("self is null");switch(typeof t){case"function":break;case"string":case"number":return e[t];case"boolean":t=t?function(e){return e}:function(e){return!e};break;case"object":var r=t;if(t instanceof RegExp){t=function(e){return r.test(e)};break}if(Array.isArray(t)){t=function(e,t){return r.indexOf(t)>-1};break}default:throw new TypeError("fun is not a supported type")}var a={},i=Object(e);for(var o in i)if(i.hasOwnProperty(o)){var s=i[o];if(t.call(n,s,o,i)){var u=Object.getOwnPropertyDescriptor(i,o);u.value=s,Object.defineProperty(a,o,u)}}if(Array.isArray(e)||"string"==typeof e){var h=[];for(o in a)h[Number(o)]=a[o];a=h.filter(function(e){return e}),"string"==typeof e&&(a=a.join(""))}return a}var c=e("gematriya"),f="charCodeAt",l=n.months={NISAN:1,IYYAR:2,SIVAN:3,TAMUZ:4,AV:5,ELUL:6,TISHREI:7,CHESHVAN:8,KISLEV:9,TEVET:10,SHVAT:11,ADAR_I:12,ADAR_II:13},y=[["",0,""],["Nisan",0,"ניסן"],["Iyyar",0,"אייר"],["Sivan",0,"סיון"],["Tamuz",0,"תמוז"],["Av",0,"אב"],["Elul",0,"אלול"],["Tishrei",0,"תשרי"],["Cheshvan",0,"חשון"],["Kislev",0,"כסלו"],["Tevet",0,"טבת"],["Sh'vat",0,"שבט"]];n.monthNames=[y.concat([["Adar",0,"אדר"],["Nisan",0,"ניסן"]]),y.concat([["Adar 1",0,"אדר א'"],["Adar 2",0,"אדר ב'"],["Nisan",0,"ניסן"]])],n.days={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6},n.LANG=function(e,t){return"h"==t&&e[2]||"a"==t&&e[1]||e[0]},n.LEAP=r,n.MONTH_CNT=function(e){return 12+r(e)},n.daysInMonth=function(e,t){return 30-(e==l.IYYAR||e==l.TAMUZ||e==l.ELUL||e==l.TEVET||e==l.ADAR_II||e==l.ADAR_I&&!r(t)||e==l.CHESHVAN&&!o(t)||e==l.KISLEV&&s(t))},n.monthNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514&&/('|")/.test(e)?c(e):e[f](0)>=48&&e[f](0)<=57?parseInt(e,10):u(e)},n.dayYearNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514?c(e,!0):parseInt(e,10)},n.hebElapsedDays=a,n.daysInYear=i,n.lngChesh=o,n.shrtKis=s,n.monthFromName=u,n.dayOnOrBefore=function(e,t){return t-(t-e)%7},n.map=function(e,t,n){if(null===e||"function"!=typeof t)throw new TypeError;var r=Object(e),a={};for(var i in r)r.hasOwnProperty(i)&&(a[i]=t.call(n,r[i],i,r));if(Array.isArray(e)||"string"==typeof e){var o=[];for(i in a)o[Number(i)]=a[i];a=h(o,!0),"string"==typeof e&&(a=a.join(""))}return a},n.filter=h,n.range=function(e,t,n){n=n||1,n<0&&(n=0-n);var r=[],a=e;if(e=t;a-=n)r.push(a);return r}},{gematriya:10}],4:[function(e,t,n){var r=e("./common"),a=e("./greg"),i=e("gematriya"),o=[["Berachot","Berachos","ברכות",64],["Shabbat","Shabbos","שבת",157],["Eruvin","Eruvin","עירובין",105],["Pesachim",0,"פסחים",121],["Shekalim",0,"שקלים",22],["Yoma",0,"יומא",88],["Sukkah",0,"סוכה",56],["Beitzah",0,"ביצה",40],["Rosh Hashana",0,"ראש השנה",35],["Taanit","Taanis","תענית",31],["Megillah",0,"מגילה",32],["Moed Katan",0,"מועד קטן",29],["Chagigah",0,"חגיגה",27],["Yevamot","Yevamos","יבמות",122],["Ketubot","Kesubos","כתובות",112],["Nedarim",0,"נדרים",91],["Nazir",0,"נזיר",66],["Sotah",0,"סוטה",49],["Gitin",0,"גיטין",90],["Kiddushin",0,"קידושין",82],["Baba Kamma",0,"בבא קמא",119],["Baba Metzia",0,"בבא מציעא",119],["Baba Batra","Baba Basra","בבא בתרא",176],["Sanhedrin",0,"סנהדרין",113],["Makkot","Makkos","מכות",24],["Shevuot","Shevuos","שבועות",49],["Avodah Zarah",0,"עבודה זרה",76],["Horayot","Horayos","הוריות",14],["Zevachim",0,"זבחים",120],["Menachot","Menachos","מנחות",110],["Chullin",0,"חולין",142],["Bechorot","Bechoros","בכורות",61],["Arachin",0,"ערכין",34],["Temurah",0,"תמורה",34],["Keritot","Kerisos","כריתות",28],["Meilah",0,"מעילה",22],["Kinnim",0,"קנים",4],["Tamid",0,"תמיד",10],["Midot","Midos","מדות",4],["Niddah",0,"נדה",73]].map(function(e){return{name:e.slice(0,3),blatt:e[3]}});n.dafyomi=function(e){var t,n,r,i,s,u,h,c,f,l=40;if(!(e instanceof Date))throw new TypeError("non-date given to dafyomi");if(r=a.greg2abs(new Date(1923,8,11)),i=a.greg2abs(new Date(1975,5,24)),c=a.greg2abs(e),c=i?(t=8+(c-i)/2711,n=(c-i)%2711):(t=1+(c-r)/2702,n=(c-r)%2702),s=f=0,u=-1,t<=7?o[4].blatt=13:o[4].blatt=22,h=0;h1&&(t-=i((4*(e.getMonth()+1)+23)/10),a(e.getFullYear())&&t++),t}function a(e){return!(e%4||!(e%100)&&e%400)}var i=Math.floor,o=[30,31],s=[0,31,28,31].concat(o,o,31,o,o),u=[s.slice()];s[2]++,u.push(s),n.daysInMonth=function(e,t){return u[+a(t)][e]},n.monthNames=["","January","February","March","April","May","June","July","August","September","October","November","December"],n.lookupMonthNum=function(e){return new Date(e+" 1").getMonth()+1},n.dayOfYear=r,n.LEAP=a,n.greg2abs=function(e){var t=e.getFullYear()-1;return r(e)+365*t+(i(t/4)-i(t/100)+i(t/400))},n.abs2greg=function(e){var t=e-1,n=i(t/146097),r=i(t%146097),a=i(r/36524),o=r%36524,s=i(o/1461),u=o%1461,h=i(u/365),c=u%365+1,f=400*n+100*a+4*s+h;return 4==a||4==h?new Date(f,11,31):new Date(new Date(++f,0,c).setFullYear(f))}},{}],6:[function(e,t,n){function r(e,t,n){var a=this;switch(arguments.length){case 0:return new r(new Date);case 1:if("undefined"==typeof e)return new r;if(e instanceof Date){var i=u(y.greg2abs(e));return i}if(e instanceof r){var i=new r(e[p](),e[v](),e[g]());return i.il=e.il,i.setLocation(i.lat,i.long),i}if("string"==typeof e){switch(e.toLowerCase().trim()){case"today":return new r;case"yesterday":return(new r).prev();case"tomorrow":return(new r).next()}if(/\s/.test(e)){var o=e.split(/\s+/);if(2==o.length)return new r(o[0],o[1]);if(3==o.length)return new r(o[0],o[1],o[2]);if(4==o.length)return/i/i.test(o[2])&&(o[2]=o[2].length),new r(o[0],o[1]+o[2],o[3])}}else if("number"==typeof e)return u(e);throw new TypeError("HDate called with bad argument");case 2:return new r(e,t,(new r)[g]());case 3:a.day=a.month=1,a.year=l.dayYearNum(n),a.setMonth(l.monthNum(t)),a.setDate(l.dayYearNum(e));break;default:throw new TypeError("HDate called with bad arguments")}return a.setLocation.apply(a,r.defaultLocation)}function a(e){o(e),i(e)}function i(e){e.day<1&&(e.month==E&&(e.year-=1),e.day+=T(e.month,e.year),e.month-=1,a(e)),e.day>T(e.month,e.year)&&(e.month==_.ELUL&&(e.year+=1),e.day-=T(e.month,e.year),e.month+=1,a(e)),o(e)}function o(e){e.month!=_.ADAR_II||e.isLeapYear()||(e.month-=1,a(e)),e.month<1&&(e.month+=S(e.year),e.year-=1,a(e)),e.month>S(e.year)&&(e.month-=S(e.year),e.year+=1,a(e))}function s(e){var t,n=e[p](),r=e[g]();if(e[v]()=10555144)throw new RangeError("parameter to abs2hebrew "+e+" out of range");for(n=y.abs2greg(e),t=new r(1,E,i=3760+n[g]());e>=s(t.setFullYear(i+1));)i++;for(a=i>4634&&i<10666?o[n[v]()]:E;e>s(t=new r(T(a,i),a,i));)a=a%S(i)+1;return t.setLocation.apply(t.setDate(e-s(t.setDate(1))+1),r.defaultLocation)}function h(e){var t=e.greg();return m.getTimes(new Date(t.getFullYear(),t.getMonth(),t.getDate(),12,0,0,0,0),e.lat,e.long)}function c(e,t){return new Date(e.sunrise()[A]()+e[L]()*t)}function f(e,t,n){return new r(N(e,t[b]()+n))}var l=e("./common"),y=e("./greg"),m=e("suncalc"),d=e("./cities"),w=e("gematriya");m.addTime(-16.1,"alot_hashachar",0),m.addTime(-11.5,"misheyakir",0),m.addTime(-10.2,"misheyakir_machmir",0),m.addTime(-8.5,0,"tzeit");var g="getFullYear",v="getMonth",p="getDate",A="getTime",b="abs",L="hour",_=l.months,E=_.TISHREI,S=l.MONTH_CNT,T=l.daysInMonth,N=l.dayOnOrBefore,I=r.prototype;r.defaultLocation=[0,0],Object.defineProperty(r,"defaultCity",{enumerable:!0,configurable:!0,get:function(){return d.nearest(r.defaultLocation[0],r.defaultLocation[1])},set:function(e){r.defaultLocation=d.getCity(e).slice(0,2)}}),I[g]=function(){return this.year},I.isLeapYear=function(){return l.LEAP(this.year)},I[v]=function(){return this.month},I.getTishreiMonth=function(){var e=S(this[g]());return(this[v]()+e-6)%e||e},I.daysInMonth=function(){return T(this[v](),this[g]())},I[p]=function(){return this.day},I.getDay=function(){return this.greg().getDay()},I.setFullYear=function(e){return this.year=e,a(this),this},I.setMonth=function(e){return this.month=l.monthNum(e),a(this),this},I.setTishreiMonth=function(e){return this.setMonth((e+6)%S(this[g]())||13)},I.setDate=function(e){return this.day=e,a(this),this},I.greg=function(){return y.abs2greg(s(this))},I.gregEve=function(){return this.prev().sunset()},I[b]=function(){return s(this)},I.toString=function(e){return l.LANG([this[p](),null,w(this[p]())],e)+" "+this.getMonthName(e)+" "+l.LANG([this[g](),null,w(this[g]())],e)},I.getMonthName=function(e){return l.LANG(l.monthNames[+this.isLeapYear()][this[v]()],e)},I.setCity=function(e){return this.setLocation(d.getCity(e))},I.setLocation=function(e,t){if("object"!=typeof e||Array.isArray(e)||(t=e.long,e=e.lat),Array.isArray(e)&&"undefined"==typeof t&&(t=e[0],e=e[1]),Array.isArray(e)&&(e=(60*e[0]+e[1])/60),Array.isArray(t)&&(t=(60*t[0]+t[1])/60),"number"!=typeof e)throw new TypeError("incorrect lat type passed to HDate.setLocation()");if("number"!=typeof t)throw new TypeError("incorrect long type passed to HDate.setLocation()");return this.lat=e,this.long=t,this.il=d.getCity(d.nearest(e,t))[2],this},I.sunrise=function(){return h(this).sunrise},I.sunset=function(){return h(this).sunset},I[L]=function(){return(this.sunset()-this.sunrise())/12},I.hourMins=function(){return this[L]()/6e4},I.nightHour=function(){return(this.sunrise()-this.gregEve())/12},I.nightHourMins=function(){return this.nightHour()/6e4};var M={chatzot:function(e){return c(e,6)},chatzot_night:function(e){return new Date(e.sunrise()[A]()-6*e.nightHour())},alot_hashachar:function(e){return h(e).alot_hashachar},alot_hashacher:function(e){return h(e).alot_hashachar},misheyakir:function(e){return h(e).misheyakir},misheyakir_machmir:function(e){return h(e).misheyakir_machmir},sof_zman_shma:function(e){return c(e,3)},sof_zman_tfilla:function(e){return c(e,4)},mincha_gedola:function(e){return c(e,6.5)},mincha_ketana:function(e){return c(e,9.5)},plag_hamincha:function(e){return c(e,10.75)},tzeit:function(e){return h(e).tzeit},neitz_hachama:function(e){return e.sunrise()},shkiah:function(e){return e.sunset()}};I.getZemanim=function(){return l.map(M,function(e){return e(this)},this)},r.addZeman=function(e,t){M[e]=t},I.next=function(){return u(this.abs()+1).setLocation(this.lat,this.long)},I.prev=function(){return u(this.abs()-1).setLocation(this.lat,this.long)},I.isSameDate=function(e){return e instanceof r&&(e[g]()==-1&&(e=new r(e).setFullYear(this[g]())),this[b]()==e[b]())},I.before=function(e){return f(e,this,-1)},I.onOrBefore=function(e){return f(e,this,0)},I.nearest=function(e){return f(e,this,3)},I.onOrAfter=function(e){return f(e,this,6)},I.after=function(e){return f(e,this,7)},t.exports=r},{"./cities":1,"./common":3,"./greg":5,gematriya:10,suncalc:11}],7:[function(e,t,n){function r(e,t){return{enumerable:!0,configurable:!0,get:e,set:t}}function a(e,t){for(var n in t)e[n]=t[n];return e}function i(e,t){var n=this;if(e||(e=(new c)[T]()),"number"!=typeof e)throw new p("year to Hebcal() is not a number");if(n.year=e,!t)return new i(e,h.range(1,h.MONTH_CNT(e)));if("string"==typeof t&&(t=h.monthFromName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal is not a valid type");n.months=t[_](function(t){var r=new o(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.holidays=f.year(e),n[I]=h.daysInYear(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})}))}function o(e,t){var n=this;if(e=h.monthNum(e),"number"!=typeof e)throw new p("month to Hebcal.Month is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.Month is not a number");return n.month=e,n.year=t,n.days=h.range(1,h.daysInMonth(e,t))[_](function(r){var a=new c(r,e,t);return v(a,"__month",{configurable:!0,writable:!0,value:n}),a}),n[I]=n.days[I],n.holidays=h.filter(f.year(t),function(t){return t[0].date[S]()==e}),v(n,"il",r(function(){return n[E](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[E](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[E](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}function s(e,t){var n=this;if(e||(e=(new Date)[T]()),"string"==typeof e){var i=new Date(e);return t=e.indexOf(" ")+1||e.indexOf("-")+1||e.indexOf("/")+1?i[S]()+1:h.range(1,12),new s(i[T](),t)}if("number"!=typeof e)throw new p("year to Hebcal.GregYear() is not a number");if(n.year=e,!t)return new s(e,h.range(1,12));if("string"==typeof t&&(t=d.lookupMonthName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal.GregYear() is not a valid type");return n.months=t[_](function(t){var r=new u(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.hebyears=[].concat.apply([],n.months[_](function(e){return e.hebmonths[_](function(e){return e.year})})).filter(function(e,t,n){return n.indexOf(e)===t}),n.holidays=h.filter(f.year(n.hebyears[0]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[I]}),n.hebyears[1]&&a(n.holidays,h.filter(f.year(n.hebyears[1]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[I]})),n[I]=365+d.LEAP(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})})),n}function u(e,t){var n=this;if("string"==typeof e&&(e=d.lookupMonthNum(e)),"number"!=typeof e)throw new p("month to Hebcal.GregMonth is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.GregMonth is not a number");return n.year=t,n.month=e,n.days=h.range(1,d.daysInMonth(e,t))[_](function(r){var a=new c(new Date(t,e-1,r));return v(a,"__gregmonth",{configurable:!0,writable:!0,value:n}),a}),n[I]=n.days[I],n.hebmonths=[{month:n[E](1)[S](),year:n[E](1)[T]()},{month:n[E](-1)[S](),year:n[E](-1)[T]()}].filter(function(e,t,n){return 0===t||e.month!=n[0].month}),v(n,"il",r(function(){return n[E](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[E](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[E](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}var h=e("./common"),c=e("./hdate"),f=e("./holidays"),l=e("./sedra"),y=e("./dafyomi"),m=e("./cities"),d=e("./greg"),w=e("events").EventEmitter,g=e("gematriya"),v=Object.defineProperty,p=TypeError,A="find",b="strings",L="getYearObject",_="map",E="getDay",S="getMonth",T="getFullYear",N="isLeapYear",I="length",M="next",H="prev",D=h.months,C=D.TISHREI,O=D.NISAN,Y=i.prototype,k=o.prototype,R=s.prototype,V=u.prototype,P=c.prototype;Y[N]=P[N],Y.setCity=function(e){return this.months.forEach(function(t){t.setCity(e)}),this},Y.setLocation=function(e,t){return this.months.forEach(function(n){n.setLocation(e,t)}),this},Y[M]=function(){return new i(this.year+1)},Y[H]=function(){return new i(this.year-1)},Y[S]=function(e){var t=this.months;return e=h.monthNum(e),e>this.months[I]?this[M]()[S](e-t[I]):t[e>0?e-1:t[I]+e]},Y[E]=function(e){var t=this;if(e>t[I])return null;if(e<0)return t[E](t[I]-e);var n=t[A](29,D.ELUL)[0].abs()+1-t[A](1,O)[0].abs();return e<=n?t[S](O)[E](e):t[S](C)[E](e-n)},Y.days=function(){return[].concat.apply([],this.months[_](function(e){return e.days}))},Y[_]=function(){return[][_].apply(this.days(),arguments)},Y.filter=function(){return[].filter.apply(this.days(),arguments)},Y.addHoliday=function(e){if(!(e instanceof f.Event))throw new p("non-Event passed to addHoliday()");return this.holidays.add(e),this},Y.findParsha=function(e,t){var n=t?[t]:["s","a","h"],r=this.filter(function(t){return Math.max.apply(null,n.map(function(n){return t.getSedra(n).indexOf(e)+1}))});return r[r[I]-1]},Y.findSedra=Y.findParsha,Y[A]=function e(t,n){var r=this;if(1===arguments[I]){if("string"==typeof t)return e[b].call(r,t);if(Array.isArray(t))return[].concat.apply([],t[_](function(e){return r[A][Array.isArray(e)?"apply":"call"](r,e)}));if(t instanceof c)return r[A](t.getDate(),t[S]());if(t instanceof Date)return r[A](new c(t))}else if(2==arguments[I]){if(n instanceof o)return n[A](t);if(Array.isArray(n))return[].concat.apply([],n[_](function(e){return r[A](t,e)}));if("string"==typeof n)return r[A](t,h.monthNum(n));if("number"==typeof n)return r[A](t,r[S](n))}return[]},Y[A][b]=function e(t){var n=t.split(/\s+/),r=e[t.replace(/\s/g,"_").toLowerCase()];if(!n[I])return[];if(r)return r.call(this);try{return this[A](new c(t))}catch(e){return n[I]-1?this[A].apply(this,n):[]}},Y[A][b].rosh_chodesh=function(){return this[A]("Rosh Chodesh",h.range(1,this.months[I]))},Y[A][b].holidays=function(){return[].concat.apply([],this.holidays[_](function(e){return this[A](e.date)},this))},Y[A][b].omer=function(){return this[A](h.range(16,64),O)},Y[A][b].today=function(){return this[A](new c)},Y[A][b].yesterday=function(){return[this[A]("today")[0][H]()]},Y[A][b].tomorrow=function(){return[this[A]("today")[0][M]()]},Y[A][b].pesach=function(){return this[A](h.range(15,23-this.il),O)},Y[A][b].sukkot=function(){return this[A](h.range(15,24-this.il),C)},Y[A][b].succot=Y[A][b].succos=Y[A][b].sukkos=Y[A][b].sukkot,Y[A][b].shavuot=function(){return this[A](h.range(6,7-this.il),D.SIVAN)},Y[A][b].shavuos=Y[A][b].shavuot,Y[A][b].rosh_hashana=function(){return this[A](h.range(1,2),C)},Y[A][b].rosh_hashanah=Y[A][b].rosh_hashana,i.addZeman=c.addZeman,i.cities=m,i.range=h.range,i.gematriya=g,i.holidays=h.filter(f,["masks","Event"]),i.parshiot=l.parshiot,i.LANGUAGE=h.LANG,i[_]=h[_],i.filter=h.filter,v(i,"defaultLocation",r(function(){return c.defaultLocation},function(e){i.events.emit("locationChange",c.defaultLocation),c.defaultLocation=e})),v(i,"defaultCity",r(function(){return c.defaultCity},function(e){i.defaultLocation=m.getCity(e).slice(0,2)})),v(i,"candleLighting",r(function(){return f.Event.candleLighting},function(e){f.Event.candleLighting=e})),v(i,"havdalah",r(function(){return f.Event.havdalah},function(e){f.Event.havdalah=e})),i.Month=o,k[N]=P[N],k[H]=function(){var e=this,t=e[L]();return 1===e.month?t[S](-1):e.month===C?t[H]()[S](D.ELUL):t[S](e.month-1)},k[M]=function(){var e=this,t=e[L]();return e.month===h.MONTH_CNT(e.year)?t[S](1):e.month===D.ELUL?t[M]()[S](C):t[S](e.month+1)},k[E]=function(e){var t=this.days;return e=h.dayYearNum(e),e>t[I]?this[M]()[E](e-t[I]):t[e>0?e-1:t[I]+e]},k[L]=function(){return this.__year||new i(this.year)},k.getName=function(e){return h.LANG(h.monthNames[+this[N]()][this.month],e)},k.rosh_chodesh=function(){var e=this[H]();return 30==e[I]?[e[E](-1),this[E](1)]:[this[E](1)]},k.setCity=function(e){return this.days.forEach(function(t){t.setCity(e)}),this},k.setLocation=function(e,t){return this.days.forEach(function(n){n.setLocation(e,t)}),this},k[_]=function(){return[][_].apply(this.days,arguments)},k.molad=function(){var e,t,n,r,a,i,o={},s=parseInt;i=this.month-7,e=this.year-1,i<0&&(i+=h.MONTH_CNT(e+1)),t=s(i+235*(e/19)),n=s(204+793*(t%1080)),r=s(5+12*t+793*(t/1080)-6),a=s(n%1080+1080*(r%24)),o.doy=new c(s(1+29*t+r/24)).getDay(),o.hour=Math.round(r%24);var u=s(a%1080);o.minutes=s(u/18),o.chalakim=u%18;var f=this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(o.doy).greg();return f.setHours(o.hour),f.setMinutes(o.minutes),f.setSeconds(3.33*o.chalakim),o.day=f,o},k[A]=function e(t){var n=this;return"number"==typeof t?[n[E](t)]:"string"==typeof t?e[b].call(n,t):Array.isArray(t)?[].concat.apply([],t[_](function(e){return n[A](e)})):t instanceof c&&t[T]()==n.year&&t[S]()==n.month?n[A](t.getDate()):t instanceof Date?n[A](new c(t)):[]},k[A][b]=function e(t){var n=e[t.replace(/\s/g,"_").toLowerCase()];if(n)return n.call(this);try{return this[A](new c(t))}catch(e){var r=h.dayYearNum(t);return r?this[A](r):[]}},k[A][b].rosh_chodesh=function(){return this.rosh_chodesh()},k[A][b].shabbat_mevarchim=function e(){return this.month===D.ELUL?[]:e._calc.call(this)},k[A][b].shabbat_mevarchim._calc=function(){return this[A](this[E](29).onOrBefore(h.days.SAT))},k[A][b].shabbos_mevarchim=k[A][b].shabbos_mevorchim=k[A][b].shabbat_mevarchim,i.HDate=c,P.getMonthObject=function(){return this.__month||new o(this[S](),this[T]())},P[L]=function(){return this.getMonthObject()[L]()},function(){var e={};[H,M].forEach(function(t){e[t]=P[t],P[t]=function(){var n=e[t].call(this);return this.__month?this[L]()[A](n)[0]:n}})}(),P.getSedra=function(){var e={};return function(t){var n=e[this[T]()];return n&&n.il==this.il||(n=e[this[T]()]=new l(this[T](),this.il)),n.get(this)[_](function(e){return h.LANG(e,t)})}}(),P.getParsha=P.getSedra,P.holidays=function(e){var t=this,n=t[L]().holidays[t];return n?n.filter(function(n){return!!e||!n.routine()&&n.is(t)})[_](function(e){return e.date.setLocation(t),e}):[]},["candleLighting","havdalah"].forEach(function(e){P[e]=function(){var t=this,n=t.holidays(!0).filter(function(e){return e.is(t)});return n.length&&(n=h.filter(n.map(function(t){return t[e]()}),!0)),n.length?new Date(Math.max.apply(null,n)):null}}),P.omer=function(){var e=this,t=e.greg().getTime(),n=e[T]();return t>new c(15,O,n).greg().getTime()&&t=5727?y[A](29,D.IYYAR):[])),u=i.yes_prev[m]=e([].concat(y[A](-1,D.ELUL),y[A](9,D.TISHREI),y[A](14,D.IYYAR))),i.il[m]=l.il),o=o.indexOf(l.abs())>-1,s=s.indexOf(l.abs())>-1,u=u.indexOf(l.abs()+1)>-1,o)return t;var d=(!s&&a)|(6!=l[E]()&&r);return d|=c&&!u?l[M]().tachanun(!0)&r&&n:5!=l[E]()&&n,d==a?t:d}var t=e.NONE=0,n=e.MINCHA=1,r=e.SHACHARIT=2,a=e.ALL_CONGS=4,i={all:{},some:{},yes_prev:{},il:{}};return e}(),P.tachanun_uf=function(){var e=this.tachanun();return{shacharit:!!(e&this.tachanun.SHACHARIT),mincha:!!(e&this.tachanun.MINCHA),all_congs:!!(e&this.tachanun.ALL_CONGS)}},P.hallel=function(){function e(){var e=this,i=e[L](),o=i.year,s=a.il[o]==e.il&&a.whole[o]||(a.whole[o]=[].concat(i[A](h.range(25,33),D.KISLEV),i[A]([15,e.il?null:16],O),i[A]("Shavuot"),i[A]("Sukkot"),f.atzmaut(o)[1].date||[],o>=5727?i[A](29,D.IYYAR):[])[_](function(e){return e.abs()})),u=a.il[o]==e.il&&a.half[o]||(a.half[o]=[].concat(i[A]("Rosh Chodesh").filter(function(e){return e[S]()!=C}),i[A](h.range(17-e.il,23-e.il),O))[_](function(e){return e.abs()}));return a.il[o]=e.il,s.indexOf(e.abs())>-1&&r||u.indexOf(e.abs())>-1&&n||t}var t=e.NONE=0,n=e.HALF=1,r=e.WHOLE=2,a={whole:{},half:{},il:{}};return e}(),function(e){function t(){function t(e,t){return h.filter(h[_](e,function(e){return e-r}),function(e){return e>0&&e-t<0})}var n=new c;i.isSameDate(n)||(e.emit("dayChange"),i=n);var r=new Date,a=t(n.getZemanim(),e.beforeZeman),o=t(e.customs,e.refreshInterval);for(var s in a)e.emit("almostZeman",s,a[s]),a[s]t[I]?this[M]()[S](e-t[I]):t[e>0?e-1:t[I]+e]},a(R,{days:Y.days,map:Y[_],filter:Y.filter,addHoliday:Y.addHoliday}),i.GregMonth=u,V[N]=function(){return d.LEAP(this.year)},V[H]=function(){return 1===this.month?this[L]()[H]()[S](-1):this[L]()[S](this.month-1)},V[M]=function(){return this[L]()[S](this.month+1)},V[E]=function(e){return e>this.days[I]?this[M]()[E](e-this.days[I]):this.days[e>0?e-1:this.days[I]+e]},V[L]=function(){return this.__year||new s(this.year)},V.getName=function(){return d.monthNames[this.month]},V.setCity=k.setCity,V.setLocation=k.setLocation,V[_]=k[_],P.getGregMonthObject=function(){return this.__gregmonth||new u(this.greg()[S]()+1,this.greg()[T]())},P.getGregYearObject=function(){return this.getGregMonthObject()[L]()},t.exports=i},{"./cities":1,"./common":3,"./dafyomi":4,"./greg":5,"./hdate":6,"./holidays":8,"./sedra":12,events:9,gematriya:10}],8:[function(e,t,n){function r(e){return["Chanukah: Candle "+e,0,"חנוכה: נר "+f(e)]}function a(e){return[e[0]+' (CH"M)',e[1]?e[1]+' (CH"M)':e[1],e[2]?e[2]+' )חה"ם(':e[2]]}function i(e){return["Sukkot: "+e,"Succos: "+e,"סוכות יום "+f(e)]}function o(e){return["Pesach: "+e,0,"פסח יום "+f(e)]}function s(e,t,n){var r=this;r.date=new c(e),r.desc="object"!=typeof t?[t]:t,r.USER_EVENT=!!(n&E),r.LIGHT_CANDLES=!!(n&S),r.YOM_TOV_ENDS=!!(n&T),r.CHUL_ONLY=!!(n&N),r.IL_ONLY=!!(n&I),r.LIGHT_CANDLES_TZEIS=!!(n&M)}function u(e){if(e>=5708){var t=new c(1,m.IYYAR,e),n=new c(15,v,e);return n[A]()==d.SUN?t.setDate(2):n[A]()==p?t.setDate(3):e<5764?t.setDate(4):n[A]()==d.TUE?t.setDate(5):t.setDate(4),[new s(t,["Yom HaZikaron",0,"יום הזיכרון"],0),new s(t.next(),["Yom HaAtzma'ut",0,"יום העצמאות"],0)]}return[]}var h=e("./common"),c=e("./hdate"),f=e("gematriya"),l={},y=h.dayOnOrBefore,m=h.months,d=h.days,w=m.TISHREI,g=m.KISLEV,v=m.NISAN,p=d.SAT,A="getDay",b="abs",L="Shabbat",_="Shabbos",E=1,S=2,T=4,N=8,I=16,M=32;n.masks={USER_EVENT:E,LIGHT_CANDLES:S,YOM_TOV_ENDS:T,CHUL_ONLY:N,IL_ONLY:I,LIGHT_CANDLES_TZEIS:M},s.prototype.is=function(e,t){return e=new c(e),myDate=this.date,arguments.length<2&&(t=e.il),
+e.getDate()==myDate.getDate()&&e.getMonth()==myDate.getMonth()&&(e.getFullYear()==myDate.getFullYear()&&!(t&&this.CHUL_ONLY||!t&&this.IL_ONLY))},s.prototype.masks=function(){var e=this;return(e.USER_EVENT&&E)|(e.LIGHT_CANDLES&&S)|(e.YOM_TOV_ENDS&&T)|(e.CHUL_ONLY&&N)|(e.IL_ONLY&&I)|(e.LIGHT_CANDLES_TZEIS&&M)},s.prototype.getDesc=function(e){return h.LANG(this.desc,e)},s.prototype.candleLighting=function(){var e=this.date;return this.LIGHT_CANDLES?new Date(e.sunset()-60*s.candleLighting*1e3):this.LIGHT_CANDLES_TZEIS?e.getZemanim().tzeit:null},s.prototype.havdalah=function(){return this.YOM_TOV_ENDS?new Date(this.date.sunset().getTime()+60*s.havdalah*1e3):null},s.prototype.routine=function(){function e(){return!!~e.names.indexOf(this.getDesc("s"))}return e.names=[L,"Erev "+L],e}(),s.isIL=!1,s.candleLighting=18,s.havdalah=42,n.Event=s,n.year=function(e){function t(e){Array.isArray(e)?e.forEach(function(e){t(e)}):H[e.date]?H[e.date].push(e):H[e.date]=[e]}if(l[e])return l[e];var n,f=new c(1,w,e),E=new c(15,v,e),H={};Object.defineProperty(H,"add",{value:t}),t([new s(f,["Rosh Hashana 1",0,"ראש השנה א'"],M),new s(new c(2,w,e),["Rosh Hashana 2",0,"ראש השנה ב'"],T),new s(new c(3+(f[A]()==d.THU),w,e),["Tzom Gedaliah",0,"צום גדליה"],0),new s(new c(9,w,e),["Erev Yom Kippur",0,"ערב יום כיפור"],S),new s(new c(y(p,7+f[b]())),[L+" Shuva",_+" Shuvah","שבת שובה"],0),new s(new c(10,w,e),["Yom Kippur",0,"יום כיפור"],T),new s(new c(14,w,e),["Erev Sukkot","Erev Succos","ערב סוכות"],S),new s(new c(15,w,e),i(1),M|N),new s(new c(15,w,e),i(1),T|I),new s(new c(16,w,e),i(2),T|N),new s(new c(16,w,e),a(i(2)),I),new s(new c(17,w,e),a(i(3)),0),new s(new c(18,w,e),a(i(4)),0),new s(new c(19,w,e),a(i(5)),0),new s(new c(20,w,e),a(i(6)),0),new s(new c(21,w,e),["Sukkot: 7 (Hoshana Raba)","Succos: 7 (Hoshana Raba)","סוכות יום ז' )הושנע רבה("],S),new s(new c(22,w,e),["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"],M|N),new s(new c(22,w,e),["Shmini Atzeret / Simchat Torah","Shmini Atzeres / Simchas Torah","שמיני עצרת / שמחת תורה"],T|I),new s(new c(23,w,e),["Simchat Torah","Simchas Torah","שמחת תורה"],T|N),new s(new c(24,g,e),["Erev Chanukah",0,"ערב חנוכה"],0),new s(new c(25,g,e),r(1),0),new s(new c(26,g,e),r(2),0),new s(new c(27,g,e),r(3),0),new s(new c(28,g,e),r(4),0),new s(new c(29,g,e),r(5),0),new s(new c(30,g,e),r(6),0),new s(new c(31,g,e),r(7),0),new s(new c(32,g,e),r(8),0),new s(new c(15,m.SHVAT,e),["Tu B'Shvat",0,'ט"ו בשבט'],0),new s(new c(y(p,E[b]()-43)),[L+" Shekalim",_+" Shekalim","שבת שקלים"],0),new s(new c(y(p,E[b]()-30)),[L+" Zachor",_+" Zachor","שבת זכור"],0),new s(new c(E[b]()-(E[A]()==d.TUE?33:31)),["Ta'anit Esther","Ta'anis Esther","תענית אסתר"],0),new s(new c(13,m.ADAR_II,e),["Erev Purim",0,"ערב פורים"],0),new s(new c(14,m.ADAR_II,e),["Purim",0,"פורים"],0),new s(new c(15,m.ADAR_II,e),["Shushan Purim",0,"שושן פורים"],0),new s(new c(y(p,E[b]()-14)-7),[L+" Parah",_+" Parah","שבת פרה"],0),new s(new c(y(p,E[b]()-14)),[L+" Hachodesh",_+" Hachodesh","שבת החודש"],0),new s(new c(y(p,E[b]()-1)),[L+" HaGadol",_+" HaGadol","שבת הגדול"],0),new s(E.prev()[A]()==p?E.onOrBefore(d.THU):new c(14,v,e),["Ta'anit Bechorot","Ta'anis Bechoros","תענית בכורות"],0),new s(new c(14,v,e),["Erev Pesach",0,"ערב פסח"],S),new s(new c(15,v,e),o(1),M|N),new s(new c(15,v,e),o(1),T|I),new s(new c(16,v,e),o(2),T|N),new s(new c(16,v,e),a(o(2)),I),new s(new c(16,v,e),["Start counting Omer",0,"התחלת ספירת העומר"],0),new s(new c(17,v,e),a(o(3)),0),new s(new c(18,v,e),a(o(4)),0),new s(new c(19,v,e),a(o(5)),0),new s(new c(20,v,e),a(o(6)),S),new s(new c(21,v,e),o(7),M|N),new s(new c(21,v,e),o(7),T|I),new s(new c(22,v,e),o(8),T|N),new s(new c(14,m.IYYAR,e),["Pesach Sheni",0,"פסח שני"],0),new s(new c(18,m.IYYAR,e),["Lag B'Omer",0,'ל"ג בעומר'],0),new s(new c(5,m.SIVAN,e),["Erev Shavuot","Erev Shavuos","ערב שבועות"],S),new s(new c(6,m.SIVAN,e),["Shavuot 1","Shavuos 1","שבועות א'"],M|N),new s(new c(6,m.SIVAN,e),["Shavuot","Shavuos","שבועות"],T|I),new s(new c(7,m.SIVAN,e),["Shavuot 2","Shavuos 2","שבועות ב'"],T|N),new s(new c(y(p,new c(1,w,e+1)[b]()-4)),["Leil Selichot","Leil Selichos","ליל סליחות"],0),new s(new c(29,m.ELUL,e),["Erev Rosh Hashana",0,"ערב ראש השנה"],S)]),n=new c(10,m.TEVET,e),n[A]()==p&&(n=n.next()),t(new s(n,["Asara B'Tevet",0,"עשרה בטבת"],0)),h.LEAP(e)&&(t(new s(new c(14,m.ADAR_I,e),["Purim Katan",0,"פורים קטן"],0)),t(new s(new c(15,m.ADAR_I,e),["Shushan Purim Katan",0,"שושן פורים קטן"],0))),e>=5711&&(n=new c(27,v,e),n[A]()==d.FRI?n=n.prev():n[A]()==d.SUN&&(n=n.next()),t(new s(n,["Yom HaShoah",0,"יום השואה"],0))),t(u(e)),e>=5727&&t(new s(new c(29,m.IYYAR,e),["Yom Yerushalayim",0,"יום ירושלים"],0)),n=new c(17,m.TAMUZ,e),n[A]()==p&&(n=n.next()),t(new s(n,["Shiva-Asar B'Tamuz",0,"צום יז' בתמוז"],0)),n=new c(9,m.AV,e),n[A]()==p&&(n=n.next()),t(new s(new c(y(p,n[b]())),[L+" Chazon",_+" Chazon","שבת חזון"],0)),t(new s(n.prev(),["Erev Tish'a B'Av",0,"ערב תשעה באב"],0)),t(new s(n,["Tish'a B'Av",0,"תשעה באב"],0)),t(new s(new c(y(p,n[b]()+7)),[L+" Nachamu",_+" Nachamu","שבת נחמו"],0));for(var D=6;D0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!a(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,i,s;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,r=-1,n===t||a(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=i;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){r=s;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],a(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?a(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(a(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],10:[function(e,t,n){!function(){function e(e,t){if("number"!=typeof e&&"string"!=typeof e)throw new TypeError("non-number or string given to gematriya()");var n="string"==typeof e;return n&&(e=e.replace(/('|")/g,"")),e=e.toString().split("").reverse(),!n&&t&&(e=e.slice(0,t)),e=e.map(function i(o,s){return n?t&&a[o]1e3?i(o,s-3):r[parseInt(o,10)*Math.pow(10,s)]}),n?e.reduce(function(e,t){return e+t},0):(e=e.reverse().join("").replace(/יה/g,"טו").replace(/יו/g,"טז").split(""),1===e.length?e.push("'"):e.length>1&&e.splice(-1,0,'"'),e.join(""))}var n,r={},a={"":0,"א":1,"ב":2,"ג":3,"ד":4,"ה":5,"ו":6,"ז":7,"ח":8,"ט":9,"י":10,"כ":20,"ל":30,"מ":40,"נ":50,"ס":60,"ע":70,"פ":80,"צ":90,"ק":100,"ר":200,"ש":300,"ת":400,"תק":500,"תר":600,"תש":700,"תת":800,"תתק":900,"תתר":1e3};for(n in a)r[a[n]]=n;"undefined"!=typeof t?t.exports=e:window.gematriya=e}()},{}],11:[function(e,t,n){!function(){"use strict";function e(e){return e.valueOf()/M-.5+H}function r(e){return new Date((e+.5-H)*M)}function a(t){return e(t)-D}function i(e,t){return T(L(e)*_(C)-E(t)*L(C),_(e))}function o(e,t){return S(L(t)*_(C)+_(t)*L(C)*L(e))}function s(e,t,n){return T(L(e),_(e)*L(t)-E(n)*_(t))}function u(e,t,n){return S(L(t)*L(n)+_(t)*_(n)*_(e))}function h(e,t){return I*(280.16+360.9856235*e)-t}function c(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function f(e){return I*(357.5291+.98560028*e)}function l(e){var t=I*(1.9148*L(e)+.02*L(2*e)+3e-4*L(3*e)),n=102.9372*I;return e+t+n+b}function y(e){var t=f(e),n=l(t);return{dec:o(n,0),ra:i(n,0)}}function m(e,t){return Math.round(e-k-t/(2*b))}function d(e,t,n){return k+(e+t)/(2*b)+n}function w(e,t,n){return D+e+.0053*L(t)-.0069*L(2*n)}function g(e,t,n){return N((L(e)-L(t)*L(n))/(_(t)*_(n)))}function v(e,t,n,r,a,i,o){var s=g(e,n,r),u=d(s,t,a);return w(u,i,o)}function p(e){var t=I*(218.316+13.176396*e),n=I*(134.963+13.064993*e),r=I*(93.272+13.22935*e),a=t+6.289*I*L(n),s=5.128*I*L(r),u=385001-20905*_(n);return{ra:i(a,s),dec:o(a,s),dist:u}}function A(e,t){return new Date(e.valueOf()+t*M/24)}var b=Math.PI,L=Math.sin,_=Math.cos,E=Math.tan,S=Math.asin,T=Math.atan2,N=Math.acos,I=b/180,M=864e5,H=2440588,D=2451545,C=23.4397*I,O={};O.getPosition=function(e,t,n){var r=I*-n,i=I*t,o=a(e),c=y(o),f=h(o,r)-c.ra;return{azimuth:s(f,i,c.dec),altitude:u(f,i,c.dec)}};var Y=O.times=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];O.addTime=function(e,t,n){Y.push([e,t,n])};var k=9e-4;O.getTimes=function(e,t,n){var i,s,u,h,c,y=I*-n,g=I*t,p=a(e),A=m(p,y),b=d(0,y,A),L=f(b),_=l(L),E=o(_,0),S=w(b,L,_),T={solarNoon:r(S),nadir:r(S-.5)};for(i=0,s=Y.length;i=0&&(g=Math.sqrt(y)/(2*Math.abs(h)),d=f-g,w=f+g,Math.abs(d)<=1&&m++,Math.abs(w)<=1&&m++,d<-1&&(d=w)),1===m?p<0?s=b+d:u=b+d:2===m&&(s=b+(l<0?w:d),u=b+(l<0?d:w)),!s||!u);b+=2)p=o;var L={};return s&&(L.rise=A(a,s)),u&&(L.set=A(a,u)),s||u||(L[l>0?"alwaysUp":"alwaysDown"]=!0),L},"object"==typeof n&&"undefined"!=typeof t?t.exports=O:"function"==typeof define&&define.amd?define(O):window.SunCalc=O}()},{}],12:[function(e,t,n){function r(e,t){t=!!t;var n,r=o.lngChesh(e),a=o.shrtKis(e);this.year=e,n=r&&!a?l:!r&&a?c:f;var i=new s(1,o.months.TISHREI,e).abs(),u=i%7+1;this.first_saturday=o.dayOnOrBefore(6,i+6);var h=+o.LEAP(e);this.type=n,this.rosh_hashana_day=u,this.leap=h,this.il=t;var y=""+h+u+n;if(E[y]?this.theSedraArray=E[y]:this.theSedraArray=E[y+ +t],!this.theSedraArray)throw console.log(this),new TypeError("improper sedra year type calculated.")}function a(e){return-e}function i(e,t){t=o.dayOnOrBefore(6,t+6);var n=(t-e.first_saturday)/7,s=e.theSedraArray[n];return void 0===s?i(new r(e.year+1,e.il),t):"object"==typeof s?[s]:s>=0?[y[s]]:(s=a(s),[y[s],y[s+1]])}var o=e("./common"),s=e("./hdate"),u="concat",h=o.range,c=0,f=1,l=2,y=r.parshiot=[["Bereshit","Bereshis","בראשית"],["Noach",0,"נח"],["Lech-Lecha",0,"לך-לך"],["Vayera",0,"וירא"],["Chayei Sara",0,"חי שרה"],["Toldot","Toldos","תולדות"],["Vayetzei",0,"ויצא"],["Vayishlach",0,"וישלח"],["Vayeshev",0,"וישב"],["Miketz",0,"מקץ"],["Vayigash",0,"ויגש"],["Vayechi",0,"ויחי"],["Shemot","Shemos","שמות"],["Vaera",0,"וארא"],["Bo",0,"בא"],["Beshalach",0,"בשלח"],["Yitro","Yisro","יתרו"],["Mishpatim",0,"משפטים"],["Terumah",0,"תרומה"],["Tetzaveh",0,"תצוה"],["Ki Tisa","Ki Sisa","כי תשא"],["Vayakhel",0,"ויקהל"],["Pekudei",0,"פקודי"],["Vayikra",0,"ויקרא"],["Tzav",0,"צו"],["Shmini",0,"שמיני"],["Tazria",0,"תזריע"],["Metzora",0,"מצרע"],["Achrei Mot","Achrei Mos","אחרי מות"],["Kedoshim",0,"קדשים"],["Emor",0,"אמור"],["Behar",0,"בהר"],["Bechukotai","Bechukosai","בחקתי"],["Bamidbar",0,"במדבר"],["Nasso",0,"נשא"],["Beha'alotcha","Beha'aloscha","בהעלתך"],["Sh'lach",0,"שלח לך"],["Korach",0,"קורח"],["Chukat","Chukas","חקת"],["Balak",0,"בלק"],["Pinchas",0,"פינחס"],["Matot","Matos","מטות"],["Masei",0,"מסעי"],["Devarim",0,"דברים"],["Vaetchanan","V'eschanan","ואתחנן"],["Eikev",0,"עקב"],["Re'eh",0,"ראה"],["Shoftim",0,"שופטים"],["Ki Teitzei","Ki Seitzei","כי תצא"],["Ki Tavo","Ki Savo","כי תבוא"],["Nitzavim",0,"נצבים"],["Vayeilech",0,"וילך"],["Ha'Azinu",0,"האזינו"]],m=[["Rosh Hashana",0,"ראש השנה"]],d=[["Yom Kippur",0,"יום כיפור"]],w=[["Sukkot","Succos","סוכות"]],g=[["Chol hamoed Sukkot","Chol hamoed Succos","חול המועד סוכות"]],v=[["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"]],p=[["End-of-Year: Simchat-Torah, Sukkot","End-of-Year: Simchas-Torah, Succos","סופשנה: סוכות וסמחת תורה"]],A=[["Pesach",0,"פסח"]],b=[["Chol hamoed Pesach",0,"חול המועד פסח"]],L=[["Second days of Pesach",0,"שביעי של פסח"]],_=[["Shavuot","Shavuos","שבועות"]],E={"020":[51,52][u](p,h(0,20),a(21),23,24,A,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),"0220":[51,52][u](p,h(0,20),a(21),23,24,A,25,a(26),a(28),30,a(31),33,_,h(34,37),a(38),40,a(41),h(43,49),a(50)),"0510":[52][u](d,p,h(0,20),a(21),23,24,A,A,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"0511":[52][u](d,p,h(0,20),a(21),23,24,A,25,a(26),a(28),h(30,40),a(41),h(43,50)),"052":[52][u](d,g,h(0,24),L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"070":[][u](m,52,w,v,h(0,20),a(21),23,24,L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"072":[][u](m,52,w,v,h(0,20),a(21),23,24,b,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),1200:[51,52][u](g,h(0,27),b,h(28,33),_,h(34,37),a(38),40,a(41),h(43,49),a(50)),1201:[51,52][u](g,h(0,27),b,h(28,40),a(41),h(43,49),a(50)),1220:[51,52][u](g,h(0,27),A,A,h(28,40),a(41),h(43,50)),1221:[51,52][u](g,h(0,27),A,h(28,50)),150:[52][u](d,g,h(0,28),L,h(29,50)),152:[52][u](d,g,h(0,28),b,h(29,49),a(50)),170:[][u](m,52,w,v,h(0,27),b,h(28,40),a(41),h(43,49),a(50)),1720:[][u](m,52,w,v,h(0,27),b,h(28,33),_,h(34,37),a(38),40,a(41),h(43,49),a(50))};E["0221"]=E["020"],E["0310"]=E["0220"],E["0311"]=E["020"],E[1310]=E[1220],E[1311]=E[1221],E[1721]=E[170],r.prototype.get=function(e){return i(this,e.abs())},t.exports=r},{"./common":3,"./hdate":6}]},{},[2]);
//# sourceMappingURL=client/hebcal.min.js.map
\ No newline at end of file
diff --git a/client/hebcal.min.js.map b/client/hebcal.min.js.map
index 756e618..861f371 100644
--- a/client/hebcal.min.js.map
+++ b/client/hebcal.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["node_modules/browser-pack/_prelude.js","cities.js","client/client.js","common.js","dafyomi.js","greg.js","hdate.js","hebcal.js","holidays.js","node_modules/events/events.js","node_modules/gematriya/gematriya.js","node_modules/suncalc/suncalc.js","sedra.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","getCity","city","split","map","w","c","join","toLowerCase","toUpperCase","slice","cities","listCities","Object","keys","Ashdod","Atlanta","Austin","Baghdad","Beer Sheva","Berlin","Baltimore","Bogota","Boston","Buenos Aires","Buffalo","Chicago","Cincinnati","Cleveland","Dallas","Denver","Detroit","Eilat","Gibraltar","Haifa","Hawaii","Houston","Jerusalem","Johannesburg","Kiev","La Paz","Livingston","London","Los Angeles","Miami","Melbourne","Mexico City","Montreal","Moscow","New York","Omaha","Ottawa","Panama City","Paris","Petach Tikvah","Philadelphia","Phoenix","Pittsburgh","Saint Louis","Saint Petersburg","San Francisco","Seattle","Sydney","Tel Aviv","Tiberias","Toronto","Vancouver","White Plains","Washington DC","addCity","info","Array","isArray","TypeError","nearest","lat","lon","name","dist","Math","sqrt","pow","abs","reduce","close","ready","Hebcal","finished","events","emit","window","warn","console","log","on","defineProperty","configurable","get","listeners","set","func","navigator","geolocation","getCurrentPosition","p","defaultLocation","coords","latitude","longitude","LEAP","x","hebElapsedDays","hYear","m_elapsed","floor","p_elapsed","h_elapsed","parts","day","alt_day","daysInYear","year","lngChesh","shrtKis","monthFromName","months","NISAN","IYYAR","ELUL","CHESHVAN","KISLEV","SIVAN","SHVAT","TAMUZ","TISHREI","TEVET","AV","test","ADAR_I","ADAR_II","filter","self","fun","thisp","v","funOrig","RegExp","k","indexOf","res","hasOwnProperty","val","props","getOwnPropertyDescriptor","value","arr","Number","gematriya","charCodeAt","monthNames","concat","days","SUN","MON","TUE","WED","THU","FRI","SAT","LANG","str","opts","MONTH_CNT","daysInMonth","month","monthNum","parseInt","dayYearNum","dayOnOrBefore","day_of_week","absdate","range","start","end","step","push","greg","shas","m","blatt","dafyomi","gregdate","cno","dno","osday","nsday","total","count","j","cday","dafcnt","Date","greg2abs","dafname","daf","dayOfYear","date","doy","getDate","getMonth","getFullYear","t0t1","tMonthLengths","monthLengths","lookupMonthNum","abs2greg","theDate","d0","n400","d1","n100","d2","n4","d3","n1","setFullYear","HDate","me","this","arguments","d","abs2hebrew","il","setLocation","long","trim","prev","next","setMonth","setDate","apply","fix","fixMonth","fixDate","isLeapYear","hebrew2abs","tempabs","hebdate","mmap","RangeError","suntime","hdate","suncalc","getTimes","hourOffset","hours","sunrise","getTime","hour","onOrBefore","offset","addTime","prototype","enumerable","getTishreiMonth","nummonths","getDay","setTishreiMonth","gregEve","sunset","toString","getMonthName","setCity","hourMins","nightHour","nightHourMins","zemanim","chatzot","chatzot_night","alot_hashachar","alot_hashacher","misheyakir","misheyakir_machmir","sof_zman_shma","sof_zman_tfilla","mincha_gedola","mincha_ketana","plag_hamincha","tzeit","neitz_hachama","shkiah","getZemanim","z","addZeman","zeman","isSameDate","other","before","onOrAfter","after","getset","g","extend","base","into","TE","Month","defProp","writable","holidays","forEach","h","GregYear","lookupMonthName","GregMonth","hebyears","hebmonths","hm","Sedra","EventEmitter","find","strings","getYearObject","HebcalProto","MonthProto","GregYearProto","GregMonthProto","HDateProto","rosh","addHoliday","holiday","Event","add","findParsha","parsha","langs","max","getSedra","findSedra","find_f","replace","rosh_chodesh","omer","today","yesterday","tomorrow","pesach","sukkot","succot","succos","sukkos","shavuot","shavuos","rosh_hashana","rosh_hashanah","parshiot","LANGUAGE","loc","defaultCity","candleLighting","mins","havdalah","__year","getName","prevMonth","molad","m_adj","retMolad","toInt","round","chalakim","minutes","shabbat_mevarchim","_calc","setHours","setMinutes","setSeconds","num","sm","shabbos_mevarchim","shabbos_mevorchim","getMonthObject","__month","orig","__cache","sedraYear","getParsha","all","routine","is","prop","hd","tachanun","mapAbs","some","yes_prev","checkNext","y","atzmaut","NONE","ret","ALL_CONGS","SHACHARIT","MINCHA","hallel","whole","half","rc","WHOLE","HALF","checkTimes","obj","compare","time","nowGreg","now","almostTime","beforeZeman","customTimes","customs","refreshInterval","custom","refresh","ms","clearInterval","setInterval","unref","getGregMonthObject","__gregmonth","getGregYearObject","Chanukah","CHM","desc","Sukkot","Pesach","mask","USER_EVENT","LIGHT_CANDLES","YOM_TOV_ENDS","CHUL_ONLY","IL_ONLY","LIGHT_CANDLES_TZEIS","tmpDate","Shabbat","Shabbos","masks","myDate","getDesc","names","isIL","ev","RH","_events","_maxListeners","undefined","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","type","er","handler","len","args","error","err","context","addListener","listener","newListener","warned","trace","once","removeListener","fired","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","limit","reverse","numbers","letters","","א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת","תק","תר","תש","תת","תתק","תתר","toJulian","valueOf","dayMs","J1970","fromJulian","toDays","J2000","rightAscension","b","atan","sin","cos","tan","declination","asin","azimuth","H","phi","dec","altitude","siderealTime","lw","rad","astroRefraction","solarMeanAnomaly","eclipticLongitude","M","C","P","PI","sunCoords","L","ra","julianCycle","J0","approxTransit","Ht","solarTransitJ","ds","hourAngle","acos","getSetJ","moonCoords","F","dt","hoursLater","atan2","SunCalc","getPosition","lng","times","angle","riseName","setName","Jset","Jrise","Jnoon","result","solarNoon","nadir","getMoonPosition","pa","distance","parallacticAngle","getMoonIllumination","sdist","inc","fraction","phase","getMoonTimes","inUTC","setUTCHours","h1","h2","rise","xe","ye","roots","x1","x2","dx","hc","h0","define","amd","hebYr","long_c","short_k","COMPLETE","INCOMPLETE","REGULAR","rosh_hashana_day","first_saturday","leap","core","types","theSedraArray","D","absDate","weekNum","index","YK","SUKKOT","CHMSUKOT","SHMINI","EOY","PESACH","CHMPESACH","PESACH7","SHAVUOT","020","0220","0510","0511","052","070","072","1200","1201","1220","1221","150","152","170","1720","hDate"],"mappings":"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","file":"client/hebcal.min.js","sourceRoot":"https://github.com/hebcal/hebcal-js/tree/v2.2.3/","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o.\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n\n// name, lat, long, Israel\nvar cities = {\n\t\"Ashdod\": [ 31.8, 34.633, true ],\n\t\"Atlanta\": [ 33.75, -84.383, false ],\n\t\"Austin\": [ 30.266, -97.75, false ],\n\t\"Baghdad\": [ 33.233, 44.366, false ],\n\t\"Beer Sheva\": [ 31.25, 34.783, true ],\n\t\"Berlin\": [ 52.516, 13.4, false ],\n\t\"Baltimore\": [ 39.283, -76.6, false ],\n\t\"Bogota\": [ 4.6, -74.083, false ],\n\t\"Boston\": [ 42.333, -71.066, false ],\n\t\"Buenos Aires\": [ -34.616, -58.4, false ],\n\t\"Buffalo\": [ 42.883, -78.866, false ],\n\t\"Chicago\": [ 41.833, -87.75, false ],\n\t\"Cincinnati\": [ 39.1, -84.516, false ],\n\t\"Cleveland\": [ 41.5, -81.683, false ],\n\t\"Dallas\": [ 32.783, -96.8, false ],\n\t\"Denver\": [ 39.733, -104.983, false ],\n\t\"Detroit\": [ 42.333, -83.033, false ],\n\t\"Eilat\": [ 29.55, 34.95, true ],\n\t\"Gibraltar\": [ 36.133, -5.35, false ],\n\t\"Haifa\": [ 32.816, 34.983, true ],\n\t\"Hawaii\": [ 19.5, -155.5, false ],\n\t\"Houston\": [ 29.766, -95.366, false ],\n\t\"Jerusalem\": [ 31.783, 35.233, true ],\n\t\"Johannesburg\": [ -26.166, 28.033, false ],\n\t\"Kiev\": [ 50.466, 30.483, false ],\n\t\"La Paz\": [ -16.5, -68.15, false ],\n\t\"Livingston\": [ 40.283, -74.3, false ],\n\t\"London\": [ 51.5, -0.166, false ],\n\t\"Los Angeles\": [ 34.066, -118.25, false ],\n\t\"Miami\": [ 25.766, -80.2, false ],\n\t\"Melbourne\": [ -37.866, 145.133, false ],\n\t\"Mexico City\": [ 19.4, -99.15, false ],\n\t\"Montreal\": [ 45.5, -73.6, false ],\n\t\"Moscow\": [ 55.75, 37.7, false ],\n\t\"New York\": [ 40.716, -74.016, false ],\n\t\"Omaha\": [ 41.266, -95.933, false ],\n\t\"Ottawa\": [ 45.7, -76.183, false ],\n\t\"Panama City\": [ 8.966, -79.533, false ],\n\t\"Paris\": [ 48.866, 2.333, false ],\n\t\"Petach Tikvah\": [ 32.083, 34.883, true ],\n\t\"Philadelphia\": [ 39.95, -75.166, false ],\n\t\"Phoenix\": [ 33.45, -112.066, false ],\n\t\"Pittsburgh\": [ 40.433, -80, false ],\n\t\"Saint Louis\": [ 38.633, -90.2, false ],\n\t\"Saint Petersburg\": [ 59.883, 30.25, false ],\n\t\"San Francisco\": [ 37.783, -122.416, false ],\n\t\"Seattle\": [ 47.6, -122.333, false ],\n\t\"Sydney\": [ -33.916, 151.283, false ],\n\t\"Tel Aviv\": [ 32.083, 34.766, true ],\n\t\"Tiberias\": [ 32.966, 35.533, true ],\n\t\"Toronto\": [ 43.633, -79.4, false ],\n\t\"Vancouver\": [ 49.266, -123.116, false ],\n\t\"White Plains\": [ 41.033, -73.75, false ],\n\t\"Washington DC\": [ 38.916, -77, false ]\n};\n\nfunction getCity(city) {\n\tcity = city.split(/\\s+/).map(function(w,i,c){\n\t\tif (c.join(' ').toLowerCase() === 'washington dc' && i === 1) { // special case\n\t\t\treturn w.toUpperCase();\n\t\t}\n\t\treturn w[0].toUpperCase() + w.slice(1).toLowerCase();\n\t}).join(' ');\n\treturn cities[city] || [ 0, 0, false ];\n}\nexports.getCity = getCity;\n\nfunction listCities() {\n\treturn Object.keys(cities);\n}\nexports.listCities = listCities;\n\nexports.addCity = function(city, info) {\n\tif (!Array.isArray(info)) {\n\t\tthrow new TypeError('adding non-array city');\n\t}\n\tif (info.length == 5) {\n\t\tvar i = info.slice();\n\t\tinfo = [];\n\t\tinfo[0] = (i[0] * 60 + i[1]) / 60;\n\t\tinfo[1] = (i[2] * 60 + i[3]) / 60;\n\t\tinfo[2] = i[4];\n\t}\n\tif (info.length != 3) {\n\t\tthrow new TypeError('length of city array is not 3');\n\t}\n\tcity = city.split(/\\s+/).map(function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase()}).join(' ');\n\tcities[city] = info;\n};\n\nexports.nearest = function(lat, lon) {\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to nearest()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to nearest()');\n\t}\n\n\treturn listCities().map(function(city){\n\t\tvar i = getCity(city);\n\t\treturn {\n\t\t\tname: city,\n\t\t\tdist: Math.sqrt( Math.pow(Math.abs(i[0] - lat), 2) + Math.pow(Math.abs(i[1] - lon), 2) )\n\t\t};\n\t}).reduce(function(close,city){\n\t\treturn close.dist < city.dist ? close : city;\n\t}).name;\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at \n\tdanny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter\n */\nwindow.Hebcal = require('..');\n\nvar finished = false, warn = (typeof console != 'undefined' && (console.warn || console.log)) || function(){};\n\nHebcal.events.on('newListener', function(e){\n\tif (e === 'ready' && !finished && Hebcal.ready) {\n\t\tready();\n\t}\n});\n\nObject.defineProperty(Hebcal, 'onready', {\n\tconfigurable: true,\n\n\tget: function() {\n\t\twarn('Getting deprecated property Hebcal.onready');\n\t\treturn Hebcal.events.listeners('ready')[0];\n\t},\n\tset: function(func) {\n\t\twarn('Setting deprecated property Hebcal.onready; use Hebcal.events.on(\\'ready\\', func) instead');\n\t\tHebcal.events.on('ready', func);\n\t}\n});\n\nif (navigator.geolocation) {\n\tHebcal.ready = false;\n\tnavigator.geolocation.getCurrentPosition(function(p){\n\t\tHebcal.defaultLocation = [p.coords.latitude,p.coords.longitude];\n\t\tready();\n\t}, ready);\n} else {\n\tready();\n}\n\nfunction ready() {\n\tHebcal.ready = true;\n\tfinished = Hebcal.events.emit('ready');\n}","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar gematriya = require('gematriya');\n\nvar charCodeAt = 'charCodeAt';\n\nvar months = exports.months = {\n\tNISAN : 1,\n\tIYYAR : 2,\n\tSIVAN : 3,\n\tTAMUZ : 4,\n\tAV : 5,\n\tELUL : 6,\n\tTISHREI : 7,\n\tCHESHVAN: 8,\n\tKISLEV : 9,\n\tTEVET : 10,\n\tSHVAT : 11,\n\tADAR_I : 12,\n\tADAR_II : 13\n};\n\nvar monthNames = [\n\t[\"\", 0, \"\"],\n\t[\"Nisan\", 0, \"ניסן\"],\n\t[\"Iyyar\", 0, \"אייר\"],\n\t[\"Sivan\", 0, \"סיון\"],\n\t[\"Tamuz\", 0, \"תמוז\"],\n\t[\"Av\", 0, \"אב\"],\n\t[\"Elul\", 0, \"אלול\"],\n\t[\"Tishrei\", 0, \"תשרי\"],\n\t[\"Cheshvan\", 0, \"חשון\"],\n\t[\"Kislev\", 0, \"כסלו\"],\n\t[\"Tevet\", 0, \"טבת\"],\n\t[\"Sh'vat\", 0, \"שבט\"]\n];\nexports.monthNames = [\n\tmonthNames.concat([[\"Adar\", 0, \"אדר\"],[\"Nisan\", 0, \"ניסן\"]]),\n\tmonthNames.concat([[\"Adar 1\", 0, \"אדר א'\"],[\"Adar 2\", 0, \"אדר ב'\"],[\"Nisan\", 0, \"ניסן\"]])\n];\n\nexports.days = {\n\tSUN: 0,\n\tMON: 1,\n\tTUE: 2,\n\tWED: 3,\n\tTHU: 4,\n\tFRI: 5,\n\tSAT: 6\n};\n\nexports.LANG = function(str, opts){\n\treturn opts == 'h' && str[2] || (opts == 'a' && str[1] || str[0]);\n};\n\nfunction LEAP(x) {\n\treturn (1 + x * 7) % 19 < 7;\n}\nexports.LEAP = LEAP;\n\nexports.MONTH_CNT = function(x) {\n\treturn 12 + LEAP(x); // boolean is cast to 1 or 0\n};\n\nexports.daysInMonth = function(month, year) {\n\treturn 30 - (month == months.IYYAR ||\n\tmonth == months.TAMUZ ||\n\tmonth == months.ELUL ||\n\tmonth == months.TEVET ||\n\tmonth == months.ADAR_II ||\n\t(month == months.ADAR_I && !LEAP(year)) ||\n\t(month == months.CHESHVAN && !lngChesh(year)) ||\n\t(month == months.KISLEV && shrtKis(year)));\n};\n\nexports.monthNum = function(month) {\n\treturn typeof month === 'number' ? month :\n\t\tmonth[charCodeAt](0) >= 1488 && month[charCodeAt](0) <= 1514 && /('|\")/.test(month) ? gematriya(month) :\n\t\t\tmonth[charCodeAt](0) >= 48 && month[charCodeAt](0) <= 57 /* number */ ? parseInt(month, 10) : monthFromName(month);\n};\n\nexports.dayYearNum = function(str) {\n\treturn typeof str === 'number' ? str :\n\t\tstr[charCodeAt](0) >= 1488 && str[charCodeAt](0) <= 1514 ? gematriya(str, true) : parseInt(str, 10);\n};\n\n/* Days from sunday prior to start of Hebrew calendar to mean\n conjunction of Tishrei in Hebrew YEAR\n */\nfunction hebElapsedDays(hYear){\n\t// borrowed from original JS\n\tvar m_elapsed = 235 * Math.floor((hYear - 1) / 19) +\n\t\t12 * ((hYear - 1) % 19) +\n\t\tMath.floor(((((hYear - 1) % 19) * 7) + 1) / 19);\n\n\tvar p_elapsed = 204 + (793 * (m_elapsed % 1080));\n\n\tvar h_elapsed = 5 + (12 * m_elapsed) +\n\t\t793 * Math.floor(m_elapsed / 1080) +\n\t\tMath.floor(p_elapsed / 1080);\n\n\tvar parts = (p_elapsed % 1080) + 1080 * (h_elapsed % 24);\n\n\tvar day = 1 + 29 * m_elapsed + Math.floor(h_elapsed / 24);\n\tvar alt_day = day + ((parts >= 19440) ||\n\t\t((2 == (day % 7)) && (parts >= 9924) && !(LEAP (hYear))) ||\n\t\t((1 == (day % 7)) && (parts >= 16789) && LEAP (hYear - 1)));\n\n\treturn alt_day + ((alt_day % 7) === 0 ||\n\t\t(alt_day % 7) == 3 ||\n\t\t(alt_day % 7) == 5);\n}\nexports.hebElapsedDays = hebElapsedDays;\n\n/* Number of days in the hebrew YEAR */\nfunction daysInYear(year)\n{\n\treturn hebElapsedDays(year + 1) - hebElapsedDays(year);\n}\nexports.daysInYear = daysInYear;\n\n/* true if Cheshvan is long in Hebrew YEAR */\nfunction lngChesh(year) {\n\treturn (daysInYear(year) % 10) == 5;\n}\nexports.lngChesh = lngChesh;\n\n/* true if Kislev is short in Hebrew YEAR */\nfunction shrtKis(year) {\n\treturn (daysInYear(year) % 10) == 3;\n}\nexports.shrtKis = shrtKis;\n\nfunction monthFromName(c) {\n\t/*\n\tthe Hebrew months are unique to their second letter\n\tN Nisan (November?)\n\tI Iyyar\n\tE Elul\n\tC Cheshvan\n\tK Kislev\n\t1 1Adar\n\t2 2Adar\n\tSi Sh Sivan, Shvat\n\tTa Ti Te Tamuz, Tishrei, Tevet\n\tAv Ad Av, Adar\n\n\tאב אד אי אל אב אדר אייר אלול\n\tח חשון\n\tט טבת\n\tכ כסלב\n\tנ ניסן\n\tס סיון\n\tש שבט\n\tתמ תש תמוז תשרי\n\t*/\n\tswitch (c.toLowerCase()[0]) {\n\t\tcase 'n':\n\t\tcase 'נ':\n\t\t\treturn (c.toLowerCase()[1] == 'o') ? /* this catches \"november\" */\n\t\t\t\t0 : months.NISAN;\n\t\tcase 'i':\n\t\t\treturn months.IYYAR;\n\t\tcase 'e':\n\t\t\treturn months.ELUL;\n\t\tcase 'c':\n\t\tcase 'ח':\n\t\t\treturn months.CHESHVAN;\n\t\tcase 'k':\n\t\tcase 'כ':\n\t\t\treturn months.KISLEV;\n\t\tcase 's':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.SIVAN;\n\t\t\t\tcase 'h':\n\t\t\t\t\treturn months.SHVAT;\n\t\t\t\tdefault:\n\t\t\t\t\treturn 0;\n\t\t\t}\n\t\tcase 't':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'a':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t\tcase 'e':\n\t\t\t\t\treturn months.TEVET;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'a':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'v':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif (/(1|[^i]i|a|א)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ס':\n\t\t\treturn months.SIVAN;\n\t\tcase 'ש':\n\t\t\treturn months.SHVAT;\n\t\tcase 'א':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'ב':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'ד':\n\t\t\t\t\tif (/(2|ii|b|ב)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t\tcase 'י':\n\t\t\t\t\treturn months.IYYAR;\n\t\t\t\tcase 'ל':\n\t\t\t\t\treturn months.ELUL;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ת':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'מ':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'ש':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn 0;\n};\nexports.monthFromName = monthFromName;\n\n/* Note: Applying this function to d+6 gives us the DAYNAME on or after an\n * absolute day d. Similarly, applying it to d+3 gives the DAYNAME nearest to\n * absolute date d, applying it to d-1 gives the DAYNAME previous to absolute\n * date d, and applying it to d+7 gives the DAYNAME following absolute date d.\n\n**/\nexports.dayOnOrBefore = function(day_of_week, absdate) {\n\treturn absdate - ((absdate - day_of_week) % 7);\n};\n\nexports.map = function(self, fun, thisp) {\n\t// originally written for http://github.com/Scimonster/localbrowse\n\tif (self === null || typeof fun != 'function') {\n\t\tthrow new TypeError();\n\t}\n\tvar t = Object(self);\n\tvar res = {};\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tres[i] = fun.call(thisp, t[i], i, t);\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = filter(arr, true); // for...in isn't guaranteed to give any meaningful order\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n};\n\nfunction filter(self, fun, thisp) {\n\tif (self === null) {\n\t\tthrow new TypeError('self is null');\n\t}\n\tswitch (typeof fun) {\n\t\tcase 'function':\n\t\t\tbreak; // do nothing\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn self[fun]; // str/num is just the property\n\t\tcase 'boolean':\n\t\t\t// boolean shortcuts to filter only truthy/falsy values\n\t\t\tif (fun) {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn v;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn !v;\n\t\t\t\t};\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'object':\n\t\t\tvar funOrig = fun; // save it\n\t\t\tif (fun instanceof RegExp) { // test the val against the regex\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn funOrig.test(v);\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t} else if (Array.isArray(fun)) { // keep these keys\n\t\t\t\tfun = function (v, k) {\n\t\t\t\t\treturn funOrig.indexOf(k) > -1;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tthrow new TypeError('fun is not a supported type');\n\t}\n\tvar res = {};\n\tvar t = Object(self);\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tvar val = t[i]; // in case fun mutates it\n\t\t\tif (fun.call(thisp, val, i, t)) {\n\t\t\t\t// define property on res in the same manner as it was originally defined\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(t, i);\n\t\t\t\tprops.value = val;\n\t\t\t\tObject.defineProperty(res, i, props);\n\t\t\t}\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = arr.filter(function (v) {\n\t\t\treturn v;\n\t\t}); // for...in isn't guaranteed to give any meaningful order\n\t\t// can't use c.filter(arr,true) here because that would infitely recurse\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n}\nexports.filter = filter;\n\nexports.range = function(start, end, step) {\n\tstep = step || 1;\n\tif (step < 0) {\n\t\tstep = 0 - step;\n\t}\n\n\tvar arr = [], i = start;\n\tif (start < end) {\n\t\tfor (; i <= end; i += step) {\n\t\t\tarr.push(i);\n\t\t}\n\t} else {\n\t\tfor (; i >= end; i -= step) {\n\t\t\tarr.push(i);\n\t\t}\n\t}\n\treturn arr;\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tgematriya = require('gematriya');\n\nvar shas = [\n\t// sname, aname, hname, blatt\n\t[ \"Berachot\", \"Berachos\", \"ברכות\", 64 ],\n\t[ \"Shabbat\", \"Shabbos\", \"שבת\", 157 ],\n\t[ \"Eruvin\", \"Eruvin\", \"עירובין\", 105 ],\n\t[ \"Pesachim\", 0, \"פסחים\", 121 ],\n\t[ \"Shekalim\", 0, \"שקלים\", 22 ],\n\t[ \"Yoma\", 0, \"יומא\", 88 ],\n\t[ \"Sukkah\", 0, \"סוכה\", 56 ],\n\t[ \"Beitzah\", 0, \"ביצה\", 40 ],\n\t[ \"Rosh Hashana\", 0, \"ראש השנה\", 35 ],\n\t[ \"Taanit\", \"Taanis\", \"תענית\", 31 ],\n\t[ \"Megillah\", 0, \"מגילה\", 32 ],\n\t[ \"Moed Katan\", 0, \"מועד קטן\", 29 ],\n\t[ \"Chagigah\", 0, \"חגיגה\", 27 ],\n\t[ \"Yevamot\", \"Yevamos\", \"יבמות\", 122 ],\n\t[ \"Ketubot\", \"Kesubos\", \"כתובות\", 112 ],\n\t[ \"Nedarim\", 0, \"נדרים\", 91 ],\n\t[ \"Nazir\", 0, \"נזיר\", 66 ],\n\t[ \"Sotah\", 0, \"סוטה\", 49 ],\n\t[ \"Gitin\", 0, \"גיטין\", 90 ],\n\t[ \"Kiddushin\", 0, \"קידושין\", 82 ],\n\t[ \"Baba Kamma\", 0, \"בבא קמא\", 119 ],\n\t[ \"Baba Metzia\", 0, \"בבא מציעא\", 119 ],\n\t[ \"Baba Batra\", \"Baba Basra\", \"בבא בתרא\", 176 ],\n\t[ \"Sanhedrin\", 0, \"סנהדרין\", 113 ],\n\t[ \"Makkot\", \"Makkos\", \"מכות\", 24 ],\n\t[ \"Shevuot\", \"Shevuos\", \"שבועות\", 49 ],\n\t[ \"Avodah Zarah\", 0, \"עבודה זרה\", 76 ],\n\t[ \"Horayot\", \"Horayos\", \"הוריות\", 14 ],\n\t[ \"Zevachim\", 0, \"זבחים\", 120 ],\n\t[ \"Menachot\", \"Menachos\", \"מנחות\", 110 ],\n\t[ \"Chullin\", 0, \"חולין\", 142 ],\n\t[ \"Bechorot\", \"Bechoros\", \"בכורות\", 61 ],\n\t[ \"Arachin\", 0, \"ערכין\", 34 ],\n\t[ \"Temurah\", 0, \"תמורה\", 34 ],\n\t[ \"Keritot\", \"Kerisos\", \"כריתות\", 28 ],\n\t[ \"Meilah\", 0, \"מעילה\", 22 ],\n\t[ \"Kinnim\", 0, \"קנים\", 4 ],\n\t[ \"Tamid\", 0, \"תמיד\", 10 ],\n\t[ \"Midot\", \"Midos\", \"מדות\", 4 ],\n\t[ \"Niddah\", 0, \"נדה\", 73 ]\n].map(function(m){\n\treturn {name: m.slice(0,3), blatt: m[3]};\n});\n\nexports.dafyomi = function(gregdate) {\n\tvar dafcnt = 40, cno, dno, osday, nsday, total, count, j, cday, blatt;\n\n\tif (!(gregdate instanceof Date)) {\n\t\tthrow new TypeError('non-date given to dafyomi');\n\t}\n\n\tosday = greg.greg2abs(new Date(1923, 8, 11));\n\tnsday = greg.greg2abs(new Date(1975, 5, 24));\n\tcday = greg.greg2abs(gregdate);\n\n\tif (cday < osday) { // no cycle; dy didn't start yet\n\t\treturn {name: [], blatt: 0};\n\t}\n\tif (cday >= nsday) { // \"new\" cycle\n\t\tcno = 8 + ( (cday - nsday) / 2711 );\n\t\tdno = (cday - nsday) % 2711;\n\t} else { // old cycle\n\t\tcno = 1 + ( (cday - osday) / 2702 );\n\t\tdno = (cday - osday) % 2702;\n\t}\n\n\t// Find the daf taking note that the cycle changed slightly after cycle 7.\n\n\ttotal = blatt = 0;\n\tcount = -1;\n\n\t// Fix Shekalim for old cycles\n\tif (cno <= 7) {\n\t\tshas[4].blatt = 13;\n\t} else {\n\t\tshas[4].blatt = 22;\n\t}\n\n\t// Find the daf\n\tj = 0;\n\twhile (j < dafcnt) {\n\t\tcount++;\n\t\ttotal = total + shas[j].blatt - 1;\n\t\tif (dno < total) {\n\t\t\tblatt = (shas[j].blatt + 1) - (total - dno);\n\t\t\t// fiddle with the weird ones near the end\n\t\t\tswitch (count) {\n\t\t\t\tcase 36:\n\t\t\t\t\tblatt = blatt + 21;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tblatt = blatt + 24;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38:\n\t\t\t\t\tblatt = blatt + 33;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Bailout\n\t\t\tj = 1 + dafcnt;\n\t\t}\n\t\tj++;\n\t}\n\n\treturn {name: shas[count].name, blatt: blatt};\n};\n\nexports.dafname = function(daf, o) {\n\treturn c.LANG(daf.name, o) + ' ' + (o === 'h' ? gematriya(daf.blatt) : daf.blatt);\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar floor = Math.floor,\n\tt0t1 = [30, 31],\n\ttMonthLengths = [0, 31, 28, 31].concat(t0t1, t0t1, 31, t0t1, t0t1),\n\tmonthLengths = [\n\t\ttMonthLengths.slice()\n\t];\ntMonthLengths[2]++;\nmonthLengths.push(tMonthLengths);\n\nexports.daysInMonth = function(month, year) { // 1 based months\n\treturn monthLengths[+LEAP(year)][month];\n};\n\nexports.monthNames = [\n\t'',\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December'\n];\n\nexports.lookupMonthNum = function(month) {\n\treturn new Date(month + ' 1').getMonth() + 1;\n};\n\nfunction dayOfYear (date) {\n\tif (!date instanceof Date) {\n\t\tthrow new TypeError('Argument to greg.dayOfYear not a Date');\n\t}\n\tvar doy = date.getDate() + 31 * date.getMonth();\n\tif (date.getMonth() > 1) { // FEB\n\t\tdoy -= floor((4 * (date.getMonth() + 1) + 23) / 10);\n\t\tif (LEAP(date.getFullYear())) {\n\t\t\tdoy++;\n\t\t}\n\t}\n\treturn doy;\n}\nexports.dayOfYear = dayOfYear;\n\nfunction LEAP (year) {\n\treturn !(year % 4) && ( !!(year % 100) || !(year % 400) );\n}\nexports.LEAP = LEAP;\n\nexports.greg2abs = function(date) { // \"absolute date\"\n\tvar year = date.getFullYear() - 1;\n\treturn (dayOfYear(date) + // days this year\n\t\t\t365 * year + // + days in prior years\n\t\t\t( floor(year / 4) - // + Julian Leap years\n\t\t\tfloor(year / 100) + // - century years\n\t\t\tfloor(year / 400))); // + Gregorian leap years\n};\n\n\n/*\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n */\nexports.abs2greg = function(theDate) {\n// calculations copied from original JS code\n\n\tvar d0 = theDate - 1;\n\tvar n400 = floor(d0 / 146097);\n\tvar d1 = floor(d0 % 146097);\n\tvar n100 = floor(d1 / 36524);\n\tvar d2 = d1 % 36524;\n\tvar n4 = floor(d2 / 1461);\n\tvar d3 = d2 % 1461;\n\tvar n1 = floor(d3 / 365);\n\n\tvar day = ((d3 % 365) + 1);\n\tvar year = (400 * n400 + 100 * n100 + 4 * n4 + n1);\n\n\tif (4 == n100 || 4 == n1) {\n\t\treturn new Date(year, 11, 31);\n\t}\n\n\treturn new Date(new Date(++year, 0, day).setFullYear(year)); // new Date() is very smart\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tsuncalc = require('suncalc'),\n\tcities = require('./cities'),\n\tgematriya = require('gematriya');\n\nsuncalc.addTime(-16.1, 'alot_hashachar', 0);\nsuncalc.addTime(-11.5, 'misheyakir', 0);\nsuncalc.addTime(-10.2, 'misheyakir_machmir', 0);\nsuncalc.addTime(-8.5, 0, 'tzeit');\n\n// for minifying optimizations\nvar getFullYear = 'getFullYear',\n\tgetMonth = 'getMonth',\n\tgetDate = 'getDate',\n\tgetTime = 'getTime',\n\tabs = 'abs',\n\thour = 'hour',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tMONTH_CNT = c.MONTH_CNT,\n\tdaysInMonth = c.daysInMonth,\n\tdayOnOrBefore = c.dayOnOrBefore,\n\tprototype = HDate.prototype;\n\nfunction HDate(day, month, year) {\n\tvar me = this;\n\tswitch (arguments.length) {\n\t\tcase 0:\n\t\t\treturn new HDate(new Date());\n\t\tcase 1:\n\t\t\tif (typeof day == 'undefined') {\n\t\t\t\treturn new HDate();\n\t\t\t} else if (day instanceof Date) {\n\t\t\t\t// we were passed a Gregorian date, so convert it\n\t\t\t\tvar d = abs2hebrew(greg.greg2abs(day));\n\t\t\t\t/*if (d.sunset() < day) {\n\t\t\t\t\td = d.next();\n\t\t\t\t}*/\n\t\t\t\treturn d;\n\t\t\t} else if (day instanceof HDate) {\n\t\t\t\tvar d = new HDate(day[getDate](), day[getMonth](), day[getFullYear]());\n\t\t\t\td.il = day.il;\n\t\t\t\td.setLocation(d.lat, d.long);\n\t\t\t\treturn d;\n\t\t\t} else if (typeof day == 'string') {\n\t\t\t\tswitch (day.toLowerCase().trim()) {\n\t\t\t\t\tcase 'today':\n\t\t\t\t\t\treturn new HDate();\n\t\t\t\t\tcase 'yesterday':\n\t\t\t\t\t\treturn new HDate().prev();\n\t\t\t\t\tcase 'tomorrow':\n\t\t\t\t\t\treturn new HDate().next();\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(day)) {\n\t\t\t\t\tvar s = day.split(/\\s+/);\n\t\t\t\t\tif (s.length == 2) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1]);\n\t\t\t\t\t} else if (s.length == 3) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1], s[2]);\n\t\t\t\t\t} else if (s.length == 4) { // should only be if s[1] is Adar\n\t\t\t\t\t\tif (/i/i.test(s[2])) { // Using I[I] syntax\n\t\t\t\t\t\t\ts[2] = s[2].length;\n\t\t\t\t\t\t} // otherwise using 1|2 syntax\n\t\t\t\t\t\treturn new HDate(s[0], s[1] + s[2], s[3]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof day == 'number') { // absolute date\n\t\t\t\treturn abs2hebrew(day);\n\t\t\t}\n\t\t\tthrow new TypeError('HDate called with bad argument');\n\t\tcase 2:\n\t\t\treturn new HDate(day, month, (new HDate)[getFullYear]());\n\t\tcase 3:\n\t\t\tme.day = me.month = 1;\n\t\t\tme.year = c.dayYearNum(year);\n\n\t\t\tme.setMonth(c.monthNum(month));\n\t\t\tme.setDate(c.dayYearNum(day));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError('HDate called with bad arguments');\n\t}\n\n\treturn me.setLocation.apply(me, HDate.defaultLocation);\n}\n\nHDate.defaultLocation = [0, 0];\nObject.defineProperty(HDate, 'defaultCity', {\n\tenumerable: true,\n\tconfigurable: true,\n\n\tget: function() {\n\t\treturn cities.nearest(HDate.defaultLocation[0], HDate.defaultLocation[1]);\n\t},\n\tset: function(city) {\n\t\tHDate.defaultLocation = cities.getCity(city).slice(0, 2);\n\t}\n});\n\nfunction fix(date) {\n\tfixMonth(date);\n\tfixDate(date);\n}\n\nfunction fixDate(date) {\n\tif (date.day < 1) {\n\t\tif (date.month == TISHREI) {\n\t\t\tdate.year -= 1;\n\t\t}\n\t\tdate.day += daysInMonth(date.month, date.year);\n\t\tdate.month -= 1;\n\t\tfix(date);\n\t}\n\tif (date.day > daysInMonth(date.month, date.year)) {\n\t\tif (date.month == months.ELUL) {\n\t\t\tdate.year += 1;\n\t\t}\n\t\tdate.day -= daysInMonth(date.month, date.year);\n\t\tdate.month += 1;\n\t\tfix(date);\n\t}\n\tfixMonth(date);\n}\n\nfunction fixMonth(date) {\n\tif (date.month == months.ADAR_II && !date.isLeapYear()) {\n\t\tdate.month -= 1; // to Adar I\n\t\tfix(date);\n\t}\n\tif (date.month < 1) {\n\t\tdate.month += MONTH_CNT(date.year);\n\t\tdate.year -= 1;\n\t\tfix(date);\n\t}\n\tif (date.month > MONTH_CNT(date.year)) {\n\t\tdate.month -= MONTH_CNT(date.year);\n\t\tdate.year += 1;\n\t\tfix(date);\n\t}\n}\n\nprototype[getFullYear] = function() {\n\treturn this.year;\n};\n\nprototype.isLeapYear = function() {\n\treturn c.LEAP(this.year);\n};\n\nprototype[getMonth] = function() {\n\treturn this.month;\n};\n\nprototype.getTishreiMonth = function() {\n\tvar nummonths = MONTH_CNT(this[getFullYear]());\n\treturn (this[getMonth]() + nummonths - 6) % nummonths || nummonths;\n};\n\nprototype.daysInMonth = function() {\n\treturn daysInMonth(this[getMonth](), this[getFullYear]());\n};\n\nprototype[getDate] = function() {\n\treturn this.day;\n};\n\nprototype.getDay = function() {\n\treturn this.greg().getDay();\n};\n\nprototype.setFullYear = function(year) {\n\tthis.year = year;\n\tfix(this);\n\treturn this;\n};\n\nprototype.setMonth = function(month) {\n\tthis.month = c.monthNum(month);\n\tfix(this);\n\treturn this;\n};\n\nprototype.setTishreiMonth = function(month) {\n\treturn this.setMonth((month + 6) % MONTH_CNT(this[getFullYear]()) || 13);\n};\n\nprototype.setDate = function(date) {\n\tthis.day = date;\n\tfix(this);\n\treturn this;\n};\n\n/* convert hebrew date to absolute date */\n/* Absolute date of Hebrew DATE.\n The absolute date is the number of days elapsed since the (imaginary)\n Gregorian date Sunday, December 31, 1 BC. */\nfunction hebrew2abs(d) {\n\tvar m, tempabs = d[getDate](), year = d[getFullYear]();\n\n\tif (d[getMonth]() < TISHREI) {\n\t\tfor (m = TISHREI; m <= MONTH_CNT(year); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\n\t\tfor (m = months.NISAN; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t} else {\n\t\tfor (m = TISHREI; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t}\n\n\treturn c.hebElapsedDays(year) - 1373429 + tempabs;\n}\n\nfunction abs2hebrew(d) {\n\tvar mmap = [\n\t\tmonths.KISLEV, months.TEVET, months.SHVAT, months.ADAR_I, months.NISAN,\n\t\tmonths.IYYAR, months.SIVAN, months.TAMUZ, TISHREI, TISHREI, TISHREI, months.CHESHVAN\n\t], hebdate, gregdate, month, year;\n\n\tif (d >= 10555144) {\n\t\tthrow new RangeError(\"parameter to abs2hebrew \" + d + \" out of range\");\n\t}\n\n\tgregdate = greg.abs2greg(d);\n\thebdate = new HDate(1, TISHREI, (year = 3760 + gregdate[getFullYear]()));\n\n\twhile (d >= hebrew2abs(hebdate.setFullYear(year + 1))) {\n\t\tyear++;\n\t}\n\n\tif (year > 4634 && year < 10666) {\n\t\t// optimize search\n\t\tmonth = mmap[gregdate[getMonth]()];\n\t} else {\n\t\t// we're outside the usual range, so assume nothing about Hebrew/Gregorian calendar drift...\n\t\tmonth = TISHREI;\n\t}\n\n\twhile (d > hebrew2abs(hebdate = new HDate(daysInMonth(month, year), month, year))) {\n\t\tmonth = (month % MONTH_CNT(year)) + 1;\n\t}\n\n\treturn hebdate.setLocation.apply(hebdate.setDate(d - hebrew2abs(hebdate.setDate(1)) + 1), HDate.defaultLocation);\n}\n\nprototype.greg = function() {\n\treturn greg.abs2greg(hebrew2abs(this));\n};\n\nprototype.gregEve = function() {\n\treturn this.prev().sunset();\n};\n\nprototype[abs] = function() {\n\treturn hebrew2abs(this);\n};\n\nprototype.toString = function(o) {\n\treturn c.LANG([this[getDate](), null, gematriya(this[getDate]())], o) + ' ' +\n\t\tthis.getMonthName(o) + ' ' +\n\t\tc.LANG([this[getFullYear](), null, gematriya(this[getFullYear]())], o);\n};\n\nprototype.getMonthName = function(o) {\n\treturn c.LANG(c.monthNames[+this.isLeapYear()][this[getMonth]()], o);\n};\n\nprototype.setCity = function(city) {\n\treturn this.setLocation(cities.getCity(city));\n};\n\nprototype.setLocation = function(lat, lon) {\n\tif (typeof lat == 'object' && !Array.isArray(lat)) {\n\t\tlon = lat.long;\n\t\tlat = lat.lat;\n\t}\n\tif (Array.isArray(lat) && typeof lon == 'undefined') {\n\t\tlon = lat[0];\n\t\tlat = lat[1];\n\t}\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to HDate.setLocation()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to HDate.setLocation()');\n\t}\n\n\tthis.lat = lat;\n\tthis.long = lon;\n\n\tthis.il = cities.getCity(cities.nearest(lat, lon))[2];\n\n\treturn this;\n};\n\nfunction suntime(hdate) {\n\t// reset the date to midday before calling suncalc api\n\t// https://github.com/mourner/suncalc/issues/11\n\tvar date = hdate.greg();\n\treturn suncalc.getTimes(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0, 0), hdate.lat, hdate.long);\n}\n\nprototype.sunrise = function() {\n\treturn suntime(this).sunrise;\n};\n\nprototype.sunset = function() {\n\treturn suntime(this).sunset;\n};\n\nprototype[hour] = function() {\n\treturn (this.sunset() - this.sunrise()) / 12; // ms in hour\n};\n\nprototype.hourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this[hour]() / (1000 * 60);\n};\n\nprototype.nightHour = function() {\n\treturn (this.sunrise() - this.gregEve()) / 12; // ms in hour\n};\n\nprototype.nightHourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this.nightHour() / (1000 * 60);\n};\n\nfunction hourOffset(hdate, hours) {\n\treturn new Date(hdate.sunrise()[getTime]() + (hdate[hour]() * hours));\n}\n\nvar zemanim = {\n\tchatzot: function(hdate) {\n\t\treturn hourOffset(hdate, 6);\n\t},\n\tchatzot_night: function(hdate) {\n\t\treturn new Date(hdate.sunrise()[getTime]() - (hdate.nightHour() * 6));\n\t},\n\talot_hashachar: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\talot_hashacher: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\tmisheyakir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir;\n\t},\n\tmisheyakir_machmir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir_machmir;\n\t},\n\tsof_zman_shma: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 3);\n\t},\n\tsof_zman_tfilla: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 4);\n\t},\n\tmincha_gedola: function(hdate) {\n\t\treturn hourOffset(hdate, 6.5);\n\t},\n\tmincha_ketana: function(hdate) {\n\t\treturn hourOffset(hdate, 9.5);\n\t},\n\tplag_hamincha: function(hdate) {\n\t\treturn hourOffset(hdate, 10.75);\n\t},\n\ttzeit: function(hdate) {\n\t\treturn suntime(hdate).tzeit;\n\t},\n\tneitz_hachama: function(hdate) {\n\t\treturn hdate.sunrise();\n\t},\n\tshkiah: function(hdate) {\n\t\treturn hdate.sunset();\n\t}\n};\n\nprototype.getZemanim = function() {\n\treturn c.map(zemanim, function(z){\n\t\treturn z(this);\n\t}, this);\n};\n\nHDate.addZeman = function(zeman, func) {\n\tzemanim[zeman] = func;\n};\n\nprototype.next = function() {\n\treturn abs2hebrew(this.abs() + 1).setLocation(this.lat, this.long);\n};\n\nprototype.prev = function() {\n\treturn abs2hebrew(this.abs() - 1).setLocation(this.lat, this.long);\n};\n\nprototype.isSameDate = function(other) {\n\tif (other instanceof HDate) {\n\t\tif (other[getFullYear]() == -1) {\n\t\t\tother = new HDate(other).setFullYear(this[getFullYear]());\n\t\t}\n\t\treturn this[abs]() == other[abs]();\n\t}\n\treturn false;\n};\n\nfunction onOrBefore(day, t, offset) {\n\treturn new HDate(dayOnOrBefore(day, t[abs]() + offset));\n}\n\nprototype.before = function(day) {\n\treturn onOrBefore(day, this, -1);\n};\n\nprototype.onOrBefore = function(day) {\n\treturn onOrBefore(day, this, 0);\n};\n\nprototype.nearest = function(day) {\n\treturn onOrBefore(day, this, 3);\n};\n\nprototype.onOrAfter = function(day) {\n\treturn onOrBefore(day, this, 6);\n};\n\nprototype.after = function(day) {\n\treturn onOrBefore(day, this, 7);\n};\n\nmodule.exports = HDate;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tgematriya = require('gematriya');\n\nvar __cache = {};\n\n// for byte optimizations\n\nvar dayOnOrBefore = c.dayOnOrBefore,\n\tmonths = c.months,\n\tdays = c.days,\n\tTISHREI = months.TISHREI,\n\tKISLEV = months.KISLEV,\n\tNISAN = months.NISAN,\n\tSAT = days.SAT,\n\tgetDay = 'getDay',\n\tabs = 'abs',\n\tShabbat = 'Shabbat',\n\tShabbos = 'Shabbos';\n\nfunction Chanukah(day) {\n\treturn ['Chanukah: Candle ' + day, 0, 'חנוכה: נר ' + gematriya(day)];\n}\n\nfunction CHM(desc) {\n\treturn [desc[0] + ' (CH\"M)', desc[1] ? desc[1] + ' (CH\"M)' : desc[1], desc[2] ? desc[2] + ' )חה\"ם(' : desc[2]];\n}\n\nfunction Sukkot(day) {\n\treturn ['Sukkot: ' + day, 'Succos: ' + day, 'סוכות יום ' + gematriya(day)];\n}\n\nfunction Pesach(day) {\n\treturn ['Pesach: ' + day, 0, 'פסח יום ' + gematriya(day)];\n}\n\nvar USER_EVENT = 1,\n\tLIGHT_CANDLES = 2,\n\tYOM_TOV_ENDS = 4,\n\tCHUL_ONLY = 8, // chutz l'aretz (Diaspora)\n\tIL_ONLY = 16, // b'aretz (Israel)\n\tLIGHT_CANDLES_TZEIS = 32;\n\nexports.masks = {\n\tUSER_EVENT : USER_EVENT,\n\tLIGHT_CANDLES : LIGHT_CANDLES,\n\tYOM_TOV_ENDS : YOM_TOV_ENDS,\n\tCHUL_ONLY : CHUL_ONLY,\n\tIL_ONLY : IL_ONLY,\n\tLIGHT_CANDLES_TZEIS: LIGHT_CANDLES_TZEIS\n};\n\nfunction Event(date, desc, mask) {\n\tvar me = this;\n\tme.date = new HDate(date);\n\tme.desc = typeof desc != 'object' ? [desc] : desc;\n\n\tme.USER_EVENT = !!( mask & USER_EVENT );\n\tme.LIGHT_CANDLES = !!( mask & LIGHT_CANDLES );\n\tme.YOM_TOV_ENDS = !!( mask & YOM_TOV_ENDS );\n\tme.CHUL_ONLY = !!( mask & CHUL_ONLY );\n\tme.IL_ONLY = !!( mask & IL_ONLY );\n\tme.LIGHT_CANDLES_TZEIS = !!( mask & LIGHT_CANDLES_TZEIS );\n}\n\nEvent.prototype.is = function(date, il) {\n\tdate = new HDate(date), myDate = this.date;\n\tif (arguments.length < 2) {\n\t\t//il = Event.isIL;\n\t\til = date.il;\n\t}\n\tif (date.getDate() != myDate.getDate() || date.getMonth() != myDate.getMonth()) {\n\t\treturn false;\n\t}\n\tif (date.getFullYear() != myDate.getFullYear()) {\n\t\treturn false;\n\t}\n\tif (il && this.CHUL_ONLY || !il && this.IL_ONLY) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEvent.prototype.masks = function() {\n\tvar me = this;\n\treturn (me.USER_EVENT && USER_EVENT) |\n\t\t (me.LIGHT_CANDLES && LIGHT_CANDLES) |\n\t\t (me.YOM_TOV_ENDS && YOM_TOV_ENDS) |\n\t\t (me.CHUL_ONLY && CHUL_ONLY) |\n\t\t (me.IL_ONLY && IL_ONLY) |\n\t\t (me.LIGHT_CANDLES_TZEIS && LIGHT_CANDLES_TZEIS);\n};\n\nEvent.prototype.getDesc = function(o) {\n\treturn c.LANG(this.desc, o);\n};\n\nEvent.prototype.candleLighting = function() {\n\tvar date = this.date;\n\tif (this.LIGHT_CANDLES) {\n\t\treturn new Date(date.sunset() - (Event.candleLighting * 60 * 1000));\n\t} else if (this.LIGHT_CANDLES_TZEIS) {\n\t\treturn date.getZemanim().tzeit;\n\t}\n\treturn null;\n};\n\nEvent.prototype.havdalah = function() {\n\tif (this.YOM_TOV_ENDS) {\n\t\treturn new Date(this.date.sunset().getTime() + (Event.havdalah * 60 * 1000));\n\t}\n\treturn null;\n};\n\nEvent.prototype.routine = (function(){\n\tfunction routine(){\n\t\treturn !!~routine.names.indexOf(this.getDesc('s'));\n\t}\n\troutine.names = [Shabbat, 'Erev ' + Shabbat];\n\treturn routine;\n})();\n\nEvent.isIL = false;\n\nEvent.candleLighting = 18;\n\nEvent.havdalah = 42;\n\nexports.Event = Event;\n\nexports.year = function(year) {\n\tif (__cache[year]) {\n\t\treturn __cache[year];\n\t}\n\n\tvar\tRH = new HDate(1, TISHREI, year),\n\t\tpesach = new HDate(15, NISAN, year),\n\t\ttmpDate;\n\n\tvar h = {};\n\n\tfunction add(ev) {\n\t\tif (Array.isArray(ev)) {\n\t\t\tev.forEach(function(e){\n\t\t\t\tadd(e);\n\t\t\t});\n\t\t} else {\n\t\t\tif (h[ev.date]) {\n\t\t\t\th[ev.date].push(ev);\n\t\t\t} else {\n\t\t\t\th[ev.date] = [ev];\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.defineProperty(h, 'add', {value: add});\n\n\tadd([ // standard holidays that don't shift based on year\n\t\tnew Event(\n\t\t\tRH,\n\t\t\t['Rosh Hashana 1', 0, 'ראש השנה א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS\n\t\t), new Event(\n\t\t\tnew HDate(2, TISHREI, year),\n\t\t\t['Rosh Hashana 2', 0, 'ראש השנה ב\\''],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(3 + (RH[getDay]() == days.THU), TISHREI, year), // push off to SUN if RH is THU\n\t\t\t['Tzom Gedaliah', 0, 'צום גדליה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(9, TISHREI, year),\n\t\t\t['Erev Yom Kippur', 0, 'ערב יום כיפור'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event( // first SAT after RH\n\t\t\tnew HDate(dayOnOrBefore(SAT, 7 + RH[abs]())),\n\t\t\t[Shabbat + ' Shuva', Shabbos + ' Shuvah', 'שבת שובה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(10, TISHREI, year),\n\t\t\t['Yom Kippur', 0, 'יום כיפור'],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(14, TISHREI, year),\n\t\t\t['Erev Sukkot', 'Erev Succos', 'ערב סוכות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tSukkot(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tCHM(Sukkot(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(17, TISHREI, year),\n\t\t\tCHM(Sukkot(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, TISHREI, year),\n\t\t\tCHM(Sukkot(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, TISHREI, year),\n\t\t\tCHM(Sukkot(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, TISHREI, year),\n\t\t\tCHM(Sukkot(6)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(21, TISHREI, year),\n\t\t\t['Sukkot: 7 (Hoshana Raba)', 'Succos: 7 (Hoshana Raba)', 'סוכות יום ז\\' )הושנע רבה('],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת'],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret / Simchat Torah', 'Shmini Atzeres / Simchas Torah', 'שמיני עצרת / שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(23, TISHREI, year),\n\t\t\t['Simchat Torah', 'Simchas Torah', 'שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(24, KISLEV, year),\n\t\t\t['Erev Chanukah', 0, 'ערב חנוכה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(25, KISLEV, year),\n\t\t\tChanukah(1),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(26, KISLEV, year),\n\t\t\tChanukah(2),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(27, KISLEV, year),\n\t\t\tChanukah(3),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(28, KISLEV, year),\n\t\t\tChanukah(4),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, KISLEV, year),\n\t\t\tChanukah(5),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(30, KISLEV, year), // yes, i know these are wrong\n\t\t\tChanukah(6),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(31, KISLEV, year), // HDate() corrects the month automatically\n\t\t\tChanukah(7),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(32, KISLEV, year),\n\t\t\tChanukah(8),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.SHVAT, year),\n\t\t\t[\"Tu B'Shvat\", 0, 'ט\"ו בשבט'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 43)),\n\t\t\t[Shabbat + ' Shekalim', Shabbos + ' Shekalim', 'שבת שקלים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 30)),\n\t\t\t[Shabbat + ' Zachor', Shabbos + ' Zachor', 'שבת זכור'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(pesach[abs]() - (pesach[getDay]() == days.TUE ? 33 : 31)),\n\t\t\t[\"Ta'anit Esther\", \"Ta'anis Esther\", 'תענית אסתר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(13, months.ADAR_II, year),\n\t\t\t['Erev Purim', 0, 'ערב פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, months.ADAR_II, year),\n\t\t\t['Purim', 0, 'פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.ADAR_II, year),\n\t\t\t['Shushan Purim', 0, 'שושן פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14) - 7),\n\t\t\t[Shabbat + ' Parah', Shabbos + ' Parah', 'שבת פרה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14)),\n\t\t\t[Shabbat + ' Hachodesh', Shabbos + ' Hachodesh', 'שבת החודש'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 1)),\n\t\t\t[Shabbat + ' HaGadol', Shabbos + ' HaGadol', 'שבת הגדול'],\n\t\t\t0\n\t\t), new Event(\n\t\t\t// if the fast falls on Shabbat, move to Thursday\n\t\t\tpesach.prev()[getDay]() == SAT ? pesach.onOrBefore(days.THU) : new HDate(14, NISAN, year),\n\t\t\t[\"Ta'anit Bechorot\", \"Ta'anis Bechoros\", 'תענית בכורות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, NISAN, year),\n\t\t\t['Erev Pesach', 0, 'ערב פסח'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tPesach(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tCHM(Pesach(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\t['Start counting Omer', 0, 'התחלת ספירת העומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(17, NISAN, year),\n\t\t\tCHM(Pesach(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, NISAN, year),\n\t\t\tCHM(Pesach(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, NISAN, year),\n\t\t\tCHM(Pesach(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, NISAN, year),\n\t\t\tCHM(Pesach(6)),\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, NISAN, year),\n\t\t\tPesach(8),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(14, months.IYYAR, year),\n\t\t\t['Pesach Sheni', 0, 'פסח שני'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, months.IYYAR, year),\n\t\t\t[\"Lag B'Omer\", 0, 'ל\"ג בעומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(5, months.SIVAN, year),\n\t\t\t['Erev Shavuot', 'Erev Shavuos', 'ערב שבועות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot 1', 'Shavuos 1', 'שבועות א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot', 'Shavuos', 'שבועות'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(7, months.SIVAN, year),\n\t\t\t['Shavuot 2', 'Shavuos 2', 'שבועות ב\\''],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1)[abs]() - 4)),\n\t\t\t['Leil Selichot', 'Leil Selichos', 'ליל סליחות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, months.ELUL, year),\n\t\t\t['Erev Rosh Hashana', 0, 'ערב ראש השנה'],\n\t\t\tLIGHT_CANDLES\n\t\t)\n\t]);\n\n\ttmpDate = new HDate(10, months.TEVET, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Asara B'Tevet\", 0, 'עשרה בטבת'],\n\t\t0\n\t));\n\n\tif (c.LEAP(year)) {\n\t\tadd(new Event(\n\t\t\tnew HDate(14, months.ADAR_I, year),\n\t\t\t['Purim Katan', 0, 'פורים קטן'],\n\t\t\t0\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(15, months.ADAR_I, year),\n\t\t\t['Shushan Purim Katan', 0, 'שושן פורים קטן'],\n\t\t\t0\n\t\t));\n\t}\n\n\tif (year >= 5711) { // Yom HaShoah first observed in 1951\n\t\ttmpDate = new HDate(27, NISAN, year);\n\t\t/* When the actual date of Yom Hashoah falls on a Friday, the\n\t\t * state of Israel observes Yom Hashoah on the preceding\n\t\t * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n\t\t * on the following Monday.\n\t\t * http://www.ushmm.org/remembrance/dor/calendar/\n\t\t */\n\n\t\tif (tmpDate[getDay]() == days.FRI) {\n\t\t\ttmpDate = tmpDate.prev();\n\t\t} else if (tmpDate[getDay]() == days.SUN) {\n\t\t\ttmpDate = tmpDate.next();\n\t\t}\n\n\t\tadd(new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaShoah', 0, 'יום השואה'],\n\t\t\t0\n\t\t));\n\t}\n\n\tadd(atzmaut(year));\n\n\tif (year >= 5727) { // Yom Yerushalayim only celebrated after 1967\n\t\tadd(new Event(\n\t\t\tnew HDate(29, months.IYYAR, year),\n\t\t\t['Yom Yerushalayim', 0, 'יום ירושלים'],\n\t\t\t0\n\t\t));\n\t}\n\n\ttmpDate = new HDate(17, months.TAMUZ, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Shiva-Asar B'Tamuz\", 0, \"צום יז' בתמוז\"],\n\t\t0\n\t));\n\n\ttmpDate = new HDate(9, months.AV, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]())),\n\t\t[Shabbat + ' Chazon', Shabbos + ' Chazon', 'שבת חזון'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate.prev(),\n\t\t[\"Erev Tish'a B'Av\", 0, 'ערב תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Tish'a B'Av\", 0, 'תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]() + 7)),\n\t\t[Shabbat + ' Nachamu', Shabbos + ' Nachamu', 'שבת נחמו'],\n\t\t0\n\t));\n\n\tfor (var day = 6; day < c.daysInYear(year); day += 7) {\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t[Shabbat, Shabbos, 'שבת'],\n\t\t\tYOM_TOV_ENDS\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(days.FRI, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t['Erev ' + Shabbat, 'Erev ' + Shabbos, 'ערב שבת'],\n\t\t\tLIGHT_CANDLES\n\t\t));\n\t}\n\n\tfor (var month = 1; month <= c.MONTH_CNT(year); month++) {\n\t\tif ((month == NISAN ? c.daysInMonth(c.MONTH_CNT(year - 1), year - 1) :\n\t\t\t\tc.daysInMonth(month - 1, year)) == 30) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh 2', 0, \"ראש חודש ב'\"],\n\t\t\t\t0\n\t\t\t));\n\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(30, month - 1, year),\n\t\t\t\t['Rosh Chodesh 1', 0, \"ראש חודש א'\"],\n\t\t\t\t0\n\t\t\t));\n\t\t} else if (month !== TISHREI) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh', 0, 'ראש חודש'],\n\t\t\t\t0\n\t\t\t));\n\t\t}\n\n\t\tif (month == months.ELUL) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd(new Event(\n\t\t\tnew HDate(29, month, year).onOrBefore(SAT),\n\t\t\t[Shabbat + ' Mevarchim', Shabbos + ' Mevorchim', 'שבת מברכים'],\n\t\t\t0\n\t\t));\n\t}\n\n\treturn __cache[year] = h;\n};\n\nfunction atzmaut(year) {\n\tif (year >= 5708) { // Yom HaAtzma'ut only celebrated after 1948\n\t\tvar tmpDate = new HDate(1, months.IYYAR, year), pesach = new HDate(15, NISAN, year);\n\n\t\tif (pesach[getDay]() == days.SUN) {\n\t\t\ttmpDate.setDate(2);\n\t\t} else if (pesach[getDay]() == SAT) {\n\t\t\ttmpDate.setDate(3);\n\t\t} else if (year < 5764) {\n\t\t\ttmpDate.setDate(4);\n\t\t} else if (pesach[getDay]() == days.TUE) {\n\t\t\ttmpDate.setDate(5);\n\t\t} else {\n\t\t\ttmpDate.setDate(4);\n\t\t}\n\n\t\treturn [new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaZikaron', 0, 'יום הזיכרון'],\n\t\t\t0\n\t\t), new Event(\n\t\t\ttmpDate.next(),\n\t\t\t[\"Yom HaAtzma'ut\", 0, 'יום העצמאות'],\n\t\t\t0\n\t\t)];\n\t}\n\treturn [];\n}\nexports.atzmaut = atzmaut;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*\n * Convert numbers to gematriya representation, and vice-versa.\n *\n * Licensed MIT.\n *\n * Copyright (c) 2014 Eyal Schachter\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(){\n\tvar letters = {}, numbers = {\n\t\t'': 0,\n\t\tא: 1,\n\t\tב: 2,\n\t\tג: 3,\n\t\tד: 4,\n\t\tה: 5,\n\t\tו: 6,\n\t\tז: 7,\n\t\tח: 8,\n\t\tט: 9,\n\t\tי: 10,\n\t\tכ: 20,\n\t\tל: 30,\n\t\tמ: 40,\n\t\tנ: 50,\n\t\tס: 60,\n\t\tע: 70,\n\t\tפ: 80,\n\t\tצ: 90,\n\t\tק: 100,\n\t\tר: 200,\n\t\tש: 300,\n\t\tת: 400,\n\t\tתק: 500,\n\t\tתר: 600,\n\t\tתש: 700,\n\t\tתת: 800,\n\t\tתתק: 900,\n\t\tתתר: 1000\n\t}, i;\n\tfor (i in numbers) {\n\t\tletters[numbers[i]] = i;\n\t}\n\n\tfunction gematriya(num, limit) {\n\t\tif (typeof num !== 'number' && typeof num !== 'string') {\n\t\t\tthrow new TypeError('non-number or string given to gematriya()');\n\t\t}\n\t\tvar str = typeof num === 'string';\n\t\tif (str) {\n\t\t\tnum = num.replace(/('|\")/g,'');\n\t\t}\n\t\tnum = num.toString().split('').reverse();\n\t\tif (!str && limit) {\n\t\t\tnum = num.slice(0, limit);\n\t\t}\n\n\t\tnum = num.map(function g(n,i){\n\t\t\tif (str) {\n\t\t\t\treturn limit && numbers[n] < numbers[num[i - 1]] && numbers[n] < 100 ? numbers[n] * 1000 : numbers[n];\n\t\t\t} else {\n\t\t\t\tif (parseInt(n, 10) * Math.pow(10, i) > 1000) {\n\t\t\t\t\treturn g(n, i-3);\n\t\t\t\t}\n\t\t\t\treturn letters[parseInt(n, 10) * Math.pow(10, i)];\n\t\t\t}\n\t\t});\n\n\t\tif (str) {\n\t\t\treturn num.reduce(function(o,t){\n\t\t\t\treturn o + t;\n\t\t\t}, 0);\n\t\t} else {\n\t\t\tnum = num.reverse().join('').replace(/יה/g,'טו').replace(/יו/g,'טז').split('');\n\n\t\t\tif (num.length === 1) {\n\t\t\t\tnum.push(\"'\");\n\t\t\t} else if (num.length > 1) {\n\t\t\t\tnum.splice(-1, 0, '\"');\n\t\t\t}\n\n\t\t\treturn num.join('');\n\t\t}\n\t}\n\n\tif (typeof module !== 'undefined') {\n\t\tmodule.exports = gematriya;\n\t} else {\n\t\twindow.gematriya = gematriya;\n\t}\n})();\n","/*\n (c) 2011-2015, Vladimir Agafonkin\n SunCalc is a JavaScript library for calculating sun/moon position and light phases.\n https://github.com/mourner/suncalc\n*/\n\n(function () { 'use strict';\n\n// shortcuts for easier to read formulas\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos,\n tan = Math.tan,\n asin = Math.asin,\n atan = Math.atan2,\n acos = Math.acos,\n rad = PI / 180;\n\n// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas\n\n\n// date/time constants and conversions\n\nvar dayMs = 1000 * 60 * 60 * 24,\n J1970 = 2440588,\n J2000 = 2451545;\n\nfunction toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; }\nfunction fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); }\nfunction toDays(date) { return toJulian(date) - J2000; }\n\n\n// general calculations for position\n\nvar e = rad * 23.4397; // obliquity of the Earth\n\nfunction rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); }\nfunction declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); }\n\nfunction azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); }\nfunction altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); }\n\nfunction siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; }\n\nfunction astroRefraction(h) {\n if (h < 0) // the following formula works for positive altitudes only.\n h = 0; // if h = -0.08901179 a div/0 would occur.\n\n // formula 16.4 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad:\n return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));\n}\n\n// general sun calculations\n\nfunction solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); }\n\nfunction eclipticLongitude(M) {\n\n var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center\n P = rad * 102.9372; // perihelion of the Earth\n\n return M + C + P + PI;\n}\n\nfunction sunCoords(d) {\n\n var M = solarMeanAnomaly(d),\n L = eclipticLongitude(M);\n\n return {\n dec: declination(L, 0),\n ra: rightAscension(L, 0)\n };\n}\n\n\nvar SunCalc = {};\n\n\n// calculates sun position for a given date and latitude/longitude\n\nSunCalc.getPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = sunCoords(d),\n H = siderealTime(d, lw) - c.ra;\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: altitude(H, phi, c.dec)\n };\n};\n\n\n// sun times configuration (angle, morning name, evening name)\n\nvar times = SunCalc.times = [\n [-0.833, 'sunrise', 'sunset' ],\n [ -0.3, 'sunriseEnd', 'sunsetStart' ],\n [ -6, 'dawn', 'dusk' ],\n [ -12, 'nauticalDawn', 'nauticalDusk'],\n [ -18, 'nightEnd', 'night' ],\n [ 6, 'goldenHourEnd', 'goldenHour' ]\n];\n\n// adds a custom time to the times config\n\nSunCalc.addTime = function (angle, riseName, setName) {\n times.push([angle, riseName, setName]);\n};\n\n\n// calculations for sun times\n\nvar J0 = 0.0009;\n\nfunction julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); }\n\nfunction approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; }\nfunction solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); }\n\nfunction hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); }\n\n// returns set time for the given sun altitude\nfunction getSetJ(h, lw, phi, dec, n, M, L) {\n\n var w = hourAngle(h, phi, dec),\n a = approxTransit(w, lw, n);\n return solarTransitJ(a, M, L);\n}\n\n\n// calculates sun times for a given date and latitude/longitude\n\nSunCalc.getTimes = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n\n d = toDays(date),\n n = julianCycle(d, lw),\n ds = approxTransit(0, lw, n),\n\n M = solarMeanAnomaly(ds),\n L = eclipticLongitude(M),\n dec = declination(L, 0),\n\n Jnoon = solarTransitJ(ds, M, L),\n\n i, len, time, Jset, Jrise;\n\n\n var result = {\n solarNoon: fromJulian(Jnoon),\n nadir: fromJulian(Jnoon - 0.5)\n };\n\n for (i = 0, len = times.length; i < len; i += 1) {\n time = times[i];\n\n Jset = getSetJ(time[0] * rad, lw, phi, dec, n, M, L);\n Jrise = Jnoon - (Jset - Jnoon);\n\n result[time[1]] = fromJulian(Jrise);\n result[time[2]] = fromJulian(Jset);\n }\n\n return result;\n};\n\n\n// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas\n\nfunction moonCoords(d) { // geocentric ecliptic coordinates of the moon\n\n var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude\n M = rad * (134.963 + 13.064993 * d), // mean anomaly\n F = rad * (93.272 + 13.229350 * d), // mean distance\n\n l = L + rad * 6.289 * sin(M), // longitude\n b = rad * 5.128 * sin(F), // latitude\n dt = 385001 - 20905 * cos(M); // distance to the moon in km\n\n return {\n ra: rightAscension(l, b),\n dec: declination(l, b),\n dist: dt\n };\n}\n\nSunCalc.getMoonPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = moonCoords(d),\n H = siderealTime(d, lw) - c.ra,\n h = altitude(H, phi, c.dec),\n // formula 14.1 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));\n\n h = h + astroRefraction(h); // altitude correction for refraction\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: h,\n distance: c.dist,\n parallacticAngle: pa\n };\n};\n\n\n// calculations for illumination parameters of the moon,\n// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and\n// Chapter 48 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n\nSunCalc.getMoonIllumination = function (date) {\n\n var d = toDays(date || new Date()),\n s = sunCoords(d),\n m = moonCoords(d),\n\n sdist = 149598000, // distance from Earth to Sun in km\n\n phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)),\n inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)),\n angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) -\n cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra));\n\n return {\n fraction: (1 + cos(inc)) / 2,\n phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI,\n angle: angle\n };\n};\n\n\nfunction hoursLater(date, h) {\n return new Date(date.valueOf() + h * dayMs / 24);\n}\n\n// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article\n\nSunCalc.getMoonTimes = function (date, lat, lng, inUTC) {\n var t = new Date(date);\n if (inUTC) t.setUTCHours(0, 0, 0, 0);\n else t.setHours(0, 0, 0, 0);\n\n var hc = 0.133 * rad,\n h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc,\n h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx;\n\n // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)\n for (var i = 1; i <= 24; i += 2) {\n h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc;\n h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc;\n\n a = (h0 + h2) / 2 - h1;\n b = (h2 - h0) / 2;\n xe = -b / (2 * a);\n ye = (a * xe + b) * xe + h1;\n d = b * b - 4 * a * h1;\n roots = 0;\n\n if (d >= 0) {\n dx = Math.sqrt(d) / (Math.abs(a) * 2);\n x1 = xe - dx;\n x2 = xe + dx;\n if (Math.abs(x1) <= 1) roots++;\n if (Math.abs(x2) <= 1) roots++;\n if (x1 < -1) x1 = x2;\n }\n\n if (roots === 1) {\n if (h0 < 0) rise = i + x1;\n else set = i + x1;\n\n } else if (roots === 2) {\n rise = i + (ye < 0 ? x2 : x1);\n set = i + (ye < 0 ? x1 : x2);\n }\n\n if (rise && set) break;\n\n h0 = h2;\n }\n\n var result = {};\n\n if (rise) result.rise = hoursLater(t, rise);\n if (set) result.set = hoursLater(t, set);\n\n if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true;\n\n return result;\n};\n\n\n// export as Node module / AMD module / browser variable\nif (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc;\nelse if (typeof define === 'function' && define.amd) define(SunCalc);\nelse window.SunCalc = SunCalc;\n\n}());\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n/*\n * Many of the following algorithms were taken from hebrew calendar\n * routines by Maimonedes, from his Mishneh Torah, and implemented by\n * Nachum Dershowitz Department of Computer Science\n * (217) 333-4219 University of Illinois at Urbana-Champaign\n * nachum@cs.uiuc.edu 1304 West Springfield Avenue\n * Urbana, Illinois 61801\n *\n * The routines were included in the emacs 19 distribution.\n *\n */\nvar c = require('./common'), HDate = require('./hdate');\n\nvar concat = 'concat', range = c.range; // for client optimization\n\nvar INCOMPLETE = 0,\n\tREGULAR = 1,\n\tCOMPLETE = 2;\n\nfunction Sedra(hebYr, il) { // the Hebrew year\n\til = !!il;\n\tvar long_c = c.lngChesh(hebYr);\n\tvar short_k = c.shrtKis(hebYr);\n\tvar type;\n\tthis.year = hebYr;\n\tif (long_c && !short_k) {\n\t\ttype = COMPLETE;\n\t} else if (!long_c && short_k) {\n\t\ttype = INCOMPLETE;\n\t} else {\n\t\ttype = REGULAR;\n\t}\n\n\tvar rosh_hashana = new HDate(1, c.months.TISHREI, hebYr).abs();\n\tvar rosh_hashana_day = (rosh_hashana % 7) + 1;\n\n\t// find the first Saturday on or after Rosh Hashana\n\tthis.first_saturday = c.dayOnOrBefore(6, rosh_hashana + 6);\n\tvar leap = +c.LEAP(hebYr);\n\tthis.type = type;\n\tthis.rosh_hashana_day = rosh_hashana_day;\n\tthis.leap = leap;\n\tthis.il = il;\n\n\tvar core = \"\" + leap + rosh_hashana_day + type;\n\tif (types[core]) {\n\t\tthis.theSedraArray = types[core];\n\t} else {\n\t\tthis.theSedraArray = types[core + (+il)]; // cast to num, then concat\n\t}\n\n\tif (!this.theSedraArray) {\n\t\tconsole.log(this);\n\t\tthrow new TypeError(\"improper sedra year type calculated.\");\n\t}\n}\n\nvar parshiot = Sedra.parshiot = [\n\t[ 'Bereshit', 'Bereshis', 'בראשית' ], // 0\n\t[ 'Noach', 0, 'נח' ],\n\t[ 'Lech-Lecha', 0, 'לך-לך' ],\n\t[ 'Vayera', 0, 'וירא' ],\n\t[ 'Chayei Sara', 0, 'חי שרה' ],\n\t[ 'Toldot', 'Toldos', 'תולדות' ],\n\t[ 'Vayetzei', 0, 'ויצא' ],\n\t[ 'Vayishlach', 0, 'וישלח' ],\n\t[ 'Vayeshev', 0, 'וישב' ],\n\t[ 'Miketz', 0, 'מקץ' ],\n\t[ 'Vayigash', 0, 'ויגש' ], // 10\n\t[ 'Vayechi', 0, 'ויחי' ],\n\t[ 'Shemot', 'Shemos', 'שמות' ],\n\t[ 'Vaera', 0, 'וארא' ],\n\t[ 'Bo', 0, 'בא' ],\n\t[ 'Beshalach', 0, 'בשלח' ],\n\t[ 'Yitro', 'Yisro', 'יתרו' ],\n\t[ 'Mishpatim', 0, 'משפטים' ],\n\t[ 'Terumah', 0, 'תרומה' ],\n\t[ 'Tetzaveh', 0, 'תצוה' ],\n\t[ 'Ki Tisa', 'Ki Sisa', 'כי תשא' ], // 20\n\t[ 'Vayakhel', 0, 'ויקהל' ],\n\t[ 'Pekudei', 0, 'פקודי' ],\n\t[ 'Vayikra', 0, 'ויקרא' ],\n\t[ 'Tzav', 0, 'צו' ],\n\t[ 'Shmini', 0, 'שמיני' ],\n\t[ 'Tazria', 0, 'תזריע' ],\n\t[ 'Metzora', 0, 'מצרע' ],\n\t[ 'Achrei Mot', 'Achrei Mos', 'אחרי מות' ],\n\t[ 'Kedoshim', 0, 'קדשים' ],\n\t[ 'Emor', 0, 'אמור' ], // 30\n\t[ 'Behar', 0, 'בהר' ],\n\t[ 'Bechukotai', 'Bechukosai', 'בחקתי' ],\n\t[ 'Bamidbar', 0, 'במדבר' ],\n\t[ 'Nasso', 0, 'נשא' ],\n\t[ 'Beha\\'alotcha', 'Beha\\'aloscha', 'בהעלתך' ],\n\t[ 'Sh\\'lach', 0, 'שלח לך' ],\n\t[ 'Korach', 0, 'קורח' ],\n\t[ 'Chukat', 'Chukas', 'חקת' ],\n\t[ 'Balak', 0, 'בלק' ],\n\t[ 'Pinchas', 0, 'פינחס' ], // 40\n\t[ 'Matot', 'Matos', 'מטות' ],\n\t[ 'Masei', 0, 'מסעי' ],\n\t[ 'Devarim', 0, 'דברים' ],\n\t[ 'Vaetchanan', 'V\\'eschanan', 'ואתחנן' ],\n\t[ 'Eikev', 0, 'עקב' ],\n\t[ 'Re\\'eh', 0, 'ראה' ],\n\t[ 'Shoftim', 0, 'שופטים' ],\n\t[ 'Ki Teitzei', 'Ki Seitzei', 'כי תצא' ],\n\t[ 'Ki Tavo', 'Ki Savo', 'כי תבוא' ],\n\t[ 'Nitzavim', 0, 'נצבים' ], // 50\n\t[ 'Vayeilech', 0, 'וילך' ],\n\t[ 'Ha\\'Azinu', 0, 'האזינו' ]\n];\n\n\n// parsha doubler/undoubler\nfunction D(p) {\n\treturn -p;\n}\n\n// these are wrapped to protect them from [].concat()\nvar RH = [[ 'Rosh Hashana', 0, 'ראש השנה' ]]; //0\nvar YK = [[ 'Yom Kippur', 0, 'יום כיפור' ]]; //1\n\nvar SUKKOT = [[ 'Sukkot', 'Succos', 'סוכות' ]]; //0\nvar CHMSUKOT = [[ 'Chol hamoed Sukkot', 'Chol hamoed Succos', 'חול המועד סוכות' ]]; //0\nvar SHMINI = [[ 'Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת' ]]; //0\nvar EOY = [[ 'End-of-Year: Simchat-Torah, Sukkot', 'End-of-Year: Simchas-Torah, Succos', 'סופשנה: סוכות וסמחת תורה' ]]; //0\n\nvar PESACH = [[ 'Pesach', 0, 'פסח' ]]; //25\nvar CHMPESACH = [[ 'Chol hamoed Pesach', 0, 'חול המועד פסח' ]]; //25\nvar PESACH7 = [[ 'Second days of Pesach', 0, 'שביעי של פסח' ]]; //25\n\nvar SHAVUOT = [[ 'Shavuot', 'Shavuos', 'שבועות' ]]; //33\n\n\n\n// The ordinary year types (keviot)\n\n// names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n\nvar types = {\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g. 5753\n\t'020' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t//e.g. 5756\n\t'0220' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28),\n\t\t30, D(31), 33, SHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t//e.g. 5701\n\t'0510' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH, PESACH,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t// e.g. 5745\n\t'0511' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH,\n\t\t25, D(26), D(28), range(30, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Sunday. */\n\t//e.g. 5754\n\t'052' : [52][concat](YK, CHMSUKOT, range(0, 24), PESACH7, 25, D(26),\n\t\tD(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n\t * each have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5761\n\t'070' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, PESACH7,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Tuesday. */\n\t//e.g. 5716\n\t'072' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, CHMPESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\n\t/* -- The leap year types (keviot) -- */\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1200' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1201' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1220' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH,\n\t\tPESACH, range(28, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1221' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH, range(28, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n\t * Kislev both have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5768\n\t'150' : [52][concat](YK, CHMSUKOT, range(0, 28), PESACH7, range(29, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev both have 30 days), and has Passover start on Tuesday. */\n\t//eg. 5771\n\t'152' : [52][concat](YK, CHMSUKOT, range(0, 28), CHMPESACH, range(29, 49), D(50)),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g.5757\n\t'170' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t'1720' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t)\n};\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n//e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\n\nSedra.prototype.get = function(hDate) {\n\treturn abs(this, hDate.abs());\n};\n\n// returns an array describing the parsha on the first Saturday on or after absdate\nfunction abs(year, absDate) {\n\n\t// find the first saturday on or after today's date\n\tabsDate = c.dayOnOrBefore(6, absDate + 6);\n\n\tvar weekNum = (absDate - year.first_saturday) / 7;\n\tvar index = year.theSedraArray[weekNum];\n\n\tif (undefined === index) {\n\t\treturn abs(new Sedra(year.year + 1, year.il), absDate); // must be next year\n\t}\n\tif (typeof index == 'object') {\n\t\t// Shabbat has a chag. Return a description\n\t\treturn [index];\n\t}\n\tif (index >= 0) {\n\t\treturn [parshiot[index]];\n\t}\n\n\tindex = D(index); // undouble the parsha\n\treturn [parshiot[index], parshiot[index + 1]];\n}\n\nmodule.exports = Sedra;\n"]}
\ No newline at end of file
+{"version":3,"sources":["node_modules/browser-pack/_prelude.js","cities.js","client/client.js","common.js","dafyomi.js","greg.js","hdate.js","hebcal.js","holidays.js","node_modules/events/events.js","node_modules/gematriya/gematriya.js","node_modules/suncalc/suncalc.js","sedra.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","getCity","city","split","map","w","c","join","toLowerCase","toUpperCase","slice","cities","listCities","Object","keys","Ashdod","Atlanta","Austin","Baghdad","Beer Sheva","Berlin","Baltimore","Bogota","Boston","Buenos Aires","Buffalo","Chicago","Cincinnati","Cleveland","Dallas","Denver","Detroit","Eilat","Gibraltar","Haifa","Hawaii","Houston","Jerusalem","Johannesburg","Kiev","La Paz","Livingston","London","Los Angeles","Miami","Melbourne","Mexico City","Montreal","Moscow","New York","Omaha","Ottawa","Panama City","Paris","Petach Tikvah","Philadelphia","Phoenix","Pittsburgh","Saint Louis","Saint Petersburg","San Francisco","Seattle","Sydney","Tel Aviv","Tiberias","Toronto","Vancouver","White Plains","Washington DC","addCity","info","Array","isArray","TypeError","nearest","lat","lon","name","dist","Math","sqrt","pow","abs","reduce","close","ready","Hebcal","finished","events","emit","window","warn","console","log","on","defineProperty","configurable","get","listeners","set","func","navigator","geolocation","getCurrentPosition","p","defaultLocation","coords","latitude","longitude","LEAP","x","hebElapsedDays","hYear","m_elapsed","floor","p_elapsed","h_elapsed","parts","day","alt_day","daysInYear","year","lngChesh","shrtKis","monthFromName","months","NISAN","IYYAR","ELUL","CHESHVAN","KISLEV","SIVAN","SHVAT","TAMUZ","TISHREI","TEVET","AV","test","ADAR_I","ADAR_II","filter","self","fun","thisp","v","funOrig","RegExp","k","indexOf","res","hasOwnProperty","val","props","getOwnPropertyDescriptor","value","arr","Number","gematriya","charCodeAt","monthNames","concat","days","SUN","MON","TUE","WED","THU","FRI","SAT","LANG","str","opts","MONTH_CNT","daysInMonth","month","monthNum","parseInt","dayYearNum","dayOnOrBefore","day_of_week","absdate","range","start","end","step","push","greg","shas","m","blatt","dafyomi","gregdate","cno","dno","osday","nsday","total","count","j","cday","dafcnt","Date","greg2abs","dafname","daf","dayOfYear","date","doy","getDate","getMonth","getFullYear","t0t1","tMonthLengths","monthLengths","lookupMonthNum","abs2greg","theDate","d0","n400","d1","n100","d2","n4","d3","n1","setFullYear","HDate","me","this","arguments","d","abs2hebrew","il","setLocation","long","trim","prev","next","setMonth","setDate","apply","fix","fixMonth","fixDate","isLeapYear","hebrew2abs","tempabs","hebdate","mmap","RangeError","suntime","hdate","suncalc","getTimes","hourOffset","hours","sunrise","getTime","hour","onOrBefore","offset","addTime","prototype","enumerable","getTishreiMonth","nummonths","getDay","setTishreiMonth","gregEve","sunset","toString","getMonthName","setCity","hourMins","nightHour","nightHourMins","zemanim","chatzot","chatzot_night","alot_hashachar","alot_hashacher","misheyakir","misheyakir_machmir","sof_zman_shma","sof_zman_tfilla","mincha_gedola","mincha_ketana","plag_hamincha","tzeit","neitz_hachama","shkiah","getZemanim","z","addZeman","zeman","isSameDate","other","before","onOrAfter","after","getset","g","extend","base","into","TE","Month","defProp","writable","holidays","forEach","h","GregYear","lookupMonthName","GregMonth","hebyears","hebmonths","hm","Sedra","EventEmitter","find","strings","getYearObject","HebcalProto","MonthProto","GregYearProto","GregMonthProto","HDateProto","rosh","addHoliday","holiday","Event","add","findParsha","parsha","langs","max","getSedra","findSedra","find_f","replace","rosh_chodesh","omer","today","yesterday","tomorrow","pesach","sukkot","succot","succos","sukkos","shavuot","shavuos","rosh_hashana","rosh_hashanah","parshiot","LANGUAGE","loc","defaultCity","candleLighting","mins","havdalah","__year","getName","prevMonth","molad","m_adj","retMolad","toInt","round","chalakim","minutes","shabbat_mevarchim","_calc","setHours","setMinutes","setSeconds","num","sm","shabbos_mevarchim","shabbos_mevorchim","getMonthObject","__month","orig","__cache","sedraYear","getParsha","all","routine","is","prop","hd","tachanun","mapAbs","some","yes_prev","checkNext","y","atzmaut","NONE","ret","ALL_CONGS","SHACHARIT","MINCHA","tachanun_uf","shacharit","mincha","all_congs","hallel","whole","half","rc","WHOLE","HALF","checkTimes","obj","compare","time","nowGreg","now","almostTime","beforeZeman","customTimes","customs","refreshInterval","custom","refresh","ms","clearInterval","setInterval","unref","getGregMonthObject","__gregmonth","getGregYearObject","Chanukah","CHM","desc","Sukkot","Pesach","mask","USER_EVENT","LIGHT_CANDLES","YOM_TOV_ENDS","CHUL_ONLY","IL_ONLY","LIGHT_CANDLES_TZEIS","tmpDate","Shabbat","Shabbos","masks","myDate","getDesc","names","isIL","ev","RH","_events","_maxListeners","undefined","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","type","er","handler","len","args","error","err","context","addListener","listener","newListener","warned","trace","once","removeListener","fired","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","limit","reverse","numbers","letters","","א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת","תק","תר","תש","תת","תתק","תתר","toJulian","valueOf","dayMs","J1970","fromJulian","toDays","J2000","rightAscension","b","atan","sin","cos","tan","declination","asin","azimuth","H","phi","dec","altitude","siderealTime","lw","rad","astroRefraction","solarMeanAnomaly","eclipticLongitude","M","C","P","PI","sunCoords","L","ra","julianCycle","J0","approxTransit","Ht","solarTransitJ","ds","hourAngle","acos","getSetJ","moonCoords","F","dt","hoursLater","atan2","SunCalc","getPosition","lng","times","angle","riseName","setName","Jset","Jrise","Jnoon","result","solarNoon","nadir","getMoonPosition","pa","distance","parallacticAngle","getMoonIllumination","sdist","inc","fraction","phase","getMoonTimes","inUTC","setUTCHours","h1","h2","rise","xe","ye","roots","x1","x2","dx","hc","h0","define","amd","hebYr","long_c","short_k","COMPLETE","INCOMPLETE","REGULAR","rosh_hashana_day","first_saturday","leap","core","types","theSedraArray","D","absDate","weekNum","index","YK","SUKKOT","CHMSUKOT","SHMINI","EOY","PESACH","CHMPESACH","PESACH7","SHAVUOT","020","0220","0510","0511","052","070","072","1200","1201","1220","1221","150","152","170","1720","hDate"],"mappings":"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","file":"client/hebcal.min.js","sourceRoot":"https://github.com/hebcal/hebcal-js/tree/v2.2.3/","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o.\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n\n// name, lat, long, Israel\nvar cities = {\n\t\"Ashdod\": [ 31.8, 34.633, true ],\n\t\"Atlanta\": [ 33.75, -84.383, false ],\n\t\"Austin\": [ 30.266, -97.75, false ],\n\t\"Baghdad\": [ 33.233, 44.366, false ],\n\t\"Beer Sheva\": [ 31.25, 34.783, true ],\n\t\"Berlin\": [ 52.516, 13.4, false ],\n\t\"Baltimore\": [ 39.283, -76.6, false ],\n\t\"Bogota\": [ 4.6, -74.083, false ],\n\t\"Boston\": [ 42.333, -71.066, false ],\n\t\"Buenos Aires\": [ -34.616, -58.4, false ],\n\t\"Buffalo\": [ 42.883, -78.866, false ],\n\t\"Chicago\": [ 41.833, -87.75, false ],\n\t\"Cincinnati\": [ 39.1, -84.516, false ],\n\t\"Cleveland\": [ 41.5, -81.683, false ],\n\t\"Dallas\": [ 32.783, -96.8, false ],\n\t\"Denver\": [ 39.733, -104.983, false ],\n\t\"Detroit\": [ 42.333, -83.033, false ],\n\t\"Eilat\": [ 29.55, 34.95, true ],\n\t\"Gibraltar\": [ 36.133, -5.35, false ],\n\t\"Haifa\": [ 32.816, 34.983, true ],\n\t\"Hawaii\": [ 19.5, -155.5, false ],\n\t\"Houston\": [ 29.766, -95.366, false ],\n\t\"Jerusalem\": [ 31.783, 35.233, true ],\n\t\"Johannesburg\": [ -26.166, 28.033, false ],\n\t\"Kiev\": [ 50.466, 30.483, false ],\n\t\"La Paz\": [ -16.5, -68.15, false ],\n\t\"Livingston\": [ 40.283, -74.3, false ],\n\t\"London\": [ 51.5, -0.166, false ],\n\t\"Los Angeles\": [ 34.066, -118.25, false ],\n\t\"Miami\": [ 25.766, -80.2, false ],\n\t\"Melbourne\": [ -37.866, 145.133, false ],\n\t\"Mexico City\": [ 19.4, -99.15, false ],\n\t\"Montreal\": [ 45.5, -73.6, false ],\n\t\"Moscow\": [ 55.75, 37.7, false ],\n\t\"New York\": [ 40.716, -74.016, false ],\n\t\"Omaha\": [ 41.266, -95.933, false ],\n\t\"Ottawa\": [ 45.7, -76.183, false ],\n\t\"Panama City\": [ 8.966, -79.533, false ],\n\t\"Paris\": [ 48.866, 2.333, false ],\n\t\"Petach Tikvah\": [ 32.083, 34.883, true ],\n\t\"Philadelphia\": [ 39.95, -75.166, false ],\n\t\"Phoenix\": [ 33.45, -112.066, false ],\n\t\"Pittsburgh\": [ 40.433, -80, false ],\n\t\"Saint Louis\": [ 38.633, -90.2, false ],\n\t\"Saint Petersburg\": [ 59.883, 30.25, false ],\n\t\"San Francisco\": [ 37.783, -122.416, false ],\n\t\"Seattle\": [ 47.6, -122.333, false ],\n\t\"Sydney\": [ -33.916, 151.283, false ],\n\t\"Tel Aviv\": [ 32.083, 34.766, true ],\n\t\"Tiberias\": [ 32.966, 35.533, true ],\n\t\"Toronto\": [ 43.633, -79.4, false ],\n\t\"Vancouver\": [ 49.266, -123.116, false ],\n\t\"White Plains\": [ 41.033, -73.75, false ],\n\t\"Washington DC\": [ 38.916, -77, false ]\n};\n\nfunction getCity(city) {\n\tcity = city.split(/\\s+/).map(function(w,i,c){\n\t\tif (c.join(' ').toLowerCase() === 'washington dc' && i === 1) { // special case\n\t\t\treturn w.toUpperCase();\n\t\t}\n\t\treturn w[0].toUpperCase() + w.slice(1).toLowerCase();\n\t}).join(' ');\n\treturn cities[city] || [ 0, 0, false ];\n}\nexports.getCity = getCity;\n\nfunction listCities() {\n\treturn Object.keys(cities);\n}\nexports.listCities = listCities;\n\nexports.addCity = function(city, info) {\n\tif (!Array.isArray(info)) {\n\t\tthrow new TypeError('adding non-array city');\n\t}\n\tif (info.length == 5) {\n\t\tvar i = info.slice();\n\t\tinfo = [];\n\t\tinfo[0] = (i[0] * 60 + i[1]) / 60;\n\t\tinfo[1] = (i[2] * 60 + i[3]) / 60;\n\t\tinfo[2] = i[4];\n\t}\n\tif (info.length != 3) {\n\t\tthrow new TypeError('length of city array is not 3');\n\t}\n\tcity = city.split(/\\s+/).map(function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase()}).join(' ');\n\tcities[city] = info;\n};\n\nexports.nearest = function(lat, lon) {\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to nearest()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to nearest()');\n\t}\n\n\treturn listCities().map(function(city){\n\t\tvar i = getCity(city);\n\t\treturn {\n\t\t\tname: city,\n\t\t\tdist: Math.sqrt( Math.pow(Math.abs(i[0] - lat), 2) + Math.pow(Math.abs(i[1] - lon), 2) )\n\t\t};\n\t}).reduce(function(close,city){\n\t\treturn close.dist < city.dist ? close : city;\n\t}).name;\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at \n\tdanny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter\n */\nwindow.Hebcal = require('..');\n\nvar finished = false, warn = (typeof console != 'undefined' && (console.warn || console.log)) || function(){};\n\nHebcal.events.on('newListener', function(e){\n\tif (e === 'ready' && !finished && Hebcal.ready) {\n\t\tready();\n\t}\n});\n\nObject.defineProperty(Hebcal, 'onready', {\n\tconfigurable: true,\n\n\tget: function() {\n\t\twarn('Getting deprecated property Hebcal.onready');\n\t\treturn Hebcal.events.listeners('ready')[0];\n\t},\n\tset: function(func) {\n\t\twarn('Setting deprecated property Hebcal.onready; use Hebcal.events.on(\\'ready\\', func) instead');\n\t\tHebcal.events.on('ready', func);\n\t}\n});\n\nif (navigator.geolocation) {\n\tHebcal.ready = false;\n\tnavigator.geolocation.getCurrentPosition(function(p){\n\t\tHebcal.defaultLocation = [p.coords.latitude,p.coords.longitude];\n\t\tready();\n\t}, ready);\n} else {\n\tready();\n}\n\nfunction ready() {\n\tHebcal.ready = true;\n\tfinished = Hebcal.events.emit('ready');\n}","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar gematriya = require('gematriya');\n\nvar charCodeAt = 'charCodeAt';\n\nvar months = exports.months = {\n\tNISAN : 1,\n\tIYYAR : 2,\n\tSIVAN : 3,\n\tTAMUZ : 4,\n\tAV : 5,\n\tELUL : 6,\n\tTISHREI : 7,\n\tCHESHVAN: 8,\n\tKISLEV : 9,\n\tTEVET : 10,\n\tSHVAT : 11,\n\tADAR_I : 12,\n\tADAR_II : 13\n};\n\nvar monthNames = [\n\t[\"\", 0, \"\"],\n\t[\"Nisan\", 0, \"ניסן\"],\n\t[\"Iyyar\", 0, \"אייר\"],\n\t[\"Sivan\", 0, \"סיון\"],\n\t[\"Tamuz\", 0, \"תמוז\"],\n\t[\"Av\", 0, \"אב\"],\n\t[\"Elul\", 0, \"אלול\"],\n\t[\"Tishrei\", 0, \"תשרי\"],\n\t[\"Cheshvan\", 0, \"חשון\"],\n\t[\"Kislev\", 0, \"כסלו\"],\n\t[\"Tevet\", 0, \"טבת\"],\n\t[\"Sh'vat\", 0, \"שבט\"]\n];\nexports.monthNames = [\n\tmonthNames.concat([[\"Adar\", 0, \"אדר\"],[\"Nisan\", 0, \"ניסן\"]]),\n\tmonthNames.concat([[\"Adar 1\", 0, \"אדר א'\"],[\"Adar 2\", 0, \"אדר ב'\"],[\"Nisan\", 0, \"ניסן\"]])\n];\n\nexports.days = {\n\tSUN: 0,\n\tMON: 1,\n\tTUE: 2,\n\tWED: 3,\n\tTHU: 4,\n\tFRI: 5,\n\tSAT: 6\n};\n\nexports.LANG = function(str, opts){\n\treturn opts == 'h' && str[2] || (opts == 'a' && str[1] || str[0]);\n};\n\nfunction LEAP(x) {\n\treturn (1 + x * 7) % 19 < 7;\n}\nexports.LEAP = LEAP;\n\nexports.MONTH_CNT = function(x) {\n\treturn 12 + LEAP(x); // boolean is cast to 1 or 0\n};\n\nexports.daysInMonth = function(month, year) {\n\treturn 30 - (month == months.IYYAR ||\n\tmonth == months.TAMUZ ||\n\tmonth == months.ELUL ||\n\tmonth == months.TEVET ||\n\tmonth == months.ADAR_II ||\n\t(month == months.ADAR_I && !LEAP(year)) ||\n\t(month == months.CHESHVAN && !lngChesh(year)) ||\n\t(month == months.KISLEV && shrtKis(year)));\n};\n\nexports.monthNum = function(month) {\n\treturn typeof month === 'number' ? month :\n\t\tmonth[charCodeAt](0) >= 1488 && month[charCodeAt](0) <= 1514 && /('|\")/.test(month) ? gematriya(month) :\n\t\t\tmonth[charCodeAt](0) >= 48 && month[charCodeAt](0) <= 57 /* number */ ? parseInt(month, 10) : monthFromName(month);\n};\n\nexports.dayYearNum = function(str) {\n\treturn typeof str === 'number' ? str :\n\t\tstr[charCodeAt](0) >= 1488 && str[charCodeAt](0) <= 1514 ? gematriya(str, true) : parseInt(str, 10);\n};\n\n/* Days from sunday prior to start of Hebrew calendar to mean\n conjunction of Tishrei in Hebrew YEAR\n */\nfunction hebElapsedDays(hYear){\n\t// borrowed from original JS\n\tvar m_elapsed = 235 * Math.floor((hYear - 1) / 19) +\n\t\t12 * ((hYear - 1) % 19) +\n\t\tMath.floor(((((hYear - 1) % 19) * 7) + 1) / 19);\n\n\tvar p_elapsed = 204 + (793 * (m_elapsed % 1080));\n\n\tvar h_elapsed = 5 + (12 * m_elapsed) +\n\t\t793 * Math.floor(m_elapsed / 1080) +\n\t\tMath.floor(p_elapsed / 1080);\n\n\tvar parts = (p_elapsed % 1080) + 1080 * (h_elapsed % 24);\n\n\tvar day = 1 + 29 * m_elapsed + Math.floor(h_elapsed / 24);\n\tvar alt_day = day + ((parts >= 19440) ||\n\t\t((2 == (day % 7)) && (parts >= 9924) && !(LEAP (hYear))) ||\n\t\t((1 == (day % 7)) && (parts >= 16789) && LEAP (hYear - 1)));\n\n\treturn alt_day + ((alt_day % 7) === 0 ||\n\t\t(alt_day % 7) == 3 ||\n\t\t(alt_day % 7) == 5);\n}\nexports.hebElapsedDays = hebElapsedDays;\n\n/* Number of days in the hebrew YEAR */\nfunction daysInYear(year)\n{\n\treturn hebElapsedDays(year + 1) - hebElapsedDays(year);\n}\nexports.daysInYear = daysInYear;\n\n/* true if Cheshvan is long in Hebrew YEAR */\nfunction lngChesh(year) {\n\treturn (daysInYear(year) % 10) == 5;\n}\nexports.lngChesh = lngChesh;\n\n/* true if Kislev is short in Hebrew YEAR */\nfunction shrtKis(year) {\n\treturn (daysInYear(year) % 10) == 3;\n}\nexports.shrtKis = shrtKis;\n\nfunction monthFromName(c) {\n\t/*\n\tthe Hebrew months are unique to their second letter\n\tN Nisan (November?)\n\tI Iyyar\n\tE Elul\n\tC Cheshvan\n\tK Kislev\n\t1 1Adar\n\t2 2Adar\n\tSi Sh Sivan, Shvat\n\tTa Ti Te Tamuz, Tishrei, Tevet\n\tAv Ad Av, Adar\n\n\tאב אד אי אל אב אדר אייר אלול\n\tח חשון\n\tט טבת\n\tכ כסלב\n\tנ ניסן\n\tס סיון\n\tש שבט\n\tתמ תש תמוז תשרי\n\t*/\n\tswitch (c.toLowerCase()[0]) {\n\t\tcase 'n':\n\t\tcase 'נ':\n\t\t\treturn (c.toLowerCase()[1] == 'o') ? /* this catches \"november\" */\n\t\t\t\t0 : months.NISAN;\n\t\tcase 'i':\n\t\t\treturn months.IYYAR;\n\t\tcase 'e':\n\t\t\treturn months.ELUL;\n\t\tcase 'c':\n\t\tcase 'ח':\n\t\t\treturn months.CHESHVAN;\n\t\tcase 'k':\n\t\tcase 'כ':\n\t\t\treturn months.KISLEV;\n\t\tcase 's':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.SIVAN;\n\t\t\t\tcase 'h':\n\t\t\t\t\treturn months.SHVAT;\n\t\t\t\tdefault:\n\t\t\t\t\treturn 0;\n\t\t\t}\n\t\tcase 't':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'a':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t\tcase 'e':\n\t\t\t\t\treturn months.TEVET;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'a':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'v':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif (/(1|[^i]i|a|א)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ס':\n\t\t\treturn months.SIVAN;\n\t\tcase 'ש':\n\t\t\treturn months.SHVAT;\n\t\tcase 'א':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'ב':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'ד':\n\t\t\t\t\tif (/(2|ii|b|ב)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t\tcase 'י':\n\t\t\t\t\treturn months.IYYAR;\n\t\t\t\tcase 'ל':\n\t\t\t\t\treturn months.ELUL;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ת':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'מ':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'ש':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn 0;\n};\nexports.monthFromName = monthFromName;\n\n/* Note: Applying this function to d+6 gives us the DAYNAME on or after an\n * absolute day d. Similarly, applying it to d+3 gives the DAYNAME nearest to\n * absolute date d, applying it to d-1 gives the DAYNAME previous to absolute\n * date d, and applying it to d+7 gives the DAYNAME following absolute date d.\n\n**/\nexports.dayOnOrBefore = function(day_of_week, absdate) {\n\treturn absdate - ((absdate - day_of_week) % 7);\n};\n\nexports.map = function(self, fun, thisp) {\n\t// originally written for http://github.com/Scimonster/localbrowse\n\tif (self === null || typeof fun != 'function') {\n\t\tthrow new TypeError();\n\t}\n\tvar t = Object(self);\n\tvar res = {};\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tres[i] = fun.call(thisp, t[i], i, t);\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = filter(arr, true); // for...in isn't guaranteed to give any meaningful order\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n};\n\nfunction filter(self, fun, thisp) {\n\tif (self === null) {\n\t\tthrow new TypeError('self is null');\n\t}\n\tswitch (typeof fun) {\n\t\tcase 'function':\n\t\t\tbreak; // do nothing\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn self[fun]; // str/num is just the property\n\t\tcase 'boolean':\n\t\t\t// boolean shortcuts to filter only truthy/falsy values\n\t\t\tif (fun) {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn v;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn !v;\n\t\t\t\t};\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'object':\n\t\t\tvar funOrig = fun; // save it\n\t\t\tif (fun instanceof RegExp) { // test the val against the regex\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn funOrig.test(v);\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t} else if (Array.isArray(fun)) { // keep these keys\n\t\t\t\tfun = function (v, k) {\n\t\t\t\t\treturn funOrig.indexOf(k) > -1;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tthrow new TypeError('fun is not a supported type');\n\t}\n\tvar res = {};\n\tvar t = Object(self);\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tvar val = t[i]; // in case fun mutates it\n\t\t\tif (fun.call(thisp, val, i, t)) {\n\t\t\t\t// define property on res in the same manner as it was originally defined\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(t, i);\n\t\t\t\tprops.value = val;\n\t\t\t\tObject.defineProperty(res, i, props);\n\t\t\t}\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = arr.filter(function (v) {\n\t\t\treturn v;\n\t\t}); // for...in isn't guaranteed to give any meaningful order\n\t\t// can't use c.filter(arr,true) here because that would infitely recurse\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n}\nexports.filter = filter;\n\nexports.range = function(start, end, step) {\n\tstep = step || 1;\n\tif (step < 0) {\n\t\tstep = 0 - step;\n\t}\n\n\tvar arr = [], i = start;\n\tif (start < end) {\n\t\tfor (; i <= end; i += step) {\n\t\t\tarr.push(i);\n\t\t}\n\t} else {\n\t\tfor (; i >= end; i -= step) {\n\t\t\tarr.push(i);\n\t\t}\n\t}\n\treturn arr;\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tgematriya = require('gematriya');\n\nvar shas = [\n\t// sname, aname, hname, blatt\n\t[ \"Berachot\", \"Berachos\", \"ברכות\", 64 ],\n\t[ \"Shabbat\", \"Shabbos\", \"שבת\", 157 ],\n\t[ \"Eruvin\", \"Eruvin\", \"עירובין\", 105 ],\n\t[ \"Pesachim\", 0, \"פסחים\", 121 ],\n\t[ \"Shekalim\", 0, \"שקלים\", 22 ],\n\t[ \"Yoma\", 0, \"יומא\", 88 ],\n\t[ \"Sukkah\", 0, \"סוכה\", 56 ],\n\t[ \"Beitzah\", 0, \"ביצה\", 40 ],\n\t[ \"Rosh Hashana\", 0, \"ראש השנה\", 35 ],\n\t[ \"Taanit\", \"Taanis\", \"תענית\", 31 ],\n\t[ \"Megillah\", 0, \"מגילה\", 32 ],\n\t[ \"Moed Katan\", 0, \"מועד קטן\", 29 ],\n\t[ \"Chagigah\", 0, \"חגיגה\", 27 ],\n\t[ \"Yevamot\", \"Yevamos\", \"יבמות\", 122 ],\n\t[ \"Ketubot\", \"Kesubos\", \"כתובות\", 112 ],\n\t[ \"Nedarim\", 0, \"נדרים\", 91 ],\n\t[ \"Nazir\", 0, \"נזיר\", 66 ],\n\t[ \"Sotah\", 0, \"סוטה\", 49 ],\n\t[ \"Gitin\", 0, \"גיטין\", 90 ],\n\t[ \"Kiddushin\", 0, \"קידושין\", 82 ],\n\t[ \"Baba Kamma\", 0, \"בבא קמא\", 119 ],\n\t[ \"Baba Metzia\", 0, \"בבא מציעא\", 119 ],\n\t[ \"Baba Batra\", \"Baba Basra\", \"בבא בתרא\", 176 ],\n\t[ \"Sanhedrin\", 0, \"סנהדרין\", 113 ],\n\t[ \"Makkot\", \"Makkos\", \"מכות\", 24 ],\n\t[ \"Shevuot\", \"Shevuos\", \"שבועות\", 49 ],\n\t[ \"Avodah Zarah\", 0, \"עבודה זרה\", 76 ],\n\t[ \"Horayot\", \"Horayos\", \"הוריות\", 14 ],\n\t[ \"Zevachim\", 0, \"זבחים\", 120 ],\n\t[ \"Menachot\", \"Menachos\", \"מנחות\", 110 ],\n\t[ \"Chullin\", 0, \"חולין\", 142 ],\n\t[ \"Bechorot\", \"Bechoros\", \"בכורות\", 61 ],\n\t[ \"Arachin\", 0, \"ערכין\", 34 ],\n\t[ \"Temurah\", 0, \"תמורה\", 34 ],\n\t[ \"Keritot\", \"Kerisos\", \"כריתות\", 28 ],\n\t[ \"Meilah\", 0, \"מעילה\", 22 ],\n\t[ \"Kinnim\", 0, \"קנים\", 4 ],\n\t[ \"Tamid\", 0, \"תמיד\", 10 ],\n\t[ \"Midot\", \"Midos\", \"מדות\", 4 ],\n\t[ \"Niddah\", 0, \"נדה\", 73 ]\n].map(function(m){\n\treturn {name: m.slice(0,3), blatt: m[3]};\n});\n\nexports.dafyomi = function(gregdate) {\n\tvar dafcnt = 40, cno, dno, osday, nsday, total, count, j, cday, blatt;\n\n\tif (!(gregdate instanceof Date)) {\n\t\tthrow new TypeError('non-date given to dafyomi');\n\t}\n\n\tosday = greg.greg2abs(new Date(1923, 8, 11));\n\tnsday = greg.greg2abs(new Date(1975, 5, 24));\n\tcday = greg.greg2abs(gregdate);\n\n\tif (cday < osday) { // no cycle; dy didn't start yet\n\t\treturn {name: [], blatt: 0};\n\t}\n\tif (cday >= nsday) { // \"new\" cycle\n\t\tcno = 8 + ( (cday - nsday) / 2711 );\n\t\tdno = (cday - nsday) % 2711;\n\t} else { // old cycle\n\t\tcno = 1 + ( (cday - osday) / 2702 );\n\t\tdno = (cday - osday) % 2702;\n\t}\n\n\t// Find the daf taking note that the cycle changed slightly after cycle 7.\n\n\ttotal = blatt = 0;\n\tcount = -1;\n\n\t// Fix Shekalim for old cycles\n\tif (cno <= 7) {\n\t\tshas[4].blatt = 13;\n\t} else {\n\t\tshas[4].blatt = 22;\n\t}\n\n\t// Find the daf\n\tj = 0;\n\twhile (j < dafcnt) {\n\t\tcount++;\n\t\ttotal = total + shas[j].blatt - 1;\n\t\tif (dno < total) {\n\t\t\tblatt = (shas[j].blatt + 1) - (total - dno);\n\t\t\t// fiddle with the weird ones near the end\n\t\t\tswitch (count) {\n\t\t\t\tcase 36:\n\t\t\t\t\tblatt = blatt + 21;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tblatt = blatt + 24;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38:\n\t\t\t\t\tblatt = blatt + 33;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Bailout\n\t\t\tj = 1 + dafcnt;\n\t\t}\n\t\tj++;\n\t}\n\n\treturn {name: shas[count].name, blatt: blatt};\n};\n\nexports.dafname = function(daf, o) {\n\treturn c.LANG(daf.name, o) + ' ' + (o === 'h' ? gematriya(daf.blatt) : daf.blatt);\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar floor = Math.floor,\n\tt0t1 = [30, 31],\n\ttMonthLengths = [0, 31, 28, 31].concat(t0t1, t0t1, 31, t0t1, t0t1),\n\tmonthLengths = [\n\t\ttMonthLengths.slice()\n\t];\ntMonthLengths[2]++;\nmonthLengths.push(tMonthLengths);\n\nexports.daysInMonth = function(month, year) { // 1 based months\n\treturn monthLengths[+LEAP(year)][month];\n};\n\nexports.monthNames = [\n\t'',\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December'\n];\n\nexports.lookupMonthNum = function(month) {\n\treturn new Date(month + ' 1').getMonth() + 1;\n};\n\nfunction dayOfYear (date) {\n\tif (!date instanceof Date) {\n\t\tthrow new TypeError('Argument to greg.dayOfYear not a Date');\n\t}\n\tvar doy = date.getDate() + 31 * date.getMonth();\n\tif (date.getMonth() > 1) { // FEB\n\t\tdoy -= floor((4 * (date.getMonth() + 1) + 23) / 10);\n\t\tif (LEAP(date.getFullYear())) {\n\t\t\tdoy++;\n\t\t}\n\t}\n\treturn doy;\n}\nexports.dayOfYear = dayOfYear;\n\nfunction LEAP (year) {\n\treturn !(year % 4) && ( !!(year % 100) || !(year % 400) );\n}\nexports.LEAP = LEAP;\n\nexports.greg2abs = function(date) { // \"absolute date\"\n\tvar year = date.getFullYear() - 1;\n\treturn (dayOfYear(date) + // days this year\n\t\t\t365 * year + // + days in prior years\n\t\t\t( floor(year / 4) - // + Julian Leap years\n\t\t\tfloor(year / 100) + // - century years\n\t\t\tfloor(year / 400))); // + Gregorian leap years\n};\n\n\n/*\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n */\nexports.abs2greg = function(theDate) {\n// calculations copied from original JS code\n\n\tvar d0 = theDate - 1;\n\tvar n400 = floor(d0 / 146097);\n\tvar d1 = floor(d0 % 146097);\n\tvar n100 = floor(d1 / 36524);\n\tvar d2 = d1 % 36524;\n\tvar n4 = floor(d2 / 1461);\n\tvar d3 = d2 % 1461;\n\tvar n1 = floor(d3 / 365);\n\n\tvar day = ((d3 % 365) + 1);\n\tvar year = (400 * n400 + 100 * n100 + 4 * n4 + n1);\n\n\tif (4 == n100 || 4 == n1) {\n\t\treturn new Date(year, 11, 31);\n\t}\n\n\treturn new Date(new Date(++year, 0, day).setFullYear(year)); // new Date() is very smart\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tsuncalc = require('suncalc'),\n\tcities = require('./cities'),\n\tgematriya = require('gematriya');\n\nsuncalc.addTime(-16.1, 'alot_hashachar', 0);\nsuncalc.addTime(-11.5, 'misheyakir', 0);\nsuncalc.addTime(-10.2, 'misheyakir_machmir', 0);\nsuncalc.addTime(-8.5, 0, 'tzeit');\n\n// for minifying optimizations\nvar getFullYear = 'getFullYear',\n\tgetMonth = 'getMonth',\n\tgetDate = 'getDate',\n\tgetTime = 'getTime',\n\tabs = 'abs',\n\thour = 'hour',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tMONTH_CNT = c.MONTH_CNT,\n\tdaysInMonth = c.daysInMonth,\n\tdayOnOrBefore = c.dayOnOrBefore,\n\tprototype = HDate.prototype;\n\nfunction HDate(day, month, year) {\n\tvar me = this;\n\tswitch (arguments.length) {\n\t\tcase 0:\n\t\t\treturn new HDate(new Date());\n\t\tcase 1:\n\t\t\tif (typeof day == 'undefined') {\n\t\t\t\treturn new HDate();\n\t\t\t} else if (day instanceof Date) {\n\t\t\t\t// we were passed a Gregorian date, so convert it\n\t\t\t\tvar d = abs2hebrew(greg.greg2abs(day));\n\t\t\t\t/*if (d.sunset() < day) {\n\t\t\t\t\td = d.next();\n\t\t\t\t}*/\n\t\t\t\treturn d;\n\t\t\t} else if (day instanceof HDate) {\n\t\t\t\tvar d = new HDate(day[getDate](), day[getMonth](), day[getFullYear]());\n\t\t\t\td.il = day.il;\n\t\t\t\td.setLocation(d.lat, d.long);\n\t\t\t\treturn d;\n\t\t\t} else if (typeof day == 'string') {\n\t\t\t\tswitch (day.toLowerCase().trim()) {\n\t\t\t\t\tcase 'today':\n\t\t\t\t\t\treturn new HDate();\n\t\t\t\t\tcase 'yesterday':\n\t\t\t\t\t\treturn new HDate().prev();\n\t\t\t\t\tcase 'tomorrow':\n\t\t\t\t\t\treturn new HDate().next();\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(day)) {\n\t\t\t\t\tvar s = day.split(/\\s+/);\n\t\t\t\t\tif (s.length == 2) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1]);\n\t\t\t\t\t} else if (s.length == 3) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1], s[2]);\n\t\t\t\t\t} else if (s.length == 4) { // should only be if s[1] is Adar\n\t\t\t\t\t\tif (/i/i.test(s[2])) { // Using I[I] syntax\n\t\t\t\t\t\t\ts[2] = s[2].length;\n\t\t\t\t\t\t} // otherwise using 1|2 syntax\n\t\t\t\t\t\treturn new HDate(s[0], s[1] + s[2], s[3]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof day == 'number') { // absolute date\n\t\t\t\treturn abs2hebrew(day);\n\t\t\t}\n\t\t\tthrow new TypeError('HDate called with bad argument');\n\t\tcase 2:\n\t\t\treturn new HDate(day, month, (new HDate)[getFullYear]());\n\t\tcase 3:\n\t\t\tme.day = me.month = 1;\n\t\t\tme.year = c.dayYearNum(year);\n\n\t\t\tme.setMonth(c.monthNum(month));\n\t\t\tme.setDate(c.dayYearNum(day));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError('HDate called with bad arguments');\n\t}\n\n\treturn me.setLocation.apply(me, HDate.defaultLocation);\n}\n\nHDate.defaultLocation = [0, 0];\nObject.defineProperty(HDate, 'defaultCity', {\n\tenumerable: true,\n\tconfigurable: true,\n\n\tget: function() {\n\t\treturn cities.nearest(HDate.defaultLocation[0], HDate.defaultLocation[1]);\n\t},\n\tset: function(city) {\n\t\tHDate.defaultLocation = cities.getCity(city).slice(0, 2);\n\t}\n});\n\nfunction fix(date) {\n\tfixMonth(date);\n\tfixDate(date);\n}\n\nfunction fixDate(date) {\n\tif (date.day < 1) {\n\t\tif (date.month == TISHREI) {\n\t\t\tdate.year -= 1;\n\t\t}\n\t\tdate.day += daysInMonth(date.month, date.year);\n\t\tdate.month -= 1;\n\t\tfix(date);\n\t}\n\tif (date.day > daysInMonth(date.month, date.year)) {\n\t\tif (date.month == months.ELUL) {\n\t\t\tdate.year += 1;\n\t\t}\n\t\tdate.day -= daysInMonth(date.month, date.year);\n\t\tdate.month += 1;\n\t\tfix(date);\n\t}\n\tfixMonth(date);\n}\n\nfunction fixMonth(date) {\n\tif (date.month == months.ADAR_II && !date.isLeapYear()) {\n\t\tdate.month -= 1; // to Adar I\n\t\tfix(date);\n\t}\n\tif (date.month < 1) {\n\t\tdate.month += MONTH_CNT(date.year);\n\t\tdate.year -= 1;\n\t\tfix(date);\n\t}\n\tif (date.month > MONTH_CNT(date.year)) {\n\t\tdate.month -= MONTH_CNT(date.year);\n\t\tdate.year += 1;\n\t\tfix(date);\n\t}\n}\n\nprototype[getFullYear] = function() {\n\treturn this.year;\n};\n\nprototype.isLeapYear = function() {\n\treturn c.LEAP(this.year);\n};\n\nprototype[getMonth] = function() {\n\treturn this.month;\n};\n\nprototype.getTishreiMonth = function() {\n\tvar nummonths = MONTH_CNT(this[getFullYear]());\n\treturn (this[getMonth]() + nummonths - 6) % nummonths || nummonths;\n};\n\nprototype.daysInMonth = function() {\n\treturn daysInMonth(this[getMonth](), this[getFullYear]());\n};\n\nprototype[getDate] = function() {\n\treturn this.day;\n};\n\nprototype.getDay = function() {\n\treturn this.greg().getDay();\n};\n\nprototype.setFullYear = function(year) {\n\tthis.year = year;\n\tfix(this);\n\treturn this;\n};\n\nprototype.setMonth = function(month) {\n\tthis.month = c.monthNum(month);\n\tfix(this);\n\treturn this;\n};\n\nprototype.setTishreiMonth = function(month) {\n\treturn this.setMonth((month + 6) % MONTH_CNT(this[getFullYear]()) || 13);\n};\n\nprototype.setDate = function(date) {\n\tthis.day = date;\n\tfix(this);\n\treturn this;\n};\n\n/* convert hebrew date to absolute date */\n/* Absolute date of Hebrew DATE.\n The absolute date is the number of days elapsed since the (imaginary)\n Gregorian date Sunday, December 31, 1 BC. */\nfunction hebrew2abs(d) {\n\tvar m, tempabs = d[getDate](), year = d[getFullYear]();\n\n\tif (d[getMonth]() < TISHREI) {\n\t\tfor (m = TISHREI; m <= MONTH_CNT(year); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\n\t\tfor (m = months.NISAN; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t} else {\n\t\tfor (m = TISHREI; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t}\n\n\treturn c.hebElapsedDays(year) - 1373429 + tempabs;\n}\n\nfunction abs2hebrew(d) {\n\tvar mmap = [\n\t\tmonths.KISLEV, months.TEVET, months.SHVAT, months.ADAR_I, months.NISAN,\n\t\tmonths.IYYAR, months.SIVAN, months.TAMUZ, TISHREI, TISHREI, TISHREI, months.CHESHVAN\n\t], hebdate, gregdate, month, year;\n\n\tif (d >= 10555144) {\n\t\tthrow new RangeError(\"parameter to abs2hebrew \" + d + \" out of range\");\n\t}\n\n\tgregdate = greg.abs2greg(d);\n\thebdate = new HDate(1, TISHREI, (year = 3760 + gregdate[getFullYear]()));\n\n\twhile (d >= hebrew2abs(hebdate.setFullYear(year + 1))) {\n\t\tyear++;\n\t}\n\n\tif (year > 4634 && year < 10666) {\n\t\t// optimize search\n\t\tmonth = mmap[gregdate[getMonth]()];\n\t} else {\n\t\t// we're outside the usual range, so assume nothing about Hebrew/Gregorian calendar drift...\n\t\tmonth = TISHREI;\n\t}\n\n\twhile (d > hebrew2abs(hebdate = new HDate(daysInMonth(month, year), month, year))) {\n\t\tmonth = (month % MONTH_CNT(year)) + 1;\n\t}\n\n\treturn hebdate.setLocation.apply(hebdate.setDate(d - hebrew2abs(hebdate.setDate(1)) + 1), HDate.defaultLocation);\n}\n\nprototype.greg = function() {\n\treturn greg.abs2greg(hebrew2abs(this));\n};\n\nprototype.gregEve = function() {\n\treturn this.prev().sunset();\n};\n\nprototype[abs] = function() {\n\treturn hebrew2abs(this);\n};\n\nprototype.toString = function(o) {\n\treturn c.LANG([this[getDate](), null, gematriya(this[getDate]())], o) + ' ' +\n\t\tthis.getMonthName(o) + ' ' +\n\t\tc.LANG([this[getFullYear](), null, gematriya(this[getFullYear]())], o);\n};\n\nprototype.getMonthName = function(o) {\n\treturn c.LANG(c.monthNames[+this.isLeapYear()][this[getMonth]()], o);\n};\n\nprototype.setCity = function(city) {\n\treturn this.setLocation(cities.getCity(city));\n};\n\nprototype.setLocation = function(lat, lon) {\n\tif (typeof lat == 'object' && !Array.isArray(lat)) {\n\t\tlon = lat.long;\n\t\tlat = lat.lat;\n\t}\n\tif (Array.isArray(lat) && typeof lon == 'undefined') {\n\t\tlon = lat[0];\n\t\tlat = lat[1];\n\t}\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to HDate.setLocation()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to HDate.setLocation()');\n\t}\n\n\tthis.lat = lat;\n\tthis.long = lon;\n\n\tthis.il = cities.getCity(cities.nearest(lat, lon))[2];\n\n\treturn this;\n};\n\nfunction suntime(hdate) {\n\t// reset the date to midday before calling suncalc api\n\t// https://github.com/mourner/suncalc/issues/11\n\tvar date = hdate.greg();\n\treturn suncalc.getTimes(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0, 0), hdate.lat, hdate.long);\n}\n\nprototype.sunrise = function() {\n\treturn suntime(this).sunrise;\n};\n\nprototype.sunset = function() {\n\treturn suntime(this).sunset;\n};\n\nprototype[hour] = function() {\n\treturn (this.sunset() - this.sunrise()) / 12; // ms in hour\n};\n\nprototype.hourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this[hour]() / (1000 * 60);\n};\n\nprototype.nightHour = function() {\n\treturn (this.sunrise() - this.gregEve()) / 12; // ms in hour\n};\n\nprototype.nightHourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this.nightHour() / (1000 * 60);\n};\n\nfunction hourOffset(hdate, hours) {\n\treturn new Date(hdate.sunrise()[getTime]() + (hdate[hour]() * hours));\n}\n\nvar zemanim = {\n\tchatzot: function(hdate) {\n\t\treturn hourOffset(hdate, 6);\n\t},\n\tchatzot_night: function(hdate) {\n\t\treturn new Date(hdate.sunrise()[getTime]() - (hdate.nightHour() * 6));\n\t},\n\talot_hashachar: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\talot_hashacher: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\tmisheyakir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir;\n\t},\n\tmisheyakir_machmir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir_machmir;\n\t},\n\tsof_zman_shma: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 3);\n\t},\n\tsof_zman_tfilla: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 4);\n\t},\n\tmincha_gedola: function(hdate) {\n\t\treturn hourOffset(hdate, 6.5);\n\t},\n\tmincha_ketana: function(hdate) {\n\t\treturn hourOffset(hdate, 9.5);\n\t},\n\tplag_hamincha: function(hdate) {\n\t\treturn hourOffset(hdate, 10.75);\n\t},\n\ttzeit: function(hdate) {\n\t\treturn suntime(hdate).tzeit;\n\t},\n\tneitz_hachama: function(hdate) {\n\t\treturn hdate.sunrise();\n\t},\n\tshkiah: function(hdate) {\n\t\treturn hdate.sunset();\n\t}\n};\n\nprototype.getZemanim = function() {\n\treturn c.map(zemanim, function(z){\n\t\treturn z(this);\n\t}, this);\n};\n\nHDate.addZeman = function(zeman, func) {\n\tzemanim[zeman] = func;\n};\n\nprototype.next = function() {\n\treturn abs2hebrew(this.abs() + 1).setLocation(this.lat, this.long);\n};\n\nprototype.prev = function() {\n\treturn abs2hebrew(this.abs() - 1).setLocation(this.lat, this.long);\n};\n\nprototype.isSameDate = function(other) {\n\tif (other instanceof HDate) {\n\t\tif (other[getFullYear]() == -1) {\n\t\t\tother = new HDate(other).setFullYear(this[getFullYear]());\n\t\t}\n\t\treturn this[abs]() == other[abs]();\n\t}\n\treturn false;\n};\n\nfunction onOrBefore(day, t, offset) {\n\treturn new HDate(dayOnOrBefore(day, t[abs]() + offset));\n}\n\nprototype.before = function(day) {\n\treturn onOrBefore(day, this, -1);\n};\n\nprototype.onOrBefore = function(day) {\n\treturn onOrBefore(day, this, 0);\n};\n\nprototype.nearest = function(day) {\n\treturn onOrBefore(day, this, 3);\n};\n\nprototype.onOrAfter = function(day) {\n\treturn onOrBefore(day, this, 6);\n};\n\nprototype.after = function(day) {\n\treturn onOrBefore(day, this, 7);\n};\n\nmodule.exports = HDate;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.tachanun_uf = function(){\n\tvar ret = this.tachanun();\n\treturn {\n\t\tshacharit: !!(ret & this.tachanun.SHACHARIT),\n\t\tmincha: !!(ret & this.tachanun.MINCHA),\n\t\tall_congs: !!(ret & this.tachanun.ALL_CONGS)\n\t};\n};\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tgematriya = require('gematriya');\n\nvar __cache = {};\n\n// for byte optimizations\n\nvar dayOnOrBefore = c.dayOnOrBefore,\n\tmonths = c.months,\n\tdays = c.days,\n\tTISHREI = months.TISHREI,\n\tKISLEV = months.KISLEV,\n\tNISAN = months.NISAN,\n\tSAT = days.SAT,\n\tgetDay = 'getDay',\n\tabs = 'abs',\n\tShabbat = 'Shabbat',\n\tShabbos = 'Shabbos';\n\nfunction Chanukah(day) {\n\treturn ['Chanukah: Candle ' + day, 0, 'חנוכה: נר ' + gematriya(day)];\n}\n\nfunction CHM(desc) {\n\treturn [desc[0] + ' (CH\"M)', desc[1] ? desc[1] + ' (CH\"M)' : desc[1], desc[2] ? desc[2] + ' )חה\"ם(' : desc[2]];\n}\n\nfunction Sukkot(day) {\n\treturn ['Sukkot: ' + day, 'Succos: ' + day, 'סוכות יום ' + gematriya(day)];\n}\n\nfunction Pesach(day) {\n\treturn ['Pesach: ' + day, 0, 'פסח יום ' + gematriya(day)];\n}\n\nvar USER_EVENT = 1,\n\tLIGHT_CANDLES = 2,\n\tYOM_TOV_ENDS = 4,\n\tCHUL_ONLY = 8, // chutz l'aretz (Diaspora)\n\tIL_ONLY = 16, // b'aretz (Israel)\n\tLIGHT_CANDLES_TZEIS = 32;\n\nexports.masks = {\n\tUSER_EVENT : USER_EVENT,\n\tLIGHT_CANDLES : LIGHT_CANDLES,\n\tYOM_TOV_ENDS : YOM_TOV_ENDS,\n\tCHUL_ONLY : CHUL_ONLY,\n\tIL_ONLY : IL_ONLY,\n\tLIGHT_CANDLES_TZEIS: LIGHT_CANDLES_TZEIS\n};\n\nfunction Event(date, desc, mask) {\n\tvar me = this;\n\tme.date = new HDate(date);\n\tme.desc = typeof desc != 'object' ? [desc] : desc;\n\n\tme.USER_EVENT = !!( mask & USER_EVENT );\n\tme.LIGHT_CANDLES = !!( mask & LIGHT_CANDLES );\n\tme.YOM_TOV_ENDS = !!( mask & YOM_TOV_ENDS );\n\tme.CHUL_ONLY = !!( mask & CHUL_ONLY );\n\tme.IL_ONLY = !!( mask & IL_ONLY );\n\tme.LIGHT_CANDLES_TZEIS = !!( mask & LIGHT_CANDLES_TZEIS );\n}\n\nEvent.prototype.is = function(date, il) {\n\tdate = new HDate(date), myDate = this.date;\n\tif (arguments.length < 2) {\n\t\t//il = Event.isIL;\n\t\til = date.il;\n\t}\n\tif (date.getDate() != myDate.getDate() || date.getMonth() != myDate.getMonth()) {\n\t\treturn false;\n\t}\n\tif (date.getFullYear() != myDate.getFullYear()) {\n\t\treturn false;\n\t}\n\tif (il && this.CHUL_ONLY || !il && this.IL_ONLY) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEvent.prototype.masks = function() {\n\tvar me = this;\n\treturn (me.USER_EVENT && USER_EVENT) |\n\t\t (me.LIGHT_CANDLES && LIGHT_CANDLES) |\n\t\t (me.YOM_TOV_ENDS && YOM_TOV_ENDS) |\n\t\t (me.CHUL_ONLY && CHUL_ONLY) |\n\t\t (me.IL_ONLY && IL_ONLY) |\n\t\t (me.LIGHT_CANDLES_TZEIS && LIGHT_CANDLES_TZEIS);\n};\n\nEvent.prototype.getDesc = function(o) {\n\treturn c.LANG(this.desc, o);\n};\n\nEvent.prototype.candleLighting = function() {\n\tvar date = this.date;\n\tif (this.LIGHT_CANDLES) {\n\t\treturn new Date(date.sunset() - (Event.candleLighting * 60 * 1000));\n\t} else if (this.LIGHT_CANDLES_TZEIS) {\n\t\treturn date.getZemanim().tzeit;\n\t}\n\treturn null;\n};\n\nEvent.prototype.havdalah = function() {\n\tif (this.YOM_TOV_ENDS) {\n\t\treturn new Date(this.date.sunset().getTime() + (Event.havdalah * 60 * 1000));\n\t}\n\treturn null;\n};\n\nEvent.prototype.routine = (function(){\n\tfunction routine(){\n\t\treturn !!~routine.names.indexOf(this.getDesc('s'));\n\t}\n\troutine.names = [Shabbat, 'Erev ' + Shabbat];\n\treturn routine;\n})();\n\nEvent.isIL = false;\n\nEvent.candleLighting = 18;\n\nEvent.havdalah = 42;\n\nexports.Event = Event;\n\nexports.year = function(year) {\n\tif (__cache[year]) {\n\t\treturn __cache[year];\n\t}\n\n\tvar\tRH = new HDate(1, TISHREI, year),\n\t\tpesach = new HDate(15, NISAN, year),\n\t\ttmpDate;\n\n\tvar h = {};\n\n\tfunction add(ev) {\n\t\tif (Array.isArray(ev)) {\n\t\t\tev.forEach(function(e){\n\t\t\t\tadd(e);\n\t\t\t});\n\t\t} else {\n\t\t\tif (h[ev.date]) {\n\t\t\t\th[ev.date].push(ev);\n\t\t\t} else {\n\t\t\t\th[ev.date] = [ev];\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.defineProperty(h, 'add', {value: add});\n\n\tadd([ // standard holidays that don't shift based on year\n\t\tnew Event(\n\t\t\tRH,\n\t\t\t['Rosh Hashana 1', 0, 'ראש השנה א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS\n\t\t), new Event(\n\t\t\tnew HDate(2, TISHREI, year),\n\t\t\t['Rosh Hashana 2', 0, 'ראש השנה ב\\''],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(3 + (RH[getDay]() == days.THU), TISHREI, year), // push off to SUN if RH is THU\n\t\t\t['Tzom Gedaliah', 0, 'צום גדליה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(9, TISHREI, year),\n\t\t\t['Erev Yom Kippur', 0, 'ערב יום כיפור'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event( // first SAT after RH\n\t\t\tnew HDate(dayOnOrBefore(SAT, 7 + RH[abs]())),\n\t\t\t[Shabbat + ' Shuva', Shabbos + ' Shuvah', 'שבת שובה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(10, TISHREI, year),\n\t\t\t['Yom Kippur', 0, 'יום כיפור'],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(14, TISHREI, year),\n\t\t\t['Erev Sukkot', 'Erev Succos', 'ערב סוכות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tSukkot(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tCHM(Sukkot(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(17, TISHREI, year),\n\t\t\tCHM(Sukkot(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, TISHREI, year),\n\t\t\tCHM(Sukkot(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, TISHREI, year),\n\t\t\tCHM(Sukkot(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, TISHREI, year),\n\t\t\tCHM(Sukkot(6)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(21, TISHREI, year),\n\t\t\t['Sukkot: 7 (Hoshana Raba)', 'Succos: 7 (Hoshana Raba)', 'סוכות יום ז\\' )הושנע רבה('],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת'],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret / Simchat Torah', 'Shmini Atzeres / Simchas Torah', 'שמיני עצרת / שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(23, TISHREI, year),\n\t\t\t['Simchat Torah', 'Simchas Torah', 'שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(24, KISLEV, year),\n\t\t\t['Erev Chanukah', 0, 'ערב חנוכה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(25, KISLEV, year),\n\t\t\tChanukah(1),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(26, KISLEV, year),\n\t\t\tChanukah(2),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(27, KISLEV, year),\n\t\t\tChanukah(3),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(28, KISLEV, year),\n\t\t\tChanukah(4),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, KISLEV, year),\n\t\t\tChanukah(5),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(30, KISLEV, year), // yes, i know these are wrong\n\t\t\tChanukah(6),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(31, KISLEV, year), // HDate() corrects the month automatically\n\t\t\tChanukah(7),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(32, KISLEV, year),\n\t\t\tChanukah(8),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.SHVAT, year),\n\t\t\t[\"Tu B'Shvat\", 0, 'ט\"ו בשבט'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 43)),\n\t\t\t[Shabbat + ' Shekalim', Shabbos + ' Shekalim', 'שבת שקלים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 30)),\n\t\t\t[Shabbat + ' Zachor', Shabbos + ' Zachor', 'שבת זכור'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(pesach[abs]() - (pesach[getDay]() == days.TUE ? 33 : 31)),\n\t\t\t[\"Ta'anit Esther\", \"Ta'anis Esther\", 'תענית אסתר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(13, months.ADAR_II, year),\n\t\t\t['Erev Purim', 0, 'ערב פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, months.ADAR_II, year),\n\t\t\t['Purim', 0, 'פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.ADAR_II, year),\n\t\t\t['Shushan Purim', 0, 'שושן פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14) - 7),\n\t\t\t[Shabbat + ' Parah', Shabbos + ' Parah', 'שבת פרה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14)),\n\t\t\t[Shabbat + ' Hachodesh', Shabbos + ' Hachodesh', 'שבת החודש'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 1)),\n\t\t\t[Shabbat + ' HaGadol', Shabbos + ' HaGadol', 'שבת הגדול'],\n\t\t\t0\n\t\t), new Event(\n\t\t\t// if the fast falls on Shabbat, move to Thursday\n\t\t\tpesach.prev()[getDay]() == SAT ? pesach.onOrBefore(days.THU) : new HDate(14, NISAN, year),\n\t\t\t[\"Ta'anit Bechorot\", \"Ta'anis Bechoros\", 'תענית בכורות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, NISAN, year),\n\t\t\t['Erev Pesach', 0, 'ערב פסח'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tPesach(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tCHM(Pesach(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\t['Start counting Omer', 0, 'התחלת ספירת העומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(17, NISAN, year),\n\t\t\tCHM(Pesach(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, NISAN, year),\n\t\t\tCHM(Pesach(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, NISAN, year),\n\t\t\tCHM(Pesach(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, NISAN, year),\n\t\t\tCHM(Pesach(6)),\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, NISAN, year),\n\t\t\tPesach(8),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(14, months.IYYAR, year),\n\t\t\t['Pesach Sheni', 0, 'פסח שני'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, months.IYYAR, year),\n\t\t\t[\"Lag B'Omer\", 0, 'ל\"ג בעומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(5, months.SIVAN, year),\n\t\t\t['Erev Shavuot', 'Erev Shavuos', 'ערב שבועות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot 1', 'Shavuos 1', 'שבועות א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot', 'Shavuos', 'שבועות'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(7, months.SIVAN, year),\n\t\t\t['Shavuot 2', 'Shavuos 2', 'שבועות ב\\''],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1)[abs]() - 4)),\n\t\t\t['Leil Selichot', 'Leil Selichos', 'ליל סליחות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, months.ELUL, year),\n\t\t\t['Erev Rosh Hashana', 0, 'ערב ראש השנה'],\n\t\t\tLIGHT_CANDLES\n\t\t)\n\t]);\n\n\ttmpDate = new HDate(10, months.TEVET, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Asara B'Tevet\", 0, 'עשרה בטבת'],\n\t\t0\n\t));\n\n\tif (c.LEAP(year)) {\n\t\tadd(new Event(\n\t\t\tnew HDate(14, months.ADAR_I, year),\n\t\t\t['Purim Katan', 0, 'פורים קטן'],\n\t\t\t0\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(15, months.ADAR_I, year),\n\t\t\t['Shushan Purim Katan', 0, 'שושן פורים קטן'],\n\t\t\t0\n\t\t));\n\t}\n\n\tif (year >= 5711) { // Yom HaShoah first observed in 1951\n\t\ttmpDate = new HDate(27, NISAN, year);\n\t\t/* When the actual date of Yom Hashoah falls on a Friday, the\n\t\t * state of Israel observes Yom Hashoah on the preceding\n\t\t * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n\t\t * on the following Monday.\n\t\t * http://www.ushmm.org/remembrance/dor/calendar/\n\t\t */\n\n\t\tif (tmpDate[getDay]() == days.FRI) {\n\t\t\ttmpDate = tmpDate.prev();\n\t\t} else if (tmpDate[getDay]() == days.SUN) {\n\t\t\ttmpDate = tmpDate.next();\n\t\t}\n\n\t\tadd(new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaShoah', 0, 'יום השואה'],\n\t\t\t0\n\t\t));\n\t}\n\n\tadd(atzmaut(year));\n\n\tif (year >= 5727) { // Yom Yerushalayim only celebrated after 1967\n\t\tadd(new Event(\n\t\t\tnew HDate(29, months.IYYAR, year),\n\t\t\t['Yom Yerushalayim', 0, 'יום ירושלים'],\n\t\t\t0\n\t\t));\n\t}\n\n\ttmpDate = new HDate(17, months.TAMUZ, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Shiva-Asar B'Tamuz\", 0, \"צום יז' בתמוז\"],\n\t\t0\n\t));\n\n\ttmpDate = new HDate(9, months.AV, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]())),\n\t\t[Shabbat + ' Chazon', Shabbos + ' Chazon', 'שבת חזון'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate.prev(),\n\t\t[\"Erev Tish'a B'Av\", 0, 'ערב תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Tish'a B'Av\", 0, 'תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]() + 7)),\n\t\t[Shabbat + ' Nachamu', Shabbos + ' Nachamu', 'שבת נחמו'],\n\t\t0\n\t));\n\n\tfor (var day = 6; day < c.daysInYear(year); day += 7) {\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t[Shabbat, Shabbos, 'שבת'],\n\t\t\tYOM_TOV_ENDS\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(days.FRI, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t['Erev ' + Shabbat, 'Erev ' + Shabbos, 'ערב שבת'],\n\t\t\tLIGHT_CANDLES\n\t\t));\n\t}\n\n\tfor (var month = 1; month <= c.MONTH_CNT(year); month++) {\n\t\tif ((month == NISAN ? c.daysInMonth(c.MONTH_CNT(year - 1), year - 1) :\n\t\t\t\tc.daysInMonth(month - 1, year)) == 30) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh 2', 0, \"ראש חודש ב'\"],\n\t\t\t\t0\n\t\t\t));\n\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(30, month - 1, year),\n\t\t\t\t['Rosh Chodesh 1', 0, \"ראש חודש א'\"],\n\t\t\t\t0\n\t\t\t));\n\t\t} else if (month !== TISHREI) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh', 0, 'ראש חודש'],\n\t\t\t\t0\n\t\t\t));\n\t\t}\n\n\t\tif (month == months.ELUL) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd(new Event(\n\t\t\tnew HDate(29, month, year).onOrBefore(SAT),\n\t\t\t[Shabbat + ' Mevarchim', Shabbos + ' Mevorchim', 'שבת מברכים'],\n\t\t\t0\n\t\t));\n\t}\n\n\treturn __cache[year] = h;\n};\n\nfunction atzmaut(year) {\n\tif (year >= 5708) { // Yom HaAtzma'ut only celebrated after 1948\n\t\tvar tmpDate = new HDate(1, months.IYYAR, year), pesach = new HDate(15, NISAN, year);\n\n\t\tif (pesach[getDay]() == days.SUN) {\n\t\t\ttmpDate.setDate(2);\n\t\t} else if (pesach[getDay]() == SAT) {\n\t\t\ttmpDate.setDate(3);\n\t\t} else if (year < 5764) {\n\t\t\ttmpDate.setDate(4);\n\t\t} else if (pesach[getDay]() == days.TUE) {\n\t\t\ttmpDate.setDate(5);\n\t\t} else {\n\t\t\ttmpDate.setDate(4);\n\t\t}\n\n\t\treturn [new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaZikaron', 0, 'יום הזיכרון'],\n\t\t\t0\n\t\t), new Event(\n\t\t\ttmpDate.next(),\n\t\t\t[\"Yom HaAtzma'ut\", 0, 'יום העצמאות'],\n\t\t\t0\n\t\t)];\n\t}\n\treturn [];\n}\nexports.atzmaut = atzmaut;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*\n * Convert numbers to gematriya representation, and vice-versa.\n *\n * Licensed MIT.\n *\n * Copyright (c) 2014 Eyal Schachter\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(){\n\tvar letters = {}, numbers = {\n\t\t'': 0,\n\t\tא: 1,\n\t\tב: 2,\n\t\tג: 3,\n\t\tד: 4,\n\t\tה: 5,\n\t\tו: 6,\n\t\tז: 7,\n\t\tח: 8,\n\t\tט: 9,\n\t\tי: 10,\n\t\tכ: 20,\n\t\tל: 30,\n\t\tמ: 40,\n\t\tנ: 50,\n\t\tס: 60,\n\t\tע: 70,\n\t\tפ: 80,\n\t\tצ: 90,\n\t\tק: 100,\n\t\tר: 200,\n\t\tש: 300,\n\t\tת: 400,\n\t\tתק: 500,\n\t\tתר: 600,\n\t\tתש: 700,\n\t\tתת: 800,\n\t\tתתק: 900,\n\t\tתתר: 1000\n\t}, i;\n\tfor (i in numbers) {\n\t\tletters[numbers[i]] = i;\n\t}\n\n\tfunction gematriya(num, limit) {\n\t\tif (typeof num !== 'number' && typeof num !== 'string') {\n\t\t\tthrow new TypeError('non-number or string given to gematriya()');\n\t\t}\n\t\tvar str = typeof num === 'string';\n\t\tif (str) {\n\t\t\tnum = num.replace(/('|\")/g,'');\n\t\t}\n\t\tnum = num.toString().split('').reverse();\n\t\tif (!str && limit) {\n\t\t\tnum = num.slice(0, limit);\n\t\t}\n\n\t\tnum = num.map(function g(n,i){\n\t\t\tif (str) {\n\t\t\t\treturn limit && numbers[n] < numbers[num[i - 1]] && numbers[n] < 100 ? numbers[n] * 1000 : numbers[n];\n\t\t\t} else {\n\t\t\t\tif (parseInt(n, 10) * Math.pow(10, i) > 1000) {\n\t\t\t\t\treturn g(n, i-3);\n\t\t\t\t}\n\t\t\t\treturn letters[parseInt(n, 10) * Math.pow(10, i)];\n\t\t\t}\n\t\t});\n\n\t\tif (str) {\n\t\t\treturn num.reduce(function(o,t){\n\t\t\t\treturn o + t;\n\t\t\t}, 0);\n\t\t} else {\n\t\t\tnum = num.reverse().join('').replace(/יה/g,'טו').replace(/יו/g,'טז').split('');\n\n\t\t\tif (num.length === 1) {\n\t\t\t\tnum.push(\"'\");\n\t\t\t} else if (num.length > 1) {\n\t\t\t\tnum.splice(-1, 0, '\"');\n\t\t\t}\n\n\t\t\treturn num.join('');\n\t\t}\n\t}\n\n\tif (typeof module !== 'undefined') {\n\t\tmodule.exports = gematriya;\n\t} else {\n\t\twindow.gematriya = gematriya;\n\t}\n})();\n","/*\n (c) 2011-2015, Vladimir Agafonkin\n SunCalc is a JavaScript library for calculating sun/moon position and light phases.\n https://github.com/mourner/suncalc\n*/\n\n(function () { 'use strict';\n\n// shortcuts for easier to read formulas\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos,\n tan = Math.tan,\n asin = Math.asin,\n atan = Math.atan2,\n acos = Math.acos,\n rad = PI / 180;\n\n// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas\n\n\n// date/time constants and conversions\n\nvar dayMs = 1000 * 60 * 60 * 24,\n J1970 = 2440588,\n J2000 = 2451545;\n\nfunction toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; }\nfunction fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); }\nfunction toDays(date) { return toJulian(date) - J2000; }\n\n\n// general calculations for position\n\nvar e = rad * 23.4397; // obliquity of the Earth\n\nfunction rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); }\nfunction declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); }\n\nfunction azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); }\nfunction altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); }\n\nfunction siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; }\n\nfunction astroRefraction(h) {\n if (h < 0) // the following formula works for positive altitudes only.\n h = 0; // if h = -0.08901179 a div/0 would occur.\n\n // formula 16.4 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad:\n return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));\n}\n\n// general sun calculations\n\nfunction solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); }\n\nfunction eclipticLongitude(M) {\n\n var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center\n P = rad * 102.9372; // perihelion of the Earth\n\n return M + C + P + PI;\n}\n\nfunction sunCoords(d) {\n\n var M = solarMeanAnomaly(d),\n L = eclipticLongitude(M);\n\n return {\n dec: declination(L, 0),\n ra: rightAscension(L, 0)\n };\n}\n\n\nvar SunCalc = {};\n\n\n// calculates sun position for a given date and latitude/longitude\n\nSunCalc.getPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = sunCoords(d),\n H = siderealTime(d, lw) - c.ra;\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: altitude(H, phi, c.dec)\n };\n};\n\n\n// sun times configuration (angle, morning name, evening name)\n\nvar times = SunCalc.times = [\n [-0.833, 'sunrise', 'sunset' ],\n [ -0.3, 'sunriseEnd', 'sunsetStart' ],\n [ -6, 'dawn', 'dusk' ],\n [ -12, 'nauticalDawn', 'nauticalDusk'],\n [ -18, 'nightEnd', 'night' ],\n [ 6, 'goldenHourEnd', 'goldenHour' ]\n];\n\n// adds a custom time to the times config\n\nSunCalc.addTime = function (angle, riseName, setName) {\n times.push([angle, riseName, setName]);\n};\n\n\n// calculations for sun times\n\nvar J0 = 0.0009;\n\nfunction julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); }\n\nfunction approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; }\nfunction solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); }\n\nfunction hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); }\n\n// returns set time for the given sun altitude\nfunction getSetJ(h, lw, phi, dec, n, M, L) {\n\n var w = hourAngle(h, phi, dec),\n a = approxTransit(w, lw, n);\n return solarTransitJ(a, M, L);\n}\n\n\n// calculates sun times for a given date and latitude/longitude\n\nSunCalc.getTimes = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n\n d = toDays(date),\n n = julianCycle(d, lw),\n ds = approxTransit(0, lw, n),\n\n M = solarMeanAnomaly(ds),\n L = eclipticLongitude(M),\n dec = declination(L, 0),\n\n Jnoon = solarTransitJ(ds, M, L),\n\n i, len, time, Jset, Jrise;\n\n\n var result = {\n solarNoon: fromJulian(Jnoon),\n nadir: fromJulian(Jnoon - 0.5)\n };\n\n for (i = 0, len = times.length; i < len; i += 1) {\n time = times[i];\n\n Jset = getSetJ(time[0] * rad, lw, phi, dec, n, M, L);\n Jrise = Jnoon - (Jset - Jnoon);\n\n result[time[1]] = fromJulian(Jrise);\n result[time[2]] = fromJulian(Jset);\n }\n\n return result;\n};\n\n\n// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas\n\nfunction moonCoords(d) { // geocentric ecliptic coordinates of the moon\n\n var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude\n M = rad * (134.963 + 13.064993 * d), // mean anomaly\n F = rad * (93.272 + 13.229350 * d), // mean distance\n\n l = L + rad * 6.289 * sin(M), // longitude\n b = rad * 5.128 * sin(F), // latitude\n dt = 385001 - 20905 * cos(M); // distance to the moon in km\n\n return {\n ra: rightAscension(l, b),\n dec: declination(l, b),\n dist: dt\n };\n}\n\nSunCalc.getMoonPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = moonCoords(d),\n H = siderealTime(d, lw) - c.ra,\n h = altitude(H, phi, c.dec),\n // formula 14.1 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));\n\n h = h + astroRefraction(h); // altitude correction for refraction\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: h,\n distance: c.dist,\n parallacticAngle: pa\n };\n};\n\n\n// calculations for illumination parameters of the moon,\n// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and\n// Chapter 48 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n\nSunCalc.getMoonIllumination = function (date) {\n\n var d = toDays(date || new Date()),\n s = sunCoords(d),\n m = moonCoords(d),\n\n sdist = 149598000, // distance from Earth to Sun in km\n\n phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)),\n inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)),\n angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) -\n cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra));\n\n return {\n fraction: (1 + cos(inc)) / 2,\n phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI,\n angle: angle\n };\n};\n\n\nfunction hoursLater(date, h) {\n return new Date(date.valueOf() + h * dayMs / 24);\n}\n\n// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article\n\nSunCalc.getMoonTimes = function (date, lat, lng, inUTC) {\n var t = new Date(date);\n if (inUTC) t.setUTCHours(0, 0, 0, 0);\n else t.setHours(0, 0, 0, 0);\n\n var hc = 0.133 * rad,\n h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc,\n h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx;\n\n // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)\n for (var i = 1; i <= 24; i += 2) {\n h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc;\n h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc;\n\n a = (h0 + h2) / 2 - h1;\n b = (h2 - h0) / 2;\n xe = -b / (2 * a);\n ye = (a * xe + b) * xe + h1;\n d = b * b - 4 * a * h1;\n roots = 0;\n\n if (d >= 0) {\n dx = Math.sqrt(d) / (Math.abs(a) * 2);\n x1 = xe - dx;\n x2 = xe + dx;\n if (Math.abs(x1) <= 1) roots++;\n if (Math.abs(x2) <= 1) roots++;\n if (x1 < -1) x1 = x2;\n }\n\n if (roots === 1) {\n if (h0 < 0) rise = i + x1;\n else set = i + x1;\n\n } else if (roots === 2) {\n rise = i + (ye < 0 ? x2 : x1);\n set = i + (ye < 0 ? x1 : x2);\n }\n\n if (rise && set) break;\n\n h0 = h2;\n }\n\n var result = {};\n\n if (rise) result.rise = hoursLater(t, rise);\n if (set) result.set = hoursLater(t, set);\n\n if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true;\n\n return result;\n};\n\n\n// export as Node module / AMD module / browser variable\nif (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc;\nelse if (typeof define === 'function' && define.amd) define(SunCalc);\nelse window.SunCalc = SunCalc;\n\n}());\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n/*\n * Many of the following algorithms were taken from hebrew calendar\n * routines by Maimonedes, from his Mishneh Torah, and implemented by\n * Nachum Dershowitz Department of Computer Science\n * (217) 333-4219 University of Illinois at Urbana-Champaign\n * nachum@cs.uiuc.edu 1304 West Springfield Avenue\n * Urbana, Illinois 61801\n *\n * The routines were included in the emacs 19 distribution.\n *\n */\nvar c = require('./common'), HDate = require('./hdate');\n\nvar concat = 'concat', range = c.range; // for client optimization\n\nvar INCOMPLETE = 0,\n\tREGULAR = 1,\n\tCOMPLETE = 2;\n\nfunction Sedra(hebYr, il) { // the Hebrew year\n\til = !!il;\n\tvar long_c = c.lngChesh(hebYr);\n\tvar short_k = c.shrtKis(hebYr);\n\tvar type;\n\tthis.year = hebYr;\n\tif (long_c && !short_k) {\n\t\ttype = COMPLETE;\n\t} else if (!long_c && short_k) {\n\t\ttype = INCOMPLETE;\n\t} else {\n\t\ttype = REGULAR;\n\t}\n\n\tvar rosh_hashana = new HDate(1, c.months.TISHREI, hebYr).abs();\n\tvar rosh_hashana_day = (rosh_hashana % 7) + 1;\n\n\t// find the first Saturday on or after Rosh Hashana\n\tthis.first_saturday = c.dayOnOrBefore(6, rosh_hashana + 6);\n\tvar leap = +c.LEAP(hebYr);\n\tthis.type = type;\n\tthis.rosh_hashana_day = rosh_hashana_day;\n\tthis.leap = leap;\n\tthis.il = il;\n\n\tvar core = \"\" + leap + rosh_hashana_day + type;\n\tif (types[core]) {\n\t\tthis.theSedraArray = types[core];\n\t} else {\n\t\tthis.theSedraArray = types[core + (+il)]; // cast to num, then concat\n\t}\n\n\tif (!this.theSedraArray) {\n\t\tconsole.log(this);\n\t\tthrow new TypeError(\"improper sedra year type calculated.\");\n\t}\n}\n\nvar parshiot = Sedra.parshiot = [\n\t[ 'Bereshit', 'Bereshis', 'בראשית' ], // 0\n\t[ 'Noach', 0, 'נח' ],\n\t[ 'Lech-Lecha', 0, 'לך-לך' ],\n\t[ 'Vayera', 0, 'וירא' ],\n\t[ 'Chayei Sara', 0, 'חי שרה' ],\n\t[ 'Toldot', 'Toldos', 'תולדות' ],\n\t[ 'Vayetzei', 0, 'ויצא' ],\n\t[ 'Vayishlach', 0, 'וישלח' ],\n\t[ 'Vayeshev', 0, 'וישב' ],\n\t[ 'Miketz', 0, 'מקץ' ],\n\t[ 'Vayigash', 0, 'ויגש' ], // 10\n\t[ 'Vayechi', 0, 'ויחי' ],\n\t[ 'Shemot', 'Shemos', 'שמות' ],\n\t[ 'Vaera', 0, 'וארא' ],\n\t[ 'Bo', 0, 'בא' ],\n\t[ 'Beshalach', 0, 'בשלח' ],\n\t[ 'Yitro', 'Yisro', 'יתרו' ],\n\t[ 'Mishpatim', 0, 'משפטים' ],\n\t[ 'Terumah', 0, 'תרומה' ],\n\t[ 'Tetzaveh', 0, 'תצוה' ],\n\t[ 'Ki Tisa', 'Ki Sisa', 'כי תשא' ], // 20\n\t[ 'Vayakhel', 0, 'ויקהל' ],\n\t[ 'Pekudei', 0, 'פקודי' ],\n\t[ 'Vayikra', 0, 'ויקרא' ],\n\t[ 'Tzav', 0, 'צו' ],\n\t[ 'Shmini', 0, 'שמיני' ],\n\t[ 'Tazria', 0, 'תזריע' ],\n\t[ 'Metzora', 0, 'מצרע' ],\n\t[ 'Achrei Mot', 'Achrei Mos', 'אחרי מות' ],\n\t[ 'Kedoshim', 0, 'קדשים' ],\n\t[ 'Emor', 0, 'אמור' ], // 30\n\t[ 'Behar', 0, 'בהר' ],\n\t[ 'Bechukotai', 'Bechukosai', 'בחקתי' ],\n\t[ 'Bamidbar', 0, 'במדבר' ],\n\t[ 'Nasso', 0, 'נשא' ],\n\t[ 'Beha\\'alotcha', 'Beha\\'aloscha', 'בהעלתך' ],\n\t[ 'Sh\\'lach', 0, 'שלח לך' ],\n\t[ 'Korach', 0, 'קורח' ],\n\t[ 'Chukat', 'Chukas', 'חקת' ],\n\t[ 'Balak', 0, 'בלק' ],\n\t[ 'Pinchas', 0, 'פינחס' ], // 40\n\t[ 'Matot', 'Matos', 'מטות' ],\n\t[ 'Masei', 0, 'מסעי' ],\n\t[ 'Devarim', 0, 'דברים' ],\n\t[ 'Vaetchanan', 'V\\'eschanan', 'ואתחנן' ],\n\t[ 'Eikev', 0, 'עקב' ],\n\t[ 'Re\\'eh', 0, 'ראה' ],\n\t[ 'Shoftim', 0, 'שופטים' ],\n\t[ 'Ki Teitzei', 'Ki Seitzei', 'כי תצא' ],\n\t[ 'Ki Tavo', 'Ki Savo', 'כי תבוא' ],\n\t[ 'Nitzavim', 0, 'נצבים' ], // 50\n\t[ 'Vayeilech', 0, 'וילך' ],\n\t[ 'Ha\\'Azinu', 0, 'האזינו' ]\n];\n\n\n// parsha doubler/undoubler\nfunction D(p) {\n\treturn -p;\n}\n\n// these are wrapped to protect them from [].concat()\nvar RH = [[ 'Rosh Hashana', 0, 'ראש השנה' ]]; //0\nvar YK = [[ 'Yom Kippur', 0, 'יום כיפור' ]]; //1\n\nvar SUKKOT = [[ 'Sukkot', 'Succos', 'סוכות' ]]; //0\nvar CHMSUKOT = [[ 'Chol hamoed Sukkot', 'Chol hamoed Succos', 'חול המועד סוכות' ]]; //0\nvar SHMINI = [[ 'Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת' ]]; //0\nvar EOY = [[ 'End-of-Year: Simchat-Torah, Sukkot', 'End-of-Year: Simchas-Torah, Succos', 'סופשנה: סוכות וסמחת תורה' ]]; //0\n\nvar PESACH = [[ 'Pesach', 0, 'פסח' ]]; //25\nvar CHMPESACH = [[ 'Chol hamoed Pesach', 0, 'חול המועד פסח' ]]; //25\nvar PESACH7 = [[ 'Second days of Pesach', 0, 'שביעי של פסח' ]]; //25\n\nvar SHAVUOT = [[ 'Shavuot', 'Shavuos', 'שבועות' ]]; //33\n\n\n\n// The ordinary year types (keviot)\n\n// names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n\nvar types = {\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g. 5753\n\t'020' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t//e.g. 5756\n\t'0220' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28),\n\t\t30, D(31), 33, SHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t//e.g. 5701\n\t'0510' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH, PESACH,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t// e.g. 5745\n\t'0511' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH,\n\t\t25, D(26), D(28), range(30, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Sunday. */\n\t//e.g. 5754\n\t'052' : [52][concat](YK, CHMSUKOT, range(0, 24), PESACH7, 25, D(26),\n\t\tD(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n\t * each have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5761\n\t'070' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, PESACH7,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Tuesday. */\n\t//e.g. 5716\n\t'072' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, CHMPESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\n\t/* -- The leap year types (keviot) -- */\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1200' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1201' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1220' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH,\n\t\tPESACH, range(28, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1221' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH, range(28, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n\t * Kislev both have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5768\n\t'150' : [52][concat](YK, CHMSUKOT, range(0, 28), PESACH7, range(29, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev both have 30 days), and has Passover start on Tuesday. */\n\t//eg. 5771\n\t'152' : [52][concat](YK, CHMSUKOT, range(0, 28), CHMPESACH, range(29, 49), D(50)),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g.5757\n\t'170' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t'1720' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t)\n};\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n//e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\n\nSedra.prototype.get = function(hDate) {\n\treturn abs(this, hDate.abs());\n};\n\n// returns an array describing the parsha on the first Saturday on or after absdate\nfunction abs(year, absDate) {\n\n\t// find the first saturday on or after today's date\n\tabsDate = c.dayOnOrBefore(6, absDate + 6);\n\n\tvar weekNum = (absDate - year.first_saturday) / 7;\n\tvar index = year.theSedraArray[weekNum];\n\n\tif (undefined === index) {\n\t\treturn abs(new Sedra(year.year + 1, year.il), absDate); // must be next year\n\t}\n\tif (typeof index == 'object') {\n\t\t// Shabbat has a chag. Return a description\n\t\treturn [index];\n\t}\n\tif (index >= 0) {\n\t\treturn [parshiot[index]];\n\t}\n\n\tindex = D(index); // undouble the parsha\n\treturn [parshiot[index], parshiot[index + 1]];\n}\n\nmodule.exports = Sedra;\n"]}
\ No newline at end of file
diff --git a/client/hebcal.noloc.js b/client/hebcal.noloc.js
index fe50ba4..697ab97 100644
--- a/client/hebcal.noloc.js
+++ b/client/hebcal.noloc.js
@@ -2009,6 +2009,15 @@ HDateProto.tachanun = (function() {
return tachanun;
})();
+HDateProto.tachanun_uf = function(){
+ var ret = this.tachanun();
+ return {
+ shacharit: !!(ret & this.tachanun.SHACHARIT),
+ mincha: !!(ret & this.tachanun.MINCHA),
+ all_congs: !!(ret & this.tachanun.ALL_CONGS)
+ };
+};
+
HDateProto.hallel = (function() {
var NONE = hallel.NONE = 0,
HALF = hallel.HALF = 1,
diff --git a/client/hebcal.noloc.js.map b/client/hebcal.noloc.js.map
index 56bbbb6..a98ecb1 100644
--- a/client/hebcal.noloc.js.map
+++ b/client/hebcal.noloc.js.map
@@ -16,7 +16,7 @@
"sedra.js"
],
"names": [],
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACndA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjhCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
"file": "generated.js",
"sourceRoot": "",
"sourcesContent": [
@@ -27,7 +27,7 @@
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tgematriya = require('gematriya');\n\nvar shas = [\n\t// sname, aname, hname, blatt\n\t[ \"Berachot\", \"Berachos\", \"ברכות\", 64 ],\n\t[ \"Shabbat\", \"Shabbos\", \"שבת\", 157 ],\n\t[ \"Eruvin\", \"Eruvin\", \"עירובין\", 105 ],\n\t[ \"Pesachim\", 0, \"פסחים\", 121 ],\n\t[ \"Shekalim\", 0, \"שקלים\", 22 ],\n\t[ \"Yoma\", 0, \"יומא\", 88 ],\n\t[ \"Sukkah\", 0, \"סוכה\", 56 ],\n\t[ \"Beitzah\", 0, \"ביצה\", 40 ],\n\t[ \"Rosh Hashana\", 0, \"ראש השנה\", 35 ],\n\t[ \"Taanit\", \"Taanis\", \"תענית\", 31 ],\n\t[ \"Megillah\", 0, \"מגילה\", 32 ],\n\t[ \"Moed Katan\", 0, \"מועד קטן\", 29 ],\n\t[ \"Chagigah\", 0, \"חגיגה\", 27 ],\n\t[ \"Yevamot\", \"Yevamos\", \"יבמות\", 122 ],\n\t[ \"Ketubot\", \"Kesubos\", \"כתובות\", 112 ],\n\t[ \"Nedarim\", 0, \"נדרים\", 91 ],\n\t[ \"Nazir\", 0, \"נזיר\", 66 ],\n\t[ \"Sotah\", 0, \"סוטה\", 49 ],\n\t[ \"Gitin\", 0, \"גיטין\", 90 ],\n\t[ \"Kiddushin\", 0, \"קידושין\", 82 ],\n\t[ \"Baba Kamma\", 0, \"בבא קמא\", 119 ],\n\t[ \"Baba Metzia\", 0, \"בבא מציעא\", 119 ],\n\t[ \"Baba Batra\", \"Baba Basra\", \"בבא בתרא\", 176 ],\n\t[ \"Sanhedrin\", 0, \"סנהדרין\", 113 ],\n\t[ \"Makkot\", \"Makkos\", \"מכות\", 24 ],\n\t[ \"Shevuot\", \"Shevuos\", \"שבועות\", 49 ],\n\t[ \"Avodah Zarah\", 0, \"עבודה זרה\", 76 ],\n\t[ \"Horayot\", \"Horayos\", \"הוריות\", 14 ],\n\t[ \"Zevachim\", 0, \"זבחים\", 120 ],\n\t[ \"Menachot\", \"Menachos\", \"מנחות\", 110 ],\n\t[ \"Chullin\", 0, \"חולין\", 142 ],\n\t[ \"Bechorot\", \"Bechoros\", \"בכורות\", 61 ],\n\t[ \"Arachin\", 0, \"ערכין\", 34 ],\n\t[ \"Temurah\", 0, \"תמורה\", 34 ],\n\t[ \"Keritot\", \"Kerisos\", \"כריתות\", 28 ],\n\t[ \"Meilah\", 0, \"מעילה\", 22 ],\n\t[ \"Kinnim\", 0, \"קנים\", 4 ],\n\t[ \"Tamid\", 0, \"תמיד\", 10 ],\n\t[ \"Midot\", \"Midos\", \"מדות\", 4 ],\n\t[ \"Niddah\", 0, \"נדה\", 73 ]\n].map(function(m){\n\treturn {name: m.slice(0,3), blatt: m[3]};\n});\n\nexports.dafyomi = function(gregdate) {\n\tvar dafcnt = 40, cno, dno, osday, nsday, total, count, j, cday, blatt;\n\n\tif (!(gregdate instanceof Date)) {\n\t\tthrow new TypeError('non-date given to dafyomi');\n\t}\n\n\tosday = greg.greg2abs(new Date(1923, 8, 11));\n\tnsday = greg.greg2abs(new Date(1975, 5, 24));\n\tcday = greg.greg2abs(gregdate);\n\n\tif (cday < osday) { // no cycle; dy didn't start yet\n\t\treturn {name: [], blatt: 0};\n\t}\n\tif (cday >= nsday) { // \"new\" cycle\n\t\tcno = 8 + ( (cday - nsday) / 2711 );\n\t\tdno = (cday - nsday) % 2711;\n\t} else { // old cycle\n\t\tcno = 1 + ( (cday - osday) / 2702 );\n\t\tdno = (cday - osday) % 2702;\n\t}\n\n\t// Find the daf taking note that the cycle changed slightly after cycle 7.\n\n\ttotal = blatt = 0;\n\tcount = -1;\n\n\t// Fix Shekalim for old cycles\n\tif (cno <= 7) {\n\t\tshas[4].blatt = 13;\n\t} else {\n\t\tshas[4].blatt = 22;\n\t}\n\n\t// Find the daf\n\tj = 0;\n\twhile (j < dafcnt) {\n\t\tcount++;\n\t\ttotal = total + shas[j].blatt - 1;\n\t\tif (dno < total) {\n\t\t\tblatt = (shas[j].blatt + 1) - (total - dno);\n\t\t\t// fiddle with the weird ones near the end\n\t\t\tswitch (count) {\n\t\t\t\tcase 36:\n\t\t\t\t\tblatt = blatt + 21;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tblatt = blatt + 24;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38:\n\t\t\t\t\tblatt = blatt + 33;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Bailout\n\t\t\tj = 1 + dafcnt;\n\t\t}\n\t\tj++;\n\t}\n\n\treturn {name: shas[count].name, blatt: blatt};\n};\n\nexports.dafname = function(daf, o) {\n\treturn c.LANG(daf.name, o) + ' ' + (o === 'h' ? gematriya(daf.blatt) : daf.blatt);\n};\n",
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar floor = Math.floor,\n\tt0t1 = [30, 31],\n\ttMonthLengths = [0, 31, 28, 31].concat(t0t1, t0t1, 31, t0t1, t0t1),\n\tmonthLengths = [\n\t\ttMonthLengths.slice()\n\t];\ntMonthLengths[2]++;\nmonthLengths.push(tMonthLengths);\n\nexports.daysInMonth = function(month, year) { // 1 based months\n\treturn monthLengths[+LEAP(year)][month];\n};\n\nexports.monthNames = [\n\t'',\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December'\n];\n\nexports.lookupMonthNum = function(month) {\n\treturn new Date(month + ' 1').getMonth() + 1;\n};\n\nfunction dayOfYear (date) {\n\tif (!date instanceof Date) {\n\t\tthrow new TypeError('Argument to greg.dayOfYear not a Date');\n\t}\n\tvar doy = date.getDate() + 31 * date.getMonth();\n\tif (date.getMonth() > 1) { // FEB\n\t\tdoy -= floor((4 * (date.getMonth() + 1) + 23) / 10);\n\t\tif (LEAP(date.getFullYear())) {\n\t\t\tdoy++;\n\t\t}\n\t}\n\treturn doy;\n}\nexports.dayOfYear = dayOfYear;\n\nfunction LEAP (year) {\n\treturn !(year % 4) && ( !!(year % 100) || !(year % 400) );\n}\nexports.LEAP = LEAP;\n\nexports.greg2abs = function(date) { // \"absolute date\"\n\tvar year = date.getFullYear() - 1;\n\treturn (dayOfYear(date) + // days this year\n\t\t\t365 * year + // + days in prior years\n\t\t\t( floor(year / 4) - // + Julian Leap years\n\t\t\tfloor(year / 100) + // - century years\n\t\t\tfloor(year / 400))); // + Gregorian leap years\n};\n\n\n/*\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n */\nexports.abs2greg = function(theDate) {\n// calculations copied from original JS code\n\n\tvar d0 = theDate - 1;\n\tvar n400 = floor(d0 / 146097);\n\tvar d1 = floor(d0 % 146097);\n\tvar n100 = floor(d1 / 36524);\n\tvar d2 = d1 % 36524;\n\tvar n4 = floor(d2 / 1461);\n\tvar d3 = d2 % 1461;\n\tvar n1 = floor(d3 / 365);\n\n\tvar day = ((d3 % 365) + 1);\n\tvar year = (400 * n400 + 100 * n100 + 4 * n4 + n1);\n\n\tif (4 == n100 || 4 == n1) {\n\t\treturn new Date(year, 11, 31);\n\t}\n\n\treturn new Date(new Date(++year, 0, day).setFullYear(year)); // new Date() is very smart\n};",
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tsuncalc = require('suncalc'),\n\tcities = require('./cities'),\n\tgematriya = require('gematriya');\n\nsuncalc.addTime(-16.1, 'alot_hashachar', 0);\nsuncalc.addTime(-11.5, 'misheyakir', 0);\nsuncalc.addTime(-10.2, 'misheyakir_machmir', 0);\nsuncalc.addTime(-8.5, 0, 'tzeit');\n\n// for minifying optimizations\nvar getFullYear = 'getFullYear',\n\tgetMonth = 'getMonth',\n\tgetDate = 'getDate',\n\tgetTime = 'getTime',\n\tabs = 'abs',\n\thour = 'hour',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tMONTH_CNT = c.MONTH_CNT,\n\tdaysInMonth = c.daysInMonth,\n\tdayOnOrBefore = c.dayOnOrBefore,\n\tprototype = HDate.prototype;\n\nfunction HDate(day, month, year) {\n\tvar me = this;\n\tswitch (arguments.length) {\n\t\tcase 0:\n\t\t\treturn new HDate(new Date());\n\t\tcase 1:\n\t\t\tif (typeof day == 'undefined') {\n\t\t\t\treturn new HDate();\n\t\t\t} else if (day instanceof Date) {\n\t\t\t\t// we were passed a Gregorian date, so convert it\n\t\t\t\tvar d = abs2hebrew(greg.greg2abs(day));\n\t\t\t\t/*if (d.sunset() < day) {\n\t\t\t\t\td = d.next();\n\t\t\t\t}*/\n\t\t\t\treturn d;\n\t\t\t} else if (day instanceof HDate) {\n\t\t\t\tvar d = new HDate(day[getDate](), day[getMonth](), day[getFullYear]());\n\t\t\t\td.il = day.il;\n\t\t\t\td.setLocation(d.lat, d.long);\n\t\t\t\treturn d;\n\t\t\t} else if (typeof day == 'string') {\n\t\t\t\tswitch (day.toLowerCase().trim()) {\n\t\t\t\t\tcase 'today':\n\t\t\t\t\t\treturn new HDate();\n\t\t\t\t\tcase 'yesterday':\n\t\t\t\t\t\treturn new HDate().prev();\n\t\t\t\t\tcase 'tomorrow':\n\t\t\t\t\t\treturn new HDate().next();\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(day)) {\n\t\t\t\t\tvar s = day.split(/\\s+/);\n\t\t\t\t\tif (s.length == 2) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1]);\n\t\t\t\t\t} else if (s.length == 3) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1], s[2]);\n\t\t\t\t\t} else if (s.length == 4) { // should only be if s[1] is Adar\n\t\t\t\t\t\tif (/i/i.test(s[2])) { // Using I[I] syntax\n\t\t\t\t\t\t\ts[2] = s[2].length;\n\t\t\t\t\t\t} // otherwise using 1|2 syntax\n\t\t\t\t\t\treturn new HDate(s[0], s[1] + s[2], s[3]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof day == 'number') { // absolute date\n\t\t\t\treturn abs2hebrew(day);\n\t\t\t}\n\t\t\tthrow new TypeError('HDate called with bad argument');\n\t\tcase 2:\n\t\t\treturn new HDate(day, month, (new HDate)[getFullYear]());\n\t\tcase 3:\n\t\t\tme.day = me.month = 1;\n\t\t\tme.year = c.dayYearNum(year);\n\n\t\t\tme.setMonth(c.monthNum(month));\n\t\t\tme.setDate(c.dayYearNum(day));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError('HDate called with bad arguments');\n\t}\n\n\treturn me.setLocation.apply(me, HDate.defaultLocation);\n}\n\nHDate.defaultLocation = [0, 0];\nObject.defineProperty(HDate, 'defaultCity', {\n\tenumerable: true,\n\tconfigurable: true,\n\n\tget: function() {\n\t\treturn cities.nearest(HDate.defaultLocation[0], HDate.defaultLocation[1]);\n\t},\n\tset: function(city) {\n\t\tHDate.defaultLocation = cities.getCity(city).slice(0, 2);\n\t}\n});\n\nfunction fix(date) {\n\tfixMonth(date);\n\tfixDate(date);\n}\n\nfunction fixDate(date) {\n\tif (date.day < 1) {\n\t\tif (date.month == TISHREI) {\n\t\t\tdate.year -= 1;\n\t\t}\n\t\tdate.day += daysInMonth(date.month, date.year);\n\t\tdate.month -= 1;\n\t\tfix(date);\n\t}\n\tif (date.day > daysInMonth(date.month, date.year)) {\n\t\tif (date.month == months.ELUL) {\n\t\t\tdate.year += 1;\n\t\t}\n\t\tdate.day -= daysInMonth(date.month, date.year);\n\t\tdate.month += 1;\n\t\tfix(date);\n\t}\n\tfixMonth(date);\n}\n\nfunction fixMonth(date) {\n\tif (date.month == months.ADAR_II && !date.isLeapYear()) {\n\t\tdate.month -= 1; // to Adar I\n\t\tfix(date);\n\t}\n\tif (date.month < 1) {\n\t\tdate.month += MONTH_CNT(date.year);\n\t\tdate.year -= 1;\n\t\tfix(date);\n\t}\n\tif (date.month > MONTH_CNT(date.year)) {\n\t\tdate.month -= MONTH_CNT(date.year);\n\t\tdate.year += 1;\n\t\tfix(date);\n\t}\n}\n\nprototype[getFullYear] = function() {\n\treturn this.year;\n};\n\nprototype.isLeapYear = function() {\n\treturn c.LEAP(this.year);\n};\n\nprototype[getMonth] = function() {\n\treturn this.month;\n};\n\nprototype.getTishreiMonth = function() {\n\tvar nummonths = MONTH_CNT(this[getFullYear]());\n\treturn (this[getMonth]() + nummonths - 6) % nummonths || nummonths;\n};\n\nprototype.daysInMonth = function() {\n\treturn daysInMonth(this[getMonth](), this[getFullYear]());\n};\n\nprototype[getDate] = function() {\n\treturn this.day;\n};\n\nprototype.getDay = function() {\n\treturn this.greg().getDay();\n};\n\nprototype.setFullYear = function(year) {\n\tthis.year = year;\n\tfix(this);\n\treturn this;\n};\n\nprototype.setMonth = function(month) {\n\tthis.month = c.monthNum(month);\n\tfix(this);\n\treturn this;\n};\n\nprototype.setTishreiMonth = function(month) {\n\treturn this.setMonth((month + 6) % MONTH_CNT(this[getFullYear]()) || 13);\n};\n\nprototype.setDate = function(date) {\n\tthis.day = date;\n\tfix(this);\n\treturn this;\n};\n\n/* convert hebrew date to absolute date */\n/* Absolute date of Hebrew DATE.\n The absolute date is the number of days elapsed since the (imaginary)\n Gregorian date Sunday, December 31, 1 BC. */\nfunction hebrew2abs(d) {\n\tvar m, tempabs = d[getDate](), year = d[getFullYear]();\n\n\tif (d[getMonth]() < TISHREI) {\n\t\tfor (m = TISHREI; m <= MONTH_CNT(year); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\n\t\tfor (m = months.NISAN; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t} else {\n\t\tfor (m = TISHREI; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t}\n\n\treturn c.hebElapsedDays(year) - 1373429 + tempabs;\n}\n\nfunction abs2hebrew(d) {\n\tvar mmap = [\n\t\tmonths.KISLEV, months.TEVET, months.SHVAT, months.ADAR_I, months.NISAN,\n\t\tmonths.IYYAR, months.SIVAN, months.TAMUZ, TISHREI, TISHREI, TISHREI, months.CHESHVAN\n\t], hebdate, gregdate, month, year;\n\n\tif (d >= 10555144) {\n\t\tthrow new RangeError(\"parameter to abs2hebrew \" + d + \" out of range\");\n\t}\n\n\tgregdate = greg.abs2greg(d);\n\thebdate = new HDate(1, TISHREI, (year = 3760 + gregdate[getFullYear]()));\n\n\twhile (d >= hebrew2abs(hebdate.setFullYear(year + 1))) {\n\t\tyear++;\n\t}\n\n\tif (year > 4634 && year < 10666) {\n\t\t// optimize search\n\t\tmonth = mmap[gregdate[getMonth]()];\n\t} else {\n\t\t// we're outside the usual range, so assume nothing about Hebrew/Gregorian calendar drift...\n\t\tmonth = TISHREI;\n\t}\n\n\twhile (d > hebrew2abs(hebdate = new HDate(daysInMonth(month, year), month, year))) {\n\t\tmonth = (month % MONTH_CNT(year)) + 1;\n\t}\n\n\treturn hebdate.setLocation.apply(hebdate.setDate(d - hebrew2abs(hebdate.setDate(1)) + 1), HDate.defaultLocation);\n}\n\nprototype.greg = function() {\n\treturn greg.abs2greg(hebrew2abs(this));\n};\n\nprototype.gregEve = function() {\n\treturn this.prev().sunset();\n};\n\nprototype[abs] = function() {\n\treturn hebrew2abs(this);\n};\n\nprototype.toString = function(o) {\n\treturn c.LANG([this[getDate](), null, gematriya(this[getDate]())], o) + ' ' +\n\t\tthis.getMonthName(o) + ' ' +\n\t\tc.LANG([this[getFullYear](), null, gematriya(this[getFullYear]())], o);\n};\n\nprototype.getMonthName = function(o) {\n\treturn c.LANG(c.monthNames[+this.isLeapYear()][this[getMonth]()], o);\n};\n\nprototype.setCity = function(city) {\n\treturn this.setLocation(cities.getCity(city));\n};\n\nprototype.setLocation = function(lat, lon) {\n\tif (typeof lat == 'object' && !Array.isArray(lat)) {\n\t\tlon = lat.long;\n\t\tlat = lat.lat;\n\t}\n\tif (Array.isArray(lat) && typeof lon == 'undefined') {\n\t\tlon = lat[0];\n\t\tlat = lat[1];\n\t}\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to HDate.setLocation()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to HDate.setLocation()');\n\t}\n\n\tthis.lat = lat;\n\tthis.long = lon;\n\n\tthis.il = cities.getCity(cities.nearest(lat, lon))[2];\n\n\treturn this;\n};\n\nfunction suntime(hdate) {\n\t// reset the date to midday before calling suncalc api\n\t// https://github.com/mourner/suncalc/issues/11\n\tvar date = hdate.greg();\n\treturn suncalc.getTimes(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0, 0), hdate.lat, hdate.long);\n}\n\nprototype.sunrise = function() {\n\treturn suntime(this).sunrise;\n};\n\nprototype.sunset = function() {\n\treturn suntime(this).sunset;\n};\n\nprototype[hour] = function() {\n\treturn (this.sunset() - this.sunrise()) / 12; // ms in hour\n};\n\nprototype.hourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this[hour]() / (1000 * 60);\n};\n\nprototype.nightHour = function() {\n\treturn (this.sunrise() - this.gregEve()) / 12; // ms in hour\n};\n\nprototype.nightHourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this.nightHour() / (1000 * 60);\n};\n\nfunction hourOffset(hdate, hours) {\n\treturn new Date(hdate.sunrise()[getTime]() + (hdate[hour]() * hours));\n}\n\nvar zemanim = {\n\tchatzot: function(hdate) {\n\t\treturn hourOffset(hdate, 6);\n\t},\n\tchatzot_night: function(hdate) {\n\t\treturn new Date(hdate.sunrise()[getTime]() - (hdate.nightHour() * 6));\n\t},\n\talot_hashachar: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\talot_hashacher: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\tmisheyakir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir;\n\t},\n\tmisheyakir_machmir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir_machmir;\n\t},\n\tsof_zman_shma: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 3);\n\t},\n\tsof_zman_tfilla: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 4);\n\t},\n\tmincha_gedola: function(hdate) {\n\t\treturn hourOffset(hdate, 6.5);\n\t},\n\tmincha_ketana: function(hdate) {\n\t\treturn hourOffset(hdate, 9.5);\n\t},\n\tplag_hamincha: function(hdate) {\n\t\treturn hourOffset(hdate, 10.75);\n\t},\n\ttzeit: function(hdate) {\n\t\treturn suntime(hdate).tzeit;\n\t},\n\tneitz_hachama: function(hdate) {\n\t\treturn hdate.sunrise();\n\t},\n\tshkiah: function(hdate) {\n\t\treturn hdate.sunset();\n\t}\n};\n\nprototype.getZemanim = function() {\n\treturn c.map(zemanim, function(z){\n\t\treturn z(this);\n\t}, this);\n};\n\nHDate.addZeman = function(zeman, func) {\n\tzemanim[zeman] = func;\n};\n\nprototype.next = function() {\n\treturn abs2hebrew(this.abs() + 1).setLocation(this.lat, this.long);\n};\n\nprototype.prev = function() {\n\treturn abs2hebrew(this.abs() - 1).setLocation(this.lat, this.long);\n};\n\nprototype.isSameDate = function(other) {\n\tif (other instanceof HDate) {\n\t\tif (other[getFullYear]() == -1) {\n\t\t\tother = new HDate(other).setFullYear(this[getFullYear]());\n\t\t}\n\t\treturn this[abs]() == other[abs]();\n\t}\n\treturn false;\n};\n\nfunction onOrBefore(day, t, offset) {\n\treturn new HDate(dayOnOrBefore(day, t[abs]() + offset));\n}\n\nprototype.before = function(day) {\n\treturn onOrBefore(day, this, -1);\n};\n\nprototype.onOrBefore = function(day) {\n\treturn onOrBefore(day, this, 0);\n};\n\nprototype.nearest = function(day) {\n\treturn onOrBefore(day, this, 3);\n};\n\nprototype.onOrAfter = function(day) {\n\treturn onOrBefore(day, this, 6);\n};\n\nprototype.after = function(day) {\n\treturn onOrBefore(day, this, 7);\n};\n\nmodule.exports = HDate;\n",
- "/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n",
+ "/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.tachanun_uf = function(){\n\tvar ret = this.tachanun();\n\treturn {\n\t\tshacharit: !!(ret & this.tachanun.SHACHARIT),\n\t\tmincha: !!(ret & this.tachanun.MINCHA),\n\t\tall_congs: !!(ret & this.tachanun.ALL_CONGS)\n\t};\n};\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n",
"/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tgematriya = require('gematriya');\n\nvar __cache = {};\n\n// for byte optimizations\n\nvar dayOnOrBefore = c.dayOnOrBefore,\n\tmonths = c.months,\n\tdays = c.days,\n\tTISHREI = months.TISHREI,\n\tKISLEV = months.KISLEV,\n\tNISAN = months.NISAN,\n\tSAT = days.SAT,\n\tgetDay = 'getDay',\n\tabs = 'abs',\n\tShabbat = 'Shabbat',\n\tShabbos = 'Shabbos';\n\nfunction Chanukah(day) {\n\treturn ['Chanukah: Candle ' + day, 0, 'חנוכה: נר ' + gematriya(day)];\n}\n\nfunction CHM(desc) {\n\treturn [desc[0] + ' (CH\"M)', desc[1] ? desc[1] + ' (CH\"M)' : desc[1], desc[2] ? desc[2] + ' )חה\"ם(' : desc[2]];\n}\n\nfunction Sukkot(day) {\n\treturn ['Sukkot: ' + day, 'Succos: ' + day, 'סוכות יום ' + gematriya(day)];\n}\n\nfunction Pesach(day) {\n\treturn ['Pesach: ' + day, 0, 'פסח יום ' + gematriya(day)];\n}\n\nvar USER_EVENT = 1,\n\tLIGHT_CANDLES = 2,\n\tYOM_TOV_ENDS = 4,\n\tCHUL_ONLY = 8, // chutz l'aretz (Diaspora)\n\tIL_ONLY = 16, // b'aretz (Israel)\n\tLIGHT_CANDLES_TZEIS = 32;\n\nexports.masks = {\n\tUSER_EVENT : USER_EVENT,\n\tLIGHT_CANDLES : LIGHT_CANDLES,\n\tYOM_TOV_ENDS : YOM_TOV_ENDS,\n\tCHUL_ONLY : CHUL_ONLY,\n\tIL_ONLY : IL_ONLY,\n\tLIGHT_CANDLES_TZEIS: LIGHT_CANDLES_TZEIS\n};\n\nfunction Event(date, desc, mask) {\n\tvar me = this;\n\tme.date = new HDate(date);\n\tme.desc = typeof desc != 'object' ? [desc] : desc;\n\n\tme.USER_EVENT = !!( mask & USER_EVENT );\n\tme.LIGHT_CANDLES = !!( mask & LIGHT_CANDLES );\n\tme.YOM_TOV_ENDS = !!( mask & YOM_TOV_ENDS );\n\tme.CHUL_ONLY = !!( mask & CHUL_ONLY );\n\tme.IL_ONLY = !!( mask & IL_ONLY );\n\tme.LIGHT_CANDLES_TZEIS = !!( mask & LIGHT_CANDLES_TZEIS );\n}\n\nEvent.prototype.is = function(date, il) {\n\tdate = new HDate(date), myDate = this.date;\n\tif (arguments.length < 2) {\n\t\t//il = Event.isIL;\n\t\til = date.il;\n\t}\n\tif (date.getDate() != myDate.getDate() || date.getMonth() != myDate.getMonth()) {\n\t\treturn false;\n\t}\n\tif (date.getFullYear() != myDate.getFullYear()) {\n\t\treturn false;\n\t}\n\tif (il && this.CHUL_ONLY || !il && this.IL_ONLY) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEvent.prototype.masks = function() {\n\tvar me = this;\n\treturn (me.USER_EVENT && USER_EVENT) |\n\t\t (me.LIGHT_CANDLES && LIGHT_CANDLES) |\n\t\t (me.YOM_TOV_ENDS && YOM_TOV_ENDS) |\n\t\t (me.CHUL_ONLY && CHUL_ONLY) |\n\t\t (me.IL_ONLY && IL_ONLY) |\n\t\t (me.LIGHT_CANDLES_TZEIS && LIGHT_CANDLES_TZEIS);\n};\n\nEvent.prototype.getDesc = function(o) {\n\treturn c.LANG(this.desc, o);\n};\n\nEvent.prototype.candleLighting = function() {\n\tvar date = this.date;\n\tif (this.LIGHT_CANDLES) {\n\t\treturn new Date(date.sunset() - (Event.candleLighting * 60 * 1000));\n\t} else if (this.LIGHT_CANDLES_TZEIS) {\n\t\treturn date.getZemanim().tzeit;\n\t}\n\treturn null;\n};\n\nEvent.prototype.havdalah = function() {\n\tif (this.YOM_TOV_ENDS) {\n\t\treturn new Date(this.date.sunset().getTime() + (Event.havdalah * 60 * 1000));\n\t}\n\treturn null;\n};\n\nEvent.prototype.routine = (function(){\n\tfunction routine(){\n\t\treturn !!~routine.names.indexOf(this.getDesc('s'));\n\t}\n\troutine.names = [Shabbat, 'Erev ' + Shabbat];\n\treturn routine;\n})();\n\nEvent.isIL = false;\n\nEvent.candleLighting = 18;\n\nEvent.havdalah = 42;\n\nexports.Event = Event;\n\nexports.year = function(year) {\n\tif (__cache[year]) {\n\t\treturn __cache[year];\n\t}\n\n\tvar\tRH = new HDate(1, TISHREI, year),\n\t\tpesach = new HDate(15, NISAN, year),\n\t\ttmpDate;\n\n\tvar h = {};\n\n\tfunction add(ev) {\n\t\tif (Array.isArray(ev)) {\n\t\t\tev.forEach(function(e){\n\t\t\t\tadd(e);\n\t\t\t});\n\t\t} else {\n\t\t\tif (h[ev.date]) {\n\t\t\t\th[ev.date].push(ev);\n\t\t\t} else {\n\t\t\t\th[ev.date] = [ev];\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.defineProperty(h, 'add', {value: add});\n\n\tadd([ // standard holidays that don't shift based on year\n\t\tnew Event(\n\t\t\tRH,\n\t\t\t['Rosh Hashana 1', 0, 'ראש השנה א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS\n\t\t), new Event(\n\t\t\tnew HDate(2, TISHREI, year),\n\t\t\t['Rosh Hashana 2', 0, 'ראש השנה ב\\''],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(3 + (RH[getDay]() == days.THU), TISHREI, year), // push off to SUN if RH is THU\n\t\t\t['Tzom Gedaliah', 0, 'צום גדליה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(9, TISHREI, year),\n\t\t\t['Erev Yom Kippur', 0, 'ערב יום כיפור'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event( // first SAT after RH\n\t\t\tnew HDate(dayOnOrBefore(SAT, 7 + RH[abs]())),\n\t\t\t[Shabbat + ' Shuva', Shabbos + ' Shuvah', 'שבת שובה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(10, TISHREI, year),\n\t\t\t['Yom Kippur', 0, 'יום כיפור'],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(14, TISHREI, year),\n\t\t\t['Erev Sukkot', 'Erev Succos', 'ערב סוכות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tSukkot(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tCHM(Sukkot(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(17, TISHREI, year),\n\t\t\tCHM(Sukkot(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, TISHREI, year),\n\t\t\tCHM(Sukkot(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, TISHREI, year),\n\t\t\tCHM(Sukkot(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, TISHREI, year),\n\t\t\tCHM(Sukkot(6)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(21, TISHREI, year),\n\t\t\t['Sukkot: 7 (Hoshana Raba)', 'Succos: 7 (Hoshana Raba)', 'סוכות יום ז\\' )הושנע רבה('],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת'],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret / Simchat Torah', 'Shmini Atzeres / Simchas Torah', 'שמיני עצרת / שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(23, TISHREI, year),\n\t\t\t['Simchat Torah', 'Simchas Torah', 'שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(24, KISLEV, year),\n\t\t\t['Erev Chanukah', 0, 'ערב חנוכה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(25, KISLEV, year),\n\t\t\tChanukah(1),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(26, KISLEV, year),\n\t\t\tChanukah(2),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(27, KISLEV, year),\n\t\t\tChanukah(3),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(28, KISLEV, year),\n\t\t\tChanukah(4),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, KISLEV, year),\n\t\t\tChanukah(5),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(30, KISLEV, year), // yes, i know these are wrong\n\t\t\tChanukah(6),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(31, KISLEV, year), // HDate() corrects the month automatically\n\t\t\tChanukah(7),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(32, KISLEV, year),\n\t\t\tChanukah(8),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.SHVAT, year),\n\t\t\t[\"Tu B'Shvat\", 0, 'ט\"ו בשבט'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 43)),\n\t\t\t[Shabbat + ' Shekalim', Shabbos + ' Shekalim', 'שבת שקלים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 30)),\n\t\t\t[Shabbat + ' Zachor', Shabbos + ' Zachor', 'שבת זכור'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(pesach[abs]() - (pesach[getDay]() == days.TUE ? 33 : 31)),\n\t\t\t[\"Ta'anit Esther\", \"Ta'anis Esther\", 'תענית אסתר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(13, months.ADAR_II, year),\n\t\t\t['Erev Purim', 0, 'ערב פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, months.ADAR_II, year),\n\t\t\t['Purim', 0, 'פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.ADAR_II, year),\n\t\t\t['Shushan Purim', 0, 'שושן פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14) - 7),\n\t\t\t[Shabbat + ' Parah', Shabbos + ' Parah', 'שבת פרה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14)),\n\t\t\t[Shabbat + ' Hachodesh', Shabbos + ' Hachodesh', 'שבת החודש'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 1)),\n\t\t\t[Shabbat + ' HaGadol', Shabbos + ' HaGadol', 'שבת הגדול'],\n\t\t\t0\n\t\t), new Event(\n\t\t\t// if the fast falls on Shabbat, move to Thursday\n\t\t\tpesach.prev()[getDay]() == SAT ? pesach.onOrBefore(days.THU) : new HDate(14, NISAN, year),\n\t\t\t[\"Ta'anit Bechorot\", \"Ta'anis Bechoros\", 'תענית בכורות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, NISAN, year),\n\t\t\t['Erev Pesach', 0, 'ערב פסח'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tPesach(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tCHM(Pesach(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\t['Start counting Omer', 0, 'התחלת ספירת העומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(17, NISAN, year),\n\t\t\tCHM(Pesach(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, NISAN, year),\n\t\t\tCHM(Pesach(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, NISAN, year),\n\t\t\tCHM(Pesach(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, NISAN, year),\n\t\t\tCHM(Pesach(6)),\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, NISAN, year),\n\t\t\tPesach(8),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(14, months.IYYAR, year),\n\t\t\t['Pesach Sheni', 0, 'פסח שני'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, months.IYYAR, year),\n\t\t\t[\"Lag B'Omer\", 0, 'ל\"ג בעומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(5, months.SIVAN, year),\n\t\t\t['Erev Shavuot', 'Erev Shavuos', 'ערב שבועות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot 1', 'Shavuos 1', 'שבועות א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot', 'Shavuos', 'שבועות'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(7, months.SIVAN, year),\n\t\t\t['Shavuot 2', 'Shavuos 2', 'שבועות ב\\''],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1)[abs]() - 4)),\n\t\t\t['Leil Selichot', 'Leil Selichos', 'ליל סליחות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, months.ELUL, year),\n\t\t\t['Erev Rosh Hashana', 0, 'ערב ראש השנה'],\n\t\t\tLIGHT_CANDLES\n\t\t)\n\t]);\n\n\ttmpDate = new HDate(10, months.TEVET, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Asara B'Tevet\", 0, 'עשרה בטבת'],\n\t\t0\n\t));\n\n\tif (c.LEAP(year)) {\n\t\tadd(new Event(\n\t\t\tnew HDate(14, months.ADAR_I, year),\n\t\t\t['Purim Katan', 0, 'פורים קטן'],\n\t\t\t0\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(15, months.ADAR_I, year),\n\t\t\t['Shushan Purim Katan', 0, 'שושן פורים קטן'],\n\t\t\t0\n\t\t));\n\t}\n\n\tif (year >= 5711) { // Yom HaShoah first observed in 1951\n\t\ttmpDate = new HDate(27, NISAN, year);\n\t\t/* When the actual date of Yom Hashoah falls on a Friday, the\n\t\t * state of Israel observes Yom Hashoah on the preceding\n\t\t * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n\t\t * on the following Monday.\n\t\t * http://www.ushmm.org/remembrance/dor/calendar/\n\t\t */\n\n\t\tif (tmpDate[getDay]() == days.FRI) {\n\t\t\ttmpDate = tmpDate.prev();\n\t\t} else if (tmpDate[getDay]() == days.SUN) {\n\t\t\ttmpDate = tmpDate.next();\n\t\t}\n\n\t\tadd(new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaShoah', 0, 'יום השואה'],\n\t\t\t0\n\t\t));\n\t}\n\n\tadd(atzmaut(year));\n\n\tif (year >= 5727) { // Yom Yerushalayim only celebrated after 1967\n\t\tadd(new Event(\n\t\t\tnew HDate(29, months.IYYAR, year),\n\t\t\t['Yom Yerushalayim', 0, 'יום ירושלים'],\n\t\t\t0\n\t\t));\n\t}\n\n\ttmpDate = new HDate(17, months.TAMUZ, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Shiva-Asar B'Tamuz\", 0, \"צום יז' בתמוז\"],\n\t\t0\n\t));\n\n\ttmpDate = new HDate(9, months.AV, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]())),\n\t\t[Shabbat + ' Chazon', Shabbos + ' Chazon', 'שבת חזון'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate.prev(),\n\t\t[\"Erev Tish'a B'Av\", 0, 'ערב תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Tish'a B'Av\", 0, 'תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]() + 7)),\n\t\t[Shabbat + ' Nachamu', Shabbos + ' Nachamu', 'שבת נחמו'],\n\t\t0\n\t));\n\n\tfor (var day = 6; day < c.daysInYear(year); day += 7) {\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t[Shabbat, Shabbos, 'שבת'],\n\t\t\tYOM_TOV_ENDS\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(days.FRI, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t['Erev ' + Shabbat, 'Erev ' + Shabbos, 'ערב שבת'],\n\t\t\tLIGHT_CANDLES\n\t\t));\n\t}\n\n\tfor (var month = 1; month <= c.MONTH_CNT(year); month++) {\n\t\tif ((month == NISAN ? c.daysInMonth(c.MONTH_CNT(year - 1), year - 1) :\n\t\t\t\tc.daysInMonth(month - 1, year)) == 30) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh 2', 0, \"ראש חודש ב'\"],\n\t\t\t\t0\n\t\t\t));\n\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(30, month - 1, year),\n\t\t\t\t['Rosh Chodesh 1', 0, \"ראש חודש א'\"],\n\t\t\t\t0\n\t\t\t));\n\t\t} else if (month !== TISHREI) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh', 0, 'ראש חודש'],\n\t\t\t\t0\n\t\t\t));\n\t\t}\n\n\t\tif (month == months.ELUL) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd(new Event(\n\t\t\tnew HDate(29, month, year).onOrBefore(SAT),\n\t\t\t[Shabbat + ' Mevarchim', Shabbos + ' Mevorchim', 'שבת מברכים'],\n\t\t\t0\n\t\t));\n\t}\n\n\treturn __cache[year] = h;\n};\n\nfunction atzmaut(year) {\n\tif (year >= 5708) { // Yom HaAtzma'ut only celebrated after 1948\n\t\tvar tmpDate = new HDate(1, months.IYYAR, year), pesach = new HDate(15, NISAN, year);\n\n\t\tif (pesach[getDay]() == days.SUN) {\n\t\t\ttmpDate.setDate(2);\n\t\t} else if (pesach[getDay]() == SAT) {\n\t\t\ttmpDate.setDate(3);\n\t\t} else if (year < 5764) {\n\t\t\ttmpDate.setDate(4);\n\t\t} else if (pesach[getDay]() == days.TUE) {\n\t\t\ttmpDate.setDate(5);\n\t\t} else {\n\t\t\ttmpDate.setDate(4);\n\t\t}\n\n\t\treturn [new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaZikaron', 0, 'יום הזיכרון'],\n\t\t\t0\n\t\t), new Event(\n\t\t\ttmpDate.next(),\n\t\t\t[\"Yom HaAtzma'ut\", 0, 'יום העצמאות'],\n\t\t\t0\n\t\t)];\n\t}\n\treturn [];\n}\nexports.atzmaut = atzmaut;\n",
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n",
"/*\n * Convert numbers to gematriya representation, and vice-versa.\n *\n * Licensed MIT.\n *\n * Copyright (c) 2014 Eyal Schachter\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(){\n\tvar letters = {}, numbers = {\n\t\t'': 0,\n\t\tא: 1,\n\t\tב: 2,\n\t\tג: 3,\n\t\tד: 4,\n\t\tה: 5,\n\t\tו: 6,\n\t\tז: 7,\n\t\tח: 8,\n\t\tט: 9,\n\t\tי: 10,\n\t\tכ: 20,\n\t\tל: 30,\n\t\tמ: 40,\n\t\tנ: 50,\n\t\tס: 60,\n\t\tע: 70,\n\t\tפ: 80,\n\t\tצ: 90,\n\t\tק: 100,\n\t\tר: 200,\n\t\tש: 300,\n\t\tת: 400,\n\t\tתק: 500,\n\t\tתר: 600,\n\t\tתש: 700,\n\t\tתת: 800,\n\t\tתתק: 900,\n\t\tתתר: 1000\n\t}, i;\n\tfor (i in numbers) {\n\t\tletters[numbers[i]] = i;\n\t}\n\n\tfunction gematriya(num, limit) {\n\t\tif (typeof num !== 'number' && typeof num !== 'string') {\n\t\t\tthrow new TypeError('non-number or string given to gematriya()');\n\t\t}\n\t\tvar str = typeof num === 'string';\n\t\tif (str) {\n\t\t\tnum = num.replace(/('|\")/g,'');\n\t\t}\n\t\tnum = num.toString().split('').reverse();\n\t\tif (!str && limit) {\n\t\t\tnum = num.slice(0, limit);\n\t\t}\n\n\t\tnum = num.map(function g(n,i){\n\t\t\tif (str) {\n\t\t\t\treturn limit && numbers[n] < numbers[num[i - 1]] && numbers[n] < 100 ? numbers[n] * 1000 : numbers[n];\n\t\t\t} else {\n\t\t\t\tif (parseInt(n, 10) * Math.pow(10, i) > 1000) {\n\t\t\t\t\treturn g(n, i-3);\n\t\t\t\t}\n\t\t\t\treturn letters[parseInt(n, 10) * Math.pow(10, i)];\n\t\t\t}\n\t\t});\n\n\t\tif (str) {\n\t\t\treturn num.reduce(function(o,t){\n\t\t\t\treturn o + t;\n\t\t\t}, 0);\n\t\t} else {\n\t\t\tnum = num.reverse().join('').replace(/יה/g,'טו').replace(/יו/g,'טז').split('');\n\n\t\t\tif (num.length === 1) {\n\t\t\t\tnum.push(\"'\");\n\t\t\t} else if (num.length > 1) {\n\t\t\t\tnum.splice(-1, 0, '\"');\n\t\t\t}\n\n\t\t\treturn num.join('');\n\t\t}\n\t}\n\n\tif (typeof module !== 'undefined') {\n\t\tmodule.exports = gematriya;\n\t} else {\n\t\twindow.gematriya = gematriya;\n\t}\n})();\n",
diff --git a/client/hebcal.noloc.min.js b/client/hebcal.noloc.min.js
index 8c856f9..1581399 100644
--- a/client/hebcal.noloc.min.js
+++ b/client/hebcal.noloc.min.js
@@ -5,6 +5,6 @@
Licensed GPLv3
*/
-!function e(t,n,r){function a(o,s){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(i)return i(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var c=n[o]={exports:{}};t[o][0].call(c.exports,function(e){var n=t[o][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=19440||2==o%7&&i>=9924&&!r(e)||1==o%7&&i>=16789&&r(e-1));return s+(s%7===0||s%7==3||s%7==5)}function i(e){return a(e+1)-a(e)}function o(e){return i(e)%10==5}function s(e){return i(e)%10==3}function u(e){switch(e.toLowerCase()[0]){case"n":case"נ":return"o"==e.toLowerCase()[1]?0:l.NISAN;case"i":return l.IYYAR;case"e":return l.ELUL;case"c":case"ח":return l.CHESHVAN;case"k":case"כ":return l.KISLEV;case"s":switch(e.toLowerCase()[1]){case"i":return l.SIVAN;case"h":return l.SHVAT;default:return 0}case"t":switch(e.toLowerCase()[1]){case"a":return l.TAMUZ;case"i":return l.TISHREI;case"e":return l.TEVET}break;case"a":switch(e.toLowerCase()[1]){case"v":return l.AV;case"d":return/(1|[^i]i|a|א)$/i.test(e)?l.ADAR_I:l.ADAR_II}break;case"ס":return l.SIVAN;case"ש":return l.SHVAT;case"א":switch(e.toLowerCase()[1]){case"ב":return l.AV;case"ד":return/(2|ii|b|ב)$/i.test(e)?l.ADAR_I:l.ADAR_II;case"י":return l.IYYAR;case"ל":return l.ELUL}break;case"ת":switch(e.toLowerCase()[1]){case"מ":return l.TAMUZ;case"ש":return l.TISHREI}}return 0}function h(e,t,n){if(null===e)throw new TypeError("self is null");switch(typeof t){case"function":break;case"string":case"number":return e[t];case"boolean":t=t?function(e){return e}:function(e){return!e};break;case"object":var r=t;if(t instanceof RegExp){t=function(e){return r.test(e)};break}if(Array.isArray(t)){t=function(e,t){return r.indexOf(t)>-1};break}default:throw new TypeError("fun is not a supported type")}var a={},i=Object(e);for(var o in i)if(i.hasOwnProperty(o)){var s=i[o];if(t.call(n,s,o,i)){var u=Object.getOwnPropertyDescriptor(i,o);u.value=s,Object.defineProperty(a,o,u)}}if(Array.isArray(e)||"string"==typeof e){var h=[];for(o in a)h[Number(o)]=a[o];a=h.filter(function(e){return e}),"string"==typeof e&&(a=a.join(""))}return a}var c=e("gematriya"),f="charCodeAt",l=n.months={NISAN:1,IYYAR:2,SIVAN:3,TAMUZ:4,AV:5,ELUL:6,TISHREI:7,CHESHVAN:8,KISLEV:9,TEVET:10,SHVAT:11,ADAR_I:12,ADAR_II:13},y=[["",0,""],["Nisan",0,"ניסן"],["Iyyar",0,"אייר"],["Sivan",0,"סיון"],["Tamuz",0,"תמוז"],["Av",0,"אב"],["Elul",0,"אלול"],["Tishrei",0,"תשרי"],["Cheshvan",0,"חשון"],["Kislev",0,"כסלו"],["Tevet",0,"טבת"],["Sh'vat",0,"שבט"]];n.monthNames=[y.concat([["Adar",0,"אדר"],["Nisan",0,"ניסן"]]),y.concat([["Adar 1",0,"אדר א'"],["Adar 2",0,"אדר ב'"],["Nisan",0,"ניסן"]])],n.days={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6},n.LANG=function(e,t){return"h"==t&&e[2]||"a"==t&&e[1]||e[0]},n.LEAP=r,n.MONTH_CNT=function(e){return 12+r(e)},n.daysInMonth=function(e,t){return 30-(e==l.IYYAR||e==l.TAMUZ||e==l.ELUL||e==l.TEVET||e==l.ADAR_II||e==l.ADAR_I&&!r(t)||e==l.CHESHVAN&&!o(t)||e==l.KISLEV&&s(t))},n.monthNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514&&/('|")/.test(e)?c(e):e[f](0)>=48&&e[f](0)<=57?parseInt(e,10):u(e)},n.dayYearNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514?c(e,!0):parseInt(e,10)},n.hebElapsedDays=a,n.daysInYear=i,n.lngChesh=o,n.shrtKis=s,n.monthFromName=u,n.dayOnOrBefore=function(e,t){return t-(t-e)%7},n.map=function(e,t,n){if(null===e||"function"!=typeof t)throw new TypeError;var r=Object(e),a={};for(var i in r)r.hasOwnProperty(i)&&(a[i]=t.call(n,r[i],i,r));if(Array.isArray(e)||"string"==typeof e){var o=[];for(i in a)o[Number(i)]=a[i];a=h(o,!0),"string"==typeof e&&(a=a.join(""))}return a},n.filter=h,n.range=function(e,t,n){n=n||1,n<0&&(n=0-n);var r=[],a=e;if(e=t;a-=n)r.push(a);return r}},{gematriya:10}],4:[function(e,t,n){var r=e("./common"),a=e("./greg"),i=e("gematriya"),o=[["Berachot","Berachos","ברכות",64],["Shabbat","Shabbos","שבת",157],["Eruvin","Eruvin","עירובין",105],["Pesachim",0,"פסחים",121],["Shekalim",0,"שקלים",22],["Yoma",0,"יומא",88],["Sukkah",0,"סוכה",56],["Beitzah",0,"ביצה",40],["Rosh Hashana",0,"ראש השנה",35],["Taanit","Taanis","תענית",31],["Megillah",0,"מגילה",32],["Moed Katan",0,"מועד קטן",29],["Chagigah",0,"חגיגה",27],["Yevamot","Yevamos","יבמות",122],["Ketubot","Kesubos","כתובות",112],["Nedarim",0,"נדרים",91],["Nazir",0,"נזיר",66],["Sotah",0,"סוטה",49],["Gitin",0,"גיטין",90],["Kiddushin",0,"קידושין",82],["Baba Kamma",0,"בבא קמא",119],["Baba Metzia",0,"בבא מציעא",119],["Baba Batra","Baba Basra","בבא בתרא",176],["Sanhedrin",0,"סנהדרין",113],["Makkot","Makkos","מכות",24],["Shevuot","Shevuos","שבועות",49],["Avodah Zarah",0,"עבודה זרה",76],["Horayot","Horayos","הוריות",14],["Zevachim",0,"זבחים",120],["Menachot","Menachos","מנחות",110],["Chullin",0,"חולין",142],["Bechorot","Bechoros","בכורות",61],["Arachin",0,"ערכין",34],["Temurah",0,"תמורה",34],["Keritot","Kerisos","כריתות",28],["Meilah",0,"מעילה",22],["Kinnim",0,"קנים",4],["Tamid",0,"תמיד",10],["Midot","Midos","מדות",4],["Niddah",0,"נדה",73]].map(function(e){return{name:e.slice(0,3),blatt:e[3]}});n.dafyomi=function(e){var t,n,r,i,s,u,h,c,f,l=40;if(!(e instanceof Date))throw new TypeError("non-date given to dafyomi");if(r=a.greg2abs(new Date(1923,8,11)),i=a.greg2abs(new Date(1975,5,24)),c=a.greg2abs(e),c=i?(t=8+(c-i)/2711,n=(c-i)%2711):(t=1+(c-r)/2702,n=(c-r)%2702),s=f=0,u=-1,t<=7?o[4].blatt=13:o[4].blatt=22,h=0;h1&&(t-=i((4*(e.getMonth()+1)+23)/10),a(e.getFullYear())&&t++),t}function a(e){return!(e%4||!(e%100)&&e%400)}var i=Math.floor,o=[30,31],s=[0,31,28,31].concat(o,o,31,o,o),u=[s.slice()];s[2]++,u.push(s),n.daysInMonth=function(e,t){return u[+a(t)][e]},n.monthNames=["","January","February","March","April","May","June","July","August","September","October","November","December"],n.lookupMonthNum=function(e){return new Date(e+" 1").getMonth()+1},n.dayOfYear=r,n.LEAP=a,n.greg2abs=function(e){var t=e.getFullYear()-1;return r(e)+365*t+(i(t/4)-i(t/100)+i(t/400))},n.abs2greg=function(e){var t=e-1,n=i(t/146097),r=i(t%146097),a=i(r/36524),o=r%36524,s=i(o/1461),u=o%1461,h=i(u/365),c=u%365+1,f=400*n+100*a+4*s+h;return 4==a||4==h?new Date(f,11,31):new Date(new Date(++f,0,c).setFullYear(f))}},{}],6:[function(e,t,n){function r(e,t,n){var a=this;switch(arguments.length){case 0:return new r(new Date);case 1:if("undefined"==typeof e)return new r;if(e instanceof Date){var i=u(y.greg2abs(e));return i}if(e instanceof r){var i=new r(e[p](),e[v](),e[g]());return i.il=e.il,i.setLocation(i.lat,i.long),i}if("string"==typeof e){switch(e.toLowerCase().trim()){case"today":return new r;case"yesterday":return(new r).prev();case"tomorrow":return(new r).next()}if(/\s/.test(e)){var o=e.split(/\s+/);if(2==o.length)return new r(o[0],o[1]);if(3==o.length)return new r(o[0],o[1],o[2]);if(4==o.length)return/i/i.test(o[2])&&(o[2]=o[2].length),new r(o[0],o[1]+o[2],o[3])}}else if("number"==typeof e)return u(e);throw new TypeError("HDate called with bad argument");case 2:return new r(e,t,(new r)[g]());case 3:a.day=a.month=1,a.year=l.dayYearNum(n),a.setMonth(l.monthNum(t)),a.setDate(l.dayYearNum(e));break;default:throw new TypeError("HDate called with bad arguments")}return a.setLocation.apply(a,r.defaultLocation)}function a(e){o(e),i(e)}function i(e){e.day<1&&(e.month==_&&(e.year-=1),e.day+=T(e.month,e.year),e.month-=1,a(e)),e.day>T(e.month,e.year)&&(e.month==E.ELUL&&(e.year+=1),e.day-=T(e.month,e.year),e.month+=1,a(e)),o(e)}function o(e){e.month!=E.ADAR_II||e.isLeapYear()||(e.month-=1,a(e)),e.month<1&&(e.month+=S(e.year),e.year-=1,a(e)),e.month>S(e.year)&&(e.month-=S(e.year),e.year+=1,a(e))}function s(e){var t,n=e[p](),r=e[g]();if(e[v]()<_){for(t=_;t<=S(r);t++)n+=T(t,r);for(t=E.NISAN;t=10555144)throw new RangeError("parameter to abs2hebrew "+e+" out of range");for(n=y.abs2greg(e),t=new r(1,_,i=3760+n[g]());e>=s(t.setFullYear(i+1));)i++;for(a=i>4634&&i<10666?o[n[v]()]:_;e>s(t=new r(T(a,i),a,i));)a=a%S(i)+1;return t.setLocation.apply(t.setDate(e-s(t.setDate(1))+1),r.defaultLocation)}function h(e){var t=e.greg();return m.getTimes(new Date(t.getFullYear(),t.getMonth(),t.getDate(),12,0,0,0,0),e.lat,e.long)}function c(e,t){return new Date(e.sunrise()[b]()+e[L]()*t)}function f(e,t,n){return new r(M(e,t[A]()+n))}var l=e("./common"),y=e("./greg"),m=e("suncalc"),d=e("./cities"),w=e("gematriya");m.addTime(-16.1,"alot_hashachar",0),m.addTime(-11.5,"misheyakir",0),m.addTime(-10.2,"misheyakir_machmir",0),m.addTime(-8.5,0,"tzeit");var g="getFullYear",v="getMonth",p="getDate",b="getTime",A="abs",L="hour",E=l.months,_=E.TISHREI,S=l.MONTH_CNT,T=l.daysInMonth,M=l.dayOnOrBefore,N=r.prototype;r.defaultLocation=[0,0],Object.defineProperty(r,"defaultCity",{enumerable:!0,configurable:!0,get:function(){return d.nearest(r.defaultLocation[0],r.defaultLocation[1])},set:function(e){r.defaultLocation=d.getCity(e).slice(0,2)}}),N[g]=function(){return this.year},N.isLeapYear=function(){return l.LEAP(this.year)},N[v]=function(){return this.month},N.getTishreiMonth=function(){var e=S(this[g]());return(this[v]()+e-6)%e||e},N.daysInMonth=function(){return T(this[v](),this[g]())},N[p]=function(){return this.day},N.getDay=function(){return this.greg().getDay()},N.setFullYear=function(e){return this.year=e,a(this),this},N.setMonth=function(e){return this.month=l.monthNum(e),a(this),this},N.setTishreiMonth=function(e){return this.setMonth((e+6)%S(this[g]())||13)},N.setDate=function(e){return this.day=e,a(this),this},N.greg=function(){return y.abs2greg(s(this))},N.gregEve=function(){return this.prev().sunset()},N[A]=function(){return s(this)},N.toString=function(e){return l.LANG([this[p](),null,w(this[p]())],e)+" "+this.getMonthName(e)+" "+l.LANG([this[g](),null,w(this[g]())],e)},N.getMonthName=function(e){return l.LANG(l.monthNames[+this.isLeapYear()][this[v]()],e)},N.setCity=function(e){return this.setLocation(d.getCity(e))},N.setLocation=function(e,t){if("object"!=typeof e||Array.isArray(e)||(t=e.long,e=e.lat),Array.isArray(e)&&"undefined"==typeof t&&(t=e[0],e=e[1]),Array.isArray(e)&&(e=(60*e[0]+e[1])/60),Array.isArray(t)&&(t=(60*t[0]+t[1])/60),"number"!=typeof e)throw new TypeError("incorrect lat type passed to HDate.setLocation()");if("number"!=typeof t)throw new TypeError("incorrect long type passed to HDate.setLocation()");return this.lat=e,this.long=t,this.il=d.getCity(d.nearest(e,t))[2],this},N.sunrise=function(){return h(this).sunrise},N.sunset=function(){return h(this).sunset},N[L]=function(){return(this.sunset()-this.sunrise())/12},N.hourMins=function(){return this[L]()/6e4},N.nightHour=function(){return(this.sunrise()-this.gregEve())/12},N.nightHourMins=function(){return this.nightHour()/6e4};var I={chatzot:function(e){return c(e,6)},chatzot_night:function(e){return new Date(e.sunrise()[b]()-6*e.nightHour())},alot_hashachar:function(e){return h(e).alot_hashachar},alot_hashacher:function(e){return h(e).alot_hashachar},misheyakir:function(e){return h(e).misheyakir},misheyakir_machmir:function(e){return h(e).misheyakir_machmir},sof_zman_shma:function(e){return c(e,3)},sof_zman_tfilla:function(e){return c(e,4)},mincha_gedola:function(e){return c(e,6.5)},mincha_ketana:function(e){return c(e,9.5)},plag_hamincha:function(e){return c(e,10.75)},tzeit:function(e){return h(e).tzeit},neitz_hachama:function(e){return e.sunrise()},shkiah:function(e){return e.sunset()}};N.getZemanim=function(){return l.map(I,function(e){return e(this)},this)},r.addZeman=function(e,t){I[e]=t},N.next=function(){return u(this.abs()+1).setLocation(this.lat,this.long)},N.prev=function(){return u(this.abs()-1).setLocation(this.lat,this.long)},N.isSameDate=function(e){return e instanceof r&&(e[g]()==-1&&(e=new r(e).setFullYear(this[g]())),this[A]()==e[A]())},N.before=function(e){return f(e,this,-1)},N.onOrBefore=function(e){return f(e,this,0)},N.nearest=function(e){return f(e,this,3)},N.onOrAfter=function(e){return f(e,this,6)},N.after=function(e){return f(e,this,7)},t.exports=r},{"./cities":1,"./common":3,"./greg":5,gematriya:10,suncalc:11}],7:[function(e,t,n){function r(e,t){return{enumerable:!0,configurable:!0,get:e,set:t}}function a(e,t){for(var n in t)e[n]=t[n];return e}function i(e,t){var n=this;if(e||(e=(new c)[T]()),"number"!=typeof e)throw new p("year to Hebcal() is not a number");if(n.year=e,!t)return new i(e,h.range(1,h.MONTH_CNT(e)));if("string"==typeof t&&(t=h.monthFromName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal is not a valid type");n.months=t[E](function(t){var r=new o(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.holidays=f.year(e),n[N]=h.daysInYear(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})}))}function o(e,t){var n=this;if(e=h.monthNum(e),"number"!=typeof e)throw new p("month to Hebcal.Month is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.Month is not a number");return n.month=e,n.year=t,n.days=h.range(1,h.daysInMonth(e,t))[E](function(r){var a=new c(r,e,t);return v(a,"__month",{configurable:!0,writable:!0,value:n}),a}),n[N]=n.days[N],n.holidays=h.filter(f.year(t),function(t){return t[0].date[S]()==e}),v(n,"il",r(function(){return n[_](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[_](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[_](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}function s(e,t){var n=this;if(e||(e=(new Date)[T]()),"string"==typeof e){var i=new Date(e);return t=e.indexOf(" ")+1||e.indexOf("-")+1||e.indexOf("/")+1?i[S]()+1:h.range(1,12),new s(i[T](),t)}if("number"!=typeof e)throw new p("year to Hebcal.GregYear() is not a number");if(n.year=e,!t)return new s(e,h.range(1,12));if("string"==typeof t&&(t=d.lookupMonthName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal.GregYear() is not a valid type");return n.months=t[E](function(t){var r=new u(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.hebyears=[].concat.apply([],n.months[E](function(e){return e.hebmonths[E](function(e){return e.year})})).filter(function(e,t,n){return n.indexOf(e)===t}),n.holidays=h.filter(f.year(n.hebyears[0]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[N]}),n.hebyears[1]&&a(n.holidays,h.filter(f.year(n.hebyears[1]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[N]})),n[N]=365+d.LEAP(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})})),n}function u(e,t){var n=this;if("string"==typeof e&&(e=d.lookupMonthNum(e)),"number"!=typeof e)throw new p("month to Hebcal.GregMonth is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.GregMonth is not a number");return n.year=t,n.month=e,n.days=h.range(1,d.daysInMonth(e,t))[E](function(r){var a=new c(new Date(t,e-1,r));return v(a,"__gregmonth",{configurable:!0,writable:!0,value:n}),a}),n[N]=n.days[N],n.hebmonths=[{month:n[_](1)[S](),year:n[_](1)[T]()},{month:n[_](-1)[S](),year:n[_](-1)[T]()}].filter(function(e,t,n){return 0===t||e.month!=n[0].month}),v(n,"il",r(function(){return n[_](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[_](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[_](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}var h=e("./common"),c=e("./hdate"),f=e("./holidays"),l=e("./sedra"),y=e("./dafyomi"),m=e("./cities"),d=e("./greg"),w=e("events").EventEmitter,g=e("gematriya"),v=Object.defineProperty,p=TypeError,b="find",A="strings",L="getYearObject",E="map",_="getDay",S="getMonth",T="getFullYear",M="isLeapYear",N="length",I="next",H="prev",D=h.months,C=D.TISHREI,O=D.NISAN,Y=i.prototype,k=o.prototype,R=s.prototype,V=u.prototype,P=c.prototype;Y[M]=P[M],Y.setCity=function(e){return this.months.forEach(function(t){t.setCity(e)}),this},Y.setLocation=function(e,t){return this.months.forEach(function(n){n.setLocation(e,t)}),this},Y[I]=function(){return new i(this.year+1)},Y[H]=function(){return new i(this.year-1)},Y[S]=function(e){var t=this.months;return e=h.monthNum(e),e>this.months[N]?this[I]()[S](e-t[N]):t[e>0?e-1:t[N]+e]},Y[_]=function(e){var t=this;if(e>t[N])return null;if(e<0)return t[_](t[N]-e);var n=t[b](29,D.ELUL)[0].abs()+1-t[b](1,O)[0].abs();return e<=n?t[S](O)[_](e):t[S](C)[_](e-n)},Y.days=function(){return[].concat.apply([],this.months[E](function(e){return e.days}))},Y[E]=function(){return[][E].apply(this.days(),arguments)},Y.filter=function(){return[].filter.apply(this.days(),arguments)},Y.addHoliday=function(e){if(!(e instanceof f.Event))throw new p("non-Event passed to addHoliday()");return this.holidays.add(e),this},Y.findParsha=function(e,t){var n=t?[t]:["s","a","h"],r=this.filter(function(t){return Math.max.apply(null,n.map(function(n){return t.getSedra(n).indexOf(e)+1}))});return r[r[N]-1]},Y.findSedra=Y.findParsha,Y[b]=function e(t,n){var r=this;if(1===arguments[N]){if("string"==typeof t)return e[A].call(r,t);if(Array.isArray(t))return[].concat.apply([],t[E](function(e){return r[b][Array.isArray(e)?"apply":"call"](r,e)}));if(t instanceof c)return r[b](t.getDate(),t[S]());if(t instanceof Date)return r[b](new c(t))}else if(2==arguments[N]){if(n instanceof o)return n[b](t);if(Array.isArray(n))return[].concat.apply([],n[E](function(e){return r[b](t,e)}));if("string"==typeof n)return r[b](t,h.monthNum(n));if("number"==typeof n)return r[b](t,r[S](n))}return[]},Y[b][A]=function e(t){var n=t.split(/\s+/),r=e[t.replace(/\s/g,"_").toLowerCase()];if(!n[N])return[];if(r)return r.call(this);try{return this[b](new c(t))}catch(e){return n[N]-1?this[b].apply(this,n):[]}},Y[b][A].rosh_chodesh=function(){return this[b]("Rosh Chodesh",h.range(1,this.months[N]))},Y[b][A].holidays=function(){return[].concat.apply([],this.holidays[E](function(e){return this[b](e.date)},this))},Y[b][A].omer=function(){return this[b](h.range(16,64),O)},Y[b][A].today=function(){return this[b](new c)},Y[b][A].yesterday=function(){return[this[b]("today")[0][H]()]},Y[b][A].tomorrow=function(){return[this[b]("today")[0][I]()]},Y[b][A].pesach=function(){return this[b](h.range(15,23-this.il),O)},Y[b][A].sukkot=function(){return this[b](h.range(15,24-this.il),C)},Y[b][A].succot=Y[b][A].succos=Y[b][A].sukkos=Y[b][A].sukkot,Y[b][A].shavuot=function(){return this[b](h.range(6,7-this.il),D.SIVAN)},Y[b][A].shavuos=Y[b][A].shavuot,Y[b][A].rosh_hashana=function(){return this[b](h.range(1,2),C)},Y[b][A].rosh_hashanah=Y[b][A].rosh_hashana,i.addZeman=c.addZeman,i.cities=m,i.range=h.range,i.gematriya=g,i.holidays=h.filter(f,["masks","Event"]),i.parshiot=l.parshiot,i.LANGUAGE=h.LANG,i[E]=h[E],i.filter=h.filter,v(i,"defaultLocation",r(function(){return c.defaultLocation},function(e){i.events.emit("locationChange",c.defaultLocation),c.defaultLocation=e})),v(i,"defaultCity",r(function(){return c.defaultCity},function(e){i.defaultLocation=m.getCity(e).slice(0,2)})),v(i,"candleLighting",r(function(){return f.Event.candleLighting},function(e){f.Event.candleLighting=e})),v(i,"havdalah",r(function(){return f.Event.havdalah},function(e){f.Event.havdalah=e})),i.Month=o,k[M]=P[M],k[H]=function(){var e=this,t=e[L]();return 1===e.month?t[S](-1):e.month===C?t[H]()[S](D.ELUL):t[S](e.month-1)},k[I]=function(){var e=this,t=e[L]();return e.month===h.MONTH_CNT(e.year)?t[S](1):e.month===D.ELUL?t[I]()[S](C):t[S](e.month+1)},k[_]=function(e){var t=this.days;return e=h.dayYearNum(e),e>t[N]?this[I]()[_](e-t[N]):t[e>0?e-1:t[N]+e]},k[L]=function(){return this.__year||new i(this.year)},k.getName=function(e){return h.LANG(h.monthNames[+this[M]()][this.month],e)},k.rosh_chodesh=function(){var e=this[H]();return 30==e[N]?[e[_](-1),this[_](1)]:[this[_](1)]},k.setCity=function(e){return this.days.forEach(function(t){t.setCity(e)}),this},k.setLocation=function(e,t){return this.days.forEach(function(n){n.setLocation(e,t)}),this},k[E]=function(){return[][E].apply(this.days,arguments)},k.molad=function(){var e,t,n,r,a,i,o={},s=parseInt;i=this.month-7,e=this.year-1,i<0&&(i+=h.MONTH_CNT(e+1)),t=s(i+235*(e/19)),n=s(204+793*(t%1080)),r=s(5+12*t+793*(t/1080)-6),a=s(n%1080+1080*(r%24)),o.doy=new c(s(1+29*t+r/24)).getDay(),o.hour=Math.round(r%24);var u=s(a%1080);o.minutes=s(u/18),o.chalakim=u%18;var f=this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(o.doy).greg();return f.setHours(o.hour),f.setMinutes(o.minutes),f.setSeconds(3.33*o.chalakim),o.day=f,o},k[b]=function e(t){var n=this;return"number"==typeof t?[n[_](t)]:"string"==typeof t?e[A].call(n,t):Array.isArray(t)?[].concat.apply([],t[E](function(e){return n[b](e)})):t instanceof c&&t[T]()==n.year&&t[S]()==n.month?n[b](t.getDate()):t instanceof Date?n[b](new c(t)):[]},k[b][A]=function e(t){var n=e[t.replace(/\s/g,"_").toLowerCase()];if(n)return n.call(this);try{return this[b](new c(t))}catch(e){var r=h.dayYearNum(t);return r?this[b](r):[]}},k[b][A].rosh_chodesh=function(){return this.rosh_chodesh()},k[b][A].shabbat_mevarchim=function e(){return this.month===D.ELUL?[]:e._calc.call(this)},k[b][A].shabbat_mevarchim._calc=function(){return this[b](this[_](29).onOrBefore(h.days.SAT))},k[b][A].shabbos_mevarchim=k[b][A].shabbos_mevorchim=k[b][A].shabbat_mevarchim,i.HDate=c,P.getMonthObject=function(){return this.__month||new o(this[S](),this[T]())},P[L]=function(){return this.getMonthObject()[L]()},function(){var e={};[H,I].forEach(function(t){e[t]=P[t],P[t]=function(){var n=e[t].call(this);return this.__month?this[L]()[b](n)[0]:n}})}(),P.getSedra=function(){var e={};return function(t){var n=e[this[T]()];return n&&n.il==this.il||(n=e[this[T]()]=new l(this[T](),this.il)),n.get(this)[E](function(e){return h.LANG(e,t)})}}(),P.getParsha=P.getSedra,P.holidays=function(e){var t=this,n=t[L]().holidays[t];return n?n.filter(function(n){return!!e||!n.routine()&&n.is(t)})[E](function(e){return e.date.setLocation(t),e}):[]},["candleLighting","havdalah"].forEach(function(e){P[e]=function(){var t=this,n=t.holidays(!0).filter(function(e){return e.is(t)});return n.length&&(n=h.filter(n.map(function(t){return t[e]()}),!0)),n.length?new Date(Math.max.apply(null,n)):null}}),P.omer=function(){var e=this,t=e.greg().getTime(),n=e[T]();return t>new c(15,O,n).greg().getTime()&&t=5727?y[b](29,D.IYYAR):[])),u=i.yes_prev[m]=e([].concat(y[b](-1,D.ELUL),y[b](9,D.TISHREI),y[b](14,D.IYYAR))),i.il[m]=l.il),o=o.indexOf(l.abs())>-1,s=s.indexOf(l.abs())>-1,u=u.indexOf(l.abs()+1)>-1,o)return t;var d=(!s&&a)|(6!=l[_]()&&r);return d|=c&&!u?l[I]().tachanun(!0)&r&&n:5!=l[_]()&&n,d==a?t:d}var t=e.NONE=0,n=e.MINCHA=1,r=e.SHACHARIT=2,a=e.ALL_CONGS=4,i={all:{},some:{},yes_prev:{},il:{}};return e}(),P.hallel=function(){function e(){var e=this,i=e[L](),o=i.year,s=a.il[o]==e.il&&a.whole[o]||(a.whole[o]=[].concat(i[b](h.range(25,33),D.KISLEV),i[b]([15,e.il?null:16],O),i[b]("Shavuot"),i[b]("Sukkot"),f.atzmaut(o)[1].date||[],o>=5727?i[b](29,D.IYYAR):[])[E](function(e){return e.abs()})),u=a.il[o]==e.il&&a.half[o]||(a.half[o]=[].concat(i[b]("Rosh Chodesh").filter(function(e){return e[S]()!=C}),i[b](h.range(17-e.il,23-e.il),O))[E](function(e){return e.abs()}));return a.il[o]=e.il,s.indexOf(e.abs())>-1&&r||u.indexOf(e.abs())>-1&&n||t}var t=e.NONE=0,n=e.HALF=1,r=e.WHOLE=2,a={whole:{},half:{},il:{}};return e}(),function(e){function t(){function t(e,t){return h.filter(h[E](e,function(e){return e-r}),function(e){return e>0&&e-t<0})}var n=new c;i.isSameDate(n)||(e.emit("dayChange"),i=n);var r=new Date,a=t(n.getZemanim(),e.beforeZeman),o=t(e.customs,e.refreshInterval);for(var s in a)e.emit("almostZeman",s,a[s]),a[s]t[N]?this[I]()[S](e-t[N]):t[e>0?e-1:t[N]+e]},a(R,{days:Y.days,map:Y[E],filter:Y.filter,addHoliday:Y.addHoliday}),i.GregMonth=u,V[M]=function(){return d.LEAP(this.year)},V[H]=function(){return 1===this.month?this[L]()[H]()[S](-1):this[L]()[S](this.month-1)},V[I]=function(){return this[L]()[S](this.month+1)},V[_]=function(e){return e>this.days[N]?this[I]()[_](e-this.days[N]):this.days[e>0?e-1:this.days[N]+e]},V[L]=function(){return this.__year||new s(this.year)},V.getName=function(){return d.monthNames[this.month]},V.setCity=k.setCity,V.setLocation=k.setLocation,V[E]=k[E],P.getGregMonthObject=function(){return this.__gregmonth||new u(this.greg()[S]()+1,this.greg()[T]())},P.getGregYearObject=function(){return this.getGregMonthObject()[L]()},t.exports=i},{"./cities":1,"./common":3,"./dafyomi":4,"./greg":5,"./hdate":6,"./holidays":8,"./sedra":12,events:9,gematriya:10}],8:[function(e,t,n){function r(e){return["Chanukah: Candle "+e,0,"חנוכה: נר "+f(e)]}function a(e){return[e[0]+' (CH"M)',e[1]?e[1]+' (CH"M)':e[1],e[2]?e[2]+' )חה"ם(':e[2]]}function i(e){return["Sukkot: "+e,"Succos: "+e,"סוכות יום "+f(e)]}function o(e){return["Pesach: "+e,0,"פסח יום "+f(e)]}function s(e,t,n){var r=this;r.date=new c(e),r.desc="object"!=typeof t?[t]:t,r.USER_EVENT=!!(n&_),r.LIGHT_CANDLES=!!(n&S),r.YOM_TOV_ENDS=!!(n&T),r.CHUL_ONLY=!!(n&M),r.IL_ONLY=!!(n&N),r.LIGHT_CANDLES_TZEIS=!!(n&I)}function u(e){if(e>=5708){var t=new c(1,m.IYYAR,e),n=new c(15,v,e);return n[b]()==d.SUN?t.setDate(2):n[b]()==p?t.setDate(3):e<5764?t.setDate(4):n[b]()==d.TUE?t.setDate(5):t.setDate(4),[new s(t,["Yom HaZikaron",0,"יום הזיכרון"],0),new s(t.next(),["Yom HaAtzma'ut",0,"יום העצמאות"],0)]}return[]}var h=e("./common"),c=e("./hdate"),f=e("gematriya"),l={},y=h.dayOnOrBefore,m=h.months,d=h.days,w=m.TISHREI,g=m.KISLEV,v=m.NISAN,p=d.SAT,b="getDay",A="abs",L="Shabbat",E="Shabbos",_=1,S=2,T=4,M=8,N=16,I=32;n.masks={USER_EVENT:_,LIGHT_CANDLES:S,YOM_TOV_ENDS:T,CHUL_ONLY:M,IL_ONLY:N,LIGHT_CANDLES_TZEIS:I},s.prototype.is=function(e,t){return e=new c(e),myDate=this.date,arguments.length<2&&(t=e.il),e.getDate()==myDate.getDate()&&e.getMonth()==myDate.getMonth()&&(e.getFullYear()==myDate.getFullYear()&&!(t&&this.CHUL_ONLY||!t&&this.IL_ONLY))},s.prototype.masks=function(){var e=this;return(e.USER_EVENT&&_)|(e.LIGHT_CANDLES&&S)|(e.YOM_TOV_ENDS&&T)|(e.CHUL_ONLY&&M)|(e.IL_ONLY&&N)|(e.LIGHT_CANDLES_TZEIS&&I)},
-s.prototype.getDesc=function(e){return h.LANG(this.desc,e)},s.prototype.candleLighting=function(){var e=this.date;return this.LIGHT_CANDLES?new Date(e.sunset()-60*s.candleLighting*1e3):this.LIGHT_CANDLES_TZEIS?e.getZemanim().tzeit:null},s.prototype.havdalah=function(){return this.YOM_TOV_ENDS?new Date(this.date.sunset().getTime()+60*s.havdalah*1e3):null},s.prototype.routine=function(){function e(){return!!~e.names.indexOf(this.getDesc("s"))}return e.names=[L,"Erev "+L],e}(),s.isIL=!1,s.candleLighting=18,s.havdalah=42,n.Event=s,n.year=function(e){function t(e){Array.isArray(e)?e.forEach(function(e){t(e)}):H[e.date]?H[e.date].push(e):H[e.date]=[e]}if(l[e])return l[e];var n,f=new c(1,w,e),_=new c(15,v,e),H={};Object.defineProperty(H,"add",{value:t}),t([new s(f,["Rosh Hashana 1",0,"ראש השנה א'"],I),new s(new c(2,w,e),["Rosh Hashana 2",0,"ראש השנה ב'"],T),new s(new c(3+(f[b]()==d.THU),w,e),["Tzom Gedaliah",0,"צום גדליה"],0),new s(new c(9,w,e),["Erev Yom Kippur",0,"ערב יום כיפור"],S),new s(new c(y(p,7+f[A]())),[L+" Shuva",E+" Shuvah","שבת שובה"],0),new s(new c(10,w,e),["Yom Kippur",0,"יום כיפור"],T),new s(new c(14,w,e),["Erev Sukkot","Erev Succos","ערב סוכות"],S),new s(new c(15,w,e),i(1),I|M),new s(new c(15,w,e),i(1),T|N),new s(new c(16,w,e),i(2),T|M),new s(new c(16,w,e),a(i(2)),N),new s(new c(17,w,e),a(i(3)),0),new s(new c(18,w,e),a(i(4)),0),new s(new c(19,w,e),a(i(5)),0),new s(new c(20,w,e),a(i(6)),0),new s(new c(21,w,e),["Sukkot: 7 (Hoshana Raba)","Succos: 7 (Hoshana Raba)","סוכות יום ז' )הושנע רבה("],S),new s(new c(22,w,e),["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"],I|M),new s(new c(22,w,e),["Shmini Atzeret / Simchat Torah","Shmini Atzeres / Simchas Torah","שמיני עצרת / שמחת תורה"],T|N),new s(new c(23,w,e),["Simchat Torah","Simchas Torah","שמחת תורה"],T|M),new s(new c(24,g,e),["Erev Chanukah",0,"ערב חנוכה"],0),new s(new c(25,g,e),r(1),0),new s(new c(26,g,e),r(2),0),new s(new c(27,g,e),r(3),0),new s(new c(28,g,e),r(4),0),new s(new c(29,g,e),r(5),0),new s(new c(30,g,e),r(6),0),new s(new c(31,g,e),r(7),0),new s(new c(32,g,e),r(8),0),new s(new c(15,m.SHVAT,e),["Tu B'Shvat",0,'ט"ו בשבט'],0),new s(new c(y(p,_[A]()-43)),[L+" Shekalim",E+" Shekalim","שבת שקלים"],0),new s(new c(y(p,_[A]()-30)),[L+" Zachor",E+" Zachor","שבת זכור"],0),new s(new c(_[A]()-(_[b]()==d.TUE?33:31)),["Ta'anit Esther","Ta'anis Esther","תענית אסתר"],0),new s(new c(13,m.ADAR_II,e),["Erev Purim",0,"ערב פורים"],0),new s(new c(14,m.ADAR_II,e),["Purim",0,"פורים"],0),new s(new c(15,m.ADAR_II,e),["Shushan Purim",0,"שושן פורים"],0),new s(new c(y(p,_[A]()-14)-7),[L+" Parah",E+" Parah","שבת פרה"],0),new s(new c(y(p,_[A]()-14)),[L+" Hachodesh",E+" Hachodesh","שבת החודש"],0),new s(new c(y(p,_[A]()-1)),[L+" HaGadol",E+" HaGadol","שבת הגדול"],0),new s(_.prev()[b]()==p?_.onOrBefore(d.THU):new c(14,v,e),["Ta'anit Bechorot","Ta'anis Bechoros","תענית בכורות"],0),new s(new c(14,v,e),["Erev Pesach",0,"ערב פסח"],S),new s(new c(15,v,e),o(1),I|M),new s(new c(15,v,e),o(1),T|N),new s(new c(16,v,e),o(2),T|M),new s(new c(16,v,e),a(o(2)),N),new s(new c(16,v,e),["Start counting Omer",0,"התחלת ספירת העומר"],0),new s(new c(17,v,e),a(o(3)),0),new s(new c(18,v,e),a(o(4)),0),new s(new c(19,v,e),a(o(5)),0),new s(new c(20,v,e),a(o(6)),S),new s(new c(21,v,e),o(7),I|M),new s(new c(21,v,e),o(7),T|N),new s(new c(22,v,e),o(8),T|M),new s(new c(14,m.IYYAR,e),["Pesach Sheni",0,"פסח שני"],0),new s(new c(18,m.IYYAR,e),["Lag B'Omer",0,'ל"ג בעומר'],0),new s(new c(5,m.SIVAN,e),["Erev Shavuot","Erev Shavuos","ערב שבועות"],S),new s(new c(6,m.SIVAN,e),["Shavuot 1","Shavuos 1","שבועות א'"],I|M),new s(new c(6,m.SIVAN,e),["Shavuot","Shavuos","שבועות"],T|N),new s(new c(7,m.SIVAN,e),["Shavuot 2","Shavuos 2","שבועות ב'"],T|M),new s(new c(y(p,new c(1,w,e+1)[A]()-4)),["Leil Selichot","Leil Selichos","ליל סליחות"],0),new s(new c(29,m.ELUL,e),["Erev Rosh Hashana",0,"ערב ראש השנה"],S)]),n=new c(10,m.TEVET,e),n[b]()==p&&(n=n.next()),t(new s(n,["Asara B'Tevet",0,"עשרה בטבת"],0)),h.LEAP(e)&&(t(new s(new c(14,m.ADAR_I,e),["Purim Katan",0,"פורים קטן"],0)),t(new s(new c(15,m.ADAR_I,e),["Shushan Purim Katan",0,"שושן פורים קטן"],0))),e>=5711&&(n=new c(27,v,e),n[b]()==d.FRI?n=n.prev():n[b]()==d.SUN&&(n=n.next()),t(new s(n,["Yom HaShoah",0,"יום השואה"],0))),t(u(e)),e>=5727&&t(new s(new c(29,m.IYYAR,e),["Yom Yerushalayim",0,"יום ירושלים"],0)),n=new c(17,m.TAMUZ,e),n[b]()==p&&(n=n.next()),t(new s(n,["Shiva-Asar B'Tamuz",0,"צום יז' בתמוז"],0)),n=new c(9,m.AV,e),n[b]()==p&&(n=n.next()),t(new s(new c(y(p,n[A]())),[L+" Chazon",E+" Chazon","שבת חזון"],0)),t(new s(n.prev(),["Erev Tish'a B'Av",0,"ערב תשעה באב"],0)),t(new s(n,["Tish'a B'Av",0,"תשעה באב"],0)),t(new s(new c(y(p,n[A]()+7)),[L+" Nachamu",E+" Nachamu","שבת נחמו"],0));for(var D=6;D0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!a(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,i,s;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,r=-1,n===t||a(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=i;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){r=s;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],a(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?a(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(a(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],10:[function(e,t,n){!function(){function e(e,t){if("number"!=typeof e&&"string"!=typeof e)throw new TypeError("non-number or string given to gematriya()");var n="string"==typeof e;return n&&(e=e.replace(/('|")/g,"")),e=e.toString().split("").reverse(),!n&&t&&(e=e.slice(0,t)),e=e.map(function i(o,s){return n?t&&a[o]1e3?i(o,s-3):r[parseInt(o,10)*Math.pow(10,s)]}),n?e.reduce(function(e,t){return e+t},0):(e=e.reverse().join("").replace(/יה/g,"טו").replace(/יו/g,"טז").split(""),1===e.length?e.push("'"):e.length>1&&e.splice(-1,0,'"'),e.join(""))}var n,r={},a={"":0,"א":1,"ב":2,"ג":3,"ד":4,"ה":5,"ו":6,"ז":7,"ח":8,"ט":9,"י":10,"כ":20,"ל":30,"מ":40,"נ":50,"ס":60,"ע":70,"פ":80,"צ":90,"ק":100,"ר":200,"ש":300,"ת":400,"תק":500,"תר":600,"תש":700,"תת":800,"תתק":900,"תתר":1e3};for(n in a)r[a[n]]=n;"undefined"!=typeof t?t.exports=e:window.gematriya=e}()},{}],11:[function(e,t,n){!function(){"use strict";function e(e){return e.valueOf()/I-.5+H}function r(e){return new Date((e+.5-H)*I)}function a(t){return e(t)-D}function i(e,t){return T(L(e)*E(C)-_(t)*L(C),E(e))}function o(e,t){return S(L(t)*E(C)+E(t)*L(C)*L(e))}function s(e,t,n){return T(L(e),E(e)*L(t)-_(n)*E(t))}function u(e,t,n){return S(L(t)*L(n)+E(t)*E(n)*E(e))}function h(e,t){return N*(280.16+360.9856235*e)-t}function c(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function f(e){return N*(357.5291+.98560028*e)}function l(e){var t=N*(1.9148*L(e)+.02*L(2*e)+3e-4*L(3*e)),n=102.9372*N;return e+t+n+A}function y(e){var t=f(e),n=l(t);return{dec:o(n,0),ra:i(n,0)}}function m(e,t){return Math.round(e-k-t/(2*A))}function d(e,t,n){return k+(e+t)/(2*A)+n}function w(e,t,n){return D+e+.0053*L(t)-.0069*L(2*n)}function g(e,t,n){return M((L(e)-L(t)*L(n))/(E(t)*E(n)))}function v(e,t,n,r,a,i,o){var s=g(e,n,r),u=d(s,t,a);return w(u,i,o)}function p(e){var t=N*(218.316+13.176396*e),n=N*(134.963+13.064993*e),r=N*(93.272+13.22935*e),a=t+6.289*N*L(n),s=5.128*N*L(r),u=385001-20905*E(n);return{ra:i(a,s),dec:o(a,s),dist:u}}function b(e,t){return new Date(e.valueOf()+t*I/24)}var A=Math.PI,L=Math.sin,E=Math.cos,_=Math.tan,S=Math.asin,T=Math.atan2,M=Math.acos,N=A/180,I=864e5,H=2440588,D=2451545,C=23.4397*N,O={};O.getPosition=function(e,t,n){var r=N*-n,i=N*t,o=a(e),c=y(o),f=h(o,r)-c.ra;return{azimuth:s(f,i,c.dec),altitude:u(f,i,c.dec)}};var Y=O.times=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];O.addTime=function(e,t,n){Y.push([e,t,n])};var k=9e-4;O.getTimes=function(e,t,n){var i,s,u,h,c,y=N*-n,g=N*t,p=a(e),b=m(p,y),A=d(0,y,b),L=f(A),E=l(L),_=o(E,0),S=w(A,L,E),T={solarNoon:r(S),nadir:r(S-.5)};for(i=0,s=Y.length;i=0&&(g=Math.sqrt(y)/(2*Math.abs(h)),d=f-g,w=f+g,Math.abs(d)<=1&&m++,Math.abs(w)<=1&&m++,d<-1&&(d=w)),1===m?p<0?s=A+d:u=A+d:2===m&&(s=A+(l<0?w:d),u=A+(l<0?d:w)),!s||!u);A+=2)p=o;var L={};return s&&(L.rise=b(a,s)),u&&(L.set=b(a,u)),s||u||(L[l>0?"alwaysUp":"alwaysDown"]=!0),L},"object"==typeof n&&"undefined"!=typeof t?t.exports=O:"function"==typeof define&&define.amd?define(O):window.SunCalc=O}()},{}],12:[function(e,t,n){function r(e,t){t=!!t;var n,r=o.lngChesh(e),a=o.shrtKis(e);this.year=e,n=r&&!a?l:!r&&a?c:f;var i=new s(1,o.months.TISHREI,e).abs(),u=i%7+1;this.first_saturday=o.dayOnOrBefore(6,i+6);var h=+o.LEAP(e);this.type=n,this.rosh_hashana_day=u,this.leap=h,this.il=t;var y=""+h+u+n;if(_[y]?this.theSedraArray=_[y]:this.theSedraArray=_[y+ +t],!this.theSedraArray)throw console.log(this),new TypeError("improper sedra year type calculated.")}function a(e){return-e}function i(e,t){t=o.dayOnOrBefore(6,t+6);var n=(t-e.first_saturday)/7,s=e.theSedraArray[n];return void 0===s?i(new r(e.year+1,e.il),t):"object"==typeof s?[s]:s>=0?[y[s]]:(s=a(s),[y[s],y[s+1]])}var o=e("./common"),s=e("./hdate"),u="concat",h=o.range,c=0,f=1,l=2,y=r.parshiot=[["Bereshit","Bereshis","בראשית"],["Noach",0,"נח"],["Lech-Lecha",0,"לך-לך"],["Vayera",0,"וירא"],["Chayei Sara",0,"חי שרה"],["Toldot","Toldos","תולדות"],["Vayetzei",0,"ויצא"],["Vayishlach",0,"וישלח"],["Vayeshev",0,"וישב"],["Miketz",0,"מקץ"],["Vayigash",0,"ויגש"],["Vayechi",0,"ויחי"],["Shemot","Shemos","שמות"],["Vaera",0,"וארא"],["Bo",0,"בא"],["Beshalach",0,"בשלח"],["Yitro","Yisro","יתרו"],["Mishpatim",0,"משפטים"],["Terumah",0,"תרומה"],["Tetzaveh",0,"תצוה"],["Ki Tisa","Ki Sisa","כי תשא"],["Vayakhel",0,"ויקהל"],["Pekudei",0,"פקודי"],["Vayikra",0,"ויקרא"],["Tzav",0,"צו"],["Shmini",0,"שמיני"],["Tazria",0,"תזריע"],["Metzora",0,"מצרע"],["Achrei Mot","Achrei Mos","אחרי מות"],["Kedoshim",0,"קדשים"],["Emor",0,"אמור"],["Behar",0,"בהר"],["Bechukotai","Bechukosai","בחקתי"],["Bamidbar",0,"במדבר"],["Nasso",0,"נשא"],["Beha'alotcha","Beha'aloscha","בהעלתך"],["Sh'lach",0,"שלח לך"],["Korach",0,"קורח"],["Chukat","Chukas","חקת"],["Balak",0,"בלק"],["Pinchas",0,"פינחס"],["Matot","Matos","מטות"],["Masei",0,"מסעי"],["Devarim",0,"דברים"],["Vaetchanan","V'eschanan","ואתחנן"],["Eikev",0,"עקב"],["Re'eh",0,"ראה"],["Shoftim",0,"שופטים"],["Ki Teitzei","Ki Seitzei","כי תצא"],["Ki Tavo","Ki Savo","כי תבוא"],["Nitzavim",0,"נצבים"],["Vayeilech",0,"וילך"],["Ha'Azinu",0,"האזינו"]],m=[["Rosh Hashana",0,"ראש השנה"]],d=[["Yom Kippur",0,"יום כיפור"]],w=[["Sukkot","Succos","סוכות"]],g=[["Chol hamoed Sukkot","Chol hamoed Succos","חול המועד סוכות"]],v=[["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"]],p=[["End-of-Year: Simchat-Torah, Sukkot","End-of-Year: Simchas-Torah, Succos","סופשנה: סוכות וסמחת תורה"]],b=[["Pesach",0,"פסח"]],A=[["Chol hamoed Pesach",0,"חול המועד פסח"]],L=[["Second days of Pesach",0,"שביעי של פסח"]],E=[["Shavuot","Shavuos","שבועות"]],_={"020":[51,52][u](p,h(0,20),a(21),23,24,b,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),"0220":[51,52][u](p,h(0,20),a(21),23,24,b,25,a(26),a(28),30,a(31),33,E,h(34,37),a(38),40,a(41),h(43,49),a(50)),"0510":[52][u](d,p,h(0,20),a(21),23,24,b,b,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"0511":[52][u](d,p,h(0,20),a(21),23,24,b,25,a(26),a(28),h(30,40),a(41),h(43,50)),"052":[52][u](d,g,h(0,24),L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"070":[][u](m,52,w,v,h(0,20),a(21),23,24,L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"072":[][u](m,52,w,v,h(0,20),a(21),23,24,A,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),1200:[51,52][u](g,h(0,27),A,h(28,33),E,h(34,37),a(38),40,a(41),h(43,49),a(50)),1201:[51,52][u](g,h(0,27),A,h(28,40),a(41),h(43,49),a(50)),1220:[51,52][u](g,h(0,27),b,b,h(28,40),a(41),h(43,50)),1221:[51,52][u](g,h(0,27),b,h(28,50)),150:[52][u](d,g,h(0,28),L,h(29,50)),152:[52][u](d,g,h(0,28),A,h(29,49),a(50)),170:[][u](m,52,w,v,h(0,27),A,h(28,40),a(41),h(43,49),a(50)),1720:[][u](m,52,w,v,h(0,27),A,h(28,33),E,h(34,37),a(38),40,a(41),h(43,49),a(50))};_["0221"]=_["020"],_["0310"]=_["0220"],_["0311"]=_["020"],_[1310]=_[1220],_[1311]=_[1221],_[1721]=_[170],r.prototype.get=function(e){return i(this,e.abs())},t.exports=r},{"./common":3,"./hdate":6}]},{},[2]);
+!function e(t,n,r){function a(o,s){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(i)return i(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var c=n[o]={exports:{}};t[o][0].call(c.exports,function(e){var n=t[o][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=19440||2==o%7&&i>=9924&&!r(e)||1==o%7&&i>=16789&&r(e-1));return s+(s%7===0||s%7==3||s%7==5)}function i(e){return a(e+1)-a(e)}function o(e){return i(e)%10==5}function s(e){return i(e)%10==3}function u(e){switch(e.toLowerCase()[0]){case"n":case"נ":return"o"==e.toLowerCase()[1]?0:l.NISAN;case"i":return l.IYYAR;case"e":return l.ELUL;case"c":case"ח":return l.CHESHVAN;case"k":case"כ":return l.KISLEV;case"s":switch(e.toLowerCase()[1]){case"i":return l.SIVAN;case"h":return l.SHVAT;default:return 0}case"t":switch(e.toLowerCase()[1]){case"a":return l.TAMUZ;case"i":return l.TISHREI;case"e":return l.TEVET}break;case"a":switch(e.toLowerCase()[1]){case"v":return l.AV;case"d":return/(1|[^i]i|a|א)$/i.test(e)?l.ADAR_I:l.ADAR_II}break;case"ס":return l.SIVAN;case"ש":return l.SHVAT;case"א":switch(e.toLowerCase()[1]){case"ב":return l.AV;case"ד":return/(2|ii|b|ב)$/i.test(e)?l.ADAR_I:l.ADAR_II;case"י":return l.IYYAR;case"ל":return l.ELUL}break;case"ת":switch(e.toLowerCase()[1]){case"מ":return l.TAMUZ;case"ש":return l.TISHREI}}return 0}function h(e,t,n){if(null===e)throw new TypeError("self is null");switch(typeof t){case"function":break;case"string":case"number":return e[t];case"boolean":t=t?function(e){return e}:function(e){return!e};break;case"object":var r=t;if(t instanceof RegExp){t=function(e){return r.test(e)};break}if(Array.isArray(t)){t=function(e,t){return r.indexOf(t)>-1};break}default:throw new TypeError("fun is not a supported type")}var a={},i=Object(e);for(var o in i)if(i.hasOwnProperty(o)){var s=i[o];if(t.call(n,s,o,i)){var u=Object.getOwnPropertyDescriptor(i,o);u.value=s,Object.defineProperty(a,o,u)}}if(Array.isArray(e)||"string"==typeof e){var h=[];for(o in a)h[Number(o)]=a[o];a=h.filter(function(e){return e}),"string"==typeof e&&(a=a.join(""))}return a}var c=e("gematriya"),f="charCodeAt",l=n.months={NISAN:1,IYYAR:2,SIVAN:3,TAMUZ:4,AV:5,ELUL:6,TISHREI:7,CHESHVAN:8,KISLEV:9,TEVET:10,SHVAT:11,ADAR_I:12,ADAR_II:13},y=[["",0,""],["Nisan",0,"ניסן"],["Iyyar",0,"אייר"],["Sivan",0,"סיון"],["Tamuz",0,"תמוז"],["Av",0,"אב"],["Elul",0,"אלול"],["Tishrei",0,"תשרי"],["Cheshvan",0,"חשון"],["Kislev",0,"כסלו"],["Tevet",0,"טבת"],["Sh'vat",0,"שבט"]];n.monthNames=[y.concat([["Adar",0,"אדר"],["Nisan",0,"ניסן"]]),y.concat([["Adar 1",0,"אדר א'"],["Adar 2",0,"אדר ב'"],["Nisan",0,"ניסן"]])],n.days={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6},n.LANG=function(e,t){return"h"==t&&e[2]||"a"==t&&e[1]||e[0]},n.LEAP=r,n.MONTH_CNT=function(e){return 12+r(e)},n.daysInMonth=function(e,t){return 30-(e==l.IYYAR||e==l.TAMUZ||e==l.ELUL||e==l.TEVET||e==l.ADAR_II||e==l.ADAR_I&&!r(t)||e==l.CHESHVAN&&!o(t)||e==l.KISLEV&&s(t))},n.monthNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514&&/('|")/.test(e)?c(e):e[f](0)>=48&&e[f](0)<=57?parseInt(e,10):u(e)},n.dayYearNum=function(e){return"number"==typeof e?e:e[f](0)>=1488&&e[f](0)<=1514?c(e,!0):parseInt(e,10)},n.hebElapsedDays=a,n.daysInYear=i,n.lngChesh=o,n.shrtKis=s,n.monthFromName=u,n.dayOnOrBefore=function(e,t){return t-(t-e)%7},n.map=function(e,t,n){if(null===e||"function"!=typeof t)throw new TypeError;var r=Object(e),a={};for(var i in r)r.hasOwnProperty(i)&&(a[i]=t.call(n,r[i],i,r));if(Array.isArray(e)||"string"==typeof e){var o=[];for(i in a)o[Number(i)]=a[i];a=h(o,!0),"string"==typeof e&&(a=a.join(""))}return a},n.filter=h,n.range=function(e,t,n){n=n||1,n<0&&(n=0-n);var r=[],a=e;if(e=t;a-=n)r.push(a);return r}},{gematriya:10}],4:[function(e,t,n){var r=e("./common"),a=e("./greg"),i=e("gematriya"),o=[["Berachot","Berachos","ברכות",64],["Shabbat","Shabbos","שבת",157],["Eruvin","Eruvin","עירובין",105],["Pesachim",0,"פסחים",121],["Shekalim",0,"שקלים",22],["Yoma",0,"יומא",88],["Sukkah",0,"סוכה",56],["Beitzah",0,"ביצה",40],["Rosh Hashana",0,"ראש השנה",35],["Taanit","Taanis","תענית",31],["Megillah",0,"מגילה",32],["Moed Katan",0,"מועד קטן",29],["Chagigah",0,"חגיגה",27],["Yevamot","Yevamos","יבמות",122],["Ketubot","Kesubos","כתובות",112],["Nedarim",0,"נדרים",91],["Nazir",0,"נזיר",66],["Sotah",0,"סוטה",49],["Gitin",0,"גיטין",90],["Kiddushin",0,"קידושין",82],["Baba Kamma",0,"בבא קמא",119],["Baba Metzia",0,"בבא מציעא",119],["Baba Batra","Baba Basra","בבא בתרא",176],["Sanhedrin",0,"סנהדרין",113],["Makkot","Makkos","מכות",24],["Shevuot","Shevuos","שבועות",49],["Avodah Zarah",0,"עבודה זרה",76],["Horayot","Horayos","הוריות",14],["Zevachim",0,"זבחים",120],["Menachot","Menachos","מנחות",110],["Chullin",0,"חולין",142],["Bechorot","Bechoros","בכורות",61],["Arachin",0,"ערכין",34],["Temurah",0,"תמורה",34],["Keritot","Kerisos","כריתות",28],["Meilah",0,"מעילה",22],["Kinnim",0,"קנים",4],["Tamid",0,"תמיד",10],["Midot","Midos","מדות",4],["Niddah",0,"נדה",73]].map(function(e){return{name:e.slice(0,3),blatt:e[3]}});n.dafyomi=function(e){var t,n,r,i,s,u,h,c,f,l=40;if(!(e instanceof Date))throw new TypeError("non-date given to dafyomi");if(r=a.greg2abs(new Date(1923,8,11)),i=a.greg2abs(new Date(1975,5,24)),c=a.greg2abs(e),c=i?(t=8+(c-i)/2711,n=(c-i)%2711):(t=1+(c-r)/2702,n=(c-r)%2702),s=f=0,u=-1,t<=7?o[4].blatt=13:o[4].blatt=22,h=0;h1&&(t-=i((4*(e.getMonth()+1)+23)/10),a(e.getFullYear())&&t++),t}function a(e){return!(e%4||!(e%100)&&e%400)}var i=Math.floor,o=[30,31],s=[0,31,28,31].concat(o,o,31,o,o),u=[s.slice()];s[2]++,u.push(s),n.daysInMonth=function(e,t){return u[+a(t)][e]},n.monthNames=["","January","February","March","April","May","June","July","August","September","October","November","December"],n.lookupMonthNum=function(e){return new Date(e+" 1").getMonth()+1},n.dayOfYear=r,n.LEAP=a,n.greg2abs=function(e){var t=e.getFullYear()-1;return r(e)+365*t+(i(t/4)-i(t/100)+i(t/400))},n.abs2greg=function(e){var t=e-1,n=i(t/146097),r=i(t%146097),a=i(r/36524),o=r%36524,s=i(o/1461),u=o%1461,h=i(u/365),c=u%365+1,f=400*n+100*a+4*s+h;return 4==a||4==h?new Date(f,11,31):new Date(new Date(++f,0,c).setFullYear(f))}},{}],6:[function(e,t,n){function r(e,t,n){var a=this;switch(arguments.length){case 0:return new r(new Date);case 1:if("undefined"==typeof e)return new r;if(e instanceof Date){var i=u(y.greg2abs(e));return i}if(e instanceof r){var i=new r(e[p](),e[v](),e[g]());return i.il=e.il,i.setLocation(i.lat,i.long),i}if("string"==typeof e){switch(e.toLowerCase().trim()){case"today":return new r;case"yesterday":return(new r).prev();case"tomorrow":return(new r).next()}if(/\s/.test(e)){var o=e.split(/\s+/);if(2==o.length)return new r(o[0],o[1]);if(3==o.length)return new r(o[0],o[1],o[2]);if(4==o.length)return/i/i.test(o[2])&&(o[2]=o[2].length),new r(o[0],o[1]+o[2],o[3])}}else if("number"==typeof e)return u(e);throw new TypeError("HDate called with bad argument");case 2:return new r(e,t,(new r)[g]());case 3:a.day=a.month=1,a.year=l.dayYearNum(n),a.setMonth(l.monthNum(t)),a.setDate(l.dayYearNum(e));break;default:throw new TypeError("HDate called with bad arguments")}return a.setLocation.apply(a,r.defaultLocation)}function a(e){o(e),i(e)}function i(e){e.day<1&&(e.month==E&&(e.year-=1),e.day+=T(e.month,e.year),e.month-=1,a(e)),e.day>T(e.month,e.year)&&(e.month==_.ELUL&&(e.year+=1),e.day-=T(e.month,e.year),e.month+=1,a(e)),o(e)}function o(e){e.month!=_.ADAR_II||e.isLeapYear()||(e.month-=1,a(e)),e.month<1&&(e.month+=S(e.year),e.year-=1,a(e)),e.month>S(e.year)&&(e.month-=S(e.year),e.year+=1,a(e))}function s(e){var t,n=e[p](),r=e[g]();if(e[v]()=10555144)throw new RangeError("parameter to abs2hebrew "+e+" out of range");for(n=y.abs2greg(e),t=new r(1,E,i=3760+n[g]());e>=s(t.setFullYear(i+1));)i++;for(a=i>4634&&i<10666?o[n[v]()]:E;e>s(t=new r(T(a,i),a,i));)a=a%S(i)+1;return t.setLocation.apply(t.setDate(e-s(t.setDate(1))+1),r.defaultLocation)}function h(e){var t=e.greg();return m.getTimes(new Date(t.getFullYear(),t.getMonth(),t.getDate(),12,0,0,0,0),e.lat,e.long)}function c(e,t){return new Date(e.sunrise()[A]()+e[L]()*t)}function f(e,t,n){return new r(N(e,t[b]()+n))}var l=e("./common"),y=e("./greg"),m=e("suncalc"),d=e("./cities"),w=e("gematriya");m.addTime(-16.1,"alot_hashachar",0),m.addTime(-11.5,"misheyakir",0),m.addTime(-10.2,"misheyakir_machmir",0),m.addTime(-8.5,0,"tzeit");var g="getFullYear",v="getMonth",p="getDate",A="getTime",b="abs",L="hour",_=l.months,E=_.TISHREI,S=l.MONTH_CNT,T=l.daysInMonth,N=l.dayOnOrBefore,I=r.prototype;r.defaultLocation=[0,0],Object.defineProperty(r,"defaultCity",{enumerable:!0,configurable:!0,get:function(){return d.nearest(r.defaultLocation[0],r.defaultLocation[1])},set:function(e){r.defaultLocation=d.getCity(e).slice(0,2)}}),I[g]=function(){return this.year},I.isLeapYear=function(){return l.LEAP(this.year)},I[v]=function(){return this.month},I.getTishreiMonth=function(){var e=S(this[g]());return(this[v]()+e-6)%e||e},I.daysInMonth=function(){return T(this[v](),this[g]())},I[p]=function(){return this.day},I.getDay=function(){return this.greg().getDay()},I.setFullYear=function(e){return this.year=e,a(this),this},I.setMonth=function(e){return this.month=l.monthNum(e),a(this),this},I.setTishreiMonth=function(e){return this.setMonth((e+6)%S(this[g]())||13)},I.setDate=function(e){return this.day=e,a(this),this},I.greg=function(){return y.abs2greg(s(this))},I.gregEve=function(){return this.prev().sunset()},I[b]=function(){return s(this)},I.toString=function(e){return l.LANG([this[p](),null,w(this[p]())],e)+" "+this.getMonthName(e)+" "+l.LANG([this[g](),null,w(this[g]())],e)},I.getMonthName=function(e){return l.LANG(l.monthNames[+this.isLeapYear()][this[v]()],e)},I.setCity=function(e){return this.setLocation(d.getCity(e))},I.setLocation=function(e,t){if("object"!=typeof e||Array.isArray(e)||(t=e.long,e=e.lat),Array.isArray(e)&&"undefined"==typeof t&&(t=e[0],e=e[1]),Array.isArray(e)&&(e=(60*e[0]+e[1])/60),Array.isArray(t)&&(t=(60*t[0]+t[1])/60),"number"!=typeof e)throw new TypeError("incorrect lat type passed to HDate.setLocation()");if("number"!=typeof t)throw new TypeError("incorrect long type passed to HDate.setLocation()");return this.lat=e,this.long=t,this.il=d.getCity(d.nearest(e,t))[2],this},I.sunrise=function(){return h(this).sunrise},I.sunset=function(){return h(this).sunset},I[L]=function(){return(this.sunset()-this.sunrise())/12},I.hourMins=function(){return this[L]()/6e4},I.nightHour=function(){return(this.sunrise()-this.gregEve())/12},I.nightHourMins=function(){return this.nightHour()/6e4};var M={chatzot:function(e){return c(e,6)},chatzot_night:function(e){return new Date(e.sunrise()[A]()-6*e.nightHour())},alot_hashachar:function(e){return h(e).alot_hashachar},alot_hashacher:function(e){return h(e).alot_hashachar},misheyakir:function(e){return h(e).misheyakir},misheyakir_machmir:function(e){return h(e).misheyakir_machmir},sof_zman_shma:function(e){return c(e,3)},sof_zman_tfilla:function(e){return c(e,4)},mincha_gedola:function(e){return c(e,6.5)},mincha_ketana:function(e){return c(e,9.5)},plag_hamincha:function(e){return c(e,10.75)},tzeit:function(e){return h(e).tzeit},neitz_hachama:function(e){return e.sunrise()},shkiah:function(e){return e.sunset()}};I.getZemanim=function(){return l.map(M,function(e){return e(this)},this)},r.addZeman=function(e,t){M[e]=t},I.next=function(){return u(this.abs()+1).setLocation(this.lat,this.long)},I.prev=function(){return u(this.abs()-1).setLocation(this.lat,this.long)},I.isSameDate=function(e){return e instanceof r&&(e[g]()==-1&&(e=new r(e).setFullYear(this[g]())),this[b]()==e[b]())},I.before=function(e){return f(e,this,-1)},I.onOrBefore=function(e){return f(e,this,0)},I.nearest=function(e){return f(e,this,3)},I.onOrAfter=function(e){return f(e,this,6)},I.after=function(e){return f(e,this,7)},t.exports=r},{"./cities":1,"./common":3,"./greg":5,gematriya:10,suncalc:11}],7:[function(e,t,n){function r(e,t){return{enumerable:!0,configurable:!0,get:e,set:t}}function a(e,t){for(var n in t)e[n]=t[n];return e}function i(e,t){var n=this;if(e||(e=(new c)[T]()),"number"!=typeof e)throw new p("year to Hebcal() is not a number");if(n.year=e,!t)return new i(e,h.range(1,h.MONTH_CNT(e)));if("string"==typeof t&&(t=h.monthFromName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal is not a valid type");n.months=t[_](function(t){var r=new o(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.holidays=f.year(e),n[I]=h.daysInYear(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})}))}function o(e,t){var n=this;if(e=h.monthNum(e),"number"!=typeof e)throw new p("month to Hebcal.Month is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.Month is not a number");return n.month=e,n.year=t,n.days=h.range(1,h.daysInMonth(e,t))[_](function(r){var a=new c(r,e,t);return v(a,"__month",{configurable:!0,writable:!0,value:n}),a}),n[I]=n.days[I],n.holidays=h.filter(f.year(t),function(t){return t[0].date[S]()==e}),v(n,"il",r(function(){return n[E](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[E](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[E](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}function s(e,t){var n=this;if(e||(e=(new Date)[T]()),"string"==typeof e){var i=new Date(e);return t=e.indexOf(" ")+1||e.indexOf("-")+1||e.indexOf("/")+1?i[S]()+1:h.range(1,12),new s(i[T](),t)}if("number"!=typeof e)throw new p("year to Hebcal.GregYear() is not a number");if(n.year=e,!t)return new s(e,h.range(1,12));if("string"==typeof t&&(t=d.lookupMonthName(t)),"number"==typeof t&&(t=[t]),!Array.isArray(t))throw new p("month to Hebcal.GregYear() is not a valid type");return n.months=t[_](function(t){var r=new u(t,e);return v(r,"__year",{configurable:!0,writable:!0,value:n}),r}),n.hebyears=[].concat.apply([],n.months[_](function(e){return e.hebmonths[_](function(e){return e.year})})).filter(function(e,t,n){return n.indexOf(e)===t}),n.holidays=h.filter(f.year(n.hebyears[0]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[I]}),n.hebyears[1]&&a(n.holidays,h.filter(f.year(n.hebyears[1]),function(t){return t[0].date.greg()[T]()===e&&n.months.filter(function(e){return e.month===t[0].date.greg()[S]()+1})[I]})),n[I]=365+d.LEAP(e),v(n,"il",r(function(){return n[S](1).il},function(e){n.months.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[S](1).lat},function(e){n.months.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[S](1).long},function(e){n.months.forEach(function(t){t.long=e})})),n}function u(e,t){var n=this;if("string"==typeof e&&(e=d.lookupMonthNum(e)),"number"!=typeof e)throw new p("month to Hebcal.GregMonth is not a valid type");if("number"!=typeof t)throw new p("year to Hebcal.GregMonth is not a number");return n.year=t,n.month=e,n.days=h.range(1,d.daysInMonth(e,t))[_](function(r){var a=new c(new Date(t,e-1,r));return v(a,"__gregmonth",{configurable:!0,writable:!0,value:n}),a}),n[I]=n.days[I],n.hebmonths=[{month:n[E](1)[S](),year:n[E](1)[T]()},{month:n[E](-1)[S](),year:n[E](-1)[T]()}].filter(function(e,t,n){return 0===t||e.month!=n[0].month}),v(n,"il",r(function(){return n[E](1).il},function(e){n.days.forEach(function(t){t.il=e})})),v(n,"lat",r(function(){return n[E](1).lat},function(e){n.days.forEach(function(t){t.lat=e})})),v(n,"long",r(function(){return n[E](1).long},function(e){n.days.forEach(function(t){t.long=e})})),n}var h=e("./common"),c=e("./hdate"),f=e("./holidays"),l=e("./sedra"),y=e("./dafyomi"),m=e("./cities"),d=e("./greg"),w=e("events").EventEmitter,g=e("gematriya"),v=Object.defineProperty,p=TypeError,A="find",b="strings",L="getYearObject",_="map",E="getDay",S="getMonth",T="getFullYear",N="isLeapYear",I="length",M="next",H="prev",D=h.months,C=D.TISHREI,O=D.NISAN,Y=i.prototype,k=o.prototype,R=s.prototype,V=u.prototype,P=c.prototype;Y[N]=P[N],Y.setCity=function(e){return this.months.forEach(function(t){t.setCity(e)}),this},Y.setLocation=function(e,t){return this.months.forEach(function(n){n.setLocation(e,t)}),this},Y[M]=function(){return new i(this.year+1)},Y[H]=function(){return new i(this.year-1)},Y[S]=function(e){var t=this.months;return e=h.monthNum(e),e>this.months[I]?this[M]()[S](e-t[I]):t[e>0?e-1:t[I]+e]},Y[E]=function(e){var t=this;if(e>t[I])return null;if(e<0)return t[E](t[I]-e);var n=t[A](29,D.ELUL)[0].abs()+1-t[A](1,O)[0].abs();return e<=n?t[S](O)[E](e):t[S](C)[E](e-n)},Y.days=function(){return[].concat.apply([],this.months[_](function(e){return e.days}))},Y[_]=function(){return[][_].apply(this.days(),arguments)},Y.filter=function(){return[].filter.apply(this.days(),arguments)},Y.addHoliday=function(e){if(!(e instanceof f.Event))throw new p("non-Event passed to addHoliday()");return this.holidays.add(e),this},Y.findParsha=function(e,t){var n=t?[t]:["s","a","h"],r=this.filter(function(t){return Math.max.apply(null,n.map(function(n){return t.getSedra(n).indexOf(e)+1}))});return r[r[I]-1]},Y.findSedra=Y.findParsha,Y[A]=function e(t,n){var r=this;if(1===arguments[I]){if("string"==typeof t)return e[b].call(r,t);if(Array.isArray(t))return[].concat.apply([],t[_](function(e){return r[A][Array.isArray(e)?"apply":"call"](r,e)}));if(t instanceof c)return r[A](t.getDate(),t[S]());if(t instanceof Date)return r[A](new c(t))}else if(2==arguments[I]){if(n instanceof o)return n[A](t);if(Array.isArray(n))return[].concat.apply([],n[_](function(e){return r[A](t,e)}));if("string"==typeof n)return r[A](t,h.monthNum(n));if("number"==typeof n)return r[A](t,r[S](n))}return[]},Y[A][b]=function e(t){var n=t.split(/\s+/),r=e[t.replace(/\s/g,"_").toLowerCase()];if(!n[I])return[];if(r)return r.call(this);try{return this[A](new c(t))}catch(e){return n[I]-1?this[A].apply(this,n):[]}},Y[A][b].rosh_chodesh=function(){return this[A]("Rosh Chodesh",h.range(1,this.months[I]))},Y[A][b].holidays=function(){return[].concat.apply([],this.holidays[_](function(e){return this[A](e.date)},this))},Y[A][b].omer=function(){return this[A](h.range(16,64),O)},Y[A][b].today=function(){return this[A](new c)},Y[A][b].yesterday=function(){return[this[A]("today")[0][H]()]},Y[A][b].tomorrow=function(){return[this[A]("today")[0][M]()]},Y[A][b].pesach=function(){return this[A](h.range(15,23-this.il),O)},Y[A][b].sukkot=function(){return this[A](h.range(15,24-this.il),C)},Y[A][b].succot=Y[A][b].succos=Y[A][b].sukkos=Y[A][b].sukkot,Y[A][b].shavuot=function(){return this[A](h.range(6,7-this.il),D.SIVAN)},Y[A][b].shavuos=Y[A][b].shavuot,Y[A][b].rosh_hashana=function(){return this[A](h.range(1,2),C)},Y[A][b].rosh_hashanah=Y[A][b].rosh_hashana,i.addZeman=c.addZeman,i.cities=m,i.range=h.range,i.gematriya=g,i.holidays=h.filter(f,["masks","Event"]),i.parshiot=l.parshiot,i.LANGUAGE=h.LANG,i[_]=h[_],i.filter=h.filter,v(i,"defaultLocation",r(function(){return c.defaultLocation},function(e){i.events.emit("locationChange",c.defaultLocation),c.defaultLocation=e})),v(i,"defaultCity",r(function(){return c.defaultCity},function(e){i.defaultLocation=m.getCity(e).slice(0,2)})),v(i,"candleLighting",r(function(){return f.Event.candleLighting},function(e){f.Event.candleLighting=e})),v(i,"havdalah",r(function(){return f.Event.havdalah},function(e){f.Event.havdalah=e})),i.Month=o,k[N]=P[N],k[H]=function(){var e=this,t=e[L]();return 1===e.month?t[S](-1):e.month===C?t[H]()[S](D.ELUL):t[S](e.month-1)},k[M]=function(){var e=this,t=e[L]();return e.month===h.MONTH_CNT(e.year)?t[S](1):e.month===D.ELUL?t[M]()[S](C):t[S](e.month+1)},k[E]=function(e){var t=this.days;return e=h.dayYearNum(e),e>t[I]?this[M]()[E](e-t[I]):t[e>0?e-1:t[I]+e]},k[L]=function(){return this.__year||new i(this.year)},k.getName=function(e){return h.LANG(h.monthNames[+this[N]()][this.month],e)},k.rosh_chodesh=function(){var e=this[H]();return 30==e[I]?[e[E](-1),this[E](1)]:[this[E](1)]},k.setCity=function(e){return this.days.forEach(function(t){t.setCity(e)}),this},k.setLocation=function(e,t){return this.days.forEach(function(n){n.setLocation(e,t)}),this},k[_]=function(){return[][_].apply(this.days,arguments)},k.molad=function(){var e,t,n,r,a,i,o={},s=parseInt;i=this.month-7,e=this.year-1,i<0&&(i+=h.MONTH_CNT(e+1)),t=s(i+235*(e/19)),n=s(204+793*(t%1080)),r=s(5+12*t+793*(t/1080)-6),a=s(n%1080+1080*(r%24)),o.doy=new c(s(1+29*t+r/24)).getDay(),o.hour=Math.round(r%24);var u=s(a%1080);o.minutes=s(u/18),o.chalakim=u%18;var f=this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(o.doy).greg();return f.setHours(o.hour),f.setMinutes(o.minutes),f.setSeconds(3.33*o.chalakim),o.day=f,o},k[A]=function e(t){var n=this;return"number"==typeof t?[n[E](t)]:"string"==typeof t?e[b].call(n,t):Array.isArray(t)?[].concat.apply([],t[_](function(e){return n[A](e)})):t instanceof c&&t[T]()==n.year&&t[S]()==n.month?n[A](t.getDate()):t instanceof Date?n[A](new c(t)):[]},k[A][b]=function e(t){var n=e[t.replace(/\s/g,"_").toLowerCase()];if(n)return n.call(this);try{return this[A](new c(t))}catch(e){var r=h.dayYearNum(t);return r?this[A](r):[]}},k[A][b].rosh_chodesh=function(){return this.rosh_chodesh()},k[A][b].shabbat_mevarchim=function e(){return this.month===D.ELUL?[]:e._calc.call(this)},k[A][b].shabbat_mevarchim._calc=function(){return this[A](this[E](29).onOrBefore(h.days.SAT))},k[A][b].shabbos_mevarchim=k[A][b].shabbos_mevorchim=k[A][b].shabbat_mevarchim,i.HDate=c,P.getMonthObject=function(){return this.__month||new o(this[S](),this[T]())},P[L]=function(){return this.getMonthObject()[L]()},function(){var e={};[H,M].forEach(function(t){e[t]=P[t],P[t]=function(){var n=e[t].call(this);return this.__month?this[L]()[A](n)[0]:n}})}(),P.getSedra=function(){var e={};return function(t){var n=e[this[T]()];return n&&n.il==this.il||(n=e[this[T]()]=new l(this[T](),this.il)),n.get(this)[_](function(e){return h.LANG(e,t)})}}(),P.getParsha=P.getSedra,P.holidays=function(e){var t=this,n=t[L]().holidays[t];return n?n.filter(function(n){return!!e||!n.routine()&&n.is(t)})[_](function(e){return e.date.setLocation(t),e}):[]},["candleLighting","havdalah"].forEach(function(e){P[e]=function(){var t=this,n=t.holidays(!0).filter(function(e){return e.is(t)});return n.length&&(n=h.filter(n.map(function(t){return t[e]()}),!0)),n.length?new Date(Math.max.apply(null,n)):null}}),P.omer=function(){var e=this,t=e.greg().getTime(),n=e[T]();return t>new c(15,O,n).greg().getTime()&&t=5727?y[A](29,D.IYYAR):[])),u=i.yes_prev[m]=e([].concat(y[A](-1,D.ELUL),y[A](9,D.TISHREI),y[A](14,D.IYYAR))),i.il[m]=l.il),o=o.indexOf(l.abs())>-1,s=s.indexOf(l.abs())>-1,u=u.indexOf(l.abs()+1)>-1,o)return t;var d=(!s&&a)|(6!=l[E]()&&r);return d|=c&&!u?l[M]().tachanun(!0)&r&&n:5!=l[E]()&&n,d==a?t:d}var t=e.NONE=0,n=e.MINCHA=1,r=e.SHACHARIT=2,a=e.ALL_CONGS=4,i={all:{},some:{},yes_prev:{},il:{}};return e}(),P.tachanun_uf=function(){var e=this.tachanun();return{shacharit:!!(e&this.tachanun.SHACHARIT),mincha:!!(e&this.tachanun.MINCHA),all_congs:!!(e&this.tachanun.ALL_CONGS)}},P.hallel=function(){function e(){var e=this,i=e[L](),o=i.year,s=a.il[o]==e.il&&a.whole[o]||(a.whole[o]=[].concat(i[A](h.range(25,33),D.KISLEV),i[A]([15,e.il?null:16],O),i[A]("Shavuot"),i[A]("Sukkot"),f.atzmaut(o)[1].date||[],o>=5727?i[A](29,D.IYYAR):[])[_](function(e){return e.abs()})),u=a.il[o]==e.il&&a.half[o]||(a.half[o]=[].concat(i[A]("Rosh Chodesh").filter(function(e){return e[S]()!=C}),i[A](h.range(17-e.il,23-e.il),O))[_](function(e){return e.abs()}));return a.il[o]=e.il,s.indexOf(e.abs())>-1&&r||u.indexOf(e.abs())>-1&&n||t}var t=e.NONE=0,n=e.HALF=1,r=e.WHOLE=2,a={whole:{},half:{},il:{}};return e}(),function(e){function t(){function t(e,t){return h.filter(h[_](e,function(e){return e-r}),function(e){return e>0&&e-t<0})}var n=new c;i.isSameDate(n)||(e.emit("dayChange"),i=n);var r=new Date,a=t(n.getZemanim(),e.beforeZeman),o=t(e.customs,e.refreshInterval);for(var s in a)e.emit("almostZeman",s,a[s]),a[s]t[I]?this[M]()[S](e-t[I]):t[e>0?e-1:t[I]+e]},a(R,{days:Y.days,map:Y[_],filter:Y.filter,addHoliday:Y.addHoliday}),i.GregMonth=u,V[N]=function(){return d.LEAP(this.year)},V[H]=function(){return 1===this.month?this[L]()[H]()[S](-1):this[L]()[S](this.month-1)},V[M]=function(){return this[L]()[S](this.month+1)},V[E]=function(e){return e>this.days[I]?this[M]()[E](e-this.days[I]):this.days[e>0?e-1:this.days[I]+e]},V[L]=function(){return this.__year||new s(this.year)},V.getName=function(){return d.monthNames[this.month]},V.setCity=k.setCity,V.setLocation=k.setLocation,V[_]=k[_],P.getGregMonthObject=function(){return this.__gregmonth||new u(this.greg()[S]()+1,this.greg()[T]())},P.getGregYearObject=function(){return this.getGregMonthObject()[L]()},t.exports=i},{"./cities":1,"./common":3,"./dafyomi":4,"./greg":5,"./hdate":6,"./holidays":8,"./sedra":12,events:9,gematriya:10}],8:[function(e,t,n){function r(e){return["Chanukah: Candle "+e,0,"חנוכה: נר "+f(e)]}function a(e){return[e[0]+' (CH"M)',e[1]?e[1]+' (CH"M)':e[1],e[2]?e[2]+' )חה"ם(':e[2]]}function i(e){return["Sukkot: "+e,"Succos: "+e,"סוכות יום "+f(e)]}function o(e){return["Pesach: "+e,0,"פסח יום "+f(e)]}function s(e,t,n){var r=this;r.date=new c(e),r.desc="object"!=typeof t?[t]:t,r.USER_EVENT=!!(n&E),r.LIGHT_CANDLES=!!(n&S),r.YOM_TOV_ENDS=!!(n&T),r.CHUL_ONLY=!!(n&N),r.IL_ONLY=!!(n&I),r.LIGHT_CANDLES_TZEIS=!!(n&M)}function u(e){if(e>=5708){var t=new c(1,m.IYYAR,e),n=new c(15,v,e);return n[A]()==d.SUN?t.setDate(2):n[A]()==p?t.setDate(3):e<5764?t.setDate(4):n[A]()==d.TUE?t.setDate(5):t.setDate(4),[new s(t,["Yom HaZikaron",0,"יום הזיכרון"],0),new s(t.next(),["Yom HaAtzma'ut",0,"יום העצמאות"],0)]}return[]}var h=e("./common"),c=e("./hdate"),f=e("gematriya"),l={},y=h.dayOnOrBefore,m=h.months,d=h.days,w=m.TISHREI,g=m.KISLEV,v=m.NISAN,p=d.SAT,A="getDay",b="abs",L="Shabbat",_="Shabbos",E=1,S=2,T=4,N=8,I=16,M=32;n.masks={USER_EVENT:E,LIGHT_CANDLES:S,YOM_TOV_ENDS:T,CHUL_ONLY:N,IL_ONLY:I,LIGHT_CANDLES_TZEIS:M},s.prototype.is=function(e,t){return e=new c(e),myDate=this.date,arguments.length<2&&(t=e.il),e.getDate()==myDate.getDate()&&e.getMonth()==myDate.getMonth()&&(e.getFullYear()==myDate.getFullYear()&&!(t&&this.CHUL_ONLY||!t&&this.IL_ONLY));
+},s.prototype.masks=function(){var e=this;return(e.USER_EVENT&&E)|(e.LIGHT_CANDLES&&S)|(e.YOM_TOV_ENDS&&T)|(e.CHUL_ONLY&&N)|(e.IL_ONLY&&I)|(e.LIGHT_CANDLES_TZEIS&&M)},s.prototype.getDesc=function(e){return h.LANG(this.desc,e)},s.prototype.candleLighting=function(){var e=this.date;return this.LIGHT_CANDLES?new Date(e.sunset()-60*s.candleLighting*1e3):this.LIGHT_CANDLES_TZEIS?e.getZemanim().tzeit:null},s.prototype.havdalah=function(){return this.YOM_TOV_ENDS?new Date(this.date.sunset().getTime()+60*s.havdalah*1e3):null},s.prototype.routine=function(){function e(){return!!~e.names.indexOf(this.getDesc("s"))}return e.names=[L,"Erev "+L],e}(),s.isIL=!1,s.candleLighting=18,s.havdalah=42,n.Event=s,n.year=function(e){function t(e){Array.isArray(e)?e.forEach(function(e){t(e)}):H[e.date]?H[e.date].push(e):H[e.date]=[e]}if(l[e])return l[e];var n,f=new c(1,w,e),E=new c(15,v,e),H={};Object.defineProperty(H,"add",{value:t}),t([new s(f,["Rosh Hashana 1",0,"ראש השנה א'"],M),new s(new c(2,w,e),["Rosh Hashana 2",0,"ראש השנה ב'"],T),new s(new c(3+(f[A]()==d.THU),w,e),["Tzom Gedaliah",0,"צום גדליה"],0),new s(new c(9,w,e),["Erev Yom Kippur",0,"ערב יום כיפור"],S),new s(new c(y(p,7+f[b]())),[L+" Shuva",_+" Shuvah","שבת שובה"],0),new s(new c(10,w,e),["Yom Kippur",0,"יום כיפור"],T),new s(new c(14,w,e),["Erev Sukkot","Erev Succos","ערב סוכות"],S),new s(new c(15,w,e),i(1),M|N),new s(new c(15,w,e),i(1),T|I),new s(new c(16,w,e),i(2),T|N),new s(new c(16,w,e),a(i(2)),I),new s(new c(17,w,e),a(i(3)),0),new s(new c(18,w,e),a(i(4)),0),new s(new c(19,w,e),a(i(5)),0),new s(new c(20,w,e),a(i(6)),0),new s(new c(21,w,e),["Sukkot: 7 (Hoshana Raba)","Succos: 7 (Hoshana Raba)","סוכות יום ז' )הושנע רבה("],S),new s(new c(22,w,e),["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"],M|N),new s(new c(22,w,e),["Shmini Atzeret / Simchat Torah","Shmini Atzeres / Simchas Torah","שמיני עצרת / שמחת תורה"],T|I),new s(new c(23,w,e),["Simchat Torah","Simchas Torah","שמחת תורה"],T|N),new s(new c(24,g,e),["Erev Chanukah",0,"ערב חנוכה"],0),new s(new c(25,g,e),r(1),0),new s(new c(26,g,e),r(2),0),new s(new c(27,g,e),r(3),0),new s(new c(28,g,e),r(4),0),new s(new c(29,g,e),r(5),0),new s(new c(30,g,e),r(6),0),new s(new c(31,g,e),r(7),0),new s(new c(32,g,e),r(8),0),new s(new c(15,m.SHVAT,e),["Tu B'Shvat",0,'ט"ו בשבט'],0),new s(new c(y(p,E[b]()-43)),[L+" Shekalim",_+" Shekalim","שבת שקלים"],0),new s(new c(y(p,E[b]()-30)),[L+" Zachor",_+" Zachor","שבת זכור"],0),new s(new c(E[b]()-(E[A]()==d.TUE?33:31)),["Ta'anit Esther","Ta'anis Esther","תענית אסתר"],0),new s(new c(13,m.ADAR_II,e),["Erev Purim",0,"ערב פורים"],0),new s(new c(14,m.ADAR_II,e),["Purim",0,"פורים"],0),new s(new c(15,m.ADAR_II,e),["Shushan Purim",0,"שושן פורים"],0),new s(new c(y(p,E[b]()-14)-7),[L+" Parah",_+" Parah","שבת פרה"],0),new s(new c(y(p,E[b]()-14)),[L+" Hachodesh",_+" Hachodesh","שבת החודש"],0),new s(new c(y(p,E[b]()-1)),[L+" HaGadol",_+" HaGadol","שבת הגדול"],0),new s(E.prev()[A]()==p?E.onOrBefore(d.THU):new c(14,v,e),["Ta'anit Bechorot","Ta'anis Bechoros","תענית בכורות"],0),new s(new c(14,v,e),["Erev Pesach",0,"ערב פסח"],S),new s(new c(15,v,e),o(1),M|N),new s(new c(15,v,e),o(1),T|I),new s(new c(16,v,e),o(2),T|N),new s(new c(16,v,e),a(o(2)),I),new s(new c(16,v,e),["Start counting Omer",0,"התחלת ספירת העומר"],0),new s(new c(17,v,e),a(o(3)),0),new s(new c(18,v,e),a(o(4)),0),new s(new c(19,v,e),a(o(5)),0),new s(new c(20,v,e),a(o(6)),S),new s(new c(21,v,e),o(7),M|N),new s(new c(21,v,e),o(7),T|I),new s(new c(22,v,e),o(8),T|N),new s(new c(14,m.IYYAR,e),["Pesach Sheni",0,"פסח שני"],0),new s(new c(18,m.IYYAR,e),["Lag B'Omer",0,'ל"ג בעומר'],0),new s(new c(5,m.SIVAN,e),["Erev Shavuot","Erev Shavuos","ערב שבועות"],S),new s(new c(6,m.SIVAN,e),["Shavuot 1","Shavuos 1","שבועות א'"],M|N),new s(new c(6,m.SIVAN,e),["Shavuot","Shavuos","שבועות"],T|I),new s(new c(7,m.SIVAN,e),["Shavuot 2","Shavuos 2","שבועות ב'"],T|N),new s(new c(y(p,new c(1,w,e+1)[b]()-4)),["Leil Selichot","Leil Selichos","ליל סליחות"],0),new s(new c(29,m.ELUL,e),["Erev Rosh Hashana",0,"ערב ראש השנה"],S)]),n=new c(10,m.TEVET,e),n[A]()==p&&(n=n.next()),t(new s(n,["Asara B'Tevet",0,"עשרה בטבת"],0)),h.LEAP(e)&&(t(new s(new c(14,m.ADAR_I,e),["Purim Katan",0,"פורים קטן"],0)),t(new s(new c(15,m.ADAR_I,e),["Shushan Purim Katan",0,"שושן פורים קטן"],0))),e>=5711&&(n=new c(27,v,e),n[A]()==d.FRI?n=n.prev():n[A]()==d.SUN&&(n=n.next()),t(new s(n,["Yom HaShoah",0,"יום השואה"],0))),t(u(e)),e>=5727&&t(new s(new c(29,m.IYYAR,e),["Yom Yerushalayim",0,"יום ירושלים"],0)),n=new c(17,m.TAMUZ,e),n[A]()==p&&(n=n.next()),t(new s(n,["Shiva-Asar B'Tamuz",0,"צום יז' בתמוז"],0)),n=new c(9,m.AV,e),n[A]()==p&&(n=n.next()),t(new s(new c(y(p,n[b]())),[L+" Chazon",_+" Chazon","שבת חזון"],0)),t(new s(n.prev(),["Erev Tish'a B'Av",0,"ערב תשעה באב"],0)),t(new s(n,["Tish'a B'Av",0,"תשעה באב"],0)),t(new s(new c(y(p,n[b]()+7)),[L+" Nachamu",_+" Nachamu","שבת נחמו"],0));for(var D=6;D0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!a(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,i,s;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],i=n.length,r=-1,n===t||a(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=i;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){r=s;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],a(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?a(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(a(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],10:[function(e,t,n){!function(){function e(e,t){if("number"!=typeof e&&"string"!=typeof e)throw new TypeError("non-number or string given to gematriya()");var n="string"==typeof e;return n&&(e=e.replace(/('|")/g,"")),e=e.toString().split("").reverse(),!n&&t&&(e=e.slice(0,t)),e=e.map(function i(o,s){return n?t&&a[o]1e3?i(o,s-3):r[parseInt(o,10)*Math.pow(10,s)]}),n?e.reduce(function(e,t){return e+t},0):(e=e.reverse().join("").replace(/יה/g,"טו").replace(/יו/g,"טז").split(""),1===e.length?e.push("'"):e.length>1&&e.splice(-1,0,'"'),e.join(""))}var n,r={},a={"":0,"א":1,"ב":2,"ג":3,"ד":4,"ה":5,"ו":6,"ז":7,"ח":8,"ט":9,"י":10,"כ":20,"ל":30,"מ":40,"נ":50,"ס":60,"ע":70,"פ":80,"צ":90,"ק":100,"ר":200,"ש":300,"ת":400,"תק":500,"תר":600,"תש":700,"תת":800,"תתק":900,"תתר":1e3};for(n in a)r[a[n]]=n;"undefined"!=typeof t?t.exports=e:window.gematriya=e}()},{}],11:[function(e,t,n){!function(){"use strict";function e(e){return e.valueOf()/M-.5+H}function r(e){return new Date((e+.5-H)*M)}function a(t){return e(t)-D}function i(e,t){return T(L(e)*_(C)-E(t)*L(C),_(e))}function o(e,t){return S(L(t)*_(C)+_(t)*L(C)*L(e))}function s(e,t,n){return T(L(e),_(e)*L(t)-E(n)*_(t))}function u(e,t,n){return S(L(t)*L(n)+_(t)*_(n)*_(e))}function h(e,t){return I*(280.16+360.9856235*e)-t}function c(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function f(e){return I*(357.5291+.98560028*e)}function l(e){var t=I*(1.9148*L(e)+.02*L(2*e)+3e-4*L(3*e)),n=102.9372*I;return e+t+n+b}function y(e){var t=f(e),n=l(t);return{dec:o(n,0),ra:i(n,0)}}function m(e,t){return Math.round(e-k-t/(2*b))}function d(e,t,n){return k+(e+t)/(2*b)+n}function w(e,t,n){return D+e+.0053*L(t)-.0069*L(2*n)}function g(e,t,n){return N((L(e)-L(t)*L(n))/(_(t)*_(n)))}function v(e,t,n,r,a,i,o){var s=g(e,n,r),u=d(s,t,a);return w(u,i,o)}function p(e){var t=I*(218.316+13.176396*e),n=I*(134.963+13.064993*e),r=I*(93.272+13.22935*e),a=t+6.289*I*L(n),s=5.128*I*L(r),u=385001-20905*_(n);return{ra:i(a,s),dec:o(a,s),dist:u}}function A(e,t){return new Date(e.valueOf()+t*M/24)}var b=Math.PI,L=Math.sin,_=Math.cos,E=Math.tan,S=Math.asin,T=Math.atan2,N=Math.acos,I=b/180,M=864e5,H=2440588,D=2451545,C=23.4397*I,O={};O.getPosition=function(e,t,n){var r=I*-n,i=I*t,o=a(e),c=y(o),f=h(o,r)-c.ra;return{azimuth:s(f,i,c.dec),altitude:u(f,i,c.dec)}};var Y=O.times=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];O.addTime=function(e,t,n){Y.push([e,t,n])};var k=9e-4;O.getTimes=function(e,t,n){var i,s,u,h,c,y=I*-n,g=I*t,p=a(e),A=m(p,y),b=d(0,y,A),L=f(b),_=l(L),E=o(_,0),S=w(b,L,_),T={solarNoon:r(S),nadir:r(S-.5)};for(i=0,s=Y.length;i=0&&(g=Math.sqrt(y)/(2*Math.abs(h)),d=f-g,w=f+g,Math.abs(d)<=1&&m++,Math.abs(w)<=1&&m++,d<-1&&(d=w)),1===m?p<0?s=b+d:u=b+d:2===m&&(s=b+(l<0?w:d),u=b+(l<0?d:w)),!s||!u);b+=2)p=o;var L={};return s&&(L.rise=A(a,s)),u&&(L.set=A(a,u)),s||u||(L[l>0?"alwaysUp":"alwaysDown"]=!0),L},"object"==typeof n&&"undefined"!=typeof t?t.exports=O:"function"==typeof define&&define.amd?define(O):window.SunCalc=O}()},{}],12:[function(e,t,n){function r(e,t){t=!!t;var n,r=o.lngChesh(e),a=o.shrtKis(e);this.year=e,n=r&&!a?l:!r&&a?c:f;var i=new s(1,o.months.TISHREI,e).abs(),u=i%7+1;this.first_saturday=o.dayOnOrBefore(6,i+6);var h=+o.LEAP(e);this.type=n,this.rosh_hashana_day=u,this.leap=h,this.il=t;var y=""+h+u+n;if(E[y]?this.theSedraArray=E[y]:this.theSedraArray=E[y+ +t],!this.theSedraArray)throw console.log(this),new TypeError("improper sedra year type calculated.")}function a(e){return-e}function i(e,t){t=o.dayOnOrBefore(6,t+6);var n=(t-e.first_saturday)/7,s=e.theSedraArray[n];return void 0===s?i(new r(e.year+1,e.il),t):"object"==typeof s?[s]:s>=0?[y[s]]:(s=a(s),[y[s],y[s+1]])}var o=e("./common"),s=e("./hdate"),u="concat",h=o.range,c=0,f=1,l=2,y=r.parshiot=[["Bereshit","Bereshis","בראשית"],["Noach",0,"נח"],["Lech-Lecha",0,"לך-לך"],["Vayera",0,"וירא"],["Chayei Sara",0,"חי שרה"],["Toldot","Toldos","תולדות"],["Vayetzei",0,"ויצא"],["Vayishlach",0,"וישלח"],["Vayeshev",0,"וישב"],["Miketz",0,"מקץ"],["Vayigash",0,"ויגש"],["Vayechi",0,"ויחי"],["Shemot","Shemos","שמות"],["Vaera",0,"וארא"],["Bo",0,"בא"],["Beshalach",0,"בשלח"],["Yitro","Yisro","יתרו"],["Mishpatim",0,"משפטים"],["Terumah",0,"תרומה"],["Tetzaveh",0,"תצוה"],["Ki Tisa","Ki Sisa","כי תשא"],["Vayakhel",0,"ויקהל"],["Pekudei",0,"פקודי"],["Vayikra",0,"ויקרא"],["Tzav",0,"צו"],["Shmini",0,"שמיני"],["Tazria",0,"תזריע"],["Metzora",0,"מצרע"],["Achrei Mot","Achrei Mos","אחרי מות"],["Kedoshim",0,"קדשים"],["Emor",0,"אמור"],["Behar",0,"בהר"],["Bechukotai","Bechukosai","בחקתי"],["Bamidbar",0,"במדבר"],["Nasso",0,"נשא"],["Beha'alotcha","Beha'aloscha","בהעלתך"],["Sh'lach",0,"שלח לך"],["Korach",0,"קורח"],["Chukat","Chukas","חקת"],["Balak",0,"בלק"],["Pinchas",0,"פינחס"],["Matot","Matos","מטות"],["Masei",0,"מסעי"],["Devarim",0,"דברים"],["Vaetchanan","V'eschanan","ואתחנן"],["Eikev",0,"עקב"],["Re'eh",0,"ראה"],["Shoftim",0,"שופטים"],["Ki Teitzei","Ki Seitzei","כי תצא"],["Ki Tavo","Ki Savo","כי תבוא"],["Nitzavim",0,"נצבים"],["Vayeilech",0,"וילך"],["Ha'Azinu",0,"האזינו"]],m=[["Rosh Hashana",0,"ראש השנה"]],d=[["Yom Kippur",0,"יום כיפור"]],w=[["Sukkot","Succos","סוכות"]],g=[["Chol hamoed Sukkot","Chol hamoed Succos","חול המועד סוכות"]],v=[["Shmini Atzeret","Shmini Atzeres","שמיני עצרת"]],p=[["End-of-Year: Simchat-Torah, Sukkot","End-of-Year: Simchas-Torah, Succos","סופשנה: סוכות וסמחת תורה"]],A=[["Pesach",0,"פסח"]],b=[["Chol hamoed Pesach",0,"חול המועד פסח"]],L=[["Second days of Pesach",0,"שביעי של פסח"]],_=[["Shavuot","Shavuos","שבועות"]],E={"020":[51,52][u](p,h(0,20),a(21),23,24,A,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),"0220":[51,52][u](p,h(0,20),a(21),23,24,A,25,a(26),a(28),30,a(31),33,_,h(34,37),a(38),40,a(41),h(43,49),a(50)),"0510":[52][u](d,p,h(0,20),a(21),23,24,A,A,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"0511":[52][u](d,p,h(0,20),a(21),23,24,A,25,a(26),a(28),h(30,40),a(41),h(43,50)),"052":[52][u](d,g,h(0,24),L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"070":[][u](m,52,w,v,h(0,20),a(21),23,24,L,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,50)),"072":[][u](m,52,w,v,h(0,20),a(21),23,24,b,25,a(26),a(28),30,a(31),h(33,40),a(41),h(43,49),a(50)),1200:[51,52][u](g,h(0,27),b,h(28,33),_,h(34,37),a(38),40,a(41),h(43,49),a(50)),1201:[51,52][u](g,h(0,27),b,h(28,40),a(41),h(43,49),a(50)),1220:[51,52][u](g,h(0,27),A,A,h(28,40),a(41),h(43,50)),1221:[51,52][u](g,h(0,27),A,h(28,50)),150:[52][u](d,g,h(0,28),L,h(29,50)),152:[52][u](d,g,h(0,28),b,h(29,49),a(50)),170:[][u](m,52,w,v,h(0,27),b,h(28,40),a(41),h(43,49),a(50)),1720:[][u](m,52,w,v,h(0,27),b,h(28,33),_,h(34,37),a(38),40,a(41),h(43,49),a(50))};E["0221"]=E["020"],E["0310"]=E["0220"],E["0311"]=E["020"],E[1310]=E[1220],E[1311]=E[1221],E[1721]=E[170],r.prototype.get=function(e){return i(this,e.abs())},t.exports=r},{"./common":3,"./hdate":6}]},{},[2]);
//# sourceMappingURL=client/hebcal.noloc.min.js.map
\ No newline at end of file
diff --git a/client/hebcal.noloc.min.js.map b/client/hebcal.noloc.min.js.map
index e8ff402..5f68dc8 100644
--- a/client/hebcal.noloc.min.js.map
+++ b/client/hebcal.noloc.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["node_modules/browser-pack/_prelude.js","cities.js","client/hebcal.noloc.src.js","common.js","dafyomi.js","greg.js","hdate.js","hebcal.js","holidays.js","node_modules/events/events.js","node_modules/gematriya/gematriya.js","node_modules/suncalc/suncalc.js","sedra.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","getCity","city","split","map","w","c","join","toLowerCase","toUpperCase","slice","cities","listCities","Object","keys","Ashdod","Atlanta","Austin","Baghdad","Beer Sheva","Berlin","Baltimore","Bogota","Boston","Buenos Aires","Buffalo","Chicago","Cincinnati","Cleveland","Dallas","Denver","Detroit","Eilat","Gibraltar","Haifa","Hawaii","Houston","Jerusalem","Johannesburg","Kiev","La Paz","Livingston","London","Los Angeles","Miami","Melbourne","Mexico City","Montreal","Moscow","New York","Omaha","Ottawa","Panama City","Paris","Petach Tikvah","Philadelphia","Phoenix","Pittsburgh","Saint Louis","Saint Petersburg","San Francisco","Seattle","Sydney","Tel Aviv","Tiberias","Toronto","Vancouver","White Plains","Washington DC","addCity","info","Array","isArray","TypeError","nearest","lat","lon","name","dist","Math","sqrt","pow","abs","reduce","close","window","Hebcal","finished","warn","console","log","events","on","ready","emit","defineProperty","configurable","get","listeners","set","func","LEAP","x","hebElapsedDays","hYear","m_elapsed","floor","p_elapsed","h_elapsed","parts","day","alt_day","daysInYear","year","lngChesh","shrtKis","monthFromName","months","NISAN","IYYAR","ELUL","CHESHVAN","KISLEV","SIVAN","SHVAT","TAMUZ","TISHREI","TEVET","AV","test","ADAR_I","ADAR_II","filter","self","fun","thisp","v","funOrig","RegExp","k","indexOf","res","hasOwnProperty","val","props","getOwnPropertyDescriptor","value","arr","Number","gematriya","charCodeAt","monthNames","concat","days","SUN","MON","TUE","WED","THU","FRI","SAT","LANG","str","opts","MONTH_CNT","daysInMonth","month","monthNum","parseInt","dayYearNum","dayOnOrBefore","day_of_week","absdate","range","start","end","step","push","greg","shas","m","blatt","dafyomi","gregdate","cno","dno","osday","nsday","total","count","j","cday","dafcnt","Date","greg2abs","dafname","daf","dayOfYear","date","doy","getDate","getMonth","getFullYear","t0t1","tMonthLengths","monthLengths","lookupMonthNum","abs2greg","theDate","d0","n400","d1","n100","d2","n4","d3","n1","setFullYear","HDate","me","this","arguments","d","abs2hebrew","il","setLocation","long","trim","prev","next","setMonth","setDate","apply","defaultLocation","fix","fixMonth","fixDate","isLeapYear","hebrew2abs","tempabs","hebdate","mmap","RangeError","suntime","hdate","suncalc","getTimes","hourOffset","hours","sunrise","getTime","hour","onOrBefore","offset","addTime","prototype","enumerable","getTishreiMonth","nummonths","getDay","setTishreiMonth","gregEve","sunset","toString","getMonthName","setCity","hourMins","nightHour","nightHourMins","zemanim","chatzot","chatzot_night","alot_hashachar","alot_hashacher","misheyakir","misheyakir_machmir","sof_zman_shma","sof_zman_tfilla","mincha_gedola","mincha_ketana","plag_hamincha","tzeit","neitz_hachama","shkiah","getZemanim","z","addZeman","zeman","isSameDate","other","before","onOrAfter","after","getset","g","extend","base","into","TE","Month","defProp","writable","holidays","forEach","h","GregYear","lookupMonthName","GregMonth","hebyears","hebmonths","hm","Sedra","EventEmitter","find","strings","getYearObject","HebcalProto","MonthProto","GregYearProto","GregMonthProto","HDateProto","rosh","addHoliday","holiday","Event","add","findParsha","parsha","langs","max","getSedra","findSedra","find_f","replace","rosh_chodesh","omer","today","yesterday","tomorrow","pesach","sukkot","succot","succos","sukkos","shavuot","shavuos","rosh_hashana","rosh_hashanah","parshiot","LANGUAGE","loc","defaultCity","candleLighting","mins","havdalah","__year","getName","prevMonth","molad","m_adj","retMolad","toInt","round","chalakim","minutes","shabbat_mevarchim","_calc","setHours","setMinutes","setSeconds","num","sm","shabbos_mevarchim","shabbos_mevorchim","getMonthObject","__month","orig","__cache","sedraYear","p","getParsha","all","routine","is","prop","hd","tachanun","mapAbs","some","yes_prev","checkNext","y","atzmaut","NONE","ret","ALL_CONGS","SHACHARIT","MINCHA","hallel","whole","half","rc","WHOLE","HALF","checkTimes","obj","compare","time","nowGreg","now","almostTime","beforeZeman","customTimes","customs","refreshInterval","custom","refresh","ms","clearInterval","setInterval","unref","getGregMonthObject","__gregmonth","getGregYearObject","Chanukah","CHM","desc","Sukkot","Pesach","mask","USER_EVENT","LIGHT_CANDLES","YOM_TOV_ENDS","CHUL_ONLY","IL_ONLY","LIGHT_CANDLES_TZEIS","tmpDate","Shabbat","Shabbos","masks","myDate","getDesc","names","isIL","ev","RH","_events","_maxListeners","undefined","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","type","er","handler","len","args","error","err","context","addListener","listener","newListener","warned","trace","once","removeListener","fired","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","limit","reverse","numbers","letters","","א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת","תק","תר","תש","תת","תתק","תתר","toJulian","valueOf","dayMs","J1970","fromJulian","toDays","J2000","rightAscension","b","atan","sin","cos","tan","declination","asin","azimuth","H","phi","dec","altitude","siderealTime","lw","rad","astroRefraction","solarMeanAnomaly","eclipticLongitude","M","C","P","PI","sunCoords","L","ra","julianCycle","J0","approxTransit","Ht","solarTransitJ","ds","hourAngle","acos","getSetJ","moonCoords","F","dt","hoursLater","atan2","SunCalc","getPosition","lng","times","angle","riseName","setName","Jset","Jrise","Jnoon","result","solarNoon","nadir","getMoonPosition","pa","distance","parallacticAngle","getMoonIllumination","sdist","inc","fraction","phase","getMoonTimes","inUTC","setUTCHours","h1","h2","rise","xe","ye","roots","x1","x2","dx","hc","h0","define","amd","hebYr","long_c","short_k","COMPLETE","INCOMPLETE","REGULAR","rosh_hashana_day","first_saturday","leap","core","types","theSedraArray","D","absDate","weekNum","index","YK","SUKKOT","CHMSUKOT","SHMINI","EOY","PESACH","CHMPESACH","PESACH7","SHAVUOT","020","0220","0510","0511","052","070","072","1200","1201","1220","1221","150","152","170","1720","hDate"],"mappings":"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","file":"client/hebcal.noloc.min.js","sourceRoot":"https://github.com/hebcal/hebcal-js/tree/v2.2.3/","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o.\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n\n// name, lat, long, Israel\nvar cities = {\n\t\"Ashdod\": [ 31.8, 34.633, true ],\n\t\"Atlanta\": [ 33.75, -84.383, false ],\n\t\"Austin\": [ 30.266, -97.75, false ],\n\t\"Baghdad\": [ 33.233, 44.366, false ],\n\t\"Beer Sheva\": [ 31.25, 34.783, true ],\n\t\"Berlin\": [ 52.516, 13.4, false ],\n\t\"Baltimore\": [ 39.283, -76.6, false ],\n\t\"Bogota\": [ 4.6, -74.083, false ],\n\t\"Boston\": [ 42.333, -71.066, false ],\n\t\"Buenos Aires\": [ -34.616, -58.4, false ],\n\t\"Buffalo\": [ 42.883, -78.866, false ],\n\t\"Chicago\": [ 41.833, -87.75, false ],\n\t\"Cincinnati\": [ 39.1, -84.516, false ],\n\t\"Cleveland\": [ 41.5, -81.683, false ],\n\t\"Dallas\": [ 32.783, -96.8, false ],\n\t\"Denver\": [ 39.733, -104.983, false ],\n\t\"Detroit\": [ 42.333, -83.033, false ],\n\t\"Eilat\": [ 29.55, 34.95, true ],\n\t\"Gibraltar\": [ 36.133, -5.35, false ],\n\t\"Haifa\": [ 32.816, 34.983, true ],\n\t\"Hawaii\": [ 19.5, -155.5, false ],\n\t\"Houston\": [ 29.766, -95.366, false ],\n\t\"Jerusalem\": [ 31.783, 35.233, true ],\n\t\"Johannesburg\": [ -26.166, 28.033, false ],\n\t\"Kiev\": [ 50.466, 30.483, false ],\n\t\"La Paz\": [ -16.5, -68.15, false ],\n\t\"Livingston\": [ 40.283, -74.3, false ],\n\t\"London\": [ 51.5, -0.166, false ],\n\t\"Los Angeles\": [ 34.066, -118.25, false ],\n\t\"Miami\": [ 25.766, -80.2, false ],\n\t\"Melbourne\": [ -37.866, 145.133, false ],\n\t\"Mexico City\": [ 19.4, -99.15, false ],\n\t\"Montreal\": [ 45.5, -73.6, false ],\n\t\"Moscow\": [ 55.75, 37.7, false ],\n\t\"New York\": [ 40.716, -74.016, false ],\n\t\"Omaha\": [ 41.266, -95.933, false ],\n\t\"Ottawa\": [ 45.7, -76.183, false ],\n\t\"Panama City\": [ 8.966, -79.533, false ],\n\t\"Paris\": [ 48.866, 2.333, false ],\n\t\"Petach Tikvah\": [ 32.083, 34.883, true ],\n\t\"Philadelphia\": [ 39.95, -75.166, false ],\n\t\"Phoenix\": [ 33.45, -112.066, false ],\n\t\"Pittsburgh\": [ 40.433, -80, false ],\n\t\"Saint Louis\": [ 38.633, -90.2, false ],\n\t\"Saint Petersburg\": [ 59.883, 30.25, false ],\n\t\"San Francisco\": [ 37.783, -122.416, false ],\n\t\"Seattle\": [ 47.6, -122.333, false ],\n\t\"Sydney\": [ -33.916, 151.283, false ],\n\t\"Tel Aviv\": [ 32.083, 34.766, true ],\n\t\"Tiberias\": [ 32.966, 35.533, true ],\n\t\"Toronto\": [ 43.633, -79.4, false ],\n\t\"Vancouver\": [ 49.266, -123.116, false ],\n\t\"White Plains\": [ 41.033, -73.75, false ],\n\t\"Washington DC\": [ 38.916, -77, false ]\n};\n\nfunction getCity(city) {\n\tcity = city.split(/\\s+/).map(function(w,i,c){\n\t\tif (c.join(' ').toLowerCase() === 'washington dc' && i === 1) { // special case\n\t\t\treturn w.toUpperCase();\n\t\t}\n\t\treturn w[0].toUpperCase() + w.slice(1).toLowerCase();\n\t}).join(' ');\n\treturn cities[city] || [ 0, 0, false ];\n}\nexports.getCity = getCity;\n\nfunction listCities() {\n\treturn Object.keys(cities);\n}\nexports.listCities = listCities;\n\nexports.addCity = function(city, info) {\n\tif (!Array.isArray(info)) {\n\t\tthrow new TypeError('adding non-array city');\n\t}\n\tif (info.length == 5) {\n\t\tvar i = info.slice();\n\t\tinfo = [];\n\t\tinfo[0] = (i[0] * 60 + i[1]) / 60;\n\t\tinfo[1] = (i[2] * 60 + i[3]) / 60;\n\t\tinfo[2] = i[4];\n\t}\n\tif (info.length != 3) {\n\t\tthrow new TypeError('length of city array is not 3');\n\t}\n\tcity = city.split(/\\s+/).map(function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase()}).join(' ');\n\tcities[city] = info;\n};\n\nexports.nearest = function(lat, lon) {\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to nearest()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to nearest()');\n\t}\n\n\treturn listCities().map(function(city){\n\t\tvar i = getCity(city);\n\t\treturn {\n\t\t\tname: city,\n\t\t\tdist: Math.sqrt( Math.pow(Math.abs(i[0] - lat), 2) + Math.pow(Math.abs(i[1] - lon), 2) )\n\t\t};\n\t}).reduce(function(close,city){\n\t\treturn close.dist < city.dist ? close : city;\n\t}).name;\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at \n\tdanny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter\n */\nwindow.Hebcal = require('..');\n\nvar finished = false, warn = (typeof console != 'undefined' && (console.warn || console.log)) || function(){};\n\nHebcal.events.on('newListener', function(e){\n\tif (e === 'ready' && !finished && Hebcal.ready) {\n\t\tfinished = Hebcal.events.emit('ready');\n\t}\n});\n\nObject.defineProperty(Hebcal, 'onready', {\n\tconfigurable: true,\n\n\tget: function() {\n\t\twarn('Getting deprecated property Hebcal.onready');\n\t\treturn Hebcal.events.listeners('ready')[0];\n\t},\n\tset: function(func) {\n\t\twarn('Setting deprecated property Hebcal.onready; use Hebcal.events.on(\\'ready\\', func) instead');\n\t\tHebcal.events.on('ready', func);\n\t}\n});\n\nHebcal.ready = true;\nfinished = Hebcal.events.emit('ready');","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar gematriya = require('gematriya');\n\nvar charCodeAt = 'charCodeAt';\n\nvar months = exports.months = {\n\tNISAN : 1,\n\tIYYAR : 2,\n\tSIVAN : 3,\n\tTAMUZ : 4,\n\tAV : 5,\n\tELUL : 6,\n\tTISHREI : 7,\n\tCHESHVAN: 8,\n\tKISLEV : 9,\n\tTEVET : 10,\n\tSHVAT : 11,\n\tADAR_I : 12,\n\tADAR_II : 13\n};\n\nvar monthNames = [\n\t[\"\", 0, \"\"],\n\t[\"Nisan\", 0, \"ניסן\"],\n\t[\"Iyyar\", 0, \"אייר\"],\n\t[\"Sivan\", 0, \"סיון\"],\n\t[\"Tamuz\", 0, \"תמוז\"],\n\t[\"Av\", 0, \"אב\"],\n\t[\"Elul\", 0, \"אלול\"],\n\t[\"Tishrei\", 0, \"תשרי\"],\n\t[\"Cheshvan\", 0, \"חשון\"],\n\t[\"Kislev\", 0, \"כסלו\"],\n\t[\"Tevet\", 0, \"טבת\"],\n\t[\"Sh'vat\", 0, \"שבט\"]\n];\nexports.monthNames = [\n\tmonthNames.concat([[\"Adar\", 0, \"אדר\"],[\"Nisan\", 0, \"ניסן\"]]),\n\tmonthNames.concat([[\"Adar 1\", 0, \"אדר א'\"],[\"Adar 2\", 0, \"אדר ב'\"],[\"Nisan\", 0, \"ניסן\"]])\n];\n\nexports.days = {\n\tSUN: 0,\n\tMON: 1,\n\tTUE: 2,\n\tWED: 3,\n\tTHU: 4,\n\tFRI: 5,\n\tSAT: 6\n};\n\nexports.LANG = function(str, opts){\n\treturn opts == 'h' && str[2] || (opts == 'a' && str[1] || str[0]);\n};\n\nfunction LEAP(x) {\n\treturn (1 + x * 7) % 19 < 7;\n}\nexports.LEAP = LEAP;\n\nexports.MONTH_CNT = function(x) {\n\treturn 12 + LEAP(x); // boolean is cast to 1 or 0\n};\n\nexports.daysInMonth = function(month, year) {\n\treturn 30 - (month == months.IYYAR ||\n\tmonth == months.TAMUZ ||\n\tmonth == months.ELUL ||\n\tmonth == months.TEVET ||\n\tmonth == months.ADAR_II ||\n\t(month == months.ADAR_I && !LEAP(year)) ||\n\t(month == months.CHESHVAN && !lngChesh(year)) ||\n\t(month == months.KISLEV && shrtKis(year)));\n};\n\nexports.monthNum = function(month) {\n\treturn typeof month === 'number' ? month :\n\t\tmonth[charCodeAt](0) >= 1488 && month[charCodeAt](0) <= 1514 && /('|\")/.test(month) ? gematriya(month) :\n\t\t\tmonth[charCodeAt](0) >= 48 && month[charCodeAt](0) <= 57 /* number */ ? parseInt(month, 10) : monthFromName(month);\n};\n\nexports.dayYearNum = function(str) {\n\treturn typeof str === 'number' ? str :\n\t\tstr[charCodeAt](0) >= 1488 && str[charCodeAt](0) <= 1514 ? gematriya(str, true) : parseInt(str, 10);\n};\n\n/* Days from sunday prior to start of Hebrew calendar to mean\n conjunction of Tishrei in Hebrew YEAR\n */\nfunction hebElapsedDays(hYear){\n\t// borrowed from original JS\n\tvar m_elapsed = 235 * Math.floor((hYear - 1) / 19) +\n\t\t12 * ((hYear - 1) % 19) +\n\t\tMath.floor(((((hYear - 1) % 19) * 7) + 1) / 19);\n\n\tvar p_elapsed = 204 + (793 * (m_elapsed % 1080));\n\n\tvar h_elapsed = 5 + (12 * m_elapsed) +\n\t\t793 * Math.floor(m_elapsed / 1080) +\n\t\tMath.floor(p_elapsed / 1080);\n\n\tvar parts = (p_elapsed % 1080) + 1080 * (h_elapsed % 24);\n\n\tvar day = 1 + 29 * m_elapsed + Math.floor(h_elapsed / 24);\n\tvar alt_day = day + ((parts >= 19440) ||\n\t\t((2 == (day % 7)) && (parts >= 9924) && !(LEAP (hYear))) ||\n\t\t((1 == (day % 7)) && (parts >= 16789) && LEAP (hYear - 1)));\n\n\treturn alt_day + ((alt_day % 7) === 0 ||\n\t\t(alt_day % 7) == 3 ||\n\t\t(alt_day % 7) == 5);\n}\nexports.hebElapsedDays = hebElapsedDays;\n\n/* Number of days in the hebrew YEAR */\nfunction daysInYear(year)\n{\n\treturn hebElapsedDays(year + 1) - hebElapsedDays(year);\n}\nexports.daysInYear = daysInYear;\n\n/* true if Cheshvan is long in Hebrew YEAR */\nfunction lngChesh(year) {\n\treturn (daysInYear(year) % 10) == 5;\n}\nexports.lngChesh = lngChesh;\n\n/* true if Kislev is short in Hebrew YEAR */\nfunction shrtKis(year) {\n\treturn (daysInYear(year) % 10) == 3;\n}\nexports.shrtKis = shrtKis;\n\nfunction monthFromName(c) {\n\t/*\n\tthe Hebrew months are unique to their second letter\n\tN Nisan (November?)\n\tI Iyyar\n\tE Elul\n\tC Cheshvan\n\tK Kislev\n\t1 1Adar\n\t2 2Adar\n\tSi Sh Sivan, Shvat\n\tTa Ti Te Tamuz, Tishrei, Tevet\n\tAv Ad Av, Adar\n\n\tאב אד אי אל אב אדר אייר אלול\n\tח חשון\n\tט טבת\n\tכ כסלב\n\tנ ניסן\n\tס סיון\n\tש שבט\n\tתמ תש תמוז תשרי\n\t*/\n\tswitch (c.toLowerCase()[0]) {\n\t\tcase 'n':\n\t\tcase 'נ':\n\t\t\treturn (c.toLowerCase()[1] == 'o') ? /* this catches \"november\" */\n\t\t\t\t0 : months.NISAN;\n\t\tcase 'i':\n\t\t\treturn months.IYYAR;\n\t\tcase 'e':\n\t\t\treturn months.ELUL;\n\t\tcase 'c':\n\t\tcase 'ח':\n\t\t\treturn months.CHESHVAN;\n\t\tcase 'k':\n\t\tcase 'כ':\n\t\t\treturn months.KISLEV;\n\t\tcase 's':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.SIVAN;\n\t\t\t\tcase 'h':\n\t\t\t\t\treturn months.SHVAT;\n\t\t\t\tdefault:\n\t\t\t\t\treturn 0;\n\t\t\t}\n\t\tcase 't':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'a':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t\tcase 'e':\n\t\t\t\t\treturn months.TEVET;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'a':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'v':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif (/(1|[^i]i|a|א)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ס':\n\t\t\treturn months.SIVAN;\n\t\tcase 'ש':\n\t\t\treturn months.SHVAT;\n\t\tcase 'א':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'ב':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'ד':\n\t\t\t\t\tif (/(2|ii|b|ב)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t\tcase 'י':\n\t\t\t\t\treturn months.IYYAR;\n\t\t\t\tcase 'ל':\n\t\t\t\t\treturn months.ELUL;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ת':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'מ':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'ש':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn 0;\n};\nexports.monthFromName = monthFromName;\n\n/* Note: Applying this function to d+6 gives us the DAYNAME on or after an\n * absolute day d. Similarly, applying it to d+3 gives the DAYNAME nearest to\n * absolute date d, applying it to d-1 gives the DAYNAME previous to absolute\n * date d, and applying it to d+7 gives the DAYNAME following absolute date d.\n\n**/\nexports.dayOnOrBefore = function(day_of_week, absdate) {\n\treturn absdate - ((absdate - day_of_week) % 7);\n};\n\nexports.map = function(self, fun, thisp) {\n\t// originally written for http://github.com/Scimonster/localbrowse\n\tif (self === null || typeof fun != 'function') {\n\t\tthrow new TypeError();\n\t}\n\tvar t = Object(self);\n\tvar res = {};\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tres[i] = fun.call(thisp, t[i], i, t);\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = filter(arr, true); // for...in isn't guaranteed to give any meaningful order\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n};\n\nfunction filter(self, fun, thisp) {\n\tif (self === null) {\n\t\tthrow new TypeError('self is null');\n\t}\n\tswitch (typeof fun) {\n\t\tcase 'function':\n\t\t\tbreak; // do nothing\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn self[fun]; // str/num is just the property\n\t\tcase 'boolean':\n\t\t\t// boolean shortcuts to filter only truthy/falsy values\n\t\t\tif (fun) {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn v;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn !v;\n\t\t\t\t};\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'object':\n\t\t\tvar funOrig = fun; // save it\n\t\t\tif (fun instanceof RegExp) { // test the val against the regex\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn funOrig.test(v);\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t} else if (Array.isArray(fun)) { // keep these keys\n\t\t\t\tfun = function (v, k) {\n\t\t\t\t\treturn funOrig.indexOf(k) > -1;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tthrow new TypeError('fun is not a supported type');\n\t}\n\tvar res = {};\n\tvar t = Object(self);\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tvar val = t[i]; // in case fun mutates it\n\t\t\tif (fun.call(thisp, val, i, t)) {\n\t\t\t\t// define property on res in the same manner as it was originally defined\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(t, i);\n\t\t\t\tprops.value = val;\n\t\t\t\tObject.defineProperty(res, i, props);\n\t\t\t}\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = arr.filter(function (v) {\n\t\t\treturn v;\n\t\t}); // for...in isn't guaranteed to give any meaningful order\n\t\t// can't use c.filter(arr,true) here because that would infitely recurse\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n}\nexports.filter = filter;\n\nexports.range = function(start, end, step) {\n\tstep = step || 1;\n\tif (step < 0) {\n\t\tstep = 0 - step;\n\t}\n\n\tvar arr = [], i = start;\n\tif (start < end) {\n\t\tfor (; i <= end; i += step) {\n\t\t\tarr.push(i);\n\t\t}\n\t} else {\n\t\tfor (; i >= end; i -= step) {\n\t\t\tarr.push(i);\n\t\t}\n\t}\n\treturn arr;\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tgematriya = require('gematriya');\n\nvar shas = [\n\t// sname, aname, hname, blatt\n\t[ \"Berachot\", \"Berachos\", \"ברכות\", 64 ],\n\t[ \"Shabbat\", \"Shabbos\", \"שבת\", 157 ],\n\t[ \"Eruvin\", \"Eruvin\", \"עירובין\", 105 ],\n\t[ \"Pesachim\", 0, \"פסחים\", 121 ],\n\t[ \"Shekalim\", 0, \"שקלים\", 22 ],\n\t[ \"Yoma\", 0, \"יומא\", 88 ],\n\t[ \"Sukkah\", 0, \"סוכה\", 56 ],\n\t[ \"Beitzah\", 0, \"ביצה\", 40 ],\n\t[ \"Rosh Hashana\", 0, \"ראש השנה\", 35 ],\n\t[ \"Taanit\", \"Taanis\", \"תענית\", 31 ],\n\t[ \"Megillah\", 0, \"מגילה\", 32 ],\n\t[ \"Moed Katan\", 0, \"מועד קטן\", 29 ],\n\t[ \"Chagigah\", 0, \"חגיגה\", 27 ],\n\t[ \"Yevamot\", \"Yevamos\", \"יבמות\", 122 ],\n\t[ \"Ketubot\", \"Kesubos\", \"כתובות\", 112 ],\n\t[ \"Nedarim\", 0, \"נדרים\", 91 ],\n\t[ \"Nazir\", 0, \"נזיר\", 66 ],\n\t[ \"Sotah\", 0, \"סוטה\", 49 ],\n\t[ \"Gitin\", 0, \"גיטין\", 90 ],\n\t[ \"Kiddushin\", 0, \"קידושין\", 82 ],\n\t[ \"Baba Kamma\", 0, \"בבא קמא\", 119 ],\n\t[ \"Baba Metzia\", 0, \"בבא מציעא\", 119 ],\n\t[ \"Baba Batra\", \"Baba Basra\", \"בבא בתרא\", 176 ],\n\t[ \"Sanhedrin\", 0, \"סנהדרין\", 113 ],\n\t[ \"Makkot\", \"Makkos\", \"מכות\", 24 ],\n\t[ \"Shevuot\", \"Shevuos\", \"שבועות\", 49 ],\n\t[ \"Avodah Zarah\", 0, \"עבודה זרה\", 76 ],\n\t[ \"Horayot\", \"Horayos\", \"הוריות\", 14 ],\n\t[ \"Zevachim\", 0, \"זבחים\", 120 ],\n\t[ \"Menachot\", \"Menachos\", \"מנחות\", 110 ],\n\t[ \"Chullin\", 0, \"חולין\", 142 ],\n\t[ \"Bechorot\", \"Bechoros\", \"בכורות\", 61 ],\n\t[ \"Arachin\", 0, \"ערכין\", 34 ],\n\t[ \"Temurah\", 0, \"תמורה\", 34 ],\n\t[ \"Keritot\", \"Kerisos\", \"כריתות\", 28 ],\n\t[ \"Meilah\", 0, \"מעילה\", 22 ],\n\t[ \"Kinnim\", 0, \"קנים\", 4 ],\n\t[ \"Tamid\", 0, \"תמיד\", 10 ],\n\t[ \"Midot\", \"Midos\", \"מדות\", 4 ],\n\t[ \"Niddah\", 0, \"נדה\", 73 ]\n].map(function(m){\n\treturn {name: m.slice(0,3), blatt: m[3]};\n});\n\nexports.dafyomi = function(gregdate) {\n\tvar dafcnt = 40, cno, dno, osday, nsday, total, count, j, cday, blatt;\n\n\tif (!(gregdate instanceof Date)) {\n\t\tthrow new TypeError('non-date given to dafyomi');\n\t}\n\n\tosday = greg.greg2abs(new Date(1923, 8, 11));\n\tnsday = greg.greg2abs(new Date(1975, 5, 24));\n\tcday = greg.greg2abs(gregdate);\n\n\tif (cday < osday) { // no cycle; dy didn't start yet\n\t\treturn {name: [], blatt: 0};\n\t}\n\tif (cday >= nsday) { // \"new\" cycle\n\t\tcno = 8 + ( (cday - nsday) / 2711 );\n\t\tdno = (cday - nsday) % 2711;\n\t} else { // old cycle\n\t\tcno = 1 + ( (cday - osday) / 2702 );\n\t\tdno = (cday - osday) % 2702;\n\t}\n\n\t// Find the daf taking note that the cycle changed slightly after cycle 7.\n\n\ttotal = blatt = 0;\n\tcount = -1;\n\n\t// Fix Shekalim for old cycles\n\tif (cno <= 7) {\n\t\tshas[4].blatt = 13;\n\t} else {\n\t\tshas[4].blatt = 22;\n\t}\n\n\t// Find the daf\n\tj = 0;\n\twhile (j < dafcnt) {\n\t\tcount++;\n\t\ttotal = total + shas[j].blatt - 1;\n\t\tif (dno < total) {\n\t\t\tblatt = (shas[j].blatt + 1) - (total - dno);\n\t\t\t// fiddle with the weird ones near the end\n\t\t\tswitch (count) {\n\t\t\t\tcase 36:\n\t\t\t\t\tblatt = blatt + 21;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tblatt = blatt + 24;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38:\n\t\t\t\t\tblatt = blatt + 33;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Bailout\n\t\t\tj = 1 + dafcnt;\n\t\t}\n\t\tj++;\n\t}\n\n\treturn {name: shas[count].name, blatt: blatt};\n};\n\nexports.dafname = function(daf, o) {\n\treturn c.LANG(daf.name, o) + ' ' + (o === 'h' ? gematriya(daf.blatt) : daf.blatt);\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar floor = Math.floor,\n\tt0t1 = [30, 31],\n\ttMonthLengths = [0, 31, 28, 31].concat(t0t1, t0t1, 31, t0t1, t0t1),\n\tmonthLengths = [\n\t\ttMonthLengths.slice()\n\t];\ntMonthLengths[2]++;\nmonthLengths.push(tMonthLengths);\n\nexports.daysInMonth = function(month, year) { // 1 based months\n\treturn monthLengths[+LEAP(year)][month];\n};\n\nexports.monthNames = [\n\t'',\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December'\n];\n\nexports.lookupMonthNum = function(month) {\n\treturn new Date(month + ' 1').getMonth() + 1;\n};\n\nfunction dayOfYear (date) {\n\tif (!date instanceof Date) {\n\t\tthrow new TypeError('Argument to greg.dayOfYear not a Date');\n\t}\n\tvar doy = date.getDate() + 31 * date.getMonth();\n\tif (date.getMonth() > 1) { // FEB\n\t\tdoy -= floor((4 * (date.getMonth() + 1) + 23) / 10);\n\t\tif (LEAP(date.getFullYear())) {\n\t\t\tdoy++;\n\t\t}\n\t}\n\treturn doy;\n}\nexports.dayOfYear = dayOfYear;\n\nfunction LEAP (year) {\n\treturn !(year % 4) && ( !!(year % 100) || !(year % 400) );\n}\nexports.LEAP = LEAP;\n\nexports.greg2abs = function(date) { // \"absolute date\"\n\tvar year = date.getFullYear() - 1;\n\treturn (dayOfYear(date) + // days this year\n\t\t\t365 * year + // + days in prior years\n\t\t\t( floor(year / 4) - // + Julian Leap years\n\t\t\tfloor(year / 100) + // - century years\n\t\t\tfloor(year / 400))); // + Gregorian leap years\n};\n\n\n/*\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n */\nexports.abs2greg = function(theDate) {\n// calculations copied from original JS code\n\n\tvar d0 = theDate - 1;\n\tvar n400 = floor(d0 / 146097);\n\tvar d1 = floor(d0 % 146097);\n\tvar n100 = floor(d1 / 36524);\n\tvar d2 = d1 % 36524;\n\tvar n4 = floor(d2 / 1461);\n\tvar d3 = d2 % 1461;\n\tvar n1 = floor(d3 / 365);\n\n\tvar day = ((d3 % 365) + 1);\n\tvar year = (400 * n400 + 100 * n100 + 4 * n4 + n1);\n\n\tif (4 == n100 || 4 == n1) {\n\t\treturn new Date(year, 11, 31);\n\t}\n\n\treturn new Date(new Date(++year, 0, day).setFullYear(year)); // new Date() is very smart\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tsuncalc = require('suncalc'),\n\tcities = require('./cities'),\n\tgematriya = require('gematriya');\n\nsuncalc.addTime(-16.1, 'alot_hashachar', 0);\nsuncalc.addTime(-11.5, 'misheyakir', 0);\nsuncalc.addTime(-10.2, 'misheyakir_machmir', 0);\nsuncalc.addTime(-8.5, 0, 'tzeit');\n\n// for minifying optimizations\nvar getFullYear = 'getFullYear',\n\tgetMonth = 'getMonth',\n\tgetDate = 'getDate',\n\tgetTime = 'getTime',\n\tabs = 'abs',\n\thour = 'hour',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tMONTH_CNT = c.MONTH_CNT,\n\tdaysInMonth = c.daysInMonth,\n\tdayOnOrBefore = c.dayOnOrBefore,\n\tprototype = HDate.prototype;\n\nfunction HDate(day, month, year) {\n\tvar me = this;\n\tswitch (arguments.length) {\n\t\tcase 0:\n\t\t\treturn new HDate(new Date());\n\t\tcase 1:\n\t\t\tif (typeof day == 'undefined') {\n\t\t\t\treturn new HDate();\n\t\t\t} else if (day instanceof Date) {\n\t\t\t\t// we were passed a Gregorian date, so convert it\n\t\t\t\tvar d = abs2hebrew(greg.greg2abs(day));\n\t\t\t\t/*if (d.sunset() < day) {\n\t\t\t\t\td = d.next();\n\t\t\t\t}*/\n\t\t\t\treturn d;\n\t\t\t} else if (day instanceof HDate) {\n\t\t\t\tvar d = new HDate(day[getDate](), day[getMonth](), day[getFullYear]());\n\t\t\t\td.il = day.il;\n\t\t\t\td.setLocation(d.lat, d.long);\n\t\t\t\treturn d;\n\t\t\t} else if (typeof day == 'string') {\n\t\t\t\tswitch (day.toLowerCase().trim()) {\n\t\t\t\t\tcase 'today':\n\t\t\t\t\t\treturn new HDate();\n\t\t\t\t\tcase 'yesterday':\n\t\t\t\t\t\treturn new HDate().prev();\n\t\t\t\t\tcase 'tomorrow':\n\t\t\t\t\t\treturn new HDate().next();\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(day)) {\n\t\t\t\t\tvar s = day.split(/\\s+/);\n\t\t\t\t\tif (s.length == 2) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1]);\n\t\t\t\t\t} else if (s.length == 3) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1], s[2]);\n\t\t\t\t\t} else if (s.length == 4) { // should only be if s[1] is Adar\n\t\t\t\t\t\tif (/i/i.test(s[2])) { // Using I[I] syntax\n\t\t\t\t\t\t\ts[2] = s[2].length;\n\t\t\t\t\t\t} // otherwise using 1|2 syntax\n\t\t\t\t\t\treturn new HDate(s[0], s[1] + s[2], s[3]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof day == 'number') { // absolute date\n\t\t\t\treturn abs2hebrew(day);\n\t\t\t}\n\t\t\tthrow new TypeError('HDate called with bad argument');\n\t\tcase 2:\n\t\t\treturn new HDate(day, month, (new HDate)[getFullYear]());\n\t\tcase 3:\n\t\t\tme.day = me.month = 1;\n\t\t\tme.year = c.dayYearNum(year);\n\n\t\t\tme.setMonth(c.monthNum(month));\n\t\t\tme.setDate(c.dayYearNum(day));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError('HDate called with bad arguments');\n\t}\n\n\treturn me.setLocation.apply(me, HDate.defaultLocation);\n}\n\nHDate.defaultLocation = [0, 0];\nObject.defineProperty(HDate, 'defaultCity', {\n\tenumerable: true,\n\tconfigurable: true,\n\n\tget: function() {\n\t\treturn cities.nearest(HDate.defaultLocation[0], HDate.defaultLocation[1]);\n\t},\n\tset: function(city) {\n\t\tHDate.defaultLocation = cities.getCity(city).slice(0, 2);\n\t}\n});\n\nfunction fix(date) {\n\tfixMonth(date);\n\tfixDate(date);\n}\n\nfunction fixDate(date) {\n\tif (date.day < 1) {\n\t\tif (date.month == TISHREI) {\n\t\t\tdate.year -= 1;\n\t\t}\n\t\tdate.day += daysInMonth(date.month, date.year);\n\t\tdate.month -= 1;\n\t\tfix(date);\n\t}\n\tif (date.day > daysInMonth(date.month, date.year)) {\n\t\tif (date.month == months.ELUL) {\n\t\t\tdate.year += 1;\n\t\t}\n\t\tdate.day -= daysInMonth(date.month, date.year);\n\t\tdate.month += 1;\n\t\tfix(date);\n\t}\n\tfixMonth(date);\n}\n\nfunction fixMonth(date) {\n\tif (date.month == months.ADAR_II && !date.isLeapYear()) {\n\t\tdate.month -= 1; // to Adar I\n\t\tfix(date);\n\t}\n\tif (date.month < 1) {\n\t\tdate.month += MONTH_CNT(date.year);\n\t\tdate.year -= 1;\n\t\tfix(date);\n\t}\n\tif (date.month > MONTH_CNT(date.year)) {\n\t\tdate.month -= MONTH_CNT(date.year);\n\t\tdate.year += 1;\n\t\tfix(date);\n\t}\n}\n\nprototype[getFullYear] = function() {\n\treturn this.year;\n};\n\nprototype.isLeapYear = function() {\n\treturn c.LEAP(this.year);\n};\n\nprototype[getMonth] = function() {\n\treturn this.month;\n};\n\nprototype.getTishreiMonth = function() {\n\tvar nummonths = MONTH_CNT(this[getFullYear]());\n\treturn (this[getMonth]() + nummonths - 6) % nummonths || nummonths;\n};\n\nprototype.daysInMonth = function() {\n\treturn daysInMonth(this[getMonth](), this[getFullYear]());\n};\n\nprototype[getDate] = function() {\n\treturn this.day;\n};\n\nprototype.getDay = function() {\n\treturn this.greg().getDay();\n};\n\nprototype.setFullYear = function(year) {\n\tthis.year = year;\n\tfix(this);\n\treturn this;\n};\n\nprototype.setMonth = function(month) {\n\tthis.month = c.monthNum(month);\n\tfix(this);\n\treturn this;\n};\n\nprototype.setTishreiMonth = function(month) {\n\treturn this.setMonth((month + 6) % MONTH_CNT(this[getFullYear]()) || 13);\n};\n\nprototype.setDate = function(date) {\n\tthis.day = date;\n\tfix(this);\n\treturn this;\n};\n\n/* convert hebrew date to absolute date */\n/* Absolute date of Hebrew DATE.\n The absolute date is the number of days elapsed since the (imaginary)\n Gregorian date Sunday, December 31, 1 BC. */\nfunction hebrew2abs(d) {\n\tvar m, tempabs = d[getDate](), year = d[getFullYear]();\n\n\tif (d[getMonth]() < TISHREI) {\n\t\tfor (m = TISHREI; m <= MONTH_CNT(year); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\n\t\tfor (m = months.NISAN; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t} else {\n\t\tfor (m = TISHREI; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t}\n\n\treturn c.hebElapsedDays(year) - 1373429 + tempabs;\n}\n\nfunction abs2hebrew(d) {\n\tvar mmap = [\n\t\tmonths.KISLEV, months.TEVET, months.SHVAT, months.ADAR_I, months.NISAN,\n\t\tmonths.IYYAR, months.SIVAN, months.TAMUZ, TISHREI, TISHREI, TISHREI, months.CHESHVAN\n\t], hebdate, gregdate, month, year;\n\n\tif (d >= 10555144) {\n\t\tthrow new RangeError(\"parameter to abs2hebrew \" + d + \" out of range\");\n\t}\n\n\tgregdate = greg.abs2greg(d);\n\thebdate = new HDate(1, TISHREI, (year = 3760 + gregdate[getFullYear]()));\n\n\twhile (d >= hebrew2abs(hebdate.setFullYear(year + 1))) {\n\t\tyear++;\n\t}\n\n\tif (year > 4634 && year < 10666) {\n\t\t// optimize search\n\t\tmonth = mmap[gregdate[getMonth]()];\n\t} else {\n\t\t// we're outside the usual range, so assume nothing about Hebrew/Gregorian calendar drift...\n\t\tmonth = TISHREI;\n\t}\n\n\twhile (d > hebrew2abs(hebdate = new HDate(daysInMonth(month, year), month, year))) {\n\t\tmonth = (month % MONTH_CNT(year)) + 1;\n\t}\n\n\treturn hebdate.setLocation.apply(hebdate.setDate(d - hebrew2abs(hebdate.setDate(1)) + 1), HDate.defaultLocation);\n}\n\nprototype.greg = function() {\n\treturn greg.abs2greg(hebrew2abs(this));\n};\n\nprototype.gregEve = function() {\n\treturn this.prev().sunset();\n};\n\nprototype[abs] = function() {\n\treturn hebrew2abs(this);\n};\n\nprototype.toString = function(o) {\n\treturn c.LANG([this[getDate](), null, gematriya(this[getDate]())], o) + ' ' +\n\t\tthis.getMonthName(o) + ' ' +\n\t\tc.LANG([this[getFullYear](), null, gematriya(this[getFullYear]())], o);\n};\n\nprototype.getMonthName = function(o) {\n\treturn c.LANG(c.monthNames[+this.isLeapYear()][this[getMonth]()], o);\n};\n\nprototype.setCity = function(city) {\n\treturn this.setLocation(cities.getCity(city));\n};\n\nprototype.setLocation = function(lat, lon) {\n\tif (typeof lat == 'object' && !Array.isArray(lat)) {\n\t\tlon = lat.long;\n\t\tlat = lat.lat;\n\t}\n\tif (Array.isArray(lat) && typeof lon == 'undefined') {\n\t\tlon = lat[0];\n\t\tlat = lat[1];\n\t}\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to HDate.setLocation()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to HDate.setLocation()');\n\t}\n\n\tthis.lat = lat;\n\tthis.long = lon;\n\n\tthis.il = cities.getCity(cities.nearest(lat, lon))[2];\n\n\treturn this;\n};\n\nfunction suntime(hdate) {\n\t// reset the date to midday before calling suncalc api\n\t// https://github.com/mourner/suncalc/issues/11\n\tvar date = hdate.greg();\n\treturn suncalc.getTimes(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0, 0), hdate.lat, hdate.long);\n}\n\nprototype.sunrise = function() {\n\treturn suntime(this).sunrise;\n};\n\nprototype.sunset = function() {\n\treturn suntime(this).sunset;\n};\n\nprototype[hour] = function() {\n\treturn (this.sunset() - this.sunrise()) / 12; // ms in hour\n};\n\nprototype.hourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this[hour]() / (1000 * 60);\n};\n\nprototype.nightHour = function() {\n\treturn (this.sunrise() - this.gregEve()) / 12; // ms in hour\n};\n\nprototype.nightHourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this.nightHour() / (1000 * 60);\n};\n\nfunction hourOffset(hdate, hours) {\n\treturn new Date(hdate.sunrise()[getTime]() + (hdate[hour]() * hours));\n}\n\nvar zemanim = {\n\tchatzot: function(hdate) {\n\t\treturn hourOffset(hdate, 6);\n\t},\n\tchatzot_night: function(hdate) {\n\t\treturn new Date(hdate.sunrise()[getTime]() - (hdate.nightHour() * 6));\n\t},\n\talot_hashachar: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\talot_hashacher: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\tmisheyakir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir;\n\t},\n\tmisheyakir_machmir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir_machmir;\n\t},\n\tsof_zman_shma: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 3);\n\t},\n\tsof_zman_tfilla: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 4);\n\t},\n\tmincha_gedola: function(hdate) {\n\t\treturn hourOffset(hdate, 6.5);\n\t},\n\tmincha_ketana: function(hdate) {\n\t\treturn hourOffset(hdate, 9.5);\n\t},\n\tplag_hamincha: function(hdate) {\n\t\treturn hourOffset(hdate, 10.75);\n\t},\n\ttzeit: function(hdate) {\n\t\treturn suntime(hdate).tzeit;\n\t},\n\tneitz_hachama: function(hdate) {\n\t\treturn hdate.sunrise();\n\t},\n\tshkiah: function(hdate) {\n\t\treturn hdate.sunset();\n\t}\n};\n\nprototype.getZemanim = function() {\n\treturn c.map(zemanim, function(z){\n\t\treturn z(this);\n\t}, this);\n};\n\nHDate.addZeman = function(zeman, func) {\n\tzemanim[zeman] = func;\n};\n\nprototype.next = function() {\n\treturn abs2hebrew(this.abs() + 1).setLocation(this.lat, this.long);\n};\n\nprototype.prev = function() {\n\treturn abs2hebrew(this.abs() - 1).setLocation(this.lat, this.long);\n};\n\nprototype.isSameDate = function(other) {\n\tif (other instanceof HDate) {\n\t\tif (other[getFullYear]() == -1) {\n\t\t\tother = new HDate(other).setFullYear(this[getFullYear]());\n\t\t}\n\t\treturn this[abs]() == other[abs]();\n\t}\n\treturn false;\n};\n\nfunction onOrBefore(day, t, offset) {\n\treturn new HDate(dayOnOrBefore(day, t[abs]() + offset));\n}\n\nprototype.before = function(day) {\n\treturn onOrBefore(day, this, -1);\n};\n\nprototype.onOrBefore = function(day) {\n\treturn onOrBefore(day, this, 0);\n};\n\nprototype.nearest = function(day) {\n\treturn onOrBefore(day, this, 3);\n};\n\nprototype.onOrAfter = function(day) {\n\treturn onOrBefore(day, this, 6);\n};\n\nprototype.after = function(day) {\n\treturn onOrBefore(day, this, 7);\n};\n\nmodule.exports = HDate;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tgematriya = require('gematriya');\n\nvar __cache = {};\n\n// for byte optimizations\n\nvar dayOnOrBefore = c.dayOnOrBefore,\n\tmonths = c.months,\n\tdays = c.days,\n\tTISHREI = months.TISHREI,\n\tKISLEV = months.KISLEV,\n\tNISAN = months.NISAN,\n\tSAT = days.SAT,\n\tgetDay = 'getDay',\n\tabs = 'abs',\n\tShabbat = 'Shabbat',\n\tShabbos = 'Shabbos';\n\nfunction Chanukah(day) {\n\treturn ['Chanukah: Candle ' + day, 0, 'חנוכה: נר ' + gematriya(day)];\n}\n\nfunction CHM(desc) {\n\treturn [desc[0] + ' (CH\"M)', desc[1] ? desc[1] + ' (CH\"M)' : desc[1], desc[2] ? desc[2] + ' )חה\"ם(' : desc[2]];\n}\n\nfunction Sukkot(day) {\n\treturn ['Sukkot: ' + day, 'Succos: ' + day, 'סוכות יום ' + gematriya(day)];\n}\n\nfunction Pesach(day) {\n\treturn ['Pesach: ' + day, 0, 'פסח יום ' + gematriya(day)];\n}\n\nvar USER_EVENT = 1,\n\tLIGHT_CANDLES = 2,\n\tYOM_TOV_ENDS = 4,\n\tCHUL_ONLY = 8, // chutz l'aretz (Diaspora)\n\tIL_ONLY = 16, // b'aretz (Israel)\n\tLIGHT_CANDLES_TZEIS = 32;\n\nexports.masks = {\n\tUSER_EVENT : USER_EVENT,\n\tLIGHT_CANDLES : LIGHT_CANDLES,\n\tYOM_TOV_ENDS : YOM_TOV_ENDS,\n\tCHUL_ONLY : CHUL_ONLY,\n\tIL_ONLY : IL_ONLY,\n\tLIGHT_CANDLES_TZEIS: LIGHT_CANDLES_TZEIS\n};\n\nfunction Event(date, desc, mask) {\n\tvar me = this;\n\tme.date = new HDate(date);\n\tme.desc = typeof desc != 'object' ? [desc] : desc;\n\n\tme.USER_EVENT = !!( mask & USER_EVENT );\n\tme.LIGHT_CANDLES = !!( mask & LIGHT_CANDLES );\n\tme.YOM_TOV_ENDS = !!( mask & YOM_TOV_ENDS );\n\tme.CHUL_ONLY = !!( mask & CHUL_ONLY );\n\tme.IL_ONLY = !!( mask & IL_ONLY );\n\tme.LIGHT_CANDLES_TZEIS = !!( mask & LIGHT_CANDLES_TZEIS );\n}\n\nEvent.prototype.is = function(date, il) {\n\tdate = new HDate(date), myDate = this.date;\n\tif (arguments.length < 2) {\n\t\t//il = Event.isIL;\n\t\til = date.il;\n\t}\n\tif (date.getDate() != myDate.getDate() || date.getMonth() != myDate.getMonth()) {\n\t\treturn false;\n\t}\n\tif (date.getFullYear() != myDate.getFullYear()) {\n\t\treturn false;\n\t}\n\tif (il && this.CHUL_ONLY || !il && this.IL_ONLY) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEvent.prototype.masks = function() {\n\tvar me = this;\n\treturn (me.USER_EVENT && USER_EVENT) |\n\t\t (me.LIGHT_CANDLES && LIGHT_CANDLES) |\n\t\t (me.YOM_TOV_ENDS && YOM_TOV_ENDS) |\n\t\t (me.CHUL_ONLY && CHUL_ONLY) |\n\t\t (me.IL_ONLY && IL_ONLY) |\n\t\t (me.LIGHT_CANDLES_TZEIS && LIGHT_CANDLES_TZEIS);\n};\n\nEvent.prototype.getDesc = function(o) {\n\treturn c.LANG(this.desc, o);\n};\n\nEvent.prototype.candleLighting = function() {\n\tvar date = this.date;\n\tif (this.LIGHT_CANDLES) {\n\t\treturn new Date(date.sunset() - (Event.candleLighting * 60 * 1000));\n\t} else if (this.LIGHT_CANDLES_TZEIS) {\n\t\treturn date.getZemanim().tzeit;\n\t}\n\treturn null;\n};\n\nEvent.prototype.havdalah = function() {\n\tif (this.YOM_TOV_ENDS) {\n\t\treturn new Date(this.date.sunset().getTime() + (Event.havdalah * 60 * 1000));\n\t}\n\treturn null;\n};\n\nEvent.prototype.routine = (function(){\n\tfunction routine(){\n\t\treturn !!~routine.names.indexOf(this.getDesc('s'));\n\t}\n\troutine.names = [Shabbat, 'Erev ' + Shabbat];\n\treturn routine;\n})();\n\nEvent.isIL = false;\n\nEvent.candleLighting = 18;\n\nEvent.havdalah = 42;\n\nexports.Event = Event;\n\nexports.year = function(year) {\n\tif (__cache[year]) {\n\t\treturn __cache[year];\n\t}\n\n\tvar\tRH = new HDate(1, TISHREI, year),\n\t\tpesach = new HDate(15, NISAN, year),\n\t\ttmpDate;\n\n\tvar h = {};\n\n\tfunction add(ev) {\n\t\tif (Array.isArray(ev)) {\n\t\t\tev.forEach(function(e){\n\t\t\t\tadd(e);\n\t\t\t});\n\t\t} else {\n\t\t\tif (h[ev.date]) {\n\t\t\t\th[ev.date].push(ev);\n\t\t\t} else {\n\t\t\t\th[ev.date] = [ev];\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.defineProperty(h, 'add', {value: add});\n\n\tadd([ // standard holidays that don't shift based on year\n\t\tnew Event(\n\t\t\tRH,\n\t\t\t['Rosh Hashana 1', 0, 'ראש השנה א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS\n\t\t), new Event(\n\t\t\tnew HDate(2, TISHREI, year),\n\t\t\t['Rosh Hashana 2', 0, 'ראש השנה ב\\''],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(3 + (RH[getDay]() == days.THU), TISHREI, year), // push off to SUN if RH is THU\n\t\t\t['Tzom Gedaliah', 0, 'צום גדליה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(9, TISHREI, year),\n\t\t\t['Erev Yom Kippur', 0, 'ערב יום כיפור'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event( // first SAT after RH\n\t\t\tnew HDate(dayOnOrBefore(SAT, 7 + RH[abs]())),\n\t\t\t[Shabbat + ' Shuva', Shabbos + ' Shuvah', 'שבת שובה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(10, TISHREI, year),\n\t\t\t['Yom Kippur', 0, 'יום כיפור'],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(14, TISHREI, year),\n\t\t\t['Erev Sukkot', 'Erev Succos', 'ערב סוכות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tSukkot(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tCHM(Sukkot(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(17, TISHREI, year),\n\t\t\tCHM(Sukkot(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, TISHREI, year),\n\t\t\tCHM(Sukkot(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, TISHREI, year),\n\t\t\tCHM(Sukkot(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, TISHREI, year),\n\t\t\tCHM(Sukkot(6)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(21, TISHREI, year),\n\t\t\t['Sukkot: 7 (Hoshana Raba)', 'Succos: 7 (Hoshana Raba)', 'סוכות יום ז\\' )הושנע רבה('],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת'],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret / Simchat Torah', 'Shmini Atzeres / Simchas Torah', 'שמיני עצרת / שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(23, TISHREI, year),\n\t\t\t['Simchat Torah', 'Simchas Torah', 'שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(24, KISLEV, year),\n\t\t\t['Erev Chanukah', 0, 'ערב חנוכה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(25, KISLEV, year),\n\t\t\tChanukah(1),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(26, KISLEV, year),\n\t\t\tChanukah(2),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(27, KISLEV, year),\n\t\t\tChanukah(3),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(28, KISLEV, year),\n\t\t\tChanukah(4),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, KISLEV, year),\n\t\t\tChanukah(5),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(30, KISLEV, year), // yes, i know these are wrong\n\t\t\tChanukah(6),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(31, KISLEV, year), // HDate() corrects the month automatically\n\t\t\tChanukah(7),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(32, KISLEV, year),\n\t\t\tChanukah(8),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.SHVAT, year),\n\t\t\t[\"Tu B'Shvat\", 0, 'ט\"ו בשבט'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 43)),\n\t\t\t[Shabbat + ' Shekalim', Shabbos + ' Shekalim', 'שבת שקלים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 30)),\n\t\t\t[Shabbat + ' Zachor', Shabbos + ' Zachor', 'שבת זכור'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(pesach[abs]() - (pesach[getDay]() == days.TUE ? 33 : 31)),\n\t\t\t[\"Ta'anit Esther\", \"Ta'anis Esther\", 'תענית אסתר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(13, months.ADAR_II, year),\n\t\t\t['Erev Purim', 0, 'ערב פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, months.ADAR_II, year),\n\t\t\t['Purim', 0, 'פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.ADAR_II, year),\n\t\t\t['Shushan Purim', 0, 'שושן פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14) - 7),\n\t\t\t[Shabbat + ' Parah', Shabbos + ' Parah', 'שבת פרה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14)),\n\t\t\t[Shabbat + ' Hachodesh', Shabbos + ' Hachodesh', 'שבת החודש'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 1)),\n\t\t\t[Shabbat + ' HaGadol', Shabbos + ' HaGadol', 'שבת הגדול'],\n\t\t\t0\n\t\t), new Event(\n\t\t\t// if the fast falls on Shabbat, move to Thursday\n\t\t\tpesach.prev()[getDay]() == SAT ? pesach.onOrBefore(days.THU) : new HDate(14, NISAN, year),\n\t\t\t[\"Ta'anit Bechorot\", \"Ta'anis Bechoros\", 'תענית בכורות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, NISAN, year),\n\t\t\t['Erev Pesach', 0, 'ערב פסח'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tPesach(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tCHM(Pesach(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\t['Start counting Omer', 0, 'התחלת ספירת העומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(17, NISAN, year),\n\t\t\tCHM(Pesach(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, NISAN, year),\n\t\t\tCHM(Pesach(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, NISAN, year),\n\t\t\tCHM(Pesach(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, NISAN, year),\n\t\t\tCHM(Pesach(6)),\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, NISAN, year),\n\t\t\tPesach(8),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(14, months.IYYAR, year),\n\t\t\t['Pesach Sheni', 0, 'פסח שני'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, months.IYYAR, year),\n\t\t\t[\"Lag B'Omer\", 0, 'ל\"ג בעומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(5, months.SIVAN, year),\n\t\t\t['Erev Shavuot', 'Erev Shavuos', 'ערב שבועות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot 1', 'Shavuos 1', 'שבועות א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot', 'Shavuos', 'שבועות'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(7, months.SIVAN, year),\n\t\t\t['Shavuot 2', 'Shavuos 2', 'שבועות ב\\''],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1)[abs]() - 4)),\n\t\t\t['Leil Selichot', 'Leil Selichos', 'ליל סליחות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, months.ELUL, year),\n\t\t\t['Erev Rosh Hashana', 0, 'ערב ראש השנה'],\n\t\t\tLIGHT_CANDLES\n\t\t)\n\t]);\n\n\ttmpDate = new HDate(10, months.TEVET, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Asara B'Tevet\", 0, 'עשרה בטבת'],\n\t\t0\n\t));\n\n\tif (c.LEAP(year)) {\n\t\tadd(new Event(\n\t\t\tnew HDate(14, months.ADAR_I, year),\n\t\t\t['Purim Katan', 0, 'פורים קטן'],\n\t\t\t0\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(15, months.ADAR_I, year),\n\t\t\t['Shushan Purim Katan', 0, 'שושן פורים קטן'],\n\t\t\t0\n\t\t));\n\t}\n\n\tif (year >= 5711) { // Yom HaShoah first observed in 1951\n\t\ttmpDate = new HDate(27, NISAN, year);\n\t\t/* When the actual date of Yom Hashoah falls on a Friday, the\n\t\t * state of Israel observes Yom Hashoah on the preceding\n\t\t * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n\t\t * on the following Monday.\n\t\t * http://www.ushmm.org/remembrance/dor/calendar/\n\t\t */\n\n\t\tif (tmpDate[getDay]() == days.FRI) {\n\t\t\ttmpDate = tmpDate.prev();\n\t\t} else if (tmpDate[getDay]() == days.SUN) {\n\t\t\ttmpDate = tmpDate.next();\n\t\t}\n\n\t\tadd(new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaShoah', 0, 'יום השואה'],\n\t\t\t0\n\t\t));\n\t}\n\n\tadd(atzmaut(year));\n\n\tif (year >= 5727) { // Yom Yerushalayim only celebrated after 1967\n\t\tadd(new Event(\n\t\t\tnew HDate(29, months.IYYAR, year),\n\t\t\t['Yom Yerushalayim', 0, 'יום ירושלים'],\n\t\t\t0\n\t\t));\n\t}\n\n\ttmpDate = new HDate(17, months.TAMUZ, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Shiva-Asar B'Tamuz\", 0, \"צום יז' בתמוז\"],\n\t\t0\n\t));\n\n\ttmpDate = new HDate(9, months.AV, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]())),\n\t\t[Shabbat + ' Chazon', Shabbos + ' Chazon', 'שבת חזון'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate.prev(),\n\t\t[\"Erev Tish'a B'Av\", 0, 'ערב תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Tish'a B'Av\", 0, 'תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]() + 7)),\n\t\t[Shabbat + ' Nachamu', Shabbos + ' Nachamu', 'שבת נחמו'],\n\t\t0\n\t));\n\n\tfor (var day = 6; day < c.daysInYear(year); day += 7) {\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t[Shabbat, Shabbos, 'שבת'],\n\t\t\tYOM_TOV_ENDS\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(days.FRI, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t['Erev ' + Shabbat, 'Erev ' + Shabbos, 'ערב שבת'],\n\t\t\tLIGHT_CANDLES\n\t\t));\n\t}\n\n\tfor (var month = 1; month <= c.MONTH_CNT(year); month++) {\n\t\tif ((month == NISAN ? c.daysInMonth(c.MONTH_CNT(year - 1), year - 1) :\n\t\t\t\tc.daysInMonth(month - 1, year)) == 30) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh 2', 0, \"ראש חודש ב'\"],\n\t\t\t\t0\n\t\t\t));\n\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(30, month - 1, year),\n\t\t\t\t['Rosh Chodesh 1', 0, \"ראש חודש א'\"],\n\t\t\t\t0\n\t\t\t));\n\t\t} else if (month !== TISHREI) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh', 0, 'ראש חודש'],\n\t\t\t\t0\n\t\t\t));\n\t\t}\n\n\t\tif (month == months.ELUL) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd(new Event(\n\t\t\tnew HDate(29, month, year).onOrBefore(SAT),\n\t\t\t[Shabbat + ' Mevarchim', Shabbos + ' Mevorchim', 'שבת מברכים'],\n\t\t\t0\n\t\t));\n\t}\n\n\treturn __cache[year] = h;\n};\n\nfunction atzmaut(year) {\n\tif (year >= 5708) { // Yom HaAtzma'ut only celebrated after 1948\n\t\tvar tmpDate = new HDate(1, months.IYYAR, year), pesach = new HDate(15, NISAN, year);\n\n\t\tif (pesach[getDay]() == days.SUN) {\n\t\t\ttmpDate.setDate(2);\n\t\t} else if (pesach[getDay]() == SAT) {\n\t\t\ttmpDate.setDate(3);\n\t\t} else if (year < 5764) {\n\t\t\ttmpDate.setDate(4);\n\t\t} else if (pesach[getDay]() == days.TUE) {\n\t\t\ttmpDate.setDate(5);\n\t\t} else {\n\t\t\ttmpDate.setDate(4);\n\t\t}\n\n\t\treturn [new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaZikaron', 0, 'יום הזיכרון'],\n\t\t\t0\n\t\t), new Event(\n\t\t\ttmpDate.next(),\n\t\t\t[\"Yom HaAtzma'ut\", 0, 'יום העצמאות'],\n\t\t\t0\n\t\t)];\n\t}\n\treturn [];\n}\nexports.atzmaut = atzmaut;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*\n * Convert numbers to gematriya representation, and vice-versa.\n *\n * Licensed MIT.\n *\n * Copyright (c) 2014 Eyal Schachter\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(){\n\tvar letters = {}, numbers = {\n\t\t'': 0,\n\t\tא: 1,\n\t\tב: 2,\n\t\tג: 3,\n\t\tד: 4,\n\t\tה: 5,\n\t\tו: 6,\n\t\tז: 7,\n\t\tח: 8,\n\t\tט: 9,\n\t\tי: 10,\n\t\tכ: 20,\n\t\tל: 30,\n\t\tמ: 40,\n\t\tנ: 50,\n\t\tס: 60,\n\t\tע: 70,\n\t\tפ: 80,\n\t\tצ: 90,\n\t\tק: 100,\n\t\tר: 200,\n\t\tש: 300,\n\t\tת: 400,\n\t\tתק: 500,\n\t\tתר: 600,\n\t\tתש: 700,\n\t\tתת: 800,\n\t\tתתק: 900,\n\t\tתתר: 1000\n\t}, i;\n\tfor (i in numbers) {\n\t\tletters[numbers[i]] = i;\n\t}\n\n\tfunction gematriya(num, limit) {\n\t\tif (typeof num !== 'number' && typeof num !== 'string') {\n\t\t\tthrow new TypeError('non-number or string given to gematriya()');\n\t\t}\n\t\tvar str = typeof num === 'string';\n\t\tif (str) {\n\t\t\tnum = num.replace(/('|\")/g,'');\n\t\t}\n\t\tnum = num.toString().split('').reverse();\n\t\tif (!str && limit) {\n\t\t\tnum = num.slice(0, limit);\n\t\t}\n\n\t\tnum = num.map(function g(n,i){\n\t\t\tif (str) {\n\t\t\t\treturn limit && numbers[n] < numbers[num[i - 1]] && numbers[n] < 100 ? numbers[n] * 1000 : numbers[n];\n\t\t\t} else {\n\t\t\t\tif (parseInt(n, 10) * Math.pow(10, i) > 1000) {\n\t\t\t\t\treturn g(n, i-3);\n\t\t\t\t}\n\t\t\t\treturn letters[parseInt(n, 10) * Math.pow(10, i)];\n\t\t\t}\n\t\t});\n\n\t\tif (str) {\n\t\t\treturn num.reduce(function(o,t){\n\t\t\t\treturn o + t;\n\t\t\t}, 0);\n\t\t} else {\n\t\t\tnum = num.reverse().join('').replace(/יה/g,'טו').replace(/יו/g,'טז').split('');\n\n\t\t\tif (num.length === 1) {\n\t\t\t\tnum.push(\"'\");\n\t\t\t} else if (num.length > 1) {\n\t\t\t\tnum.splice(-1, 0, '\"');\n\t\t\t}\n\n\t\t\treturn num.join('');\n\t\t}\n\t}\n\n\tif (typeof module !== 'undefined') {\n\t\tmodule.exports = gematriya;\n\t} else {\n\t\twindow.gematriya = gematriya;\n\t}\n})();\n","/*\n (c) 2011-2015, Vladimir Agafonkin\n SunCalc is a JavaScript library for calculating sun/moon position and light phases.\n https://github.com/mourner/suncalc\n*/\n\n(function () { 'use strict';\n\n// shortcuts for easier to read formulas\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos,\n tan = Math.tan,\n asin = Math.asin,\n atan = Math.atan2,\n acos = Math.acos,\n rad = PI / 180;\n\n// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas\n\n\n// date/time constants and conversions\n\nvar dayMs = 1000 * 60 * 60 * 24,\n J1970 = 2440588,\n J2000 = 2451545;\n\nfunction toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; }\nfunction fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); }\nfunction toDays(date) { return toJulian(date) - J2000; }\n\n\n// general calculations for position\n\nvar e = rad * 23.4397; // obliquity of the Earth\n\nfunction rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); }\nfunction declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); }\n\nfunction azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); }\nfunction altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); }\n\nfunction siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; }\n\nfunction astroRefraction(h) {\n if (h < 0) // the following formula works for positive altitudes only.\n h = 0; // if h = -0.08901179 a div/0 would occur.\n\n // formula 16.4 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad:\n return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));\n}\n\n// general sun calculations\n\nfunction solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); }\n\nfunction eclipticLongitude(M) {\n\n var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center\n P = rad * 102.9372; // perihelion of the Earth\n\n return M + C + P + PI;\n}\n\nfunction sunCoords(d) {\n\n var M = solarMeanAnomaly(d),\n L = eclipticLongitude(M);\n\n return {\n dec: declination(L, 0),\n ra: rightAscension(L, 0)\n };\n}\n\n\nvar SunCalc = {};\n\n\n// calculates sun position for a given date and latitude/longitude\n\nSunCalc.getPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = sunCoords(d),\n H = siderealTime(d, lw) - c.ra;\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: altitude(H, phi, c.dec)\n };\n};\n\n\n// sun times configuration (angle, morning name, evening name)\n\nvar times = SunCalc.times = [\n [-0.833, 'sunrise', 'sunset' ],\n [ -0.3, 'sunriseEnd', 'sunsetStart' ],\n [ -6, 'dawn', 'dusk' ],\n [ -12, 'nauticalDawn', 'nauticalDusk'],\n [ -18, 'nightEnd', 'night' ],\n [ 6, 'goldenHourEnd', 'goldenHour' ]\n];\n\n// adds a custom time to the times config\n\nSunCalc.addTime = function (angle, riseName, setName) {\n times.push([angle, riseName, setName]);\n};\n\n\n// calculations for sun times\n\nvar J0 = 0.0009;\n\nfunction julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); }\n\nfunction approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; }\nfunction solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); }\n\nfunction hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); }\n\n// returns set time for the given sun altitude\nfunction getSetJ(h, lw, phi, dec, n, M, L) {\n\n var w = hourAngle(h, phi, dec),\n a = approxTransit(w, lw, n);\n return solarTransitJ(a, M, L);\n}\n\n\n// calculates sun times for a given date and latitude/longitude\n\nSunCalc.getTimes = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n\n d = toDays(date),\n n = julianCycle(d, lw),\n ds = approxTransit(0, lw, n),\n\n M = solarMeanAnomaly(ds),\n L = eclipticLongitude(M),\n dec = declination(L, 0),\n\n Jnoon = solarTransitJ(ds, M, L),\n\n i, len, time, Jset, Jrise;\n\n\n var result = {\n solarNoon: fromJulian(Jnoon),\n nadir: fromJulian(Jnoon - 0.5)\n };\n\n for (i = 0, len = times.length; i < len; i += 1) {\n time = times[i];\n\n Jset = getSetJ(time[0] * rad, lw, phi, dec, n, M, L);\n Jrise = Jnoon - (Jset - Jnoon);\n\n result[time[1]] = fromJulian(Jrise);\n result[time[2]] = fromJulian(Jset);\n }\n\n return result;\n};\n\n\n// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas\n\nfunction moonCoords(d) { // geocentric ecliptic coordinates of the moon\n\n var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude\n M = rad * (134.963 + 13.064993 * d), // mean anomaly\n F = rad * (93.272 + 13.229350 * d), // mean distance\n\n l = L + rad * 6.289 * sin(M), // longitude\n b = rad * 5.128 * sin(F), // latitude\n dt = 385001 - 20905 * cos(M); // distance to the moon in km\n\n return {\n ra: rightAscension(l, b),\n dec: declination(l, b),\n dist: dt\n };\n}\n\nSunCalc.getMoonPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = moonCoords(d),\n H = siderealTime(d, lw) - c.ra,\n h = altitude(H, phi, c.dec),\n // formula 14.1 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));\n\n h = h + astroRefraction(h); // altitude correction for refraction\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: h,\n distance: c.dist,\n parallacticAngle: pa\n };\n};\n\n\n// calculations for illumination parameters of the moon,\n// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and\n// Chapter 48 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n\nSunCalc.getMoonIllumination = function (date) {\n\n var d = toDays(date || new Date()),\n s = sunCoords(d),\n m = moonCoords(d),\n\n sdist = 149598000, // distance from Earth to Sun in km\n\n phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)),\n inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)),\n angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) -\n cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra));\n\n return {\n fraction: (1 + cos(inc)) / 2,\n phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI,\n angle: angle\n };\n};\n\n\nfunction hoursLater(date, h) {\n return new Date(date.valueOf() + h * dayMs / 24);\n}\n\n// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article\n\nSunCalc.getMoonTimes = function (date, lat, lng, inUTC) {\n var t = new Date(date);\n if (inUTC) t.setUTCHours(0, 0, 0, 0);\n else t.setHours(0, 0, 0, 0);\n\n var hc = 0.133 * rad,\n h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc,\n h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx;\n\n // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)\n for (var i = 1; i <= 24; i += 2) {\n h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc;\n h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc;\n\n a = (h0 + h2) / 2 - h1;\n b = (h2 - h0) / 2;\n xe = -b / (2 * a);\n ye = (a * xe + b) * xe + h1;\n d = b * b - 4 * a * h1;\n roots = 0;\n\n if (d >= 0) {\n dx = Math.sqrt(d) / (Math.abs(a) * 2);\n x1 = xe - dx;\n x2 = xe + dx;\n if (Math.abs(x1) <= 1) roots++;\n if (Math.abs(x2) <= 1) roots++;\n if (x1 < -1) x1 = x2;\n }\n\n if (roots === 1) {\n if (h0 < 0) rise = i + x1;\n else set = i + x1;\n\n } else if (roots === 2) {\n rise = i + (ye < 0 ? x2 : x1);\n set = i + (ye < 0 ? x1 : x2);\n }\n\n if (rise && set) break;\n\n h0 = h2;\n }\n\n var result = {};\n\n if (rise) result.rise = hoursLater(t, rise);\n if (set) result.set = hoursLater(t, set);\n\n if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true;\n\n return result;\n};\n\n\n// export as Node module / AMD module / browser variable\nif (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc;\nelse if (typeof define === 'function' && define.amd) define(SunCalc);\nelse window.SunCalc = SunCalc;\n\n}());\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n/*\n * Many of the following algorithms were taken from hebrew calendar\n * routines by Maimonedes, from his Mishneh Torah, and implemented by\n * Nachum Dershowitz Department of Computer Science\n * (217) 333-4219 University of Illinois at Urbana-Champaign\n * nachum@cs.uiuc.edu 1304 West Springfield Avenue\n * Urbana, Illinois 61801\n *\n * The routines were included in the emacs 19 distribution.\n *\n */\nvar c = require('./common'), HDate = require('./hdate');\n\nvar concat = 'concat', range = c.range; // for client optimization\n\nvar INCOMPLETE = 0,\n\tREGULAR = 1,\n\tCOMPLETE = 2;\n\nfunction Sedra(hebYr, il) { // the Hebrew year\n\til = !!il;\n\tvar long_c = c.lngChesh(hebYr);\n\tvar short_k = c.shrtKis(hebYr);\n\tvar type;\n\tthis.year = hebYr;\n\tif (long_c && !short_k) {\n\t\ttype = COMPLETE;\n\t} else if (!long_c && short_k) {\n\t\ttype = INCOMPLETE;\n\t} else {\n\t\ttype = REGULAR;\n\t}\n\n\tvar rosh_hashana = new HDate(1, c.months.TISHREI, hebYr).abs();\n\tvar rosh_hashana_day = (rosh_hashana % 7) + 1;\n\n\t// find the first Saturday on or after Rosh Hashana\n\tthis.first_saturday = c.dayOnOrBefore(6, rosh_hashana + 6);\n\tvar leap = +c.LEAP(hebYr);\n\tthis.type = type;\n\tthis.rosh_hashana_day = rosh_hashana_day;\n\tthis.leap = leap;\n\tthis.il = il;\n\n\tvar core = \"\" + leap + rosh_hashana_day + type;\n\tif (types[core]) {\n\t\tthis.theSedraArray = types[core];\n\t} else {\n\t\tthis.theSedraArray = types[core + (+il)]; // cast to num, then concat\n\t}\n\n\tif (!this.theSedraArray) {\n\t\tconsole.log(this);\n\t\tthrow new TypeError(\"improper sedra year type calculated.\");\n\t}\n}\n\nvar parshiot = Sedra.parshiot = [\n\t[ 'Bereshit', 'Bereshis', 'בראשית' ], // 0\n\t[ 'Noach', 0, 'נח' ],\n\t[ 'Lech-Lecha', 0, 'לך-לך' ],\n\t[ 'Vayera', 0, 'וירא' ],\n\t[ 'Chayei Sara', 0, 'חי שרה' ],\n\t[ 'Toldot', 'Toldos', 'תולדות' ],\n\t[ 'Vayetzei', 0, 'ויצא' ],\n\t[ 'Vayishlach', 0, 'וישלח' ],\n\t[ 'Vayeshev', 0, 'וישב' ],\n\t[ 'Miketz', 0, 'מקץ' ],\n\t[ 'Vayigash', 0, 'ויגש' ], // 10\n\t[ 'Vayechi', 0, 'ויחי' ],\n\t[ 'Shemot', 'Shemos', 'שמות' ],\n\t[ 'Vaera', 0, 'וארא' ],\n\t[ 'Bo', 0, 'בא' ],\n\t[ 'Beshalach', 0, 'בשלח' ],\n\t[ 'Yitro', 'Yisro', 'יתרו' ],\n\t[ 'Mishpatim', 0, 'משפטים' ],\n\t[ 'Terumah', 0, 'תרומה' ],\n\t[ 'Tetzaveh', 0, 'תצוה' ],\n\t[ 'Ki Tisa', 'Ki Sisa', 'כי תשא' ], // 20\n\t[ 'Vayakhel', 0, 'ויקהל' ],\n\t[ 'Pekudei', 0, 'פקודי' ],\n\t[ 'Vayikra', 0, 'ויקרא' ],\n\t[ 'Tzav', 0, 'צו' ],\n\t[ 'Shmini', 0, 'שמיני' ],\n\t[ 'Tazria', 0, 'תזריע' ],\n\t[ 'Metzora', 0, 'מצרע' ],\n\t[ 'Achrei Mot', 'Achrei Mos', 'אחרי מות' ],\n\t[ 'Kedoshim', 0, 'קדשים' ],\n\t[ 'Emor', 0, 'אמור' ], // 30\n\t[ 'Behar', 0, 'בהר' ],\n\t[ 'Bechukotai', 'Bechukosai', 'בחקתי' ],\n\t[ 'Bamidbar', 0, 'במדבר' ],\n\t[ 'Nasso', 0, 'נשא' ],\n\t[ 'Beha\\'alotcha', 'Beha\\'aloscha', 'בהעלתך' ],\n\t[ 'Sh\\'lach', 0, 'שלח לך' ],\n\t[ 'Korach', 0, 'קורח' ],\n\t[ 'Chukat', 'Chukas', 'חקת' ],\n\t[ 'Balak', 0, 'בלק' ],\n\t[ 'Pinchas', 0, 'פינחס' ], // 40\n\t[ 'Matot', 'Matos', 'מטות' ],\n\t[ 'Masei', 0, 'מסעי' ],\n\t[ 'Devarim', 0, 'דברים' ],\n\t[ 'Vaetchanan', 'V\\'eschanan', 'ואתחנן' ],\n\t[ 'Eikev', 0, 'עקב' ],\n\t[ 'Re\\'eh', 0, 'ראה' ],\n\t[ 'Shoftim', 0, 'שופטים' ],\n\t[ 'Ki Teitzei', 'Ki Seitzei', 'כי תצא' ],\n\t[ 'Ki Tavo', 'Ki Savo', 'כי תבוא' ],\n\t[ 'Nitzavim', 0, 'נצבים' ], // 50\n\t[ 'Vayeilech', 0, 'וילך' ],\n\t[ 'Ha\\'Azinu', 0, 'האזינו' ]\n];\n\n\n// parsha doubler/undoubler\nfunction D(p) {\n\treturn -p;\n}\n\n// these are wrapped to protect them from [].concat()\nvar RH = [[ 'Rosh Hashana', 0, 'ראש השנה' ]]; //0\nvar YK = [[ 'Yom Kippur', 0, 'יום כיפור' ]]; //1\n\nvar SUKKOT = [[ 'Sukkot', 'Succos', 'סוכות' ]]; //0\nvar CHMSUKOT = [[ 'Chol hamoed Sukkot', 'Chol hamoed Succos', 'חול המועד סוכות' ]]; //0\nvar SHMINI = [[ 'Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת' ]]; //0\nvar EOY = [[ 'End-of-Year: Simchat-Torah, Sukkot', 'End-of-Year: Simchas-Torah, Succos', 'סופשנה: סוכות וסמחת תורה' ]]; //0\n\nvar PESACH = [[ 'Pesach', 0, 'פסח' ]]; //25\nvar CHMPESACH = [[ 'Chol hamoed Pesach', 0, 'חול המועד פסח' ]]; //25\nvar PESACH7 = [[ 'Second days of Pesach', 0, 'שביעי של פסח' ]]; //25\n\nvar SHAVUOT = [[ 'Shavuot', 'Shavuos', 'שבועות' ]]; //33\n\n\n\n// The ordinary year types (keviot)\n\n// names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n\nvar types = {\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g. 5753\n\t'020' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t//e.g. 5756\n\t'0220' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28),\n\t\t30, D(31), 33, SHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t//e.g. 5701\n\t'0510' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH, PESACH,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t// e.g. 5745\n\t'0511' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH,\n\t\t25, D(26), D(28), range(30, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Sunday. */\n\t//e.g. 5754\n\t'052' : [52][concat](YK, CHMSUKOT, range(0, 24), PESACH7, 25, D(26),\n\t\tD(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n\t * each have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5761\n\t'070' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, PESACH7,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Tuesday. */\n\t//e.g. 5716\n\t'072' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, CHMPESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\n\t/* -- The leap year types (keviot) -- */\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1200' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1201' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1220' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH,\n\t\tPESACH, range(28, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1221' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH, range(28, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n\t * Kislev both have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5768\n\t'150' : [52][concat](YK, CHMSUKOT, range(0, 28), PESACH7, range(29, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev both have 30 days), and has Passover start on Tuesday. */\n\t//eg. 5771\n\t'152' : [52][concat](YK, CHMSUKOT, range(0, 28), CHMPESACH, range(29, 49), D(50)),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g.5757\n\t'170' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t'1720' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t)\n};\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n//e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\n\nSedra.prototype.get = function(hDate) {\n\treturn abs(this, hDate.abs());\n};\n\n// returns an array describing the parsha on the first Saturday on or after absdate\nfunction abs(year, absDate) {\n\n\t// find the first saturday on or after today's date\n\tabsDate = c.dayOnOrBefore(6, absDate + 6);\n\n\tvar weekNum = (absDate - year.first_saturday) / 7;\n\tvar index = year.theSedraArray[weekNum];\n\n\tif (undefined === index) {\n\t\treturn abs(new Sedra(year.year + 1, year.il), absDate); // must be next year\n\t}\n\tif (typeof index == 'object') {\n\t\t// Shabbat has a chag. Return a description\n\t\treturn [index];\n\t}\n\tif (index >= 0) {\n\t\treturn [parshiot[index]];\n\t}\n\n\tindex = D(index); // undouble the parsha\n\treturn [parshiot[index], parshiot[index + 1]];\n}\n\nmodule.exports = Sedra;\n"]}
\ No newline at end of file
+{"version":3,"sources":["node_modules/browser-pack/_prelude.js","cities.js","client/hebcal.noloc.src.js","common.js","dafyomi.js","greg.js","hdate.js","hebcal.js","holidays.js","node_modules/events/events.js","node_modules/gematriya/gematriya.js","node_modules/suncalc/suncalc.js","sedra.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","getCity","city","split","map","w","c","join","toLowerCase","toUpperCase","slice","cities","listCities","Object","keys","Ashdod","Atlanta","Austin","Baghdad","Beer Sheva","Berlin","Baltimore","Bogota","Boston","Buenos Aires","Buffalo","Chicago","Cincinnati","Cleveland","Dallas","Denver","Detroit","Eilat","Gibraltar","Haifa","Hawaii","Houston","Jerusalem","Johannesburg","Kiev","La Paz","Livingston","London","Los Angeles","Miami","Melbourne","Mexico City","Montreal","Moscow","New York","Omaha","Ottawa","Panama City","Paris","Petach Tikvah","Philadelphia","Phoenix","Pittsburgh","Saint Louis","Saint Petersburg","San Francisco","Seattle","Sydney","Tel Aviv","Tiberias","Toronto","Vancouver","White Plains","Washington DC","addCity","info","Array","isArray","TypeError","nearest","lat","lon","name","dist","Math","sqrt","pow","abs","reduce","close","window","Hebcal","finished","warn","console","log","events","on","ready","emit","defineProperty","configurable","get","listeners","set","func","LEAP","x","hebElapsedDays","hYear","m_elapsed","floor","p_elapsed","h_elapsed","parts","day","alt_day","daysInYear","year","lngChesh","shrtKis","monthFromName","months","NISAN","IYYAR","ELUL","CHESHVAN","KISLEV","SIVAN","SHVAT","TAMUZ","TISHREI","TEVET","AV","test","ADAR_I","ADAR_II","filter","self","fun","thisp","v","funOrig","RegExp","k","indexOf","res","hasOwnProperty","val","props","getOwnPropertyDescriptor","value","arr","Number","gematriya","charCodeAt","monthNames","concat","days","SUN","MON","TUE","WED","THU","FRI","SAT","LANG","str","opts","MONTH_CNT","daysInMonth","month","monthNum","parseInt","dayYearNum","dayOnOrBefore","day_of_week","absdate","range","start","end","step","push","greg","shas","m","blatt","dafyomi","gregdate","cno","dno","osday","nsday","total","count","j","cday","dafcnt","Date","greg2abs","dafname","daf","dayOfYear","date","doy","getDate","getMonth","getFullYear","t0t1","tMonthLengths","monthLengths","lookupMonthNum","abs2greg","theDate","d0","n400","d1","n100","d2","n4","d3","n1","setFullYear","HDate","me","this","arguments","d","abs2hebrew","il","setLocation","long","trim","prev","next","setMonth","setDate","apply","defaultLocation","fix","fixMonth","fixDate","isLeapYear","hebrew2abs","tempabs","hebdate","mmap","RangeError","suntime","hdate","suncalc","getTimes","hourOffset","hours","sunrise","getTime","hour","onOrBefore","offset","addTime","prototype","enumerable","getTishreiMonth","nummonths","getDay","setTishreiMonth","gregEve","sunset","toString","getMonthName","setCity","hourMins","nightHour","nightHourMins","zemanim","chatzot","chatzot_night","alot_hashachar","alot_hashacher","misheyakir","misheyakir_machmir","sof_zman_shma","sof_zman_tfilla","mincha_gedola","mincha_ketana","plag_hamincha","tzeit","neitz_hachama","shkiah","getZemanim","z","addZeman","zeman","isSameDate","other","before","onOrAfter","after","getset","g","extend","base","into","TE","Month","defProp","writable","holidays","forEach","h","GregYear","lookupMonthName","GregMonth","hebyears","hebmonths","hm","Sedra","EventEmitter","find","strings","getYearObject","HebcalProto","MonthProto","GregYearProto","GregMonthProto","HDateProto","rosh","addHoliday","holiday","Event","add","findParsha","parsha","langs","max","getSedra","findSedra","find_f","replace","rosh_chodesh","omer","today","yesterday","tomorrow","pesach","sukkot","succot","succos","sukkos","shavuot","shavuos","rosh_hashana","rosh_hashanah","parshiot","LANGUAGE","loc","defaultCity","candleLighting","mins","havdalah","__year","getName","prevMonth","molad","m_adj","retMolad","toInt","round","chalakim","minutes","shabbat_mevarchim","_calc","setHours","setMinutes","setSeconds","num","sm","shabbos_mevarchim","shabbos_mevorchim","getMonthObject","__month","orig","__cache","sedraYear","p","getParsha","all","routine","is","prop","hd","tachanun","mapAbs","some","yes_prev","checkNext","y","atzmaut","NONE","ret","ALL_CONGS","SHACHARIT","MINCHA","tachanun_uf","shacharit","mincha","all_congs","hallel","whole","half","rc","WHOLE","HALF","checkTimes","obj","compare","time","nowGreg","now","almostTime","beforeZeman","customTimes","customs","refreshInterval","custom","refresh","ms","clearInterval","setInterval","unref","getGregMonthObject","__gregmonth","getGregYearObject","Chanukah","CHM","desc","Sukkot","Pesach","mask","USER_EVENT","LIGHT_CANDLES","YOM_TOV_ENDS","CHUL_ONLY","IL_ONLY","LIGHT_CANDLES_TZEIS","tmpDate","Shabbat","Shabbos","masks","myDate","getDesc","names","isIL","ev","RH","_events","_maxListeners","undefined","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","type","er","handler","len","args","error","err","context","addListener","listener","newListener","warned","trace","once","removeListener","fired","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","limit","reverse","numbers","letters","","א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת","תק","תר","תש","תת","תתק","תתר","toJulian","valueOf","dayMs","J1970","fromJulian","toDays","J2000","rightAscension","b","atan","sin","cos","tan","declination","asin","azimuth","H","phi","dec","altitude","siderealTime","lw","rad","astroRefraction","solarMeanAnomaly","eclipticLongitude","M","C","P","PI","sunCoords","L","ra","julianCycle","J0","approxTransit","Ht","solarTransitJ","ds","hourAngle","acos","getSetJ","moonCoords","F","dt","hoursLater","atan2","SunCalc","getPosition","lng","times","angle","riseName","setName","Jset","Jrise","Jnoon","result","solarNoon","nadir","getMoonPosition","pa","distance","parallacticAngle","getMoonIllumination","sdist","inc","fraction","phase","getMoonTimes","inUTC","setUTCHours","h1","h2","rise","xe","ye","roots","x1","x2","dx","hc","h0","define","amd","hebYr","long_c","short_k","COMPLETE","INCOMPLETE","REGULAR","rosh_hashana_day","first_saturday","leap","core","types","theSedraArray","D","absDate","weekNum","index","YK","SUKKOT","CHMSUKOT","SHMINI","EOY","PESACH","CHMPESACH","PESACH7","SHAVUOT","020","0220","0510","0511","052","070","072","1200","1201","1220","1221","150","152","170","1720","hDate"],"mappings":"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","file":"client/hebcal.noloc.min.js","sourceRoot":"https://github.com/hebcal/hebcal-js/tree/v2.2.3/","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o.\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n\n// name, lat, long, Israel\nvar cities = {\n\t\"Ashdod\": [ 31.8, 34.633, true ],\n\t\"Atlanta\": [ 33.75, -84.383, false ],\n\t\"Austin\": [ 30.266, -97.75, false ],\n\t\"Baghdad\": [ 33.233, 44.366, false ],\n\t\"Beer Sheva\": [ 31.25, 34.783, true ],\n\t\"Berlin\": [ 52.516, 13.4, false ],\n\t\"Baltimore\": [ 39.283, -76.6, false ],\n\t\"Bogota\": [ 4.6, -74.083, false ],\n\t\"Boston\": [ 42.333, -71.066, false ],\n\t\"Buenos Aires\": [ -34.616, -58.4, false ],\n\t\"Buffalo\": [ 42.883, -78.866, false ],\n\t\"Chicago\": [ 41.833, -87.75, false ],\n\t\"Cincinnati\": [ 39.1, -84.516, false ],\n\t\"Cleveland\": [ 41.5, -81.683, false ],\n\t\"Dallas\": [ 32.783, -96.8, false ],\n\t\"Denver\": [ 39.733, -104.983, false ],\n\t\"Detroit\": [ 42.333, -83.033, false ],\n\t\"Eilat\": [ 29.55, 34.95, true ],\n\t\"Gibraltar\": [ 36.133, -5.35, false ],\n\t\"Haifa\": [ 32.816, 34.983, true ],\n\t\"Hawaii\": [ 19.5, -155.5, false ],\n\t\"Houston\": [ 29.766, -95.366, false ],\n\t\"Jerusalem\": [ 31.783, 35.233, true ],\n\t\"Johannesburg\": [ -26.166, 28.033, false ],\n\t\"Kiev\": [ 50.466, 30.483, false ],\n\t\"La Paz\": [ -16.5, -68.15, false ],\n\t\"Livingston\": [ 40.283, -74.3, false ],\n\t\"London\": [ 51.5, -0.166, false ],\n\t\"Los Angeles\": [ 34.066, -118.25, false ],\n\t\"Miami\": [ 25.766, -80.2, false ],\n\t\"Melbourne\": [ -37.866, 145.133, false ],\n\t\"Mexico City\": [ 19.4, -99.15, false ],\n\t\"Montreal\": [ 45.5, -73.6, false ],\n\t\"Moscow\": [ 55.75, 37.7, false ],\n\t\"New York\": [ 40.716, -74.016, false ],\n\t\"Omaha\": [ 41.266, -95.933, false ],\n\t\"Ottawa\": [ 45.7, -76.183, false ],\n\t\"Panama City\": [ 8.966, -79.533, false ],\n\t\"Paris\": [ 48.866, 2.333, false ],\n\t\"Petach Tikvah\": [ 32.083, 34.883, true ],\n\t\"Philadelphia\": [ 39.95, -75.166, false ],\n\t\"Phoenix\": [ 33.45, -112.066, false ],\n\t\"Pittsburgh\": [ 40.433, -80, false ],\n\t\"Saint Louis\": [ 38.633, -90.2, false ],\n\t\"Saint Petersburg\": [ 59.883, 30.25, false ],\n\t\"San Francisco\": [ 37.783, -122.416, false ],\n\t\"Seattle\": [ 47.6, -122.333, false ],\n\t\"Sydney\": [ -33.916, 151.283, false ],\n\t\"Tel Aviv\": [ 32.083, 34.766, true ],\n\t\"Tiberias\": [ 32.966, 35.533, true ],\n\t\"Toronto\": [ 43.633, -79.4, false ],\n\t\"Vancouver\": [ 49.266, -123.116, false ],\n\t\"White Plains\": [ 41.033, -73.75, false ],\n\t\"Washington DC\": [ 38.916, -77, false ]\n};\n\nfunction getCity(city) {\n\tcity = city.split(/\\s+/).map(function(w,i,c){\n\t\tif (c.join(' ').toLowerCase() === 'washington dc' && i === 1) { // special case\n\t\t\treturn w.toUpperCase();\n\t\t}\n\t\treturn w[0].toUpperCase() + w.slice(1).toLowerCase();\n\t}).join(' ');\n\treturn cities[city] || [ 0, 0, false ];\n}\nexports.getCity = getCity;\n\nfunction listCities() {\n\treturn Object.keys(cities);\n}\nexports.listCities = listCities;\n\nexports.addCity = function(city, info) {\n\tif (!Array.isArray(info)) {\n\t\tthrow new TypeError('adding non-array city');\n\t}\n\tif (info.length == 5) {\n\t\tvar i = info.slice();\n\t\tinfo = [];\n\t\tinfo[0] = (i[0] * 60 + i[1]) / 60;\n\t\tinfo[1] = (i[2] * 60 + i[3]) / 60;\n\t\tinfo[2] = i[4];\n\t}\n\tif (info.length != 3) {\n\t\tthrow new TypeError('length of city array is not 3');\n\t}\n\tcity = city.split(/\\s+/).map(function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase()}).join(' ');\n\tcities[city] = info;\n};\n\nexports.nearest = function(lat, lon) {\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to nearest()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to nearest()');\n\t}\n\n\treturn listCities().map(function(city){\n\t\tvar i = getCity(city);\n\t\treturn {\n\t\t\tname: city,\n\t\t\tdist: Math.sqrt( Math.pow(Math.abs(i[0] - lat), 2) + Math.pow(Math.abs(i[1] - lon), 2) )\n\t\t};\n\t}).reduce(function(close,city){\n\t\treturn close.dist < city.dist ? close : city;\n\t}).name;\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at \n\tdanny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter\n */\nwindow.Hebcal = require('..');\n\nvar finished = false, warn = (typeof console != 'undefined' && (console.warn || console.log)) || function(){};\n\nHebcal.events.on('newListener', function(e){\n\tif (e === 'ready' && !finished && Hebcal.ready) {\n\t\tfinished = Hebcal.events.emit('ready');\n\t}\n});\n\nObject.defineProperty(Hebcal, 'onready', {\n\tconfigurable: true,\n\n\tget: function() {\n\t\twarn('Getting deprecated property Hebcal.onready');\n\t\treturn Hebcal.events.listeners('ready')[0];\n\t},\n\tset: function(func) {\n\t\twarn('Setting deprecated property Hebcal.onready; use Hebcal.events.on(\\'ready\\', func) instead');\n\t\tHebcal.events.on('ready', func);\n\t}\n});\n\nHebcal.ready = true;\nfinished = Hebcal.events.emit('ready');","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar gematriya = require('gematriya');\n\nvar charCodeAt = 'charCodeAt';\n\nvar months = exports.months = {\n\tNISAN : 1,\n\tIYYAR : 2,\n\tSIVAN : 3,\n\tTAMUZ : 4,\n\tAV : 5,\n\tELUL : 6,\n\tTISHREI : 7,\n\tCHESHVAN: 8,\n\tKISLEV : 9,\n\tTEVET : 10,\n\tSHVAT : 11,\n\tADAR_I : 12,\n\tADAR_II : 13\n};\n\nvar monthNames = [\n\t[\"\", 0, \"\"],\n\t[\"Nisan\", 0, \"ניסן\"],\n\t[\"Iyyar\", 0, \"אייר\"],\n\t[\"Sivan\", 0, \"סיון\"],\n\t[\"Tamuz\", 0, \"תמוז\"],\n\t[\"Av\", 0, \"אב\"],\n\t[\"Elul\", 0, \"אלול\"],\n\t[\"Tishrei\", 0, \"תשרי\"],\n\t[\"Cheshvan\", 0, \"חשון\"],\n\t[\"Kislev\", 0, \"כסלו\"],\n\t[\"Tevet\", 0, \"טבת\"],\n\t[\"Sh'vat\", 0, \"שבט\"]\n];\nexports.monthNames = [\n\tmonthNames.concat([[\"Adar\", 0, \"אדר\"],[\"Nisan\", 0, \"ניסן\"]]),\n\tmonthNames.concat([[\"Adar 1\", 0, \"אדר א'\"],[\"Adar 2\", 0, \"אדר ב'\"],[\"Nisan\", 0, \"ניסן\"]])\n];\n\nexports.days = {\n\tSUN: 0,\n\tMON: 1,\n\tTUE: 2,\n\tWED: 3,\n\tTHU: 4,\n\tFRI: 5,\n\tSAT: 6\n};\n\nexports.LANG = function(str, opts){\n\treturn opts == 'h' && str[2] || (opts == 'a' && str[1] || str[0]);\n};\n\nfunction LEAP(x) {\n\treturn (1 + x * 7) % 19 < 7;\n}\nexports.LEAP = LEAP;\n\nexports.MONTH_CNT = function(x) {\n\treturn 12 + LEAP(x); // boolean is cast to 1 or 0\n};\n\nexports.daysInMonth = function(month, year) {\n\treturn 30 - (month == months.IYYAR ||\n\tmonth == months.TAMUZ ||\n\tmonth == months.ELUL ||\n\tmonth == months.TEVET ||\n\tmonth == months.ADAR_II ||\n\t(month == months.ADAR_I && !LEAP(year)) ||\n\t(month == months.CHESHVAN && !lngChesh(year)) ||\n\t(month == months.KISLEV && shrtKis(year)));\n};\n\nexports.monthNum = function(month) {\n\treturn typeof month === 'number' ? month :\n\t\tmonth[charCodeAt](0) >= 1488 && month[charCodeAt](0) <= 1514 && /('|\")/.test(month) ? gematriya(month) :\n\t\t\tmonth[charCodeAt](0) >= 48 && month[charCodeAt](0) <= 57 /* number */ ? parseInt(month, 10) : monthFromName(month);\n};\n\nexports.dayYearNum = function(str) {\n\treturn typeof str === 'number' ? str :\n\t\tstr[charCodeAt](0) >= 1488 && str[charCodeAt](0) <= 1514 ? gematriya(str, true) : parseInt(str, 10);\n};\n\n/* Days from sunday prior to start of Hebrew calendar to mean\n conjunction of Tishrei in Hebrew YEAR\n */\nfunction hebElapsedDays(hYear){\n\t// borrowed from original JS\n\tvar m_elapsed = 235 * Math.floor((hYear - 1) / 19) +\n\t\t12 * ((hYear - 1) % 19) +\n\t\tMath.floor(((((hYear - 1) % 19) * 7) + 1) / 19);\n\n\tvar p_elapsed = 204 + (793 * (m_elapsed % 1080));\n\n\tvar h_elapsed = 5 + (12 * m_elapsed) +\n\t\t793 * Math.floor(m_elapsed / 1080) +\n\t\tMath.floor(p_elapsed / 1080);\n\n\tvar parts = (p_elapsed % 1080) + 1080 * (h_elapsed % 24);\n\n\tvar day = 1 + 29 * m_elapsed + Math.floor(h_elapsed / 24);\n\tvar alt_day = day + ((parts >= 19440) ||\n\t\t((2 == (day % 7)) && (parts >= 9924) && !(LEAP (hYear))) ||\n\t\t((1 == (day % 7)) && (parts >= 16789) && LEAP (hYear - 1)));\n\n\treturn alt_day + ((alt_day % 7) === 0 ||\n\t\t(alt_day % 7) == 3 ||\n\t\t(alt_day % 7) == 5);\n}\nexports.hebElapsedDays = hebElapsedDays;\n\n/* Number of days in the hebrew YEAR */\nfunction daysInYear(year)\n{\n\treturn hebElapsedDays(year + 1) - hebElapsedDays(year);\n}\nexports.daysInYear = daysInYear;\n\n/* true if Cheshvan is long in Hebrew YEAR */\nfunction lngChesh(year) {\n\treturn (daysInYear(year) % 10) == 5;\n}\nexports.lngChesh = lngChesh;\n\n/* true if Kislev is short in Hebrew YEAR */\nfunction shrtKis(year) {\n\treturn (daysInYear(year) % 10) == 3;\n}\nexports.shrtKis = shrtKis;\n\nfunction monthFromName(c) {\n\t/*\n\tthe Hebrew months are unique to their second letter\n\tN Nisan (November?)\n\tI Iyyar\n\tE Elul\n\tC Cheshvan\n\tK Kislev\n\t1 1Adar\n\t2 2Adar\n\tSi Sh Sivan, Shvat\n\tTa Ti Te Tamuz, Tishrei, Tevet\n\tAv Ad Av, Adar\n\n\tאב אד אי אל אב אדר אייר אלול\n\tח חשון\n\tט טבת\n\tכ כסלב\n\tנ ניסן\n\tס סיון\n\tש שבט\n\tתמ תש תמוז תשרי\n\t*/\n\tswitch (c.toLowerCase()[0]) {\n\t\tcase 'n':\n\t\tcase 'נ':\n\t\t\treturn (c.toLowerCase()[1] == 'o') ? /* this catches \"november\" */\n\t\t\t\t0 : months.NISAN;\n\t\tcase 'i':\n\t\t\treturn months.IYYAR;\n\t\tcase 'e':\n\t\t\treturn months.ELUL;\n\t\tcase 'c':\n\t\tcase 'ח':\n\t\t\treturn months.CHESHVAN;\n\t\tcase 'k':\n\t\tcase 'כ':\n\t\t\treturn months.KISLEV;\n\t\tcase 's':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.SIVAN;\n\t\t\t\tcase 'h':\n\t\t\t\t\treturn months.SHVAT;\n\t\t\t\tdefault:\n\t\t\t\t\treturn 0;\n\t\t\t}\n\t\tcase 't':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'a':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'i':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t\tcase 'e':\n\t\t\t\t\treturn months.TEVET;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'a':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'v':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif (/(1|[^i]i|a|א)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ס':\n\t\t\treturn months.SIVAN;\n\t\tcase 'ש':\n\t\t\treturn months.SHVAT;\n\t\tcase 'א':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'ב':\n\t\t\t\t\treturn months.AV;\n\t\t\t\tcase 'ד':\n\t\t\t\t\tif (/(2|ii|b|ב)$/i.test(c)) {\n\t\t\t\t\t\treturn months.ADAR_I;\n\t\t\t\t\t}\n\t\t\t\t\treturn months.ADAR_II; // else assume sheini\n\t\t\t\tcase 'י':\n\t\t\t\t\treturn months.IYYAR;\n\t\t\t\tcase 'ל':\n\t\t\t\t\treturn months.ELUL;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'ת':\n\t\t\tswitch (c.toLowerCase()[1]) {\n\t\t\t\tcase 'מ':\n\t\t\t\t\treturn months.TAMUZ;\n\t\t\t\tcase 'ש':\n\t\t\t\t\treturn months.TISHREI;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn 0;\n};\nexports.monthFromName = monthFromName;\n\n/* Note: Applying this function to d+6 gives us the DAYNAME on or after an\n * absolute day d. Similarly, applying it to d+3 gives the DAYNAME nearest to\n * absolute date d, applying it to d-1 gives the DAYNAME previous to absolute\n * date d, and applying it to d+7 gives the DAYNAME following absolute date d.\n\n**/\nexports.dayOnOrBefore = function(day_of_week, absdate) {\n\treturn absdate - ((absdate - day_of_week) % 7);\n};\n\nexports.map = function(self, fun, thisp) {\n\t// originally written for http://github.com/Scimonster/localbrowse\n\tif (self === null || typeof fun != 'function') {\n\t\tthrow new TypeError();\n\t}\n\tvar t = Object(self);\n\tvar res = {};\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tres[i] = fun.call(thisp, t[i], i, t);\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = filter(arr, true); // for...in isn't guaranteed to give any meaningful order\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n};\n\nfunction filter(self, fun, thisp) {\n\tif (self === null) {\n\t\tthrow new TypeError('self is null');\n\t}\n\tswitch (typeof fun) {\n\t\tcase 'function':\n\t\t\tbreak; // do nothing\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn self[fun]; // str/num is just the property\n\t\tcase 'boolean':\n\t\t\t// boolean shortcuts to filter only truthy/falsy values\n\t\t\tif (fun) {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn v;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn !v;\n\t\t\t\t};\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'object':\n\t\t\tvar funOrig = fun; // save it\n\t\t\tif (fun instanceof RegExp) { // test the val against the regex\n\t\t\t\tfun = function (v) {\n\t\t\t\t\treturn funOrig.test(v);\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t} else if (Array.isArray(fun)) { // keep these keys\n\t\t\t\tfun = function (v, k) {\n\t\t\t\t\treturn funOrig.indexOf(k) > -1;\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tthrow new TypeError('fun is not a supported type');\n\t}\n\tvar res = {};\n\tvar t = Object(self);\n\tfor (var i in t) {\n\t\tif (t.hasOwnProperty(i)) {\n\t\t\tvar val = t[i]; // in case fun mutates it\n\t\t\tif (fun.call(thisp, val, i, t)) {\n\t\t\t\t// define property on res in the same manner as it was originally defined\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(t, i);\n\t\t\t\tprops.value = val;\n\t\t\t\tObject.defineProperty(res, i, props);\n\t\t\t}\n\t\t}\n\t}\n\tif (Array.isArray(self) || typeof self == 'string') { // came as an array, return an array\n\t\tvar arr = [];\n\t\tfor (i in res) {\n\t\t\tarr[Number(i)] = res[i];\n\t\t}\n\t\tres = arr.filter(function (v) {\n\t\t\treturn v;\n\t\t}); // for...in isn't guaranteed to give any meaningful order\n\t\t// can't use c.filter(arr,true) here because that would infitely recurse\n\t\tif (typeof self == 'string') {\n\t\t\tres = res.join('');\n\t\t}\n\t}\n\treturn res;\n}\nexports.filter = filter;\n\nexports.range = function(start, end, step) {\n\tstep = step || 1;\n\tif (step < 0) {\n\t\tstep = 0 - step;\n\t}\n\n\tvar arr = [], i = start;\n\tif (start < end) {\n\t\tfor (; i <= end; i += step) {\n\t\t\tarr.push(i);\n\t\t}\n\t} else {\n\t\tfor (; i >= end; i -= step) {\n\t\t\tarr.push(i);\n\t\t}\n\t}\n\treturn arr;\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tgematriya = require('gematriya');\n\nvar shas = [\n\t// sname, aname, hname, blatt\n\t[ \"Berachot\", \"Berachos\", \"ברכות\", 64 ],\n\t[ \"Shabbat\", \"Shabbos\", \"שבת\", 157 ],\n\t[ \"Eruvin\", \"Eruvin\", \"עירובין\", 105 ],\n\t[ \"Pesachim\", 0, \"פסחים\", 121 ],\n\t[ \"Shekalim\", 0, \"שקלים\", 22 ],\n\t[ \"Yoma\", 0, \"יומא\", 88 ],\n\t[ \"Sukkah\", 0, \"סוכה\", 56 ],\n\t[ \"Beitzah\", 0, \"ביצה\", 40 ],\n\t[ \"Rosh Hashana\", 0, \"ראש השנה\", 35 ],\n\t[ \"Taanit\", \"Taanis\", \"תענית\", 31 ],\n\t[ \"Megillah\", 0, \"מגילה\", 32 ],\n\t[ \"Moed Katan\", 0, \"מועד קטן\", 29 ],\n\t[ \"Chagigah\", 0, \"חגיגה\", 27 ],\n\t[ \"Yevamot\", \"Yevamos\", \"יבמות\", 122 ],\n\t[ \"Ketubot\", \"Kesubos\", \"כתובות\", 112 ],\n\t[ \"Nedarim\", 0, \"נדרים\", 91 ],\n\t[ \"Nazir\", 0, \"נזיר\", 66 ],\n\t[ \"Sotah\", 0, \"סוטה\", 49 ],\n\t[ \"Gitin\", 0, \"גיטין\", 90 ],\n\t[ \"Kiddushin\", 0, \"קידושין\", 82 ],\n\t[ \"Baba Kamma\", 0, \"בבא קמא\", 119 ],\n\t[ \"Baba Metzia\", 0, \"בבא מציעא\", 119 ],\n\t[ \"Baba Batra\", \"Baba Basra\", \"בבא בתרא\", 176 ],\n\t[ \"Sanhedrin\", 0, \"סנהדרין\", 113 ],\n\t[ \"Makkot\", \"Makkos\", \"מכות\", 24 ],\n\t[ \"Shevuot\", \"Shevuos\", \"שבועות\", 49 ],\n\t[ \"Avodah Zarah\", 0, \"עבודה זרה\", 76 ],\n\t[ \"Horayot\", \"Horayos\", \"הוריות\", 14 ],\n\t[ \"Zevachim\", 0, \"זבחים\", 120 ],\n\t[ \"Menachot\", \"Menachos\", \"מנחות\", 110 ],\n\t[ \"Chullin\", 0, \"חולין\", 142 ],\n\t[ \"Bechorot\", \"Bechoros\", \"בכורות\", 61 ],\n\t[ \"Arachin\", 0, \"ערכין\", 34 ],\n\t[ \"Temurah\", 0, \"תמורה\", 34 ],\n\t[ \"Keritot\", \"Kerisos\", \"כריתות\", 28 ],\n\t[ \"Meilah\", 0, \"מעילה\", 22 ],\n\t[ \"Kinnim\", 0, \"קנים\", 4 ],\n\t[ \"Tamid\", 0, \"תמיד\", 10 ],\n\t[ \"Midot\", \"Midos\", \"מדות\", 4 ],\n\t[ \"Niddah\", 0, \"נדה\", 73 ]\n].map(function(m){\n\treturn {name: m.slice(0,3), blatt: m[3]};\n});\n\nexports.dafyomi = function(gregdate) {\n\tvar dafcnt = 40, cno, dno, osday, nsday, total, count, j, cday, blatt;\n\n\tif (!(gregdate instanceof Date)) {\n\t\tthrow new TypeError('non-date given to dafyomi');\n\t}\n\n\tosday = greg.greg2abs(new Date(1923, 8, 11));\n\tnsday = greg.greg2abs(new Date(1975, 5, 24));\n\tcday = greg.greg2abs(gregdate);\n\n\tif (cday < osday) { // no cycle; dy didn't start yet\n\t\treturn {name: [], blatt: 0};\n\t}\n\tif (cday >= nsday) { // \"new\" cycle\n\t\tcno = 8 + ( (cday - nsday) / 2711 );\n\t\tdno = (cday - nsday) % 2711;\n\t} else { // old cycle\n\t\tcno = 1 + ( (cday - osday) / 2702 );\n\t\tdno = (cday - osday) % 2702;\n\t}\n\n\t// Find the daf taking note that the cycle changed slightly after cycle 7.\n\n\ttotal = blatt = 0;\n\tcount = -1;\n\n\t// Fix Shekalim for old cycles\n\tif (cno <= 7) {\n\t\tshas[4].blatt = 13;\n\t} else {\n\t\tshas[4].blatt = 22;\n\t}\n\n\t// Find the daf\n\tj = 0;\n\twhile (j < dafcnt) {\n\t\tcount++;\n\t\ttotal = total + shas[j].blatt - 1;\n\t\tif (dno < total) {\n\t\t\tblatt = (shas[j].blatt + 1) - (total - dno);\n\t\t\t// fiddle with the weird ones near the end\n\t\t\tswitch (count) {\n\t\t\t\tcase 36:\n\t\t\t\t\tblatt = blatt + 21;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37:\n\t\t\t\t\tblatt = blatt + 24;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38:\n\t\t\t\t\tblatt = blatt + 33;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Bailout\n\t\t\tj = 1 + dafcnt;\n\t\t}\n\t\tj++;\n\t}\n\n\treturn {name: shas[count].name, blatt: blatt};\n};\n\nexports.dafname = function(daf, o) {\n\treturn c.LANG(daf.name, o) + ' ' + (o === 'h' ? gematriya(daf.blatt) : daf.blatt);\n};\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar floor = Math.floor,\n\tt0t1 = [30, 31],\n\ttMonthLengths = [0, 31, 28, 31].concat(t0t1, t0t1, 31, t0t1, t0t1),\n\tmonthLengths = [\n\t\ttMonthLengths.slice()\n\t];\ntMonthLengths[2]++;\nmonthLengths.push(tMonthLengths);\n\nexports.daysInMonth = function(month, year) { // 1 based months\n\treturn monthLengths[+LEAP(year)][month];\n};\n\nexports.monthNames = [\n\t'',\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December'\n];\n\nexports.lookupMonthNum = function(month) {\n\treturn new Date(month + ' 1').getMonth() + 1;\n};\n\nfunction dayOfYear (date) {\n\tif (!date instanceof Date) {\n\t\tthrow new TypeError('Argument to greg.dayOfYear not a Date');\n\t}\n\tvar doy = date.getDate() + 31 * date.getMonth();\n\tif (date.getMonth() > 1) { // FEB\n\t\tdoy -= floor((4 * (date.getMonth() + 1) + 23) / 10);\n\t\tif (LEAP(date.getFullYear())) {\n\t\t\tdoy++;\n\t\t}\n\t}\n\treturn doy;\n}\nexports.dayOfYear = dayOfYear;\n\nfunction LEAP (year) {\n\treturn !(year % 4) && ( !!(year % 100) || !(year % 400) );\n}\nexports.LEAP = LEAP;\n\nexports.greg2abs = function(date) { // \"absolute date\"\n\tvar year = date.getFullYear() - 1;\n\treturn (dayOfYear(date) + // days this year\n\t\t\t365 * year + // + days in prior years\n\t\t\t( floor(year / 4) - // + Julian Leap years\n\t\t\tfloor(year / 100) + // - century years\n\t\t\tfloor(year / 400))); // + Gregorian leap years\n};\n\n\n/*\n * See the footnote on page 384 of ``Calendrical Calculations, Part II:\n * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.\n * Clamen, Software--Practice and Experience, Volume 23, Number 4\n * (April, 1993), pages 383-404 for an explanation.\n */\nexports.abs2greg = function(theDate) {\n// calculations copied from original JS code\n\n\tvar d0 = theDate - 1;\n\tvar n400 = floor(d0 / 146097);\n\tvar d1 = floor(d0 % 146097);\n\tvar n100 = floor(d1 / 36524);\n\tvar d2 = d1 % 36524;\n\tvar n4 = floor(d2 / 1461);\n\tvar d3 = d2 % 1461;\n\tvar n1 = floor(d3 / 365);\n\n\tvar day = ((d3 % 365) + 1);\n\tvar year = (400 * n400 + 100 * n100 + 4 * n4 + n1);\n\n\tif (4 == n100 || 4 == n1) {\n\t\treturn new Date(year, 11, 31);\n\t}\n\n\treturn new Date(new Date(++year, 0, day).setFullYear(year)); // new Date() is very smart\n};","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tgreg = require('./greg'),\n\tsuncalc = require('suncalc'),\n\tcities = require('./cities'),\n\tgematriya = require('gematriya');\n\nsuncalc.addTime(-16.1, 'alot_hashachar', 0);\nsuncalc.addTime(-11.5, 'misheyakir', 0);\nsuncalc.addTime(-10.2, 'misheyakir_machmir', 0);\nsuncalc.addTime(-8.5, 0, 'tzeit');\n\n// for minifying optimizations\nvar getFullYear = 'getFullYear',\n\tgetMonth = 'getMonth',\n\tgetDate = 'getDate',\n\tgetTime = 'getTime',\n\tabs = 'abs',\n\thour = 'hour',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tMONTH_CNT = c.MONTH_CNT,\n\tdaysInMonth = c.daysInMonth,\n\tdayOnOrBefore = c.dayOnOrBefore,\n\tprototype = HDate.prototype;\n\nfunction HDate(day, month, year) {\n\tvar me = this;\n\tswitch (arguments.length) {\n\t\tcase 0:\n\t\t\treturn new HDate(new Date());\n\t\tcase 1:\n\t\t\tif (typeof day == 'undefined') {\n\t\t\t\treturn new HDate();\n\t\t\t} else if (day instanceof Date) {\n\t\t\t\t// we were passed a Gregorian date, so convert it\n\t\t\t\tvar d = abs2hebrew(greg.greg2abs(day));\n\t\t\t\t/*if (d.sunset() < day) {\n\t\t\t\t\td = d.next();\n\t\t\t\t}*/\n\t\t\t\treturn d;\n\t\t\t} else if (day instanceof HDate) {\n\t\t\t\tvar d = new HDate(day[getDate](), day[getMonth](), day[getFullYear]());\n\t\t\t\td.il = day.il;\n\t\t\t\td.setLocation(d.lat, d.long);\n\t\t\t\treturn d;\n\t\t\t} else if (typeof day == 'string') {\n\t\t\t\tswitch (day.toLowerCase().trim()) {\n\t\t\t\t\tcase 'today':\n\t\t\t\t\t\treturn new HDate();\n\t\t\t\t\tcase 'yesterday':\n\t\t\t\t\t\treturn new HDate().prev();\n\t\t\t\t\tcase 'tomorrow':\n\t\t\t\t\t\treturn new HDate().next();\n\t\t\t\t}\n\t\t\t\tif (/\\s/.test(day)) {\n\t\t\t\t\tvar s = day.split(/\\s+/);\n\t\t\t\t\tif (s.length == 2) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1]);\n\t\t\t\t\t} else if (s.length == 3) {\n\t\t\t\t\t\treturn new HDate(s[0], s[1], s[2]);\n\t\t\t\t\t} else if (s.length == 4) { // should only be if s[1] is Adar\n\t\t\t\t\t\tif (/i/i.test(s[2])) { // Using I[I] syntax\n\t\t\t\t\t\t\ts[2] = s[2].length;\n\t\t\t\t\t\t} // otherwise using 1|2 syntax\n\t\t\t\t\t\treturn new HDate(s[0], s[1] + s[2], s[3]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof day == 'number') { // absolute date\n\t\t\t\treturn abs2hebrew(day);\n\t\t\t}\n\t\t\tthrow new TypeError('HDate called with bad argument');\n\t\tcase 2:\n\t\t\treturn new HDate(day, month, (new HDate)[getFullYear]());\n\t\tcase 3:\n\t\t\tme.day = me.month = 1;\n\t\t\tme.year = c.dayYearNum(year);\n\n\t\t\tme.setMonth(c.monthNum(month));\n\t\t\tme.setDate(c.dayYearNum(day));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new TypeError('HDate called with bad arguments');\n\t}\n\n\treturn me.setLocation.apply(me, HDate.defaultLocation);\n}\n\nHDate.defaultLocation = [0, 0];\nObject.defineProperty(HDate, 'defaultCity', {\n\tenumerable: true,\n\tconfigurable: true,\n\n\tget: function() {\n\t\treturn cities.nearest(HDate.defaultLocation[0], HDate.defaultLocation[1]);\n\t},\n\tset: function(city) {\n\t\tHDate.defaultLocation = cities.getCity(city).slice(0, 2);\n\t}\n});\n\nfunction fix(date) {\n\tfixMonth(date);\n\tfixDate(date);\n}\n\nfunction fixDate(date) {\n\tif (date.day < 1) {\n\t\tif (date.month == TISHREI) {\n\t\t\tdate.year -= 1;\n\t\t}\n\t\tdate.day += daysInMonth(date.month, date.year);\n\t\tdate.month -= 1;\n\t\tfix(date);\n\t}\n\tif (date.day > daysInMonth(date.month, date.year)) {\n\t\tif (date.month == months.ELUL) {\n\t\t\tdate.year += 1;\n\t\t}\n\t\tdate.day -= daysInMonth(date.month, date.year);\n\t\tdate.month += 1;\n\t\tfix(date);\n\t}\n\tfixMonth(date);\n}\n\nfunction fixMonth(date) {\n\tif (date.month == months.ADAR_II && !date.isLeapYear()) {\n\t\tdate.month -= 1; // to Adar I\n\t\tfix(date);\n\t}\n\tif (date.month < 1) {\n\t\tdate.month += MONTH_CNT(date.year);\n\t\tdate.year -= 1;\n\t\tfix(date);\n\t}\n\tif (date.month > MONTH_CNT(date.year)) {\n\t\tdate.month -= MONTH_CNT(date.year);\n\t\tdate.year += 1;\n\t\tfix(date);\n\t}\n}\n\nprototype[getFullYear] = function() {\n\treturn this.year;\n};\n\nprototype.isLeapYear = function() {\n\treturn c.LEAP(this.year);\n};\n\nprototype[getMonth] = function() {\n\treturn this.month;\n};\n\nprototype.getTishreiMonth = function() {\n\tvar nummonths = MONTH_CNT(this[getFullYear]());\n\treturn (this[getMonth]() + nummonths - 6) % nummonths || nummonths;\n};\n\nprototype.daysInMonth = function() {\n\treturn daysInMonth(this[getMonth](), this[getFullYear]());\n};\n\nprototype[getDate] = function() {\n\treturn this.day;\n};\n\nprototype.getDay = function() {\n\treturn this.greg().getDay();\n};\n\nprototype.setFullYear = function(year) {\n\tthis.year = year;\n\tfix(this);\n\treturn this;\n};\n\nprototype.setMonth = function(month) {\n\tthis.month = c.monthNum(month);\n\tfix(this);\n\treturn this;\n};\n\nprototype.setTishreiMonth = function(month) {\n\treturn this.setMonth((month + 6) % MONTH_CNT(this[getFullYear]()) || 13);\n};\n\nprototype.setDate = function(date) {\n\tthis.day = date;\n\tfix(this);\n\treturn this;\n};\n\n/* convert hebrew date to absolute date */\n/* Absolute date of Hebrew DATE.\n The absolute date is the number of days elapsed since the (imaginary)\n Gregorian date Sunday, December 31, 1 BC. */\nfunction hebrew2abs(d) {\n\tvar m, tempabs = d[getDate](), year = d[getFullYear]();\n\n\tif (d[getMonth]() < TISHREI) {\n\t\tfor (m = TISHREI; m <= MONTH_CNT(year); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\n\t\tfor (m = months.NISAN; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t} else {\n\t\tfor (m = TISHREI; m < d[getMonth](); m++) {\n\t\t\ttempabs += daysInMonth(m, year);\n\t\t}\n\t}\n\n\treturn c.hebElapsedDays(year) - 1373429 + tempabs;\n}\n\nfunction abs2hebrew(d) {\n\tvar mmap = [\n\t\tmonths.KISLEV, months.TEVET, months.SHVAT, months.ADAR_I, months.NISAN,\n\t\tmonths.IYYAR, months.SIVAN, months.TAMUZ, TISHREI, TISHREI, TISHREI, months.CHESHVAN\n\t], hebdate, gregdate, month, year;\n\n\tif (d >= 10555144) {\n\t\tthrow new RangeError(\"parameter to abs2hebrew \" + d + \" out of range\");\n\t}\n\n\tgregdate = greg.abs2greg(d);\n\thebdate = new HDate(1, TISHREI, (year = 3760 + gregdate[getFullYear]()));\n\n\twhile (d >= hebrew2abs(hebdate.setFullYear(year + 1))) {\n\t\tyear++;\n\t}\n\n\tif (year > 4634 && year < 10666) {\n\t\t// optimize search\n\t\tmonth = mmap[gregdate[getMonth]()];\n\t} else {\n\t\t// we're outside the usual range, so assume nothing about Hebrew/Gregorian calendar drift...\n\t\tmonth = TISHREI;\n\t}\n\n\twhile (d > hebrew2abs(hebdate = new HDate(daysInMonth(month, year), month, year))) {\n\t\tmonth = (month % MONTH_CNT(year)) + 1;\n\t}\n\n\treturn hebdate.setLocation.apply(hebdate.setDate(d - hebrew2abs(hebdate.setDate(1)) + 1), HDate.defaultLocation);\n}\n\nprototype.greg = function() {\n\treturn greg.abs2greg(hebrew2abs(this));\n};\n\nprototype.gregEve = function() {\n\treturn this.prev().sunset();\n};\n\nprototype[abs] = function() {\n\treturn hebrew2abs(this);\n};\n\nprototype.toString = function(o) {\n\treturn c.LANG([this[getDate](), null, gematriya(this[getDate]())], o) + ' ' +\n\t\tthis.getMonthName(o) + ' ' +\n\t\tc.LANG([this[getFullYear](), null, gematriya(this[getFullYear]())], o);\n};\n\nprototype.getMonthName = function(o) {\n\treturn c.LANG(c.monthNames[+this.isLeapYear()][this[getMonth]()], o);\n};\n\nprototype.setCity = function(city) {\n\treturn this.setLocation(cities.getCity(city));\n};\n\nprototype.setLocation = function(lat, lon) {\n\tif (typeof lat == 'object' && !Array.isArray(lat)) {\n\t\tlon = lat.long;\n\t\tlat = lat.lat;\n\t}\n\tif (Array.isArray(lat) && typeof lon == 'undefined') {\n\t\tlon = lat[0];\n\t\tlat = lat[1];\n\t}\n\tif (Array.isArray(lat)) {\n\t\tlat = (lat[0] * 60 + lat[1]) / 60;\n\t}\n\tif (Array.isArray(lon)) {\n\t\tlon = (lon[0] * 60 + lon[1]) / 60;\n\t}\n\tif (typeof lat != 'number') {\n\t\tthrow new TypeError('incorrect lat type passed to HDate.setLocation()');\n\t}\n\tif (typeof lon != 'number') {\n\t\tthrow new TypeError('incorrect long type passed to HDate.setLocation()');\n\t}\n\n\tthis.lat = lat;\n\tthis.long = lon;\n\n\tthis.il = cities.getCity(cities.nearest(lat, lon))[2];\n\n\treturn this;\n};\n\nfunction suntime(hdate) {\n\t// reset the date to midday before calling suncalc api\n\t// https://github.com/mourner/suncalc/issues/11\n\tvar date = hdate.greg();\n\treturn suncalc.getTimes(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0, 0), hdate.lat, hdate.long);\n}\n\nprototype.sunrise = function() {\n\treturn suntime(this).sunrise;\n};\n\nprototype.sunset = function() {\n\treturn suntime(this).sunset;\n};\n\nprototype[hour] = function() {\n\treturn (this.sunset() - this.sunrise()) / 12; // ms in hour\n};\n\nprototype.hourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this[hour]() / (1000 * 60);\n};\n\nprototype.nightHour = function() {\n\treturn (this.sunrise() - this.gregEve()) / 12; // ms in hour\n};\n\nprototype.nightHourMins = function() {\n\t// hour in ms / (1000 ms in s * 60 s in m) = mins in halachic hour\n\treturn this.nightHour() / (1000 * 60);\n};\n\nfunction hourOffset(hdate, hours) {\n\treturn new Date(hdate.sunrise()[getTime]() + (hdate[hour]() * hours));\n}\n\nvar zemanim = {\n\tchatzot: function(hdate) {\n\t\treturn hourOffset(hdate, 6);\n\t},\n\tchatzot_night: function(hdate) {\n\t\treturn new Date(hdate.sunrise()[getTime]() - (hdate.nightHour() * 6));\n\t},\n\talot_hashachar: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\talot_hashacher: function(hdate) {\n\t\treturn suntime(hdate).alot_hashachar;\n\t},\n\tmisheyakir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir;\n\t},\n\tmisheyakir_machmir: function(hdate) {\n\t\treturn suntime(hdate).misheyakir_machmir;\n\t},\n\tsof_zman_shma: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 3);\n\t},\n\tsof_zman_tfilla: function(hdate) { // Gra\n\t\treturn hourOffset(hdate, 4);\n\t},\n\tmincha_gedola: function(hdate) {\n\t\treturn hourOffset(hdate, 6.5);\n\t},\n\tmincha_ketana: function(hdate) {\n\t\treturn hourOffset(hdate, 9.5);\n\t},\n\tplag_hamincha: function(hdate) {\n\t\treturn hourOffset(hdate, 10.75);\n\t},\n\ttzeit: function(hdate) {\n\t\treturn suntime(hdate).tzeit;\n\t},\n\tneitz_hachama: function(hdate) {\n\t\treturn hdate.sunrise();\n\t},\n\tshkiah: function(hdate) {\n\t\treturn hdate.sunset();\n\t}\n};\n\nprototype.getZemanim = function() {\n\treturn c.map(zemanim, function(z){\n\t\treturn z(this);\n\t}, this);\n};\n\nHDate.addZeman = function(zeman, func) {\n\tzemanim[zeman] = func;\n};\n\nprototype.next = function() {\n\treturn abs2hebrew(this.abs() + 1).setLocation(this.lat, this.long);\n};\n\nprototype.prev = function() {\n\treturn abs2hebrew(this.abs() - 1).setLocation(this.lat, this.long);\n};\n\nprototype.isSameDate = function(other) {\n\tif (other instanceof HDate) {\n\t\tif (other[getFullYear]() == -1) {\n\t\t\tother = new HDate(other).setFullYear(this[getFullYear]());\n\t\t}\n\t\treturn this[abs]() == other[abs]();\n\t}\n\treturn false;\n};\n\nfunction onOrBefore(day, t, offset) {\n\treturn new HDate(dayOnOrBefore(day, t[abs]() + offset));\n}\n\nprototype.before = function(day) {\n\treturn onOrBefore(day, this, -1);\n};\n\nprototype.onOrBefore = function(day) {\n\treturn onOrBefore(day, this, 0);\n};\n\nprototype.nearest = function(day) {\n\treturn onOrBefore(day, this, 3);\n};\n\nprototype.onOrAfter = function(day) {\n\treturn onOrBefore(day, this, 6);\n};\n\nprototype.after = function(day) {\n\treturn onOrBefore(day, this, 7);\n};\n\nmodule.exports = HDate;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tholidays = require('./holidays'),\n\tSedra = require('./sedra'),\n\tdafyomi = require('./dafyomi'),\n\tcities = require('./cities'),\n\tgreg = require('./greg'),\n\tEventEmitter = require('events').EventEmitter,\n\tgematriya = require('gematriya');\n\n// for minifying optimizations\nvar defProp = Object.defineProperty,\n\tTE = TypeError,\n\tfind = 'find',\n\tstrings = 'strings',\n\tgetYearObject = 'getYearObject',\n\tmap = 'map',\n\tgetDay = 'getDay',\n\tgetMonth = 'getMonth',\n\tgetFullYear = 'getFullYear',\n\tisLeapYear = 'isLeapYear',\n\tlength = 'length',\n\tnext = 'next',\n\tprev = 'prev',\n\tmonths = c.months,\n\tTISHREI = months.TISHREI,\n\tNISAN = months.NISAN,\n\tHebcalProto = Hebcal.prototype,\n\tMonthProto = Month.prototype,\n\tGregYearProto = GregYear.prototype,\n\tGregMonthProto = GregMonth.prototype,\n\tHDateProto = HDate.prototype;\n\nfunction getset(g, s) {\n\treturn {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\n\t\tget: g,\n\t\tset: s\n\t};\n}\n\nfunction extend(base, into) {\n\tfor (var i in into) {\n\t\tbase[i] = into[i];\n\t}\n\treturn base;\n}\n\n// Main Hebcal function\n\nfunction Hebcal(year, month) {\n\tvar me = this; // whenever this is done, it is for optimizations.\n\tif (!year) {\n\t\tyear = (new HDate())[getFullYear](); // this year;\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal() is not a number');\n\t}\n\tme.year = year;\n\tif (month) {\n\t\tif (typeof month == 'string') {\n\t\t\tmonth = c.monthFromName(month);\n\t\t}\n\t\tif (typeof month == 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new Month(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\n\t\t\tme.holidays = holidays.year(year);\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new Hebcal(year, c.range(1, c.MONTH_CNT(year)));\n\t}\n\n\tme[length] = c.daysInYear(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n}\n\nHebcalProto[isLeapYear] = HDateProto[isLeapYear];\n\nHebcalProto.setCity = function(city) {\n\tthis.months.forEach(function(m){\n\t\tm.setCity(city);\n\t});\n\treturn this;\n};\n\nHebcalProto.setLocation = function(lat, lon) {\n\tthis.months.forEach(function(m){\n\t\tm.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nHebcalProto[next] = function() {\n\treturn new Hebcal(this.year + 1);\n};\n\nHebcalProto[prev] = function() {\n\treturn new Hebcal(this.year - 1);\n};\n\nHebcalProto[getMonth] = function(month) {\n\tvar months = this.months;\n\tmonth = c.monthNum(month);\n\tif (month > this.months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nHebcalProto[getDay] = function(day) {\n\tvar me = this;\n\tif (day > me[length]) {\n\t\treturn null;\n\t}\n\tif (day < 0) {\n\t\treturn me[getDay](me[length] - day);\n\t}\n\tvar rosh = me[find](29, months.ELUL)[0].abs() + 1 - me[find](1, NISAN)[0].abs(); // number of days between Nisan and Tishrei\n\tif (day <= rosh) {\n\t\treturn me[getMonth](NISAN)[getDay](day);\n\t}\n\treturn me[getMonth](TISHREI)[getDay](day - rosh);\n};\n\nHebcalProto.days = function() {\n\treturn [].concat.apply([], this.months[map](function(m){\n\t\treturn m.days;\n\t}));\n};\n\nHebcalProto[map] = function() {\n\treturn [][map].apply(this.days(), arguments);\n};\n\nHebcalProto.filter = function() {\n\treturn [].filter.apply(this.days(), arguments);\n};\n\nHebcalProto.addHoliday = function(holiday) {\n\tif (!(holiday instanceof holidays.Event)) {\n\t\tthrow new TE('non-Event passed to addHoliday()');\n\t}\n\tthis.holidays.add(holiday);\n\treturn this;\n};\n\nHebcalProto.findParsha = function(parsha, o) {\n\tvar langs = o ? [o] : ['s','a','h']; // FIXME: abstract this away somewhere\n\tvar days = this.filter(function(d){\n\t\treturn Math.max.apply(null, langs.map(function(l){\n\t\t\treturn d.getSedra(l).indexOf(parsha) + 1;\n\t\t}));\n\t});\n\treturn days[days[length] - 1];\n};\nHebcalProto.findSedra = HebcalProto.findParsha;\n\nHebcalProto[find] = function find_f(day, month) {\n\tvar me = this;\n\tif (arguments[length] === 1) {\n\t\tif (typeof day == 'string') {\n\t\t\treturn find_f[strings].call(me, day);\n\t\t} else if (Array.isArray(day)) {\n\t\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\t\treturn me[find][Array.isArray(d) ? 'apply' : 'call'](me, d);\n\t\t\t}));\n\t\t} else if (day instanceof HDate) {\n\t\t\treturn me[find](day.getDate(), day[getMonth]());\n\t\t} else if (day instanceof Date) {\n\t\t\treturn me[find](new HDate(day));\n\t\t}\n\t} else if (arguments[length] == 2) {\n\t\tif (month instanceof Month) {\n\t\t\treturn month[find](day);\n\t\t} else if (Array.isArray(month)) {\n\t\t\treturn [].concat.apply([], month[map](function(m){\n\t\t\t\treturn me[find](day, m);\n\t\t\t}));\n\t\t} else if (typeof month == 'string') {\n\t\t\treturn me[find](day, c.monthNum(month));\n\t\t} else if (typeof month == 'number') {\n\t\t\treturn me[find](day, me[getMonth](month));\n\t\t}\n\t}\n\treturn [];\n};\nHebcalProto[find][strings] = function strings(str) {\n\tvar split = str.split(/\\s+/), func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (!split[length]) {\n\t\treturn [];\n\t} else if (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\treturn split[length] - 1 ? this[find].apply(this, split) : [];\n\t}\n};\nHebcalProto[find][strings].rosh_chodesh = function() {\n\treturn this[find]('Rosh Chodesh', c.range(1, this.months[length]));\n};\nHebcalProto[find][strings].holidays = function() {\n\treturn [].concat.apply([], this.holidays[map](function(h){\n\t\treturn this[find](h.date);\n\t}, this));\n};\nHebcalProto[find][strings].omer = function() {\n\treturn this[find](c.range(15+1, 15+49), NISAN);\n};\nHebcalProto[find][strings].today = function() {\n\treturn this[find](new HDate());\n};\nHebcalProto[find][strings].yesterday = function() {\n\treturn [this[find]('today')[0][prev]()];\n};\nHebcalProto[find][strings].tomorrow = function() {\n\treturn [this[find]('today')[0][next]()];\n};\nHebcalProto[find][strings].pesach = function() {\n\treturn this[find](c.range(15, 15+8-this.il), NISAN);\n};\nHebcalProto[find][strings].sukkot = function() {\n\treturn this[find](c.range(15, 15+9-this.il), TISHREI);\n};\nHebcalProto[find][strings].succot = HebcalProto[find][strings].succos = HebcalProto[find][strings].sukkos = HebcalProto[find][strings].sukkot;\nHebcalProto[find][strings].shavuot = function() {\n\treturn this[find](c.range(6, 7-this.il), months.SIVAN);\n};\nHebcalProto[find][strings].shavuos = HebcalProto[find][strings].shavuot;\nHebcalProto[find][strings].rosh_hashana = function() {\n\treturn this[find](c.range(1, 2), TISHREI);\n};\nHebcalProto[find][strings].rosh_hashanah = HebcalProto[find][strings].rosh_hashana;\n\n// Hebcal properties\n\nHebcal.addZeman = HDate.addZeman;\n\nHebcal.cities = cities;\n\nHebcal.range = c.range;\n\nHebcal.gematriya = gematriya;\n\nHebcal.holidays = c.filter(holidays, ['masks', 'Event']); // not year(), atzmaut()\n\nHebcal.parshiot = Sedra.parshiot;\n\nHebcal.LANGUAGE = c.LANG;\n\nHebcal[map] = c[map];\n\nHebcal.filter = c.filter;\n\ndefProp(Hebcal, 'defaultLocation', getset(function(){\n\treturn HDate.defaultLocation;\n}, function(loc){\n\tHebcal.events.emit('locationChange', HDate.defaultLocation);\n\tHDate.defaultLocation = loc;\n}));\ndefProp(Hebcal, 'defaultCity', getset(function(){\n\treturn HDate.defaultCity;\n}, function(city){\n\tHebcal.defaultLocation = cities.getCity(city).slice(0, 2); // call the event\n}));\n\ndefProp(Hebcal, 'candleLighting', getset(function(){\n\treturn holidays.Event.candleLighting;\n}, function(mins){\n\tholidays.Event.candleLighting = mins;\n}));\n\ndefProp(Hebcal, 'havdalah', getset(function(){\n\treturn holidays.Event.havdalah;\n}, function(mins){\n\tholidays.Event.havdalah = mins;\n}));\n\n// Months\n\nfunction Month(month, year) {\n\tvar me = this;\n\tmonth = c.monthNum(month);\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.Month is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.Month is not a number');\n\t}\n\tme.month = month;\n\tme.year = year;\n\n\tme.days = c.range(1, c.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(i, month, year);\n\t\tdefProp(d, '__month', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.holidays = c.filter(holidays.year(year), function(h){\n\t\treturn h[0].date[getMonth]() == month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.Month = Month;\n\nMonthProto[isLeapYear] = HDateProto[isLeapYear];\n\nMonthProto[prev] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === 1) { // Nisan\n\t\treturn year[getMonth](-1);\n\t} else if (me.month === TISHREI) {\n\t\treturn year[prev]()[getMonth](months.ELUL);\n\t} else {\n\t\treturn year[getMonth](me.month - 1);\n\t}\n};\n\nMonthProto[next] = function() {\n\tvar me = this, year = me[getYearObject]();\n\tif (me.month === c.MONTH_CNT(me.year)) { // Adar\n\t\treturn year[getMonth](1);\n\t} else if (me.month === months.ELUL) {\n\t\treturn year[next]()[getMonth](TISHREI);\n\t} else {\n\t\treturn year[getMonth](me.month + 1);\n\t}\n};\n\nMonthProto[getDay] = function(day) {\n\tvar days = this.days;\n\tday = c.dayYearNum(day);\n\tif (day > days[length]) {\n\t\treturn this[next]()[getDay](day - days[length]);\n\t}\n\treturn days[day > 0 ? day - 1 : days[length] + day];\n};\n\nMonthProto[getYearObject] = function() {\n\treturn this.__year || new Hebcal(this.year);\n};\n\nMonthProto.getName = function(o) {\n\treturn c.LANG(c.monthNames[+this[isLeapYear]()][this.month], o);\n};\n\nMonthProto.rosh_chodesh = function() {\n\tvar prevMonth = this[prev]();\n\treturn prevMonth[length] == 30 ? [prevMonth[getDay](-1), this[getDay](1)] : [this[getDay](1)];\n};\n\nMonthProto.setCity = function(city) {\n\tthis.days.forEach(function(d){\n\t\td.setCity(city);\n\t});\n\treturn this;\n};\n\nMonthProto.setLocation = function(lat, lon) {\n\tthis.days.forEach(function(d){\n\t\td.setLocation(lat, lon);\n\t});\n\treturn this;\n};\n\nMonthProto[map] = function() {\n\treturn [][map].apply(this.days, arguments);\n};\n\nMonthProto.molad = function() {\n\tvar retMolad = {}, year, m_elapsed, p_elapsed, h_elapsed, parts, m_adj, toInt = parseInt;\n\n m_adj = this.month - 7;\n\tyear = this.year - 1;\n if (m_adj < 0) {\n\t\tm_adj += c.MONTH_CNT(year + 1);\n\t}\n\n m_elapsed = toInt(m_adj +\n 235 * (year / 19)/* +\n 12 * (year % 19) +\n (((year % 19) * 7) + 1) / 19*/);\n\n p_elapsed = toInt(204 + (793 * (m_elapsed % 1080)));\n\n h_elapsed = toInt(5 + (12 * m_elapsed) +\n 793 * (m_elapsed / 1080)/* +\n p_elapsed / 1080*/ -\n 6);\n\n parts = toInt((p_elapsed % 1080) + 1080 * (h_elapsed % 24));\n\n retMolad.doy = new HDate(toInt(1 + 29 * m_elapsed + h_elapsed / 24)).getDay();\n retMolad.hour = Math.round(h_elapsed % 24);\n var chalakim = toInt(parts % 1080);\n retMolad.minutes = toInt(chalakim / 18);\n retMolad.chalakim = chalakim % 18;\n var day = this.prev().find.strings.shabbat_mevarchim._calc.call(this)[0].onOrAfter(retMolad.doy).greg();\n day.setHours(retMolad.hour);\n day.setMinutes(retMolad.minutes);\n day.setSeconds(retMolad.chalakim * 3.33);\n retMolad.day = day;\n\n return retMolad;\n};\n\nMonthProto[find] = function find_f(day) {\n\tvar me = this;\n\tif (typeof day == 'number') {\n\t\treturn [me[getDay](day)];\n\t} else if (typeof day == 'string') {\n\t\treturn find_f[strings].call(me, day);\n\t} else if (Array.isArray(day)) {\n\t\treturn [].concat.apply([], day[map](function(d){\n\t\t\treturn me[find](d);\n\t\t}));\n\t} else if (day instanceof HDate && day[getFullYear]() == me.year && day[getMonth]() == me.month) {\n\t\treturn me[find](day.getDate());\n\t} else if (day instanceof Date) {\n\t\treturn me[find](new HDate(day));\n\t}\n\treturn [];\n};\nMonthProto[find][strings] = function strings(str) {\n\tvar func = strings[str.replace(/\\s/g, '_').toLowerCase()];\n\tif (func) {\n\t\treturn func.call(this);\n\t}\n\ttry {\n\t\treturn this[find](new HDate(str));\n\t} catch(e) {\n\t\tvar num = c.dayYearNum(str);\n\t\treturn num ? this[find](num) : [];\n\t}\n};\nMonthProto[find][strings].rosh_chodesh = function() {\n\treturn this.rosh_chodesh();\n};\nMonthProto[find][strings].shabbat_mevarchim = function sm() {\n\treturn this.month === months.ELUL ? [] : // No birchat hachodesh in Elul\n\t\tsm._calc.call(this);\n};\nMonthProto[find][strings].shabbat_mevarchim._calc = function() {\n\treturn this[find](this[getDay](29).onOrBefore(c.days.SAT));\n};\nMonthProto[find][strings].shabbos_mevarchim = MonthProto[find][strings].shabbos_mevorchim = MonthProto[find][strings].shabbat_mevarchim;\n\n// HDate days\n\nHebcal.HDate = HDate;\n\nHDateProto.getMonthObject = function() {\n\treturn this.__month || new Month(this[getMonth](), this[getFullYear]());\n};\n\nHDateProto[getYearObject] = function() {\n\treturn this.getMonthObject()[getYearObject]();\n};\n\n(function(){\n\tvar orig = {}; // slightly less overhead when using unaffiliated HDate()s\n\t[prev, next].forEach(function(func){\n\t\torig[func] = HDateProto[func];\n\t\tHDateProto[func] = function() {\n\t\t\tvar day = orig[func].call(this);\n\t\t\tif (!this.__month) {\n\t\t\t\treturn day;\n\t\t\t}\n\t\t\treturn this[getYearObject]()[find](day)[0];\n\t\t};\n\t});\n})();\n\nHDateProto.getSedra = (function(){\n\tvar __cache = {};\n\n\treturn function(o) {\n\t\tvar sedraYear = __cache[this[getFullYear]()];\n\t\tif (!sedraYear || (sedraYear.il != this.il)) {\n\t\t\tsedraYear = __cache[this[getFullYear]()] = new Sedra(this[getFullYear](), this.il);\n\t\t}\n\t\treturn sedraYear.get(this)[map](function(p){\n\t\t\treturn c.LANG(p, o);\n\t\t});\n\t}\n})();\nHDateProto.getParsha = HDateProto.getSedra;\n\nHDateProto.holidays = function(all) {\n\tvar me = this, days = me[getYearObject]().holidays[me];\n\treturn days ? days.filter(function(h){\n\t\treturn all ? true : !h.routine() && h.is(me);\n\t})[map](function(h){\n\t\th.date.setLocation(me);\n\t\treturn h;\n\t}) : [];\n};\n\n['candleLighting', 'havdalah'].forEach(function(prop){\n\tHDateProto[prop] = function(){\n\t\tvar me = this, hd = me.holidays(true).filter(function(h){\n\t\t\treturn h.is(me);\n\t\t});\n\t\tif (hd.length) {\n\t\t\thd = c.filter(hd.map(function(h){\n\t\t\t\treturn h[prop]();\n\t\t\t}), true);\n\t\t}\n\t\treturn hd.length ? new Date(Math.max.apply(null, hd)) : null;\n\t};\n});\n\nHDateProto.omer = function() {\n\tvar me = this, greg = me.greg().getTime(), year = me[getFullYear]();\n\tif (greg > new HDate(15, NISAN, year).greg().getTime() &&\n\t\tgreg < new HDate( 6, months.SIVAN, year).greg().getTime()) {\n\t\treturn me.abs() - new HDate(16, NISAN, year).abs() + 1;\n\t}\n\treturn 0;\n};\n\nHDateProto.dafyomi = function(o) {\n\treturn dafyomi.dafname(dafyomi.dafyomi(this.greg()), o);\n};\n\nHDateProto.tachanun = (function() {\n\tvar NONE = tachanun.NONE = 0,\n\t\tMINCHA = tachanun.MINCHA = 1,\n\t\tSHACHARIT = tachanun.SHACHARIT = 2,\n\t\tALL_CONGS = tachanun.ALL_CONGS = 4;\n\n\tvar __cache = {\n\t\tall: {},\n\t\tsome: {},\n\t\tyes_prev: {},\n\t\til: {}\n\t};\n\n\tfunction tachanun() {\n\t\tvar checkNext = !arguments[0], me = this;\n\n\t\tvar year = me[getYearObject](), y = year.year;\n\n\t\tfunction mapAbs(arr) {\n\t\t\treturn arr[map](function(d){\n\t\t\t\treturn d.abs();\n\t\t\t});\n\t\t}\n\n\t\tvar all, some, yes_prev;\n\t\tif (__cache.il[y] === me.il) {\n\t\t\tall = __cache.all[y];\n\t\t\tsome = __cache.some[y];\n\t\t\tyes_prev = __cache.yes_prev[y];\n\t\t} else {\n\t\t\tall = __cache.all[y] = mapAbs(year[find]('Rosh Chodesh').concat(\n\t\t\t\tyear[find](c.range(1, c.daysInMonth(NISAN, y)), NISAN), // all of Nisan\n\t\t\t\tyear[find](15 + 33, NISAN), // Lag Baomer\n\t\t\t\tyear[find](c.range(1, 8 - me.il), months.SIVAN), // Rosh Chodesh Sivan thru Isru Chag\n\t\t\t\tyear[find]([9, 15], months.AV), // Tisha B'av and Tu B'av\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find]([1, 2], TISHREI), // Rosh Hashanah\n\t\t\t\tyear[find](c.range(9, 24 - me.il), TISHREI), // Erev Yom Kippur thru Isru Chag\n\t\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\t\tyear[find](15, months.SHVAT), // Tu B'shvat\n\t\t\t\tyear[find]([14, 15], year[isLeapYear]() ? [months.ADAR_I, months.ADAR_II] : months.ADAR_I) // Purim/Shushan Purim + Katan\n\t\t\t));\n\t\t\tsome = __cache.some[y] = mapAbs([].concat( // Don't care if it overlaps days in all, because all takes precedence\n\t\t\t\tyear[find](c.range(1, 13), months.SIVAN), // Until 14 Sivan\n\t\t\t\tyear[find](c.range(20, 31), TISHREI), // Until after Rosh Chodesh Cheshvan\n\t\t\t\tyear[find](14, months.IYYAR), // Pesach Sheini\n\t\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t\t));\n\t\t\tyes_prev = __cache.yes_prev[y] = mapAbs([].concat( // tachanun is said on the previous day at mincha\n\t\t\t\tyear[find](-1, months.ELUL), // Erev Rosh Hashanah\n\t\t\t\tyear[find](9, months.TISHREI), // Erev Yom Kippur\n\t\t\t\tyear[find](14, months.IYYAR) // Pesach Sheini\n\t\t\t));\n\t\t\t__cache.il[y] = me.il;\n\t\t}\n\n\t\tall = all.indexOf(me.abs()) > -1;\n\t\tsome = some.indexOf(me.abs()) > -1;\n\t\tyes_prev = yes_prev.indexOf(me.abs()+1) > -1;\n\n\t\tif (all) {\n\t\t\treturn NONE;\n\t\t}\n\t\tvar ret = (!some && ALL_CONGS) | (me[getDay]() != 6 && SHACHARIT);\n\t\tif (checkNext && !yes_prev) {\n\t\t\tret |= ((me[next]().tachanun(true) & SHACHARIT) && MINCHA);\n\t\t} else {\n\t\t\tret |= (me[getDay]() != 5 && MINCHA);\n\t\t}\n\t\treturn ret == ALL_CONGS ? NONE : ret;\n\t}\n\treturn tachanun;\n})();\n\nHDateProto.tachanun_uf = function(){\n\tvar ret = this.tachanun();\n\treturn {\n\t\tshacharit: !!(ret & this.tachanun.SHACHARIT),\n\t\tmincha: !!(ret & this.tachanun.MINCHA),\n\t\tall_congs: !!(ret & this.tachanun.ALL_CONGS)\n\t};\n};\n\nHDateProto.hallel = (function() {\n\tvar NONE = hallel.NONE = 0,\n\t\tHALF = hallel.HALF = 1,\n\t\tWHOLE = hallel.WHOLE = 2;\n\n\tvar __cache = {\n\t\twhole: {},\n\t\thalf: {},\n\t\til: {}\n\t};\n\n\tfunction hallel() {\n\t\tvar me = this, year = me[getYearObject](), y = year.year;\n\n\t\tvar whole = __cache.il[y] == me.il && __cache.whole[y] || (__cache.whole[y] = [].concat(\n\t\t\tyear[find](c.range(25, 33), months.KISLEV), // Chanukah\n\t\t\tyear[find]([15, me.il ? null : 16], NISAN), // First day(s) of Pesach\n\t\t\tyear[find]('Shavuot'),\n\t\t\tyear[find]('Sukkot'),\n\t\t\tholidays.atzmaut(y)[1].date || [], // Yom HaAtzma'ut, which changes based on day of week\n\t\t\ty >= 5727 ? year[find](29, months.IYYAR) : [] // Yom Yerushalayim\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\tvar half = __cache.il[y] == me.il && __cache.half[y] || (__cache.half[y] = [].concat(\n\t\t\tyear[find]('Rosh Chodesh').filter(function(rc){return rc[getMonth]() != TISHREI}), // Rosh Chodesh, but not Rosh Hashanah\n\t\t\tyear[find](c.range(17 - me.il, 23 - me.il), NISAN) // Last six days of Pesach\n\t\t)[map](function(d){\n\t\t\treturn d.abs();\n\t\t}));\n\t\t__cache.il[y] = me.il;\n\n\t\treturn (whole.indexOf(me.abs()) > -1 && WHOLE) || (half.indexOf(me.abs()) > -1 && HALF) || NONE;\n\t}\n\treturn hallel;\n})();\n\n// Events\n\n(function(events){\n\tvar refreshInterval, refresh, today = new HDate();\n\n\tdefProp(events, 'refreshInterval', getset(function(){\n\t\treturn refreshInterval;\n\t}, function(ms){\n\t\tif (refresh) {\n\t\t\trefresh = clearInterval(refresh);\n\t\t}\n\t\trefreshInterval = ms;\n\t\tif (ms) {\n\t\t\trefresh = setInterval(checkTimes, ms);\n\t\t\tif (refresh.unref) {\n\t\t\t\trefresh.unref(); // don't keep the process open\n\t\t\t}\n\t\t}\n\t}));\n\n\tevents.beforeZeman = 1000 * 60 * 10; // 10 minutes\n\n\tfunction checkTimes() {\n\t\tvar now = new HDate();\n\n\t\tif (!today.isSameDate(now)) {\n\t\t\tevents.emit('dayChange');\n\t\t\ttoday = now;\n\t\t}\n\n\t\tfunction close(obj, compare) {\n\t\t\treturn c.filter(c[map](obj, function(time){\n\t\t\t\treturn time - nowGreg;\n\t\t\t}), function(time) {\n\t\t\t\treturn time > 0 && time - compare < 0;\n\t\t\t});\n\t\t}\n\n\t\tvar nowGreg = new Date(),\n\t\t\talmostTime = close(now.getZemanim(), events.beforeZeman),\n\t\t\tcustomTimes = close(events.customs, events.refreshInterval);\n\n\t\tfor (var zeman in almostTime) {\n\t\t\tevents.emit('almostZeman', zeman, almostTime[zeman]);\n\t\t\tif (almostTime[zeman] < events.refreshInterval) {\n\t\t\t\tevents.emit('atZeman', zeman);\n\t\t\t}\n\t\t}\n\t\tfor (var custom in customTimes) {\n\t\t\tevents.emit('custom', custom);\n\t\t}\n\t}\n\tcheckTimes();\n\n\tevents.refreshInterval = 1000 * 60 * 5; // 5 minutes\n\t// set the interval\n\n\tevents.customs = {};\n})(Hebcal.events = new EventEmitter());\n\n// Gregorian years\n\nfunction GregYear(year, month) {\n\tvar me = this;\n\tif (!year) {\n\t\tyear = (new Date)[getFullYear]();\n\t}\n\tif (typeof year === 'string') {\n\t\tvar d = new Date(year);\n\t\tmonth = year.indexOf(' ') + 1 || year.indexOf('-') + 1 || year.indexOf('/') + 1 ? d[getMonth]() + 1 : c.range(1, 12);\n\t\t// Check if a month was passed in the string. Can't just check for default January, because a real January might have been passed.\n\t\treturn new GregYear(d[getFullYear](), month);\n\t}\n\tif (typeof year !== 'number') {\n\t\tthrow new TE('year to Hebcal.GregYear() is not a number');\n\t}\n\tme.year = year;\n\n\tif (month) {\n\t\tif (typeof month === 'string') { // month name\n\t\t\tmonth = greg.lookupMonthName(month);\n\t\t}\n\t\tif (typeof month === 'number') {\n\t\t\tmonth = [month];\n\t\t}\n\n\t\tif (Array.isArray(month)) {\n\t\t\tme.months = month[map](function(i){\n\t\t\t\tvar m = new GregMonth(i, year);\n\t\t\t\tdefProp(m, '__year', {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: me\n\t\t\t\t});\n\t\t\t\treturn m;\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new TE('month to Hebcal.GregYear() is not a valid type');\n\t\t}\n\t} else {\n\t\treturn new GregYear(year, c.range(1, 12));\n\t}\n\n\tme.hebyears = [].concat.apply([], me.months[map](function(m){\n\t\treturn m.hebmonths[map](function(hm){\n\t\t\treturn hm.year;\n\t\t});\n\t})).filter(function(val, i, arr){\n\t\treturn arr.indexOf(val) === i; // keep unique values only\n\t});\n\n\tme.holidays = c.filter(holidays.year(me.hebyears[0]), function(h){\n\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t})[length];\n\t});\n\tif (me.hebyears[1]) {\n\t\textend(me.holidays, c.filter(holidays.year(me.hebyears[1]), function(h){\n\t\t\treturn h[0].date.greg()[getFullYear]() === year && me.months.filter(function(m){ // don't keep ones that are out of bounds\n\t\t\t\treturn m.month === h[0].date.greg()[getMonth]() + 1;\n\t\t\t})[length];\n\t\t}));\n\t}\n\n\tme[length] = 365 + greg.LEAP(year);\n\n\tdefProp(me, 'il', getset(function() {\n\t\treturn me[getMonth](1).il;\n\t}, function(il) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function() {\n\t\treturn me[getMonth](1).lat;\n\t}, function(lat) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function() {\n\t\treturn me[getMonth](1).long;\n\t}, function(lon) {\n\t\tme.months.forEach(function(m){\n\t\t\tm.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregYear = GregYear;\n\nGregYearProto[isLeapYear] = function() {\n\treturn this[length] == 366;\n};\n\nGregYearProto.setCity = HebcalProto.setCity;\nGregYearProto.setLocation = HebcalProto.setLocation;\n\nGregYearProto[next] = function() {\n\treturn new GregYear(this.year + 1);\n};\n\nGregYearProto[prev] = function() {\n\treturn new GregYear(this.year - 1);\n};\n\nGregYearProto[getMonth] = function(month) {\n\tvar months = this.months\n\tmonth = typeof month == 'number' ? month : greg.lookupMonthNum(month);\n\tif (month > months[length]) {\n\t\treturn this[next]()[getMonth](month - months[length]);\n\t}\n\treturn months[month > 0 ? month - 1 : months[length] + month];\n};\n\nextend(GregYearProto, {\n\tdays: HebcalProto.days,\n\tmap: HebcalProto[map],\n\tfilter: HebcalProto.filter,\n\taddHoliday: HebcalProto.addHoliday,\n});\n\n/*GregYearProto.days = HebcalProto.days;\nGregYearProto[map] = HebcalProto[map];\nGregYearProto.filter = HebcalProto.filter;\n\nGregYearProto.addHoliday = HebcalProto.addHoliday;*/\n\nfunction GregMonth(month, year) {\n\tvar me = this;\n\tif (typeof month == 'string') {\n\t\tmonth = greg.lookupMonthNum(month);\n\t}\n\tif (typeof month != 'number') {\n\t\tthrow new TE('month to Hebcal.GregMonth is not a valid type');\n\t}\n\tif (typeof year != 'number') {\n\t\tthrow new TE('year to Hebcal.GregMonth is not a number');\n\t}\n\n\tme.year = year;\n\tme.month = month;\n\n\tme.days = c.range(1, greg.daysInMonth(month, year))[map](function(i){\n\t\tvar d = new HDate(new Date(year, month - 1, i));\n\t\tdefProp(d, '__gregmonth', {\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: me\n\t\t});\n\t\treturn d;\n\t});\n\n\tme[length] = me.days[length];\n\n\tme.hebmonths = [\n\t\t{month: me[getDay]( 1)[getMonth](), year: me[getDay]( 1)[getFullYear]()},\n\t\t{month: me[getDay](-1)[getMonth](), year: me[getDay](-1)[getFullYear]()}\n\t].filter(function(val, i, arr){\n\t\treturn i === 0 || val.month != arr[0].month;\n\t});\n\n\tdefProp(me, 'il', getset(function(){\n\t\treturn me[getDay](1).il;\n\t}, function(il){\n\t\tme.days.forEach(function(d){\n\t\t\td.il = il;\n\t\t});\n\t}));\n\n\tdefProp(me, 'lat', getset(function(){\n\t\treturn me[getDay](1).lat;\n\t}, function(lat){\n\t\tme.days.forEach(function(d){\n\t\t\td.lat = lat;\n\t\t});\n\t}));\n\tdefProp(me, 'long', getset(function(){\n\t\treturn me[getDay](1).long;\n\t}, function(lon){\n\t\tme.days.forEach(function(d){\n\t\t\td.long = lon;\n\t\t});\n\t}));\n\n\treturn me;\n};\n\nHebcal.GregMonth = GregMonth;\n\nGregMonthProto[isLeapYear] = function() {\n\treturn greg.LEAP(this.year);\n};\n\nGregMonthProto[prev] = function() {\n\tif (this.month === 1) {\n\t\treturn this[getYearObject]()[prev]()[getMonth](-1);\n\t} else {\n\t\treturn this[getYearObject]()[getMonth](this.month - 1);\n\t}\n};\n\nGregMonthProto[next] = function() {\n\treturn this[getYearObject]()[getMonth](this.month + 1);\n};\n\nGregMonthProto[getDay] = function(day) {\n\tif (day > this.days[length]) {\n\t\treturn this[next]()[getDay](day - this.days[length]);\n\t}\n\treturn this.days[day > 0 ? day - 1 : this.days[length] + day];\n};\n\nGregMonthProto[getYearObject] = function() {\n\treturn this.__year || new GregYear(this.year);\n};\n\nGregMonthProto.getName = function() {\n\treturn greg.monthNames[this.month];\n};\n\nGregMonthProto.setCity = MonthProto.setCity;\nGregMonthProto.setLocation = MonthProto.setLocation;\n\nGregMonthProto[map] = MonthProto[map];\n\nHDateProto.getGregMonthObject = function() {\n\treturn this.__gregmonth || new GregMonth(this.greg()[getMonth]() + 1, this.greg()[getFullYear]());\n};\n\nHDateProto.getGregYearObject = function() {\n\treturn this.getGregMonthObject()[getYearObject]();\n};\n\nmodule.exports = Hebcal;\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\nvar c = require('./common'),\n\tHDate = require('./hdate'),\n\tgematriya = require('gematriya');\n\nvar __cache = {};\n\n// for byte optimizations\n\nvar dayOnOrBefore = c.dayOnOrBefore,\n\tmonths = c.months,\n\tdays = c.days,\n\tTISHREI = months.TISHREI,\n\tKISLEV = months.KISLEV,\n\tNISAN = months.NISAN,\n\tSAT = days.SAT,\n\tgetDay = 'getDay',\n\tabs = 'abs',\n\tShabbat = 'Shabbat',\n\tShabbos = 'Shabbos';\n\nfunction Chanukah(day) {\n\treturn ['Chanukah: Candle ' + day, 0, 'חנוכה: נר ' + gematriya(day)];\n}\n\nfunction CHM(desc) {\n\treturn [desc[0] + ' (CH\"M)', desc[1] ? desc[1] + ' (CH\"M)' : desc[1], desc[2] ? desc[2] + ' )חה\"ם(' : desc[2]];\n}\n\nfunction Sukkot(day) {\n\treturn ['Sukkot: ' + day, 'Succos: ' + day, 'סוכות יום ' + gematriya(day)];\n}\n\nfunction Pesach(day) {\n\treturn ['Pesach: ' + day, 0, 'פסח יום ' + gematriya(day)];\n}\n\nvar USER_EVENT = 1,\n\tLIGHT_CANDLES = 2,\n\tYOM_TOV_ENDS = 4,\n\tCHUL_ONLY = 8, // chutz l'aretz (Diaspora)\n\tIL_ONLY = 16, // b'aretz (Israel)\n\tLIGHT_CANDLES_TZEIS = 32;\n\nexports.masks = {\n\tUSER_EVENT : USER_EVENT,\n\tLIGHT_CANDLES : LIGHT_CANDLES,\n\tYOM_TOV_ENDS : YOM_TOV_ENDS,\n\tCHUL_ONLY : CHUL_ONLY,\n\tIL_ONLY : IL_ONLY,\n\tLIGHT_CANDLES_TZEIS: LIGHT_CANDLES_TZEIS\n};\n\nfunction Event(date, desc, mask) {\n\tvar me = this;\n\tme.date = new HDate(date);\n\tme.desc = typeof desc != 'object' ? [desc] : desc;\n\n\tme.USER_EVENT = !!( mask & USER_EVENT );\n\tme.LIGHT_CANDLES = !!( mask & LIGHT_CANDLES );\n\tme.YOM_TOV_ENDS = !!( mask & YOM_TOV_ENDS );\n\tme.CHUL_ONLY = !!( mask & CHUL_ONLY );\n\tme.IL_ONLY = !!( mask & IL_ONLY );\n\tme.LIGHT_CANDLES_TZEIS = !!( mask & LIGHT_CANDLES_TZEIS );\n}\n\nEvent.prototype.is = function(date, il) {\n\tdate = new HDate(date), myDate = this.date;\n\tif (arguments.length < 2) {\n\t\t//il = Event.isIL;\n\t\til = date.il;\n\t}\n\tif (date.getDate() != myDate.getDate() || date.getMonth() != myDate.getMonth()) {\n\t\treturn false;\n\t}\n\tif (date.getFullYear() != myDate.getFullYear()) {\n\t\treturn false;\n\t}\n\tif (il && this.CHUL_ONLY || !il && this.IL_ONLY) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEvent.prototype.masks = function() {\n\tvar me = this;\n\treturn (me.USER_EVENT && USER_EVENT) |\n\t\t (me.LIGHT_CANDLES && LIGHT_CANDLES) |\n\t\t (me.YOM_TOV_ENDS && YOM_TOV_ENDS) |\n\t\t (me.CHUL_ONLY && CHUL_ONLY) |\n\t\t (me.IL_ONLY && IL_ONLY) |\n\t\t (me.LIGHT_CANDLES_TZEIS && LIGHT_CANDLES_TZEIS);\n};\n\nEvent.prototype.getDesc = function(o) {\n\treturn c.LANG(this.desc, o);\n};\n\nEvent.prototype.candleLighting = function() {\n\tvar date = this.date;\n\tif (this.LIGHT_CANDLES) {\n\t\treturn new Date(date.sunset() - (Event.candleLighting * 60 * 1000));\n\t} else if (this.LIGHT_CANDLES_TZEIS) {\n\t\treturn date.getZemanim().tzeit;\n\t}\n\treturn null;\n};\n\nEvent.prototype.havdalah = function() {\n\tif (this.YOM_TOV_ENDS) {\n\t\treturn new Date(this.date.sunset().getTime() + (Event.havdalah * 60 * 1000));\n\t}\n\treturn null;\n};\n\nEvent.prototype.routine = (function(){\n\tfunction routine(){\n\t\treturn !!~routine.names.indexOf(this.getDesc('s'));\n\t}\n\troutine.names = [Shabbat, 'Erev ' + Shabbat];\n\treturn routine;\n})();\n\nEvent.isIL = false;\n\nEvent.candleLighting = 18;\n\nEvent.havdalah = 42;\n\nexports.Event = Event;\n\nexports.year = function(year) {\n\tif (__cache[year]) {\n\t\treturn __cache[year];\n\t}\n\n\tvar\tRH = new HDate(1, TISHREI, year),\n\t\tpesach = new HDate(15, NISAN, year),\n\t\ttmpDate;\n\n\tvar h = {};\n\n\tfunction add(ev) {\n\t\tif (Array.isArray(ev)) {\n\t\t\tev.forEach(function(e){\n\t\t\t\tadd(e);\n\t\t\t});\n\t\t} else {\n\t\t\tif (h[ev.date]) {\n\t\t\t\th[ev.date].push(ev);\n\t\t\t} else {\n\t\t\t\th[ev.date] = [ev];\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.defineProperty(h, 'add', {value: add});\n\n\tadd([ // standard holidays that don't shift based on year\n\t\tnew Event(\n\t\t\tRH,\n\t\t\t['Rosh Hashana 1', 0, 'ראש השנה א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS\n\t\t), new Event(\n\t\t\tnew HDate(2, TISHREI, year),\n\t\t\t['Rosh Hashana 2', 0, 'ראש השנה ב\\''],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(3 + (RH[getDay]() == days.THU), TISHREI, year), // push off to SUN if RH is THU\n\t\t\t['Tzom Gedaliah', 0, 'צום גדליה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(9, TISHREI, year),\n\t\t\t['Erev Yom Kippur', 0, 'ערב יום כיפור'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event( // first SAT after RH\n\t\t\tnew HDate(dayOnOrBefore(SAT, 7 + RH[abs]())),\n\t\t\t[Shabbat + ' Shuva', Shabbos + ' Shuvah', 'שבת שובה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(10, TISHREI, year),\n\t\t\t['Yom Kippur', 0, 'יום כיפור'],\n\t\t\tYOM_TOV_ENDS\n\t\t), new Event(\n\t\t\tnew HDate(14, TISHREI, year),\n\t\t\t['Erev Sukkot', 'Erev Succos', 'ערב סוכות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, TISHREI, year),\n\t\t\tSukkot(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tSukkot(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, TISHREI, year),\n\t\t\tCHM(Sukkot(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(17, TISHREI, year),\n\t\t\tCHM(Sukkot(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, TISHREI, year),\n\t\t\tCHM(Sukkot(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, TISHREI, year),\n\t\t\tCHM(Sukkot(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, TISHREI, year),\n\t\t\tCHM(Sukkot(6)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(21, TISHREI, year),\n\t\t\t['Sukkot: 7 (Hoshana Raba)', 'Succos: 7 (Hoshana Raba)', 'סוכות יום ז\\' )הושנע רבה('],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת'],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, TISHREI, year),\n\t\t\t['Shmini Atzeret / Simchat Torah', 'Shmini Atzeres / Simchas Torah', 'שמיני עצרת / שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(23, TISHREI, year),\n\t\t\t['Simchat Torah', 'Simchas Torah', 'שמחת תורה'],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(24, KISLEV, year),\n\t\t\t['Erev Chanukah', 0, 'ערב חנוכה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(25, KISLEV, year),\n\t\t\tChanukah(1),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(26, KISLEV, year),\n\t\t\tChanukah(2),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(27, KISLEV, year),\n\t\t\tChanukah(3),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(28, KISLEV, year),\n\t\t\tChanukah(4),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, KISLEV, year),\n\t\t\tChanukah(5),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(30, KISLEV, year), // yes, i know these are wrong\n\t\t\tChanukah(6),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(31, KISLEV, year), // HDate() corrects the month automatically\n\t\t\tChanukah(7),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(32, KISLEV, year),\n\t\t\tChanukah(8),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.SHVAT, year),\n\t\t\t[\"Tu B'Shvat\", 0, 'ט\"ו בשבט'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 43)),\n\t\t\t[Shabbat + ' Shekalim', Shabbos + ' Shekalim', 'שבת שקלים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 30)),\n\t\t\t[Shabbat + ' Zachor', Shabbos + ' Zachor', 'שבת זכור'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(pesach[abs]() - (pesach[getDay]() == days.TUE ? 33 : 31)),\n\t\t\t[\"Ta'anit Esther\", \"Ta'anis Esther\", 'תענית אסתר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(13, months.ADAR_II, year),\n\t\t\t['Erev Purim', 0, 'ערב פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, months.ADAR_II, year),\n\t\t\t['Purim', 0, 'פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(15, months.ADAR_II, year),\n\t\t\t['Shushan Purim', 0, 'שושן פורים'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14) - 7),\n\t\t\t[Shabbat + ' Parah', Shabbos + ' Parah', 'שבת פרה'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 14)),\n\t\t\t[Shabbat + ' Hachodesh', Shabbos + ' Hachodesh', 'שבת החודש'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, pesach[abs]() - 1)),\n\t\t\t[Shabbat + ' HaGadol', Shabbos + ' HaGadol', 'שבת הגדול'],\n\t\t\t0\n\t\t), new Event(\n\t\t\t// if the fast falls on Shabbat, move to Thursday\n\t\t\tpesach.prev()[getDay]() == SAT ? pesach.onOrBefore(days.THU) : new HDate(14, NISAN, year),\n\t\t\t[\"Ta'anit Bechorot\", \"Ta'anis Bechoros\", 'תענית בכורות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(14, NISAN, year),\n\t\t\t['Erev Pesach', 0, 'ערב פסח'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(15, NISAN, year),\n\t\t\tPesach(1),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tPesach(2),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\tCHM(Pesach(2)),\n\t\t\tIL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(16, NISAN, year),\n\t\t\t['Start counting Omer', 0, 'התחלת ספירת העומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(17, NISAN, year),\n\t\t\tCHM(Pesach(3)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, NISAN, year),\n\t\t\tCHM(Pesach(4)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(19, NISAN, year),\n\t\t\tCHM(Pesach(5)),\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(20, NISAN, year),\n\t\t\tCHM(Pesach(6)),\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(21, NISAN, year),\n\t\t\tPesach(7),\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(22, NISAN, year),\n\t\t\tPesach(8),\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(14, months.IYYAR, year),\n\t\t\t['Pesach Sheni', 0, 'פסח שני'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(18, months.IYYAR, year),\n\t\t\t[\"Lag B'Omer\", 0, 'ל\"ג בעומר'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(5, months.SIVAN, year),\n\t\t\t['Erev Shavuot', 'Erev Shavuos', 'ערב שבועות'],\n\t\t\tLIGHT_CANDLES\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot 1', 'Shavuos 1', 'שבועות א\\''],\n\t\t\tLIGHT_CANDLES_TZEIS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(6, months.SIVAN, year),\n\t\t\t['Shavuot', 'Shavuos', 'שבועות'],\n\t\t\tYOM_TOV_ENDS | IL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(7, months.SIVAN, year),\n\t\t\t['Shavuot 2', 'Shavuos 2', 'שבועות ב\\''],\n\t\t\tYOM_TOV_ENDS | CHUL_ONLY\n\t\t), new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year + 1)[abs]() - 4)),\n\t\t\t['Leil Selichot', 'Leil Selichos', 'ליל סליחות'],\n\t\t\t0\n\t\t), new Event(\n\t\t\tnew HDate(29, months.ELUL, year),\n\t\t\t['Erev Rosh Hashana', 0, 'ערב ראש השנה'],\n\t\t\tLIGHT_CANDLES\n\t\t)\n\t]);\n\n\ttmpDate = new HDate(10, months.TEVET, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Asara B'Tevet\", 0, 'עשרה בטבת'],\n\t\t0\n\t));\n\n\tif (c.LEAP(year)) {\n\t\tadd(new Event(\n\t\t\tnew HDate(14, months.ADAR_I, year),\n\t\t\t['Purim Katan', 0, 'פורים קטן'],\n\t\t\t0\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(15, months.ADAR_I, year),\n\t\t\t['Shushan Purim Katan', 0, 'שושן פורים קטן'],\n\t\t\t0\n\t\t));\n\t}\n\n\tif (year >= 5711) { // Yom HaShoah first observed in 1951\n\t\ttmpDate = new HDate(27, NISAN, year);\n\t\t/* When the actual date of Yom Hashoah falls on a Friday, the\n\t\t * state of Israel observes Yom Hashoah on the preceding\n\t\t * Thursday. When it falls on a Sunday, Yom Hashoah is observed\n\t\t * on the following Monday.\n\t\t * http://www.ushmm.org/remembrance/dor/calendar/\n\t\t */\n\n\t\tif (tmpDate[getDay]() == days.FRI) {\n\t\t\ttmpDate = tmpDate.prev();\n\t\t} else if (tmpDate[getDay]() == days.SUN) {\n\t\t\ttmpDate = tmpDate.next();\n\t\t}\n\n\t\tadd(new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaShoah', 0, 'יום השואה'],\n\t\t\t0\n\t\t));\n\t}\n\n\tadd(atzmaut(year));\n\n\tif (year >= 5727) { // Yom Yerushalayim only celebrated after 1967\n\t\tadd(new Event(\n\t\t\tnew HDate(29, months.IYYAR, year),\n\t\t\t['Yom Yerushalayim', 0, 'יום ירושלים'],\n\t\t\t0\n\t\t));\n\t}\n\n\ttmpDate = new HDate(17, months.TAMUZ, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Shiva-Asar B'Tamuz\", 0, \"צום יז' בתמוז\"],\n\t\t0\n\t));\n\n\ttmpDate = new HDate(9, months.AV, year);\n\tif (tmpDate[getDay]() == SAT) {\n\t\ttmpDate = tmpDate.next();\n\t}\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]())),\n\t\t[Shabbat + ' Chazon', Shabbos + ' Chazon', 'שבת חזון'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate.prev(),\n\t\t[\"Erev Tish'a B'Av\", 0, 'ערב תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\ttmpDate,\n\t\t[\"Tish'a B'Av\", 0, 'תשעה באב'],\n\t\t0\n\t));\n\n\tadd(new Event(\n\t\tnew HDate(dayOnOrBefore(SAT, tmpDate[abs]() + 7)),\n\t\t[Shabbat + ' Nachamu', Shabbos + ' Nachamu', 'שבת נחמו'],\n\t\t0\n\t));\n\n\tfor (var day = 6; day < c.daysInYear(year); day += 7) {\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(SAT, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t[Shabbat, Shabbos, 'שבת'],\n\t\t\tYOM_TOV_ENDS\n\t\t));\n\n\t\tadd(new Event(\n\t\t\tnew HDate(dayOnOrBefore(days.FRI, new HDate(1, TISHREI, year)[abs]() + day)),\n\t\t\t['Erev ' + Shabbat, 'Erev ' + Shabbos, 'ערב שבת'],\n\t\t\tLIGHT_CANDLES\n\t\t));\n\t}\n\n\tfor (var month = 1; month <= c.MONTH_CNT(year); month++) {\n\t\tif ((month == NISAN ? c.daysInMonth(c.MONTH_CNT(year - 1), year - 1) :\n\t\t\t\tc.daysInMonth(month - 1, year)) == 30) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh 2', 0, \"ראש חודש ב'\"],\n\t\t\t\t0\n\t\t\t));\n\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(30, month - 1, year),\n\t\t\t\t['Rosh Chodesh 1', 0, \"ראש חודש א'\"],\n\t\t\t\t0\n\t\t\t));\n\t\t} else if (month !== TISHREI) {\n\t\t\tadd(new Event(\n\t\t\t\tnew HDate(1, month, year),\n\t\t\t\t['Rosh Chodesh', 0, 'ראש חודש'],\n\t\t\t\t0\n\t\t\t));\n\t\t}\n\n\t\tif (month == months.ELUL) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd(new Event(\n\t\t\tnew HDate(29, month, year).onOrBefore(SAT),\n\t\t\t[Shabbat + ' Mevarchim', Shabbos + ' Mevorchim', 'שבת מברכים'],\n\t\t\t0\n\t\t));\n\t}\n\n\treturn __cache[year] = h;\n};\n\nfunction atzmaut(year) {\n\tif (year >= 5708) { // Yom HaAtzma'ut only celebrated after 1948\n\t\tvar tmpDate = new HDate(1, months.IYYAR, year), pesach = new HDate(15, NISAN, year);\n\n\t\tif (pesach[getDay]() == days.SUN) {\n\t\t\ttmpDate.setDate(2);\n\t\t} else if (pesach[getDay]() == SAT) {\n\t\t\ttmpDate.setDate(3);\n\t\t} else if (year < 5764) {\n\t\t\ttmpDate.setDate(4);\n\t\t} else if (pesach[getDay]() == days.TUE) {\n\t\t\ttmpDate.setDate(5);\n\t\t} else {\n\t\t\ttmpDate.setDate(4);\n\t\t}\n\n\t\treturn [new Event(\n\t\t\ttmpDate,\n\t\t\t['Yom HaZikaron', 0, 'יום הזיכרון'],\n\t\t\t0\n\t\t), new Event(\n\t\t\ttmpDate.next(),\n\t\t\t[\"Yom HaAtzma'ut\", 0, 'יום העצמאות'],\n\t\t\t0\n\t\t)];\n\t}\n\treturn [];\n}\nexports.atzmaut = atzmaut;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*\n * Convert numbers to gematriya representation, and vice-versa.\n *\n * Licensed MIT.\n *\n * Copyright (c) 2014 Eyal Schachter\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(){\n\tvar letters = {}, numbers = {\n\t\t'': 0,\n\t\tא: 1,\n\t\tב: 2,\n\t\tג: 3,\n\t\tד: 4,\n\t\tה: 5,\n\t\tו: 6,\n\t\tז: 7,\n\t\tח: 8,\n\t\tט: 9,\n\t\tי: 10,\n\t\tכ: 20,\n\t\tל: 30,\n\t\tמ: 40,\n\t\tנ: 50,\n\t\tס: 60,\n\t\tע: 70,\n\t\tפ: 80,\n\t\tצ: 90,\n\t\tק: 100,\n\t\tר: 200,\n\t\tש: 300,\n\t\tת: 400,\n\t\tתק: 500,\n\t\tתר: 600,\n\t\tתש: 700,\n\t\tתת: 800,\n\t\tתתק: 900,\n\t\tתתר: 1000\n\t}, i;\n\tfor (i in numbers) {\n\t\tletters[numbers[i]] = i;\n\t}\n\n\tfunction gematriya(num, limit) {\n\t\tif (typeof num !== 'number' && typeof num !== 'string') {\n\t\t\tthrow new TypeError('non-number or string given to gematriya()');\n\t\t}\n\t\tvar str = typeof num === 'string';\n\t\tif (str) {\n\t\t\tnum = num.replace(/('|\")/g,'');\n\t\t}\n\t\tnum = num.toString().split('').reverse();\n\t\tif (!str && limit) {\n\t\t\tnum = num.slice(0, limit);\n\t\t}\n\n\t\tnum = num.map(function g(n,i){\n\t\t\tif (str) {\n\t\t\t\treturn limit && numbers[n] < numbers[num[i - 1]] && numbers[n] < 100 ? numbers[n] * 1000 : numbers[n];\n\t\t\t} else {\n\t\t\t\tif (parseInt(n, 10) * Math.pow(10, i) > 1000) {\n\t\t\t\t\treturn g(n, i-3);\n\t\t\t\t}\n\t\t\t\treturn letters[parseInt(n, 10) * Math.pow(10, i)];\n\t\t\t}\n\t\t});\n\n\t\tif (str) {\n\t\t\treturn num.reduce(function(o,t){\n\t\t\t\treturn o + t;\n\t\t\t}, 0);\n\t\t} else {\n\t\t\tnum = num.reverse().join('').replace(/יה/g,'טו').replace(/יו/g,'טז').split('');\n\n\t\t\tif (num.length === 1) {\n\t\t\t\tnum.push(\"'\");\n\t\t\t} else if (num.length > 1) {\n\t\t\t\tnum.splice(-1, 0, '\"');\n\t\t\t}\n\n\t\t\treturn num.join('');\n\t\t}\n\t}\n\n\tif (typeof module !== 'undefined') {\n\t\tmodule.exports = gematriya;\n\t} else {\n\t\twindow.gematriya = gematriya;\n\t}\n})();\n","/*\n (c) 2011-2015, Vladimir Agafonkin\n SunCalc is a JavaScript library for calculating sun/moon position and light phases.\n https://github.com/mourner/suncalc\n*/\n\n(function () { 'use strict';\n\n// shortcuts for easier to read formulas\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos,\n tan = Math.tan,\n asin = Math.asin,\n atan = Math.atan2,\n acos = Math.acos,\n rad = PI / 180;\n\n// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas\n\n\n// date/time constants and conversions\n\nvar dayMs = 1000 * 60 * 60 * 24,\n J1970 = 2440588,\n J2000 = 2451545;\n\nfunction toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; }\nfunction fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); }\nfunction toDays(date) { return toJulian(date) - J2000; }\n\n\n// general calculations for position\n\nvar e = rad * 23.4397; // obliquity of the Earth\n\nfunction rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); }\nfunction declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); }\n\nfunction azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); }\nfunction altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); }\n\nfunction siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; }\n\nfunction astroRefraction(h) {\n if (h < 0) // the following formula works for positive altitudes only.\n h = 0; // if h = -0.08901179 a div/0 would occur.\n\n // formula 16.4 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad:\n return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));\n}\n\n// general sun calculations\n\nfunction solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); }\n\nfunction eclipticLongitude(M) {\n\n var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center\n P = rad * 102.9372; // perihelion of the Earth\n\n return M + C + P + PI;\n}\n\nfunction sunCoords(d) {\n\n var M = solarMeanAnomaly(d),\n L = eclipticLongitude(M);\n\n return {\n dec: declination(L, 0),\n ra: rightAscension(L, 0)\n };\n}\n\n\nvar SunCalc = {};\n\n\n// calculates sun position for a given date and latitude/longitude\n\nSunCalc.getPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = sunCoords(d),\n H = siderealTime(d, lw) - c.ra;\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: altitude(H, phi, c.dec)\n };\n};\n\n\n// sun times configuration (angle, morning name, evening name)\n\nvar times = SunCalc.times = [\n [-0.833, 'sunrise', 'sunset' ],\n [ -0.3, 'sunriseEnd', 'sunsetStart' ],\n [ -6, 'dawn', 'dusk' ],\n [ -12, 'nauticalDawn', 'nauticalDusk'],\n [ -18, 'nightEnd', 'night' ],\n [ 6, 'goldenHourEnd', 'goldenHour' ]\n];\n\n// adds a custom time to the times config\n\nSunCalc.addTime = function (angle, riseName, setName) {\n times.push([angle, riseName, setName]);\n};\n\n\n// calculations for sun times\n\nvar J0 = 0.0009;\n\nfunction julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); }\n\nfunction approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; }\nfunction solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); }\n\nfunction hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); }\n\n// returns set time for the given sun altitude\nfunction getSetJ(h, lw, phi, dec, n, M, L) {\n\n var w = hourAngle(h, phi, dec),\n a = approxTransit(w, lw, n);\n return solarTransitJ(a, M, L);\n}\n\n\n// calculates sun times for a given date and latitude/longitude\n\nSunCalc.getTimes = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n\n d = toDays(date),\n n = julianCycle(d, lw),\n ds = approxTransit(0, lw, n),\n\n M = solarMeanAnomaly(ds),\n L = eclipticLongitude(M),\n dec = declination(L, 0),\n\n Jnoon = solarTransitJ(ds, M, L),\n\n i, len, time, Jset, Jrise;\n\n\n var result = {\n solarNoon: fromJulian(Jnoon),\n nadir: fromJulian(Jnoon - 0.5)\n };\n\n for (i = 0, len = times.length; i < len; i += 1) {\n time = times[i];\n\n Jset = getSetJ(time[0] * rad, lw, phi, dec, n, M, L);\n Jrise = Jnoon - (Jset - Jnoon);\n\n result[time[1]] = fromJulian(Jrise);\n result[time[2]] = fromJulian(Jset);\n }\n\n return result;\n};\n\n\n// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas\n\nfunction moonCoords(d) { // geocentric ecliptic coordinates of the moon\n\n var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude\n M = rad * (134.963 + 13.064993 * d), // mean anomaly\n F = rad * (93.272 + 13.229350 * d), // mean distance\n\n l = L + rad * 6.289 * sin(M), // longitude\n b = rad * 5.128 * sin(F), // latitude\n dt = 385001 - 20905 * cos(M); // distance to the moon in km\n\n return {\n ra: rightAscension(l, b),\n dec: declination(l, b),\n dist: dt\n };\n}\n\nSunCalc.getMoonPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = moonCoords(d),\n H = siderealTime(d, lw) - c.ra,\n h = altitude(H, phi, c.dec),\n // formula 14.1 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));\n\n h = h + astroRefraction(h); // altitude correction for refraction\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: h,\n distance: c.dist,\n parallacticAngle: pa\n };\n};\n\n\n// calculations for illumination parameters of the moon,\n// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and\n// Chapter 48 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n\nSunCalc.getMoonIllumination = function (date) {\n\n var d = toDays(date || new Date()),\n s = sunCoords(d),\n m = moonCoords(d),\n\n sdist = 149598000, // distance from Earth to Sun in km\n\n phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)),\n inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)),\n angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) -\n cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra));\n\n return {\n fraction: (1 + cos(inc)) / 2,\n phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI,\n angle: angle\n };\n};\n\n\nfunction hoursLater(date, h) {\n return new Date(date.valueOf() + h * dayMs / 24);\n}\n\n// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article\n\nSunCalc.getMoonTimes = function (date, lat, lng, inUTC) {\n var t = new Date(date);\n if (inUTC) t.setUTCHours(0, 0, 0, 0);\n else t.setHours(0, 0, 0, 0);\n\n var hc = 0.133 * rad,\n h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc,\n h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx;\n\n // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)\n for (var i = 1; i <= 24; i += 2) {\n h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc;\n h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc;\n\n a = (h0 + h2) / 2 - h1;\n b = (h2 - h0) / 2;\n xe = -b / (2 * a);\n ye = (a * xe + b) * xe + h1;\n d = b * b - 4 * a * h1;\n roots = 0;\n\n if (d >= 0) {\n dx = Math.sqrt(d) / (Math.abs(a) * 2);\n x1 = xe - dx;\n x2 = xe + dx;\n if (Math.abs(x1) <= 1) roots++;\n if (Math.abs(x2) <= 1) roots++;\n if (x1 < -1) x1 = x2;\n }\n\n if (roots === 1) {\n if (h0 < 0) rise = i + x1;\n else set = i + x1;\n\n } else if (roots === 2) {\n rise = i + (ye < 0 ? x2 : x1);\n set = i + (ye < 0 ? x1 : x2);\n }\n\n if (rise && set) break;\n\n h0 = h2;\n }\n\n var result = {};\n\n if (rise) result.rise = hoursLater(t, rise);\n if (set) result.set = hoursLater(t, set);\n\n if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true;\n\n return result;\n};\n\n\n// export as Node module / AMD module / browser variable\nif (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc;\nelse if (typeof define === 'function' && define.amd) define(SunCalc);\nelse window.SunCalc = SunCalc;\n\n}());\n","/*\n\tHebcal - A Jewish Calendar Generator\n\tCopyright (C) 1994-2004 Danny Sadinoff\n\tPortions Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\n\n\thttps://github.com/hebcal/hebcal-js\n\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\tGNU General Public License for more details.\n\n\tYou should have received a copy of the GNU General Public License\n\talong with this program. If not, see .\n\n\tDanny Sadinoff can be reached at danny@sadinoff.com\n\n\tMichael Radwin has made significant contributions as a result of\n\tmaintaining hebcal.com.\n\n\tThe JavaScript code was completely rewritten in 2014 by Eyal Schachter.\n */\n/*\n * Many of the following algorithms were taken from hebrew calendar\n * routines by Maimonedes, from his Mishneh Torah, and implemented by\n * Nachum Dershowitz Department of Computer Science\n * (217) 333-4219 University of Illinois at Urbana-Champaign\n * nachum@cs.uiuc.edu 1304 West Springfield Avenue\n * Urbana, Illinois 61801\n *\n * The routines were included in the emacs 19 distribution.\n *\n */\nvar c = require('./common'), HDate = require('./hdate');\n\nvar concat = 'concat', range = c.range; // for client optimization\n\nvar INCOMPLETE = 0,\n\tREGULAR = 1,\n\tCOMPLETE = 2;\n\nfunction Sedra(hebYr, il) { // the Hebrew year\n\til = !!il;\n\tvar long_c = c.lngChesh(hebYr);\n\tvar short_k = c.shrtKis(hebYr);\n\tvar type;\n\tthis.year = hebYr;\n\tif (long_c && !short_k) {\n\t\ttype = COMPLETE;\n\t} else if (!long_c && short_k) {\n\t\ttype = INCOMPLETE;\n\t} else {\n\t\ttype = REGULAR;\n\t}\n\n\tvar rosh_hashana = new HDate(1, c.months.TISHREI, hebYr).abs();\n\tvar rosh_hashana_day = (rosh_hashana % 7) + 1;\n\n\t// find the first Saturday on or after Rosh Hashana\n\tthis.first_saturday = c.dayOnOrBefore(6, rosh_hashana + 6);\n\tvar leap = +c.LEAP(hebYr);\n\tthis.type = type;\n\tthis.rosh_hashana_day = rosh_hashana_day;\n\tthis.leap = leap;\n\tthis.il = il;\n\n\tvar core = \"\" + leap + rosh_hashana_day + type;\n\tif (types[core]) {\n\t\tthis.theSedraArray = types[core];\n\t} else {\n\t\tthis.theSedraArray = types[core + (+il)]; // cast to num, then concat\n\t}\n\n\tif (!this.theSedraArray) {\n\t\tconsole.log(this);\n\t\tthrow new TypeError(\"improper sedra year type calculated.\");\n\t}\n}\n\nvar parshiot = Sedra.parshiot = [\n\t[ 'Bereshit', 'Bereshis', 'בראשית' ], // 0\n\t[ 'Noach', 0, 'נח' ],\n\t[ 'Lech-Lecha', 0, 'לך-לך' ],\n\t[ 'Vayera', 0, 'וירא' ],\n\t[ 'Chayei Sara', 0, 'חי שרה' ],\n\t[ 'Toldot', 'Toldos', 'תולדות' ],\n\t[ 'Vayetzei', 0, 'ויצא' ],\n\t[ 'Vayishlach', 0, 'וישלח' ],\n\t[ 'Vayeshev', 0, 'וישב' ],\n\t[ 'Miketz', 0, 'מקץ' ],\n\t[ 'Vayigash', 0, 'ויגש' ], // 10\n\t[ 'Vayechi', 0, 'ויחי' ],\n\t[ 'Shemot', 'Shemos', 'שמות' ],\n\t[ 'Vaera', 0, 'וארא' ],\n\t[ 'Bo', 0, 'בא' ],\n\t[ 'Beshalach', 0, 'בשלח' ],\n\t[ 'Yitro', 'Yisro', 'יתרו' ],\n\t[ 'Mishpatim', 0, 'משפטים' ],\n\t[ 'Terumah', 0, 'תרומה' ],\n\t[ 'Tetzaveh', 0, 'תצוה' ],\n\t[ 'Ki Tisa', 'Ki Sisa', 'כי תשא' ], // 20\n\t[ 'Vayakhel', 0, 'ויקהל' ],\n\t[ 'Pekudei', 0, 'פקודי' ],\n\t[ 'Vayikra', 0, 'ויקרא' ],\n\t[ 'Tzav', 0, 'צו' ],\n\t[ 'Shmini', 0, 'שמיני' ],\n\t[ 'Tazria', 0, 'תזריע' ],\n\t[ 'Metzora', 0, 'מצרע' ],\n\t[ 'Achrei Mot', 'Achrei Mos', 'אחרי מות' ],\n\t[ 'Kedoshim', 0, 'קדשים' ],\n\t[ 'Emor', 0, 'אמור' ], // 30\n\t[ 'Behar', 0, 'בהר' ],\n\t[ 'Bechukotai', 'Bechukosai', 'בחקתי' ],\n\t[ 'Bamidbar', 0, 'במדבר' ],\n\t[ 'Nasso', 0, 'נשא' ],\n\t[ 'Beha\\'alotcha', 'Beha\\'aloscha', 'בהעלתך' ],\n\t[ 'Sh\\'lach', 0, 'שלח לך' ],\n\t[ 'Korach', 0, 'קורח' ],\n\t[ 'Chukat', 'Chukas', 'חקת' ],\n\t[ 'Balak', 0, 'בלק' ],\n\t[ 'Pinchas', 0, 'פינחס' ], // 40\n\t[ 'Matot', 'Matos', 'מטות' ],\n\t[ 'Masei', 0, 'מסעי' ],\n\t[ 'Devarim', 0, 'דברים' ],\n\t[ 'Vaetchanan', 'V\\'eschanan', 'ואתחנן' ],\n\t[ 'Eikev', 0, 'עקב' ],\n\t[ 'Re\\'eh', 0, 'ראה' ],\n\t[ 'Shoftim', 0, 'שופטים' ],\n\t[ 'Ki Teitzei', 'Ki Seitzei', 'כי תצא' ],\n\t[ 'Ki Tavo', 'Ki Savo', 'כי תבוא' ],\n\t[ 'Nitzavim', 0, 'נצבים' ], // 50\n\t[ 'Vayeilech', 0, 'וילך' ],\n\t[ 'Ha\\'Azinu', 0, 'האזינו' ]\n];\n\n\n// parsha doubler/undoubler\nfunction D(p) {\n\treturn -p;\n}\n\n// these are wrapped to protect them from [].concat()\nvar RH = [[ 'Rosh Hashana', 0, 'ראש השנה' ]]; //0\nvar YK = [[ 'Yom Kippur', 0, 'יום כיפור' ]]; //1\n\nvar SUKKOT = [[ 'Sukkot', 'Succos', 'סוכות' ]]; //0\nvar CHMSUKOT = [[ 'Chol hamoed Sukkot', 'Chol hamoed Succos', 'חול המועד סוכות' ]]; //0\nvar SHMINI = [[ 'Shmini Atzeret', 'Shmini Atzeres', 'שמיני עצרת' ]]; //0\nvar EOY = [[ 'End-of-Year: Simchat-Torah, Sukkot', 'End-of-Year: Simchas-Torah, Succos', 'סופשנה: סוכות וסמחת תורה' ]]; //0\n\nvar PESACH = [[ 'Pesach', 0, 'פסח' ]]; //25\nvar CHMPESACH = [[ 'Chol hamoed Pesach', 0, 'חול המועד פסח' ]]; //25\nvar PESACH7 = [[ 'Second days of Pesach', 0, 'שביעי של פסח' ]]; //25\n\nvar SHAVUOT = [[ 'Shavuot', 'Shavuos', 'שבועות' ]]; //33\n\n\n\n// The ordinary year types (keviot)\n\n// names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel\n\nvar types = {\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g. 5753\n\t'020' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t//e.g. 5756\n\t'0220' : [51, 52][concat](EOY, range(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28),\n\t\t30, D(31), 33, SHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t//e.g. 5701\n\t'0510' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH, PESACH,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29\n\t * days and Kislev has 30 days), and has Passover start on Saturday. */\n\t// e.g. 5745\n\t'0511' : [52][concat](YK, EOY, range(0, 20), D(21), 23, 24, PESACH,\n\t\t25, D(26), D(28), range(30, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Sunday. */\n\t//e.g. 5754\n\t'052' : [52][concat](YK, CHMSUKOT, range(0, 24), PESACH7, 25, D(26),\n\t\tD(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev\n\t * each have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5761\n\t'070' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, PESACH7,\n\t\t25, D(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 50)\n\t),\n\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Tuesday. */\n\t//e.g. 5716\n\t'072' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 20), D(21), 23, 24, CHMPESACH, 25,\n\t\tD(26), D(28), 30, D(31), range(33, 40), D(41), range(43, 49), D(50)\n\t),\n\n\n\t/* -- The leap year types (keviot) -- */\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1200' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Thursday. */\n\t//e.g. 5746\n\t'1201' : [51, 52][concat](CHMSUKOT, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1220' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH,\n\t\tPESACH, range(28, 40), D(41), range(43, 50)\n\t),\n\n\t/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Saturday. */\n\t//e.g.5752\n\t'1221' : [51, 52][concat](CHMSUKOT, range(0, 27), PESACH, range(28, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and\n\t * Kislev both have 29 days), and has Passover start on Sunday. */\n\t//e.g. 5768\n\t'150' : [52][concat](YK, CHMSUKOT, range(0, 28), PESACH7, range(29, 50)),\n\n\t/* Hebrew year that starts on Thursday, is `complete' (Heshvan and\n\t * Kislev both have 30 days), and has Passover start on Tuesday. */\n\t//eg. 5771\n\t'152' : [52][concat](YK, CHMSUKOT, range(0, 28), CHMPESACH, range(29, 49), D(50)),\n\n\t/* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and\n\t * Kislev each have 29 days), and has Passover start on Tuesday. */\n\t//e.g.5757\n\t'170' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH,\n\t\trange(28, 40), D(41), range(43, 49), D(50)\n\t),\n\n\t/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n\t * Kislev each have 30 days), and has Passover start on Thursday. */\n\t'1720' : [][concat](RH, 52, SUKKOT, SHMINI, range(0, 27), CHMPESACH, range(28, 33),\n\t\tSHAVUOT, range(34, 37), D(38), 40, D(41), range(43, 49), D(50)\n\t)\n};\n\n/* Hebrew year that starts on Monday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['0221'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\n//e.g. 5715\ntypes['0310'] = types['0220'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Thursday. */\ntypes['0311'] = types['020'];\n\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\n// e.g. 5715\ntypes['1310'] = types['1220'];\n/* Hebrew year that starts on Tuesday, is `regular' (Heshvan has 29\n * days and Kislev has 30 days), and has Passover start on Saturday. */\ntypes['1311'] = types['1221'];\n\n/* Hebrew year that starts on Saturday, is `complete' (Heshvan and\n * Kislev each have 30 days), and has Passover start on Thursday. */\ntypes['1721'] = types['170'];\n\n\nSedra.prototype.get = function(hDate) {\n\treturn abs(this, hDate.abs());\n};\n\n// returns an array describing the parsha on the first Saturday on or after absdate\nfunction abs(year, absDate) {\n\n\t// find the first saturday on or after today's date\n\tabsDate = c.dayOnOrBefore(6, absDate + 6);\n\n\tvar weekNum = (absDate - year.first_saturday) / 7;\n\tvar index = year.theSedraArray[weekNum];\n\n\tif (undefined === index) {\n\t\treturn abs(new Sedra(year.year + 1, year.il), absDate); // must be next year\n\t}\n\tif (typeof index == 'object') {\n\t\t// Shabbat has a chag. Return a description\n\t\treturn [index];\n\t}\n\tif (index >= 0) {\n\t\treturn [parshiot[index]];\n\t}\n\n\tindex = D(index); // undouble the parsha\n\treturn [parshiot[index], parshiot[index + 1]];\n}\n\nmodule.exports = Sedra;\n"]}
\ No newline at end of file
diff --git a/hebcal.js b/hebcal.js
index d55b733..bea95c0 100644
--- a/hebcal.js
+++ b/hebcal.js
@@ -695,6 +695,15 @@ HDateProto.tachanun = (function() {
return tachanun;
})();
+HDateProto.tachanun_uf = function(){
+ var ret = this.tachanun();
+ return {
+ shacharit: !!(ret & this.tachanun.SHACHARIT),
+ mincha: !!(ret & this.tachanun.MINCHA),
+ all_congs: !!(ret & this.tachanun.ALL_CONGS)
+ };
+};
+
HDateProto.hallel = (function() {
var NONE = hallel.NONE = 0,
HALF = hallel.HALF = 1,