diff --git a/assets/ElectoralCollege1848.svg b/assets/ElectoralCollege1848.svg
new file mode 100644
index 0000000..9cfcbde
--- /dev/null
+++ b/assets/ElectoralCollege1848.svg
@@ -0,0 +1,1034 @@
+
+
diff --git a/assets/ElectoralCollege1968.svg b/assets/ElectoralCollege1968.svg
index 20cab4e..56ecc78 100644
--- a/assets/ElectoralCollege1968.svg
+++ b/assets/ElectoralCollege1968.svg
@@ -5,7 +5,7 @@
version="1.1"
id="svg3"
sodipodi:docname="ElectoralCollege1968.svg"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
+ inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
@@ -19,15 +19,15 @@
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="1.9460371"
- inkscape:cx="510.01083"
- inkscape:cy="270.80676"
- inkscape:window-width="2560"
- inkscape:window-height="1358"
- inkscape:window-x="0"
- inkscape:window-y="26"
+ inkscape:zoom="5.504224"
+ inkscape:cx="852.7996"
+ inkscape:cy="69.946281"
+ inkscape:window-width="1920"
+ inkscape:window-height="1018"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
inkscape:window-maximized="1"
- inkscape:current-layer="outlines" />
+ inkscape:current-layer="svg3" />
1968 US presidential election results
+ id="text-2"
+ font-family="'Helvetica Neue'"
+ font-weight="bold"
+ transform="translate(-0.56657949,0.18848078)">
+ font-size="28px"
+ id="g2-8">
3
+ id="AKn-7"
+ x="121.59544"
+ y="493.18863"
+ style="font-size:13.3333px">AK3
4
+ id="HIn-9"
+ x="281.26047"
+ y="554.18866"
+ style="font-size:13.3333px">HI4
9
+ id="WAn-8"
+ x="117.53755"
+ y="49.386745"
+ style="font-size:13.3333px">WA9
6
+ id="ORn-0"
+ x="95.010078"
+ y="122.48579"
+ style="font-size:13.3333px">OR6
40
+ id="CAn-2"
+ x="69.726158"
+ y="279.08011"
+ style="font-size:13.3333px">CA40
3
+ id="NVn-7"
+ x="133.35632"
+ y="232.08958"
+ style="font-size:13.3333px">NV3
4
+ id="AZn-2"
+ x="197.08659"
+ y="358.99054"
+ style="font-size:13.3333px">AZ5
4
+ id="UTn-6"
+ x="219.70537"
+ y="251.48579"
+ style="font-size:13.3333px">UT4
4
+ id="IDn-7"
+ x="194.15645"
+ y="151.80695"
+ style="font-size:13.3333px">ID4
3
+ id="MTn-8"
+ x="279.21573"
+ y="85.347488"
+ style="font-size:13.3333px">MT4
6
+ id="WYn-0"
+ x="298.39981"
+ y="182.08109"
+ style="font-size:13.3333px">WY3
5
+ id="COn-6"
+ x="319.78827"
+ y="270.08292"
+ style="font-size:13.3333px">CO6
4
+ id="NMn-5"
+ x="302.97266"
+ y="369.28769"
+ style="font-size:13.3333px">NM4
25
+ id="TXn-4"
+ x="424.32278"
+ y="451.69336"
+ style="font-size:13.3333px">TX25
8
+ id="OKn-6"
+ x="461.73621"
+ y="358.28769"
+ style="font-size:13.3333px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">OK8
7
+ id="KSn-2"
+ x="441.22095"
+ y="289.62161"
+ style="font-size:13.3333px;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">KS7
5
+ id="NEn-3"
+ x="418.48505"
+ y="222.94185"
+ style="font-size:13.3333px">NE5
4
+ id="SDn-7"
+ x="415.85419"
+ y="157.25868"
+ style="font-size:13.3333px">SD4
4
+ id="NDn-4"
+ x="417.25748"
+ y="91.851349"
+ style="font-size:13.3333px">ND4
10
+ id="MNn-1"
+ x="504.72253"
+ y="124.94574"
+ style="font-size:13.3333px">MN10
12
+ id="WIn-5"
+ x="579.54468"
+ y="159.84668"
+ style="font-size:13.3333px">WI12
26
+ id="ILn-9"
+ x="596.69891"
+ y="249.73816"
+ style="font-size:13.3333px;fill:#ffffff">IL26
9
+ id="IAn-6"
+ x="521.78705"
+ y="212.28769"
+ style="font-size:13.3333px">IA9
12
+ id="MOn-4"
+ x="540.95941"
+ y="292.93628"
+ style="font-size:13.3333px">MO12
6
+ id="ARn-6"
+ x="547.24762"
+ y="374.0896"
+ style="font-size:13.3333px">AR6
10
+ id="LAn-8"
+ x="545.79749"
+ y="450.64859"
+ style="font-size:13.3333px">LA10
7
+ id="MSn-5"
+ x="597.98846"
+ y="417.18863"
+ style="font-size:13.3333px">MS7
10
+ id="ALn-7"
+ x="650.66272"
+ y="409.38675"
+ style="font-size:13.3333px">AL10
12
+ id="GAn-4"
+ x="714.30121"
+ y="407.73816"
+ style="font-size:13.3333px">GA12
14
+ id="FLn-7"
+ x="763.43597"
+ y="504.54953"
+ style="font-size:13.3333px">FL14
8
+ id="SCn-2"
+ x="759.23254"
+ y="347.11545">SC 8
12
+ id="NCn-8"
+ x="781.7052"
+ y="328.48581"
+ style="font-size:13.3333px">NC12
11
+ id="TNn-9"
+ x="655.9707"
+ y="340.83722"
+ style="font-size:13.3333px">TN11
9
+ id="KYn-4"
+ x="675.10925"
+ y="299.28769"
+ style="font-size:13.3333px">KY9
13
+ id="INn-4"
+ x="644.74738"
+ y="248.48579"
+ style="font-size:13.3333px">IN13
21
+ id="MIn-5"
+ x="663.32098"
+ y="183.08958"
+ style="font-size:13.3333px">MI21
26
+ id="OHn-9"
+ x="700.31543"
+ y="235.38675"
+ style="font-size:13.3333px">OH26
7
+ id="WVn-3"
+ x="738.71716"
+ y="272.44101"
+ style="font-size:13.3333px">WV4
12
+ id="VAn-8"
+ x="771.05426"
+ y="282.73816"
+ style="font-size:13.3333px">VA12
29
+ id="PAn-6"
+ x="779.22137"
+ y="210.08958"
+ style="font-size:13.3333px">PA29
43
+ id="NYn-4"
+ x="811.52887"
+ y="153.03532"
+ style="font-size:13.3333px">NY43
4
+ id="MEn-2"
+ x="893.95428"
+ y="77.998077"
+ style="font-size:13.3333px">ME4
+
+
+ font-size="22px"
+ id="g3">
NH 4
+ id="NHn-8"
+ x="817.56848"
+ y="56.648579"
+ style="font-size:16px">NH 4
VT 3
+ id="VTn-3"
+ x="802.61328"
+ y="81.54953"
+ style="font-size:16px">VT 3
MA 14
+ y="164"
+ style="font-size:16px">MA 14
RI 4
+ y="199"
+ style="font-size:16px">RI 4
CT 8
+ y="228"
+ style="font-size:16px">CT 8
NJ 17
+ y="260"
+ style="font-size:16px">NJ 17
DE 3
+ y="284"
+ style="font-size:16px">DE 3
MD 10
+ y="305"
+ style="font-size:16px">MD 10
DC 3
+ y="327"
+ style="font-size:16px">DC 3
+
+
+ 1968 US presidential election results
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AK3
+ HI4
+ WA11
+ OR7
+ CA54
+ NV4
+ AZ8
+ UT5
+ ID4
+ MT3
+ WY3
+ CO8
+ NM5
+ TX32
+ OK8
+ KS6
+ NE5
+ SD3
+ ND3
+ MN10
+ WI12
+ IL26
+ IA7
+ MO11
+ AR6
+ LA9
+ MS7
+ AL9
+ GA13
+ FL25
+ SC 8
+ NC14
+ TN11
+ KY9
+ IN12
+ MI18
+ OH21
+ WV5
+ VA13
+ PA23
+ NY33
+
+
+
+
+ NH 4
+ VT 3
+ MA 12
+ RI 4
+ CT 8
+ NJ 15
+ DE 3
+ MD 10
+ DC 3
+
+
+
+
+
+
+
+ 1968 US presidential election results
+
+
+
+
+ ME4
+
+
diff --git a/assets/ElectoralCollege2004.svg b/assets/ElectoralCollege2004.svg
new file mode 100644
index 0000000..197c49b
--- /dev/null
+++ b/assets/ElectoralCollege2004.svg
@@ -0,0 +1,933 @@
+
+
+
+ 1968 US presidential election results
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AK3
+ HI4
+ WA11
+ OR7
+ CA55
+ NV5
+ AZ10
+ UT5
+ ID4
+ MT3
+ WY3
+ CO9
+ NM5
+ TX34
+ OK7
+ KS6
+ NE5
+ SD3
+ ND3
+ MN10
+ WI10
+ IL21
+ IA7
+ MO11
+ AR6
+ LA9
+ MS6
+ AL9
+ GA15
+ FL27
+ SC 8
+ NC15
+ TN11
+ KY8
+ IN11
+ MI17
+ OH20
+ WV5
+ VA13
+ PA21
+ NY31
+
+
+
+
+ NH 4
+ VT 3
+ MA 12
+ RI 4
+ CT 7
+ NJ 15
+ DE 3
+ MD 10
+ DC 3
+
+
+
+
+
+
+
+ 1968 US presidential election results
+
+
+
+
+ ME4
+
+
diff --git a/assets/ElectoralCollege2008.svg b/assets/ElectoralCollege2008.svg
new file mode 100644
index 0000000..254dec0
--- /dev/null
+++ b/assets/ElectoralCollege2008.svg
@@ -0,0 +1,956 @@
+
+
+
+ 1968 US presidential election results
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+ AK3
+ HI4
+ WA11
+ OR7
+ CA55
+ NV5
+ AZ10
+ UT5
+ ID4
+ MT3
+ WY3
+ CO9
+ NM5
+ TX34
+ OK7
+ KS6
+ NE4
+ SD3
+ ND3
+ MN10
+ WI10
+ IL21
+ IA7
+ MO11
+ AR6
+ LA9
+ MS6
+ AL9
+ GA15
+ FL27
+ SC 8
+ NC15
+ TN11
+ KY8
+ IN11
+ MI17
+ OH20
+ WV5
+ VA13
+ PA21
+ NY31
+
+
+
+
+ NH 4
+ VT 3
+ MA 12
+ RI 4
+ CT 7
+ NJ 15
+ DE 3
+ MD 10
+ DC 3
+
+
+
+
+
+
+
+ 1968 US presidential election results
+
+
+
+
+ ME4
+
+
diff --git a/src/elections/1848.ts b/src/elections/1848.ts
new file mode 100644
index 0000000..3e4392e
--- /dev/null
+++ b/src/elections/1848.ts
@@ -0,0 +1,270 @@
+import { readFile } from "node:fs/promises";
+import Election from "../election.js";
+
+const Presidential_1848 = {
+ title: "1848 United States Presidential Election Simulator",
+ shortname: "1848",
+ description: "The CalubViem Press has rewritten history and called the 1848 United States Presidential Election for $WINNER!",
+ svg: await readFile("assets/ElectoralCollege1848.svg", "utf-8"),
+ candidates: [
+ {
+ name: "Lewis Cass",
+ party: "Democratic",
+ color: "#1C408C",
+ },
+ {
+ name: "Zachary Taylor",
+ party: "Whig",
+ color: "#F0C862",
+ },
+ {
+ name: "Martin Van Buren",
+ party: "Free Soil",
+ color: "#CCCC66",
+ }
+ ],
+ states: {
+ "AL": {
+ electoralVotes: 9,
+ odds: {
+ "Whig": 0.45,
+ "Democratic": 0.55,
+ "Free Soil": 0,
+ }
+ },
+ "AR": {
+ electoralVotes: 3,
+ odds: {
+ "Whig": 0.05,
+ "Democratic": 0.95,
+ "Free Soil": 0,
+ }
+ },
+ "CT": {
+ electoralVotes: 6,
+ odds: {
+ "Whig": 0.9,
+ "Democratic": 0.05,
+ "Free Soil": 0.05,
+ }
+ },
+ "DE": {
+ electoralVotes: 3,
+ odds: {
+ "Whig": 0.7,
+ "Democratic": 0.29,
+ "Free Soil": 0.01,
+ }
+ },
+ "FL": {
+ electoralVotes: 3,
+ odds: {
+ "Whig": 0.9,
+ "Democratic": 0.1,
+ "Free Soil": 0,
+ }
+ },
+ "GA": {
+ electoralVotes: 10,
+ odds: {
+ "Whig": 0.8,
+ "Democratic": 0.2,
+ "Free Soil": 0,
+ }
+ },
+ "IL": {
+ electoralVotes: 9,
+ odds: {
+ "Whig": 0.4,
+ "Democratic": 0.55,
+ "Free Soil": 0.05,
+ }
+ },
+ "IN": {
+ electoralVotes: 12,
+ odds: {
+ "Whig": 0.3,
+ "Democratic": 0.68,
+ "Free Soil": 0.02,
+ }
+ },
+ "IA": {
+ electoralVotes: 4,
+ odds: {
+ "Whig": 0.25,
+ "Democratic": 0.73,
+ "Free Soil": 0.02,
+ }
+ },
+ "KY": {
+ electoralVotes: 12,
+ odds: {
+ "Whig": 0.9,
+ "Democratic": 0.1,
+ "Free Soil": 0,
+ }
+ },
+ "LA": {
+ electoralVotes: 6,
+ odds: {
+ "Whig": 0.9,
+ "Democratic": 0.1,
+ "Free Soil": 0,
+ }
+ },
+ "ME": {
+ electoralVotes: 9,
+ odds: {
+ "Whig": 0.3,
+ "Democratic": 0.6,
+ "Free Soil": 0.1,
+ }
+ },
+ "MD": {
+ electoralVotes: 8,
+ odds: {
+ "Whig": 0.6,
+ "Democratic": 0.4,
+ "Free Soil": 0,
+ }
+ },
+ "MA": {
+ electoralVotes: 12,
+ odds: {
+ "Whig": 0.92,
+ "Democratic": 0.02,
+ "Free Soil": 0.06,
+ }
+ },
+ "MI": {
+ electoralVotes: 5,
+ odds: {
+ "Whig": 0.2,
+ "Democratic": 0.75,
+ "Free Soil": 0.05,
+ }
+ },
+ "MS": {
+ electoralVotes: 6,
+ odds: {
+ "Whig": 0.48,
+ "Democratic": 0.52,
+ "Free Soil": 0,
+ }
+ },
+ "MO": {
+ electoralVotes: 7,
+ odds: {
+ "Whig": 0.1,
+ "Democratic": 0.9,
+ "Free Soil": 0,
+ }
+ },
+ "NH": {
+ electoralVotes: 6,
+ odds: {
+ "Whig": 0.05,
+ "Democratic": 0.92,
+ "Free Soil": 0.03,
+ }
+ },
+ "NJ": {
+ electoralVotes: 7,
+ odds: {
+ "Whig": 0.8,
+ "Democratic": 0.2,
+ "Free Soil": 0,
+ }
+ },
+ "NY": {
+ electoralVotes: 36,
+ odds: {
+ "Whig": 0.8,
+ "Democratic": 0.1,
+ "Free Soil": 0.1,
+ }
+ },
+ "NC": {
+ electoralVotes: 11,
+ odds: {
+ "Whig": 0.9,
+ "Democratic": 0.1,
+ "Free Soil": 0,
+ }
+ },
+ "OH": {
+ electoralVotes: 23,
+ odds: {
+ "Whig": 0.3,
+ "Democratic": 0.65,
+ "Free Soil": 0.05,
+ }
+ },
+ "PA": {
+ electoralVotes: 26,
+ odds: {
+ "Whig": 0.7,
+ "Democratic": 0.28,
+ "Free Soil": 0.02,
+ }
+ },
+ "RI": {
+ electoralVotes: 4,
+ odds: {
+ "Whig": 0.98,
+ "Democratic": 0.02,
+ "Free Soil": 0,
+ }
+ },
+ "SC": {
+ electoralVotes: 9,
+ odds: {
+ "Whig": 0,
+ "Democratic": 1,
+ "Free Soil": 0,
+ }
+ },
+ "TN": {
+ electoralVotes: 13,
+ odds: {
+ "Whig": 0.7,
+ "Democratic": 0.3,
+ "Free Soil": 0,
+ }
+ },
+ "TX": {
+ electoralVotes: 4,
+ odds: {
+ "Whig": 0.02,
+ "Democratic": 0.98,
+ "Free Soil": 0,
+ }
+ },
+ "VT": {
+ electoralVotes: 3,
+ odds: {
+ "Whig": 0.9,
+ "Democratic": 0.02,
+ "Free Soil": 0.08,
+ }
+ },
+ "VA": {
+ electoralVotes: 17,
+ odds: {
+ "Whig": 0.45,
+ "Democratic": 0.55,
+ "Free Soil": 0,
+ }
+ },
+ "WI": {
+ electoralVotes: 4,
+ odds: {
+ "Whig": 0.4,
+ "Democratic": 0.45,
+ "Free Soil": 0.15,
+ }
+ }
+ }
+}
+
+export default Presidential_1848 as Election;
\ No newline at end of file
diff --git a/src/elections/1940.ts b/src/elections/1940.ts
new file mode 100644
index 0000000..c20b3a9
--- /dev/null
+++ b/src/elections/1940.ts
@@ -0,0 +1,437 @@
+import { readFile } from "node:fs/promises";
+import Election from "../election.js";
+
+const Presidential_1968 = {
+ title: "1968 United States Presidential Election Simulator",
+ shortname: "1968",
+ description: "The CalubViem Press has rewritten history and called the 1968 United States Presidential Election for $WINNER!",
+ svg: await readFile("assets/ElectoralCollege1968.svg", "utf-8"),
+ candidates: [
+ {
+ name: "Hubert Humphrey",
+ party: "Democratic",
+ color: "#1C408C",
+ },
+ {
+ name: "Richard Nixon",
+ party: "Republican",
+ color: "#BF1D29",
+ },
+ {
+ name: "George Wallace",
+ party: "American Independent",
+ color: "#ffa400",
+ }
+ ],
+ states: {
+ "AL": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.1,
+ "American Independent": 0.8,
+ }
+ },
+ "AK": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "AZ": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "AR": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.2,
+ "American Independent": 0.6,
+ }
+ },
+ "CA": {
+ electoralVotes: 40,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "CO": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "CT": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ "American Independent": 0,
+ }
+ },
+ "DE": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "DC": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ "American Independent": 0,
+ }
+ },
+ "FL": {
+ electoralVotes: 14,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ }
+ },
+ "GA": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.2,
+ "American Independent": 0.6,
+ }
+ },
+ "HI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.8,
+ "American Independent": 0,
+ }
+ },
+ "ID": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "IL": {
+ electoralVotes: 26,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "IN": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "IA": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "KS": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "KY": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "LA": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.1,
+ "American Independent": 0.8,
+ }
+ },
+ "ME": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.4,
+ "Democratic": 0.6,
+ "American Independent": 0,
+ }
+ },
+ "MD": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ "American Independent": 0,
+ }
+ },
+ "MA": {
+ electoralVotes: 14,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ "American Independent": 0,
+ }
+ },
+ "MI": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ "American Independent": 0,
+ }
+ },
+ "MN": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.4,
+ "Democratic": 0.6,
+ "American Independent": 0,
+ }
+ },
+ "MS": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.1,
+ "American Independent": 0.8,
+ }
+ },
+ "MO": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0.55,
+ "Democratic": 0.45,
+ "American Independent": 0,
+ }
+ },
+ "MT": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "NE": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "NV": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "NH": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "NJ": {
+ electoralVotes: 17,
+ odds: {
+ "Republican": 0.55,
+ "Democratic": 0.45,
+ "American Independent": 0,
+ }
+ },
+ "NM": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "NY": {
+ electoralVotes: 43,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ "American Independent": 0,
+ }
+ },
+ "NC": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.43,
+ "Democratic": 0.33,
+ "American Independent": 0.23,
+ }
+ },
+ "ND": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ },
+ "OH": {
+ electoralVotes: 26,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "OK": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "OR": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "PA": {
+ electoralVotes: 29,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ "American Independent": 0,
+ }
+ },
+ "RI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ "American Independent": 0,
+ }
+ },
+ "SC": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.43,
+ "Democratic": 0.33,
+ "American Independent": 0.23,
+ }
+ },
+ "SD": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "TN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.43,
+ "Democratic": 0.23,
+ "American Independent": 0.33,
+ }
+ },
+ "TX": {
+ electoralVotes: 25,
+ odds: {
+ "Republican": 0.4,
+ "Democratic": 0.6,
+ "American Independent": 0,
+ }
+ },
+ "UT": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "American Independent": 0,
+ }
+ },
+ "VT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.4,
+ "American Independent": 0,
+ }
+ },
+ "VA": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0.4,
+ "Democratic": 0.3,
+ "American Independent": 0.3,
+ }
+ },
+ "WA": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ "American Independent": 0,
+ }
+ },
+ "WV": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ "American Independent": 0,
+ }
+ },
+ "WI": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0.55,
+ "Democratic": 0.45,
+ "American Independent": 0,
+ }
+ },
+ "WY": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ "American Independent": 0,
+ }
+ }
+ }
+}
+
+export default Presidential_1968 as Election;
\ No newline at end of file
diff --git a/src/elections/1992.ts b/src/elections/1992.ts
new file mode 100644
index 0000000..db378a5
--- /dev/null
+++ b/src/elections/1992.ts
@@ -0,0 +1,438 @@
+import { readFile } from "node:fs/promises";
+import Election from "../election.js";
+
+const Presidential_1992 = {
+ title: "1992 United States Presidential Election Simulator",
+ shortname: "1992",
+ description: "The CalubViem Press has rewritten history and called the 1992 United States Presidential Election for $WINNER!",
+ svg: await readFile("assets/ElectoralCollege1992.svg", "utf-8"),
+ candidates: [
+ {
+ name: "Bill Clinton",
+ party: "Democratic",
+ color: "#1C408C",
+ },
+ {
+ name: "George H.W. Bush",
+ party: "Republican",
+ color: "#BF1D29",
+ },
+ {
+ name: "Ross Perot",
+ party: "Independent",
+ color: "#BFAB22",
+ }
+ ],
+ states: {
+ "AL": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ "Independent": 0,
+ }
+ },
+ "AK": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.3,
+ "Independent": 0.2,
+ }
+ },
+ "AZ": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.55,
+ "Democratic": 0.35,
+ "Independent": 0.1,
+ }
+ },
+ "AR": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.95,
+ "Independent": 0,
+ }
+ },
+ "CA": {
+ electoralVotes: 54,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.9,
+ "Independent": 0.05,
+ }
+ },
+ "CO": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.40,
+ "Democratic": 0.55,
+ "Independent": 0.05,
+ }
+ },
+ "CT": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.15,
+ "Democratic": 0.8,
+ "Independent": 0.05,
+ }
+ },
+ "DE": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.85,
+ "Independent": 0.05,
+ }
+ },
+ "DC": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ "Independent": 0,
+ }
+ },
+ "FL": {
+ electoralVotes: 25,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.48,
+ "Independent": 0.02,
+ }
+ },
+ "GA": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.4,
+ "Democratic": 0.59,
+ "Independent": 0.01,
+ }
+ },
+ "HI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.94,
+ "Independent": 0.01,
+ }
+ },
+ "ID": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.7,
+ "Democratic": 0.1,
+ "Independent": 0.2,
+ }
+ },
+ "IL": {
+ electoralVotes: 22,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.85,
+ "Independent": 0.05,
+ }
+ },
+ "IN": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0.55,
+ "Democratic": 0.43,
+ "Independent": 0.02,
+ }
+ },
+ "IA": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.88,
+ "Independent": 0.02,
+ }
+ },
+ "KS": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 0.9,
+ "Democratic": 0.02,
+ "Independent": 0.08,
+ }
+ },
+ "KY": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.3,
+ "Democratic": 0.7,
+ "Independent": 0,
+ }
+ },
+ "LA": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.3,
+ "Democratic": 0.7,
+ "Independent": 0,
+ }
+ },
+ "ME": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.3,
+ "Democratic": 0.5,
+ "Independent": 0.2,
+ }
+ },
+ "MD": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.94,
+ "Independent": 0.01,
+ }
+ },
+ "MA": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0,
+ "Democratic": 0.99,
+ "Independent": 0.01,
+ }
+ },
+ "MI": {
+ electoralVotes: 18,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.78,
+ "Independent": 0.02,
+ }
+ },
+ "MN": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.9,
+ "Independent": 0.05,
+ }
+ },
+ "MS": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.9,
+ "Democratic": 0.1,
+ "Independent": 0,
+ }
+ },
+ "MO": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.15,
+ "Democratic": 0.8,
+ "Independent": 0.05,
+ }
+ },
+ "MT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.5,
+ "Independent": 0.05,
+ }
+ },
+ "NE": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.90,
+ "Democratic": 0.05,
+ "Independent": 0.05,
+ }
+ },
+ "NV": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.5,
+ "Independent": 0.05,
+ }
+ },
+ "NH": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.5,
+ "Independent": 0.05,
+ }
+ },
+ "NJ": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 0.3,
+ "Democratic": 0.69,
+ "Independent": 0.01,
+ }
+ },
+ "NM": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.89,
+ "Independent": 0.01,
+ }
+ },
+ "NY": {
+ electoralVotes: 33,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.94,
+ "Independent": 0.01,
+ }
+ },
+ "NC": {
+ electoralVotes: 14,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.39,
+ "Independent": 0.01,
+ }
+ },
+ "ND": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.9,
+ "Democratic": 0.05,
+ "Independent": 0.05,
+ }
+ },
+ "OH": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0.3,
+ "Democratic": 0.65,
+ "Independent": 0.05,
+ }
+ },
+ "OK": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.85,
+ "Democratic": 0.1,
+ "Independent": 0.05,
+ }
+ },
+ "OR": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.35,
+ "Democratic": 0.55,
+ "Independent": 0.1,
+ }
+ },
+ "PA": {
+ electoralVotes: 23,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.89,
+ "Independent": 0.01,
+ }
+ },
+ "RI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.9,
+ "Independent": 0.05,
+ }
+ },
+ "SC": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ "Independent": 0,
+ }
+ },
+ "SD": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.35,
+ "Independent": 0.05,
+ }
+ },
+ "TN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.8,
+ "Independent": 0,
+ }
+ },
+ "TX": {
+ electoralVotes: 32,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.35,
+ "Independent": 0.05,
+ }
+ },
+ "UT": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.6,
+ "Democratic": 0.2,
+ "Independent": 0.2,
+ }
+ },
+ "VT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.95,
+ "Independent": 0.05,
+ }
+ },
+ "VA": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.8,
+ "Democratic": 0.2,
+ "Independent": 0,
+ }
+ },
+ "WA": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.25,
+ "Democratic": 0.70,
+ "Independent": 0.05,
+ }
+ },
+ "WV": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.9,
+ "Independent": 0,
+ }
+ },
+ "WI": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.75,
+ "Independent": 0.05,
+ }
+ },
+ "WY": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.85,
+ "Democratic": 0.08,
+ "Independent": 0.07,
+ }
+ }
+ }
+}
+
+export default Presidential_1992 as Election;
\ No newline at end of file
diff --git a/src/elections/2000.ts b/src/elections/2000.ts
new file mode 100644
index 0000000..e08cd87
--- /dev/null
+++ b/src/elections/2000.ts
@@ -0,0 +1,384 @@
+import { readFile } from "node:fs/promises";
+import Election from "../election.js";
+
+const Presidential_2000 = {
+ title: "2000 United States Presidential Election Simulator",
+ shortname: "2000",
+ description: "The CalubViem Press has rewritten history and called the 2000 United States Presidential Election for $WINNER!",
+ svg: await readFile("assets/ElectoralCollege1992.svg", "utf-8"),
+ candidates: [
+ {
+ name: "Al Gore",
+ party: "Democratic",
+ color: "#1C408C",
+ },
+ {
+ name: "George W. Bush",
+ party: "Republican",
+ color: "#BF1D29",
+ }
+ ],
+ states: {
+ "AL": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AK": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AZ": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "AR": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "CA": {
+ electoralVotes: 54,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.99,
+ }
+ },
+ "CO": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "CT": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.99,
+ }
+ },
+ "DE": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "DC": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "FL": {
+ electoralVotes: 25,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ }
+ },
+ "GA": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.98,
+ "Democratic": 0.02,
+ }
+ },
+ "HI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "ID": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "IL": {
+ electoralVotes: 22,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "IN": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "IA": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ }
+ },
+ "KS": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "KY": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "LA": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.98,
+ "Democratic": 0.02,
+
+ }
+ },
+ "ME": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.9,
+ }
+ },
+ "MD": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MA": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MI": {
+ electoralVotes: 18,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.9,
+ }
+ },
+ "MN": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.15,
+ "Democratic": 0.85,
+ }
+ },
+ "MS": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+
+ }
+ },
+ "MO": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.85,
+ "Democratic": 0.15,
+ }
+ },
+ "MT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "NE": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "NV": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.75,
+ "Democratic": 0.25,
+ }
+ },
+ "NH": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.75,
+ "Democratic": 0.25,
+ }
+ },
+ "NJ": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NM": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ }
+ },
+ "NY": {
+ electoralVotes: 33,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NC": {
+ electoralVotes: 14,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "ND": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "OH": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0.85,
+ "Democratic": 0.15,
+ }
+ },
+ "OK": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "OR": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ }
+ },
+ "PA": {
+ electoralVotes: 23,
+ odds: {
+ "Republican": 0.25,
+ "Democratic": 0.75,
+ }
+ },
+ "RI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "SC": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "SD": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "TN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "TX": {
+ electoralVotes: 32,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "UT": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "VT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.02,
+ "Democratic": 0.98,
+ }
+ },
+ "VA": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.98,
+ "Democratic": 0.02,
+ }
+ },
+ "WA": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.99,
+ }
+ },
+ "WV": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.98,
+ "Democratic": 0.02,
+ }
+ },
+ "WI": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ }
+ },
+ "WY": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ }
+ }
+}
+
+export default Presidential_2000 as Election;
\ No newline at end of file
diff --git a/src/elections/2004.ts b/src/elections/2004.ts
new file mode 100644
index 0000000..a4c2b6a
--- /dev/null
+++ b/src/elections/2004.ts
@@ -0,0 +1,384 @@
+import { readFile } from "node:fs/promises";
+import Election from "../election.js";
+
+const Presidential_2004 = {
+ title: "2004 United States Presidential Election Simulator",
+ shortname: "2004",
+ description: "The CalubViem Press has rewritten history and called the 2004 United States Presidential Election for $WINNER!",
+ svg: await readFile("assets/ElectoralCollege2004.svg", "utf-8"),
+ candidates: [
+ {
+ name: "John Kerry",
+ party: "Democratic",
+ color: "#1C408C",
+ },
+ {
+ name: "George W. Bush",
+ party: "Republican",
+ color: "#BF1D29",
+ }
+ ],
+ states: {
+ "AL": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AK": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AZ": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.99,
+ "Democratic": 0.01,
+ }
+ },
+ "AR": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "CA": {
+ electoralVotes: 55,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.99,
+ }
+ },
+ "CO": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.92,
+ "Democratic": 0.07,
+ }
+ },
+ "CT": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "DE": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "DC": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "FL": {
+ electoralVotes: 27,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "GA": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "HI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "ID": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "IL": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "IN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "IA": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.55,
+ "Democratic": 0.45,
+ }
+ },
+ "KS": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "KY": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "LA": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+
+ }
+ },
+ "ME": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.9,
+ }
+ },
+ "MD": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MA": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MI": {
+ electoralVotes: 17,
+ odds: {
+ "Republican": 0.1,
+ "Democratic": 0.9,
+ }
+ },
+ "MN": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.15,
+ "Democratic": 0.85,
+ }
+ },
+ "MS": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+
+ }
+ },
+ "MO": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.9,
+ "Democratic": 0.1,
+ }
+ },
+ "MT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "NE": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "NV": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.85,
+ "Democratic": 0.15,
+ }
+ },
+ "NH": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ }
+ },
+ "NJ": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NM": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ }
+ },
+ "NY": {
+ electoralVotes: 31,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NC": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "ND": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "OH": {
+ electoralVotes: 20,
+ odds: {
+ "Republican": 0.9,
+ "Democratic": 0.1,
+ }
+ },
+ "OK": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "OR": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.15,
+ "Democratic": 0.85,
+ }
+ },
+ "PA": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0.35,
+ "Democratic": 0.65,
+ }
+ },
+ "RI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "SC": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "SD": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "TN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "TX": {
+ electoralVotes: 34,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "UT": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "VT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "VA": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.98,
+ "Democratic": 0.02,
+ }
+ },
+ "WA": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "WV": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "WI": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.47,
+ "Democratic": 0.53,
+ }
+ },
+ "WY": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ }
+ }
+}
+
+export default Presidential_2004 as Election;
\ No newline at end of file
diff --git a/src/elections/2008.ts b/src/elections/2008.ts
new file mode 100644
index 0000000..07bda7e
--- /dev/null
+++ b/src/elections/2008.ts
@@ -0,0 +1,391 @@
+import { readFile } from "node:fs/promises";
+import Election from "../election.js";
+
+const Presidential_2008 = {
+ title: "2008 United States Presidential Election Simulator",
+ shortname: "2008",
+ description: "The CalubViem Press has rewritten history and called the 2008 United States Presidential Election for $WINNER!",
+ svg: await readFile("assets/ElectoralCollege2008.svg", "utf-8"),
+ candidates: [
+ {
+ name: "Barack Obama",
+ party: "Democratic",
+ color: "#1C408C",
+ },
+ {
+ name: "John McCain",
+ party: "Republican",
+ color: "#BF1D29",
+ }
+ ],
+ states: {
+ "AL": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AK": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AZ": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "AR": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "CA": {
+ electoralVotes: 55,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "CO": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 0.20,
+ "Democratic": 0.80,
+ }
+ },
+ "CT": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "DE": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "DC": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "FL": {
+ electoralVotes: 27,
+ odds: {
+ "Republican": 0.2,
+ "Democratic": 0.8,
+ }
+ },
+ "GA": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 0.9,
+ "Democratic": 0.1,
+ }
+ },
+ "HI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "ID": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "IL": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "IN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.45,
+ "Democratic": 0.55,
+ }
+ },
+ "IA": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0.35,
+ "Democratic": 0.65,
+ }
+ },
+ "KS": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "KY": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "LA": {
+ electoralVotes: 9,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+
+ }
+ },
+ "ME": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MD": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MA": {
+ electoralVotes: 12,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MI": {
+ electoralVotes: 17,
+ odds: {
+ "Republican": 0.02,
+ "Democratic": 0.98,
+ }
+ },
+ "MN": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "MS": {
+ electoralVotes: 6,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+
+ }
+ },
+ "MO": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ }
+ },
+ "MT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.75,
+ "Democratic": 0.25,
+ }
+ },
+ "NE": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "NE-02": {
+ electoralVotes: 1,
+ odds: {
+ "Republican": 0.25,
+ "Democratic": 0.75,
+ }
+ },
+ "NV": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.99,
+ }
+ },
+ "NH": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NJ": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NM": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 0.02,
+ "Democratic": 0.98,
+ }
+ },
+ "NY": {
+ electoralVotes: 31,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "NC": {
+ electoralVotes: 15,
+ odds: {
+ "Republican": 0.5,
+ "Democratic": 0.5,
+ }
+ },
+ "ND": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "OH": {
+ electoralVotes: 20,
+ odds: {
+ "Republican": 0.3,
+ "Democratic": 0.7,
+ }
+ },
+ "OK": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "OR": {
+ electoralVotes: 7,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "PA": {
+ electoralVotes: 21,
+ odds: {
+ "Republican": 0.05,
+ "Democratic": 0.95,
+ }
+ },
+ "RI": {
+ electoralVotes: 4,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "SC": {
+ electoralVotes: 8,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "SD": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0.95,
+ "Democratic": 0.05,
+ }
+ },
+ "TN": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "TX": {
+ electoralVotes: 34,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "UT": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "VT": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "VA": {
+ electoralVotes: 13,
+ odds: {
+ "Republican": 0.01,
+ "Democratic": 0.99,
+ }
+ },
+ "WA": {
+ electoralVotes: 11,
+ odds: {
+ "Republican": 0,
+ "Democratic": 1,
+ }
+ },
+ "WV": {
+ electoralVotes: 5,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ },
+ "WI": {
+ electoralVotes: 10,
+ odds: {
+ "Republican": 0.02,
+ "Democratic": 0.98,
+ }
+ },
+ "WY": {
+ electoralVotes: 3,
+ odds: {
+ "Republican": 1,
+ "Democratic": 0,
+ }
+ }
+ }
+}
+
+export default Presidential_2008 as Election;
\ No newline at end of file
diff --git a/src/elections/elections.ts b/src/elections/elections.ts
index d5caab4..8087308 100644
--- a/src/elections/elections.ts
+++ b/src/elections/elections.ts
@@ -1,13 +1,23 @@
import Election from "../election.js";
+import Presidential_1789 from "./1789.js";
+import Presidential_1848 from "./1848.js";
import Presidential_1864 from "./1864.js";
import Presidential_1968 from "./1968.js";
+import Presidential_1992 from "./1992.js";
+import Presidential_2000 from "./2000.js";
+import Presidential_2004 from "./2004.js";
+import Presidential_2008 from "./2008.js";
import Presidential_2024 from "./2024.js";
-import Presidential_1789 from "./1789.js";
const Elections = {
"1789": Presidential_1789,
+ "1848": Presidential_1848,
"1864": Presidential_1864,
"1968": Presidential_1968,
+ "1992": Presidential_1992,
+ "2000": Presidential_2000,
+ "2004": Presidential_2004,
+ "2008": Presidential_2008,
"2024": Presidential_2024
}